matcha-components 20.136.0 → 20.142.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/matcha-components.mjs +117 -117
- package/fesm2022/matcha-components.mjs.map +1 -1
- package/index.d.ts +12 -12
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcha-components.mjs","sources":["../../../projects/matcha-components/src/lib/matcha-option/matcha-option-parent.interface.ts","../../../projects/matcha-components/src/lib/matcha-animations/animations.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-item/accordion-item.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-item/accordion-item.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion/accordion.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion/accordion.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-header/accordion-header.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-header/accordion-header.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-content/accordion-content.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-content/accordion-content.component.html","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component.html","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component.html","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload/lazyload.component.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload/lazyload.component.html","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload-data/lazyload-data.component.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload-data/lazyload-data.component.html","../../../projects/matcha-components/src/lib/matcha-button/button/button.component.ts","../../../projects/matcha-components/src/lib/matcha-button/button/button.component.html","../../../projects/matcha-components/src/lib/matcha-card/card/card.component.ts","../../../projects/matcha-components/src/lib/matcha-card/card/card.component.html","../../../projects/matcha-components/src/lib/matcha-divider/divider/divider.component.ts","../../../projects/matcha-components/src/lib/matcha-divider/divider/divider.component.html","../../../projects/matcha-components/src/lib/matcha-title/title/title.component.ts","../../../projects/matcha-components/src/lib/matcha-title/title/title.component.html","../../../projects/matcha-components/src/lib/matcha-drawer/drawer/drawer.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer/drawer.component.html","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-content/drawer-content.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-container/drawer-container.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-container/drawer-container.component.html","../../../projects/matcha-components/src/lib/matcha-icon/icon.component.ts","../../../projects/matcha-components/src/lib/matcha-icon/icon.component.html","../../../projects/matcha-components/src/lib/matcha-grid/grid.component.ts","../../../projects/matcha-components/src/lib/matcha-grid/grid.component.html","../../../projects/matcha-components/src/lib/matcha-masonry/masonry/masonry.component.ts","../../../projects/matcha-components/src/lib/matcha-masonry/masonry/masonry.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-content/modal-content.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-content/modal-content.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-header/modal-header.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-header/modal-header.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-footer/modal-footer.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-footer/modal-footer.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-options/modal-options.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-options/modal-options.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal/modal.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal/modal.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar/toolbar.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar/toolbar.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-button/toolbar-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-button/toolbar-button.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-content/toolbar-content.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-content/toolbar-content.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field/matcha-form-field.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field/matcha-form-field.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-label/matcha-label.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-label/matcha-label.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-error/matcha-error.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-error/matcha-error.component.html","../../../projects/matcha-components/src/lib/matcha-ripple/ripple.directive.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox/checkbox.component.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox/checkbox.component.html","../../../projects/matcha-components/src/lib/matcha-radio/radio/radio.component.ts","../../../projects/matcha-components/src/lib/matcha-radio/radio/radio.component.html","../../../projects/matcha-components/src/lib/matcha-spin/spin/spin.component.ts","../../../projects/matcha-components/src/lib/matcha-spin/spin/spin.component.html","../../../projects/matcha-components/src/lib/matcha-spinner/spinner/spinner.component.ts","../../../projects/matcha-components/src/lib/matcha-spinner/spinner/spinner.component.html","../../../projects/matcha-components/src/lib/matcha-hint-text/hint/hint-text.component.ts","../../../projects/matcha-components/src/lib/matcha-hint-text/hint/hint-text.component.html","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton/skeleton.component.ts","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton/skeleton.component.html","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle/slide-toggle.component.ts","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle/slide-toggle.component.html","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle/button-toggle.component.ts","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle/button-toggle.component.html","../../../projects/matcha-components/src/lib/matcha-tabs/tab-item/tab-item.component.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tab-item/tab-item.component.html","../../../projects/matcha-components/src/lib/matcha-tabs/tabs/tabs.component.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tabs/tabs.component.html","../../../projects/matcha-components/src/lib/matcha-date/date/matcha-date.component.ts","../../../projects/matcha-components/src/lib/matcha-date/date/matcha-date.component.html","../../../projects/matcha-components/src/lib/matcha-date-range/date-range/date-range.component.ts","../../../projects/matcha-components/src/lib/matcha-date-range/date-range/date-range.component.html","../../../projects/matcha-components/src/lib/matcha-time/time/time.component.ts","../../../projects/matcha-components/src/lib/matcha-time/time/time.component.html","../../../projects/matcha-components/src/lib/matcha-input-phone/all-countries.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.config.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask-applier.service.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.service.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask-compatible.directive.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.component.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.component.html","../../../projects/matcha-components/src/lib/matcha-stepper/step/step.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper.service.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper/stepper.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-content/stepper-content.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-controller/stepper-controller.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-controller/stepper-controller.component.html","../../../projects/matcha-components/src/lib/matcha-drop-list/services/drop-list.service.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/directives/drag.directive.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list/drop-list.component.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list/drop-list.component.html","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.component.ts","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.component.html","../../../projects/matcha-components/src/lib/matcha-avatar/avatar/avatar.component.ts","../../../projects/matcha-components/src/lib/matcha-avatar/avatar/avatar.component.html","../../../projects/matcha-components/src/lib/matcha-option/matcha-option.component.ts","../../../projects/matcha-components/src/lib/matcha-panel/matcha-panel.component.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.component.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.component.html","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.component.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.component.html","../../../projects/matcha-components/src/lib/matcha-paginator/paginator-intl.service.ts","../../../projects/matcha-components/src/lib/matcha-paginator/paginator/paginator.component.ts","../../../projects/matcha-components/src/lib/matcha-paginator/paginator/paginator.component.html","../../../projects/matcha-components/src/lib/matcha-highlight/copy-button/copy-button.component.ts","../../../projects/matcha-components/src/lib/matcha-highlight/copy-button/copy-button.component.html","../../../projects/matcha-components/src/lib/matcha-highlight/highlight.component.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider/slider.component.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider/slider.component.html","../../../projects/matcha-components/src/lib/matcha-chip/chip/chip.component.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip/chip.component.html","../../../projects/matcha-components/src/lib/matcha-chip/chip-list/chip-list.component.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip-list/chip-list.component.html","../../../projects/matcha-components/src/lib/matcha-tooltip/tooltip.directive.ts","../../../projects/matcha-components/src/lib/matcha-tooltip/tooltip.module.ts","../../../projects/matcha-components/src/lib/matcha-icon/icon.module.ts","../../../projects/matcha-components/src/lib/matcha-title/title.module.ts","../../../projects/matcha-components/src/lib/matcha-divider/divider.module.ts","../../../projects/matcha-components/src/lib/matcha-button/button.module.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion.module.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll.module.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload.module.ts","../../../projects/matcha-components/src/lib/matcha-elevation/elevation.directive.ts","../../../projects/matcha-components/src/lib/matcha-elevation/elevation.module.ts","../../../projects/matcha-components/src/lib/matcha-modal/overlay.service.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal.service.ts","../../../projects/matcha-components/src/lib/matcha-modal/matcha-modal.module.ts","../../../projects/matcha-components/src/lib/matcha-card/card.module.ts","../../../projects/matcha-components/src/lib/matcha-masonry/masonry.module.ts","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle.module.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar.module.ts","../../../projects/matcha-components/src/lib/matcha-grid/grid.module.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.module.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field.module.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.directive.ts","../../../projects/matcha-components/src/lib/matcha-option/matcha-option.module.ts","../../../projects/matcha-components/src/lib/matcha-panel/matcha-panel.module.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.module.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.directive.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.module.ts","../../../projects/matcha-components/src/lib/matcha-ripple/ripple.module.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox.module.ts","../../../projects/matcha-components/src/lib/matcha-hint-text/hint.module.ts","../../../projects/matcha-components/src/lib/matcha-overflow-draggable/matcha-overflow-draggable.component.ts","../../../projects/matcha-components/src/lib/matcha-overflow-draggable/matcha-overflow-draggable.component.html","../../../projects/matcha-components/src/lib/matcha-paginator/paginator.module.ts","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle.module.ts","../../../projects/matcha-components/src/lib/matcha-spin/spin.module.ts","../../../projects/matcha-components/src/lib/matcha-spinner/spinner.module.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tabs.module.ts","../../../projects/matcha-components/src/lib/matcha-date/matcha-date.module.ts","../../../projects/matcha-components/src/lib/matcha-date-range/date-range.module.ts","../../../projects/matcha-components/src/lib/matcha-time/time.module.ts","../../../projects/matcha-components/src/lib/matcha-stepper/prev-step.diretive.ts","../../../projects/matcha-components/src/lib/matcha-stepper/next-step.diretive.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper.module.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/directives/drag-handle.directive.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list.module.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.module.ts","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.module.ts","../../../projects/matcha-components/src/lib/matcha-radio/radio.module.ts","../../../projects/matcha-components/src/lib/matcha-avatar/avatar.module.ts","../../../projects/matcha-components/src/lib/matcha-breakpoint-observable/breakpoint-observer.service.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer.module.ts","../../../projects/matcha-components/src/lib/matcha-highlight/highlight.module.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider.module.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip.module.ts","../../../projects/matcha-components/src/lib/matcha-components.module.ts","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton.module.ts","../../../projects/matcha-components/src/lib/matcha-breakpoint-observable/breakpoint-observable.module.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.pipe.ts","../../../projects/matcha-components/src/lib/matcha-stepper/step-content.diretive.ts","../../../projects/matcha-components/src/public-api.ts","../../../projects/matcha-components/src/matcha-components.ts"],"sourcesContent":["/**\n * Interface que deve ser implementada por componentes que querem usar matcha-option como filho\n *\n * Permite que matcha-option seja usado em diferentes contextos:\n * - matcha-autocomplete\n * - matcha-select\n * - matcha-menu\n * - etc.\n */\nexport interface MatchaOptionParent {\n /**\n * Método chamado quando uma opção é selecionada\n * @param option - A instância do MatchaOptionComponent selecionado\n */\n selectOption(option: any): void; // usando any para evitar referência circular\n}\n\n/**\n * Token de injeção para MatchaOptionParent\n * Usado para injetar o componente pai no matcha-option\n */\nexport const MATCHA_OPTION_PARENT = Symbol('MatchaOptionParent');\n","import { sequence, trigger, animate, style, group, query, transition, animateChild, state, animation, useAnimation, stagger } from '@angular/animations';\n\nconst customAnimation = animation([\n style({\n opacity : '{{opacity}}',\n transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})'\n }),\n animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style('*'))\n], {\n params: {\n duration: '200ms',\n delay : '0ms',\n opacity : '0',\n scale : '1',\n x : '0',\n y : '0',\n z : '0'\n }\n});\n\nexport const createAnimations = [\n\n trigger('animate', [transition('void => *', [useAnimation(customAnimation)])]),\n\n trigger('animateStagger', [\n state('50', style('*')),\n state('100', style('*')),\n state('200', style('*')),\n\n transition('void => 50',\n query('@*',\n [\n stagger('50ms', [\n animateChild()\n ])\n ], {optional: true})),\n transition('void => 100',\n query('@*',\n [\n stagger('100ms', [\n animateChild()\n ])\n ], {optional: true})),\n transition('void => 200',\n query('@*',\n [\n stagger('200ms', [\n animateChild()\n ])\n ], {optional: true}))\n ]),\n\n trigger('fadeInOut', [\n state('0, void', style({\n opacity: 0\n })),\n state('1, *', style({\n opacity: 1\n })),\n transition('1 => 0', animate('300ms ease-out')),\n transition('0 => 1', animate('300ms ease-in')),\n transition('void <=> *', animate('300ms ease-in'))\n ]),\n\n trigger('slideInOut', [\n state('0', style({\n height: '0px'\n })),\n state('1', style({\n height: '*'\n })),\n transition('1 => 0', animate('300ms ease-out')),\n transition('0 => 1', animate('300ms ease-in'))\n ]),\n\n trigger('slideIn', [\n transition('void => left', [\n style({\n transform: 'translateX(100%)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(0)'\n })\n )\n ]\n ),\n transition('left => void', [\n style({\n transform: 'translateX(0)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(-100%)'\n })\n )\n ]\n ),\n transition('void => right', [\n style({\n transform: 'translateX(-100%)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(0)'\n })\n )\n ]\n ),\n transition('right => void', [\n style({\n transform: 'translateX(0)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(100%)'\n })\n )\n ]\n )\n ]),\n\n trigger('slideInLeft', [\n state('void', style({\n transform: 'translateX(-100%)',\n })),\n state('*', style({\n transform: 'translateX(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInRight', [\n state('void', style({\n transform: 'translateX(100%)',\n })),\n state('*', style({\n transform: 'translateX(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInTop', [\n state('void', style({\n transform: 'translateY(-100%)',\n })),\n state('*', style({\n transform: 'translateY(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInBottom', [\n state('void',\n style({\n transform: 'translateY(100%)',\n })),\n state('*', style({\n transform: 'translateY(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('expandCollapse', [\n state('void', style({\n height: '0px'\n })),\n state('*', style({\n height: '*'\n })),\n transition('void => *', animate('300ms ease-out')),\n transition('* => void', animate('300ms ease-in'))\n ]),\n\n // -----------------------------------------------------------------------------------------------------\n // @ Router animations\n // -----------------------------------------------------------------------------------------------------\n\n trigger('routerTransitionLeft', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateX(100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateX(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(-100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateX(100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionRight', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateX(-100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateX(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateX(-100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionUp', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateY(100%)',\n opacity : 0\n })\n ], {optional: true}),\n group([\n query('content > :leave', [\n style({\n transform: 'translateY(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(-100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateY(100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ]),\n\n trigger('routerTransitionDown', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateY(-100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateY(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateY(-100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionFade', [\n\n transition('* => *', group([\n\n query('content > :enter, content > :leave ', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n\n query('content > :enter', [\n style({\n opacity: 0\n })\n ], {optional: true}),\n query('content > :leave', [\n style({\n opacity: 1\n }),\n animate('300ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n opacity: 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({\n opacity: 0\n }),\n animate('300ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n opacity: 1\n }))\n ], {optional: true}),\n query('content > :enter', animateChild(), {optional: true}),\n query('content > :leave', animateChild(), {optional: true})\n ]))\n ])\n];\n","import { Component, EventEmitter, Input, Output, OnInit, HostBinding, OnChanges, SimpleChanges } from '@angular/core';\nimport { createAnimations } from '../../matcha-animations/animations';\n\n@Component({\n selector: 'matcha-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrl: './accordion-item.component.scss',\n standalone: false,\n animations: [...createAnimations]\n})\nexport class MatchaAccordionItemComponent implements OnInit, OnChanges {\n private _stretch: boolean = false;\n private _isOpen: boolean = false;\n\n @Input()\n set stretch(value: boolean | string) {\n this._stretch = value != null && `${value}` !== 'false';\n }\n get stretch(): boolean {\n return this._stretch;\n }\n @HostBinding('class.stretch') get stretchClass() {\n return this._stretch;\n }\n\n private _clickableHeader = true;\n @Input()\n set clickableHeader(value: boolean | string) {\n this._clickableHeader = value != null && `${value}` !== 'false';\n }\n get clickableHeader(): boolean {\n return this._clickableHeader;\n }\n\n @Input()\n set isOpen(value: boolean | string) {\n this._isOpen = value != null && `${value}` !== 'false';\n }\n get isOpen(): boolean {\n return this._isOpen;\n }\n @HostBinding('class.is-open') get isOpenClass() {\n return this._isOpen;\n }\n\n @Output() opened = new EventEmitter<boolean>();\n @Output() toggleRequested = new EventEmitter<void>();\n\n ngOnInit() {\n this.opened.emit(this.isOpen);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['isOpen']) {\n this.opened.emit(this.isOpen);\n }\n }\n\n toggleAccordion() {\n // Emite evento para o accordion pai controlar o estado\n this.toggleRequested.emit();\n }\n}\n","<div class=\"accordion-item flex-column overflow-hidden\">\n <div class=\"accordion-header d-flex\">\n <div class=\"d-flex accordion-header-wrapper\"\n [class.cursor-pointer]=\"clickableHeader\"\n (click)=\"clickableHeader ? toggleAccordion() : null\">\n <ng-content select=\"matcha-accordion-header\"></ng-content>\n </div>\n </div>\n <div class=\"accordion-content overflow-hidden\" [@expandCollapse]=\"isOpen ? '*' : 'void'\">\n <ng-content select=\"matcha-accordion-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, Output, EventEmitter, OnDestroy } from '@angular/core';\nimport { MatchaAccordionItemComponent } from '../accordion-item/accordion-item.component';\nimport { Subscription } from 'rxjs';\n\n\n@Component({\n selector: 'matcha-accordion',\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.scss',\n standalone: false\n})\nexport class MatchaAccordionComponent implements AfterContentInit, OnDestroy {\n private _multiple = false;\n @Input()\n set multiple(value: boolean | string) {\n // Converte 'false' (string) ou false (boolean) para false, e qualquer outro valor para true.\n this._multiple = value != null && `${value}` !== 'false';\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n @Output('openedChange') openedChange = new EventEmitter<boolean>();\n\n @ContentChildren(MatchaAccordionItemComponent, { descendants: true }) items!: QueryList<MatchaAccordionItemComponent>;\n private subscriptions: Subscription[] = [];\n\n ngAfterContentInit() {\n this.setupItems();\n\n // Escuta mudanças na lista de itens (para casos dinâmicos)\n this.items.changes.subscribe(() => {\n this.setupItems();\n });\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private setupItems() {\n // Limpa subscriptions anteriores\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions = [];\n\n this.items.forEach(item => {\n const toggleSub = item.toggleRequested.subscribe(() => {\n this.toggleItem(item);\n });\n this.subscriptions.push(toggleSub);\n\n const openedSub = item.opened.subscribe((isOpen: boolean) => {\n this.openedChange.emit(isOpen);\n });\n this.subscriptions.push(openedSub);\n });\n }\n\n toggleItem(selectedItem: MatchaAccordionItemComponent) {\n // Toggle o item selecionado\n selectedItem.isOpen = !selectedItem.isOpen;\n\n // Se não permite múltiplos itens abertos e o item foi aberto, fecha os demais\n if (!this.multiple && selectedItem.isOpen) {\n this.items.forEach(item => {\n if (item !== selectedItem) {\n item.isOpen = false;\n }\n });\n }\n }\n}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-accordion-header',\n templateUrl: './accordion-header.component.html',\n styleUrl: './accordion-header.component.scss',\n standalone: false\n})\nexport class MatchaAccordionHeaderComponent {\n\n}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-accordion-content',\n templateUrl: './accordion-content.component.html',\n styleUrl: './accordion-content.component.scss',\n standalone: false\n})\nexport class MatchaAccordionContentComponent {\n\n}\n","<ng-content></ng-content>\n","/*\nHOW TO USE ---------------------------------------------------------\nTEMPLATE:\n<!-- Elemento sentinela para detectar o scroll -->\n<option disabled style=\"height: 1px; padding: 0; margin: 0;\">\n <!-- Esse <div> não precisa ter conteúdo visual; ele apenas será observado -->\n <div infiniteScroll (scrolledToEnd)=\"onScrolledToEnd()\"></div>\n</option>\n*/\nimport { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\n\n\n@Component({\n selector: 'matcha-infinite-scroll',\n templateUrl: './matcha-infinite-scroll.component.html',\n styleUrl: './matcha-infinite-scroll.component.scss',\n standalone: false\n})\nexport class MatchaInfiniteScrollComponent implements OnInit, OnDestroy{\n// Evento que será disparado quando o elemento entrar na área visível\n@Output() scrolledToEnd = new EventEmitter<void>();\n\nprivate observer!: IntersectionObserver;\n\nconstructor(private element: ElementRef) {}\n\nngOnInit(): void {\n // Configura o observer para disparar quando 10% do elemento estiver visível\n const options = {\n root: null, // Usa a viewport\n rootMargin: '0px',\n threshold: 0.1\n };\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.scrolledToEnd.emit();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n}\n\nngOnDestroy(): void {\n this.observer.disconnect();\n}\n}\n","","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-infinite-scroll-data',\n templateUrl: './matcha-infinite-scroll-data.component.html',\n styleUrls: ['./matcha-infinite-scroll-data.component.scss'],\n styles: [`\n :host {\n height: 1px;\n opacity: 0;\n }\n `],\n standalone: false\n})\nexport class MatchaInfiniteScrollDataComponent implements OnInit, OnDestroy, OnChanges {\n\n /**\n * Função que carrega os dados com base no número da página.\n * Deve retornar um Observable com um array de itens.\n */\n @Input() loadData!: (page: number) => Observable<any[]>;\n\n /**\n * Lista inicial (opcional) para iniciar a agregação.\n */\n @Input() initialList: any[] = [];\n\n /**\n * Threshold para o Intersection Observer (padrão: 0.1 = 10% do elemento visível).\n */\n @Input() threshold = 0.1;\n\n /**\n * Chave para resetar a diretiva (para componentes como select).\n */\n @Input() resetKey: any;\n\n /**\n * Novo input para o autocomplete, onde será aplicado o debounce.\n */\n @Input() searchTerm: any;\n\n /**\n * Emite a lista acumulada de itens.\n */\n @Output() aggregatedData = new EventEmitter<any[]>();\n\n /**\n * Emite o item exato, quando a aggregatedData tiver um único item igual ao searchTerm.\n */\n @Output() exactMatch = new EventEmitter<any>();\n\n private aggregatedList: any[] = [];\n private currentPage = 0;\n private observer!: IntersectionObserver;\n\n // Subscription para as chamadas do loadData\n private dataSubscription = new Subscription();\n // Subscription exclusiva para o debounce do searchTerm\n private searchSubscription = new Subscription();\n // Subject para aplicar debounce no searchTerm\n private searchTermSubject: Subject<any> = new Subject();\n\n constructor(private element: ElementRef) { }\n\n ngOnInit(): void {\n this.initialize();\n\n // Configura o Intersection Observer para carregamento via scroll\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: this.threshold\n };\n\n this.observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.loadNextPage();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n\n // Inscreve para receber alterações do searchTerm com debounce\n this.searchSubscription = this.searchTermSubject.pipe(\n debounceTime(300)\n ).subscribe(() => {\n // Reseta e carrega a primeira página após o debounce\n this.resetData();\n this.loadNextPage();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['resetKey'] && !changes['resetKey'].firstChange) {\n this.resetData();\n }\n\n if (changes['searchTerm'] && !changes['searchTerm'].firstChange) {\n // Emite o novo valor para o Subject e aguarda o debounce\n this.searchTermSubject.next(changes['searchTerm'].currentValue);\n }\n }\n\n /**\n * Inicializa ou reinicializa a lista agregada e o contador de página.\n */\n private initialize(): void {\n this.aggregatedList = [...this.initialList];\n this.currentPage = 0;\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n\n /**\n * Reseta apenas as assinaturas e o estado dos dados (não a inscrição do searchTerm).\n */\n private resetData(): void {\n // Cancela as assinaturas das chamadas de loadData\n this.dataSubscription.unsubscribe();\n this.dataSubscription = new Subscription();\n\n // Re-inicializa a lista e o contador\n this.initialize();\n }\n\n /**\n * Carrega a próxima página de dados utilizando a função loadData.\n */\n private loadNextPage(): void {\n if (!this.loadData) {\n return;\n }\n this.currentPage++;\n const dataObservable = this.loadData(this.currentPage);\n const sub = dataObservable.subscribe(data => {\n if (data && data.length) {\n this.aggregatedList = [...this.aggregatedList, ...data];\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n });\n this.dataSubscription.add(sub);\n }\n\n /**\n * Verifica se a lista agregada possui exatamente um item e se esse item é igual ao searchTerm.\n * Se sim, emite o output exactMatch com esse item.\n */\n private checkExactMatch(): void {\n if (this.aggregatedList.length === 1 && this.aggregatedList[0] === this.searchTerm) {\n this.exactMatch.emit(this.aggregatedList[0]);\n }\n }\n\n ngOnDestroy(): void {\n this.observer.disconnect();\n this.dataSubscription.unsubscribe();\n this.searchSubscription.unsubscribe();\n }\n}\n","","/*\nHOW TO USE ---------------------------------------------------------\nTEMPLATE:\n<!-- Elemento sentinela para detectar o scroll -->\n<option disabled style=\"height: 1px; padding: 0; margin: 0;\">\n <!-- Esse <div> não precisa ter conteúdo visual; ele apenas será observado -->\n <div infiniteScroll (scrolledToEnd)=\"onScrolledToEnd()\"></div>\n</option>\n*/\nimport { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-lazyload',\n templateUrl: './lazyload.component.html',\n styleUrl: './lazyload.component.scss',\n standalone: false\n})\nexport class MatchaLazyloadComponent implements OnInit, OnDestroy{\n// Evento que será disparado quando o elemento entrar na área visível\n@Output() scrolledToEnd = new EventEmitter<void>();\n\nprivate observer!: IntersectionObserver;\n\nconstructor(private element: ElementRef) {}\n\nngOnInit(): void {\n // Configura o observer para disparar quando 10% do elemento estiver visível\n const options = {\n root: null, // Usa a viewport\n rootMargin: '0px',\n threshold: 0.1\n };\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.scrolledToEnd.emit();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n}\n\nngOnDestroy(): void {\n this.observer.disconnect();\n}\n}\n","<ng-content></ng-content>\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-lazyload-data',\n templateUrl: './lazyload-data.component.html',\n styleUrls: ['./lazyload-data.component.scss'],\n styles: [`\n :host {\n height: 1px;\n opacity: 0;\n }\n `],\n standalone: false\n})\nexport class MatchaLazyloadDataComponent implements OnInit, OnDestroy, OnChanges {\n\n /**\n * Função que carrega os dados com base no número da página.\n * Deve retornar um Observable com um array de itens.\n */\n @Input() loadData!: (page: number) => Observable<any[]>;\n\n /**\n * Lista inicial (opcional) para iniciar a agregação.\n */\n @Input() initialList: any[] = [];\n\n /**\n * Threshold para o Intersection Observer (padrão: 0.1 = 10% do elemento visível).\n */\n @Input() threshold = 0.1;\n\n /**\n * Root margin para o Intersection Observer (padrão: '0px').\n * Use valores como '100px' para acionar 100px antes do elemento aparecer.\n * Aceita valores como: '10px', '10px 20px', '10% 5% 0px 5%'\n */\n @Input() rootMargin = '0px';\n\n /**\n * Chave para resetar a diretiva (para componentes como select).\n */\n @Input() resetKey: any;\n\n /**\n * Novo input para o autocomplete, onde será aplicado o debounce.\n */\n @Input() searchTerm: any;\n\n /**\n * Emite a lista acumulada de itens.\n */\n @Output() aggregatedData = new EventEmitter<any[]>();\n\n /**\n * Emite o item exato, quando a aggregatedData tiver um único item igual ao searchTerm.\n */\n @Output() exactMatch = new EventEmitter<any>();\n\n private aggregatedList: any[] = [];\n private currentPage = 0;\n private observer!: IntersectionObserver;\n\n // Subscription para as chamadas do loadData\n private dataSubscription = new Subscription();\n // Subscription exclusiva para o debounce do searchTerm\n private searchSubscription = new Subscription();\n // Subject para aplicar debounce no searchTerm\n private searchTermSubject: Subject<any> = new Subject();\n\n constructor(private element: ElementRef) { }\n\n ngOnInit(): void {\n this.initialize();\n\n // Configura o Intersection Observer para carregamento via scroll\n const options = {\n root: null,\n rootMargin: this.rootMargin,\n threshold: this.threshold\n };\n\n this.observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.loadNextPage();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n\n // Inscreve para receber alterações do searchTerm com debounce\n this.searchSubscription = this.searchTermSubject.pipe(\n debounceTime(300)\n ).subscribe(() => {\n // Reseta e carrega a primeira página após o debounce\n this.resetData();\n this.loadNextPage();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['resetKey'] && !changes['resetKey'].firstChange) {\n this.resetData();\n }\n\n if (changes['searchTerm'] && !changes['searchTerm'].firstChange) {\n // Emite o novo valor para o Subject e aguarda o debounce\n this.searchTermSubject.next(changes['searchTerm'].currentValue);\n }\n }\n\n /**\n * Inicializa ou reinicializa a lista agregada e o contador de página.\n */\n private initialize(): void {\n this.aggregatedList = [...this.initialList];\n this.currentPage = 0;\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n\n /**\n * Reseta apenas as assinaturas e o estado dos dados (não a inscrição do searchTerm).\n */\n private resetData(): void {\n // Cancela as assinaturas das chamadas de loadData\n this.dataSubscription.unsubscribe();\n this.dataSubscription = new Subscription();\n\n // Re-inicializa a lista e o contador\n this.initialize();\n }\n\n /**\n * Carrega a próxima página de dados utilizando a função loadData.\n */\n private loadNextPage(): void {\n if (!this.loadData) {\n return;\n }\n this.currentPage++;\n const dataObservable = this.loadData(this.currentPage);\n const sub = dataObservable.subscribe(data => {\n if (data && data.length) {\n this.aggregatedList = [...this.aggregatedList, ...data];\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n });\n this.dataSubscription.add(sub);\n }\n\n /**\n * Verifica se a lista agregada possui exatamente um item e se esse item é igual ao searchTerm.\n * Se sim, emite o output exactMatch com esse item.\n */\n private checkExactMatch(): void {\n if (this.aggregatedList.length === 1 && this.aggregatedList[0] === this.searchTerm) {\n this.exactMatch.emit(this.aggregatedList[0]);\n }\n }\n\n ngOnDestroy(): void {\n this.observer.disconnect();\n this.dataSubscription.unsubscribe();\n this.searchSubscription.unsubscribe();\n }\n}\n","<ng-content></ng-content>\n","import { Component, ElementRef, HostBinding, Inject, Input, OnChanges, OnInit, Renderer2 } from '@angular/core';\n\n@Component({\n selector: '[matcha-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n standalone: false\n})\nexport class MatchaButtonComponent implements OnChanges, OnInit {\n @Input('size') size: string | null = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @Input('gap') gap: string | number | null = null;\n\n @Input('color') color: string | null = 'basic';\n\n @HostBinding('attr.color')\n get colorAttr(): string | null {\n return this.color;\n }\n\n private _basic = false;\n @Input() get basic() { return this._basic; }\n set basic(v: boolean | string) { this._basic = v === 'false' ? false : !!v; }\n\n private _outline = false;\n @Input() get outline() { return this._outline; }\n set outline(v: boolean | string) { this._outline = v === 'false' ? false : !!v;}\n\n private _alpha = false;\n @Input() get alpha() { return this._alpha; }\n set alpha(v: boolean | string) { this._alpha = v === 'false' ? false : !!v;}\n\n private _pill = false;\n @Input() get pill() { return this._pill; }\n set pill(v: boolean | string) { this._pill = v === 'false' ? false : !!v;}\n\n private _link = false;\n @Input() get link() { return this._link; }\n set link(v: boolean | string) { this._link = v === 'false' ? false : !!v;}\n\n private _icon = false;\n @Input() get icon() { return this._icon; }\n set icon(v: boolean | string) { this._icon = v === 'false' ? false : !!v;}\n\n\n\n constructor(@Inject(ElementRef) private _elementRef: ElementRef, @Inject(Renderer2) private _renderer: Renderer2) {}\n\n private _config: any = {\n sizeXs: 'tiny',\n sizeSm: 'small',\n sizeMd: 'medium',\n sizeLg: 'large',\n sizeXl: 'huge',\n size: 'medium',\n gap: null,\n basic: false,\n outline: false,\n pill: false,\n icon: false,\n link: false\n };\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button`);\n this.setConfig();\n this.updateDividerStyles();\n // Adicione o evento de clique apenas a elementos com a classe \"matcha-button\"\n const buttons = document.querySelectorAll('.matcha-button');\n buttons.forEach(button => {\n // mouse down event\n button.addEventListener('mousedown', this.addRippleEffect, false);\n });\n }\n\n ngOnChanges() {\n this.setConfig();\n this.updateDividerStyles();\n }\n\n private clearConfig() {\n //size\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-${this._config.size}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-xs-${this._config.sizeXs}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-sm-${this._config.sizeSm}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-md-${this._config.sizeMd}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-lg-${this._config.sizeLg}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-xl-${this._config.sizeXl}`);\n //gap\n if(this._config.gap) {\n this._renderer.removeClass(this._elementRef.nativeElement, `px-${this._config.gap}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `gap-${this._config.gap}`);\n }\n //basic\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-icon`);\n //outline\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-outline`);\n //pill\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-pill`);\n //icon\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-basic`);\n //link\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-link`);\n }\n\n private setConfig() {\n this.clearConfig();\n this.size ? this.setSize() : null;\n this.gap ? this.setGap() : null;\n (this.outline === true || this.outline === 'true') ? this.setOutline() : null;\n (this.pill === true || this.pill === 'true') ? this.setPill() : null;\n (this.link === true || this.link === 'true') ? this.setLink() : null;\n (this.basic === true || this.basic === 'true') ? this.setBasic() : null;\n (this.icon === true || this.icon === 'true') ? this.setIcon() : null;\n }\n\n private setSize() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-${this.size}`);\n this._config.size = this.size;\n if(this.sizeXs) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-xs-${this.sizeXs}`);\n this._config.sizeXs = this.sizeXs;\n }\n if(this.sizeSm) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-sm-${this.sizeSm}`);\n this._config.sizeSm = this.sizeSm;\n }\n if(this.sizeMd) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-md-${this.sizeMd}`);\n this._config.sizeMd = this.sizeMd;\n }\n if(this.sizeLg) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-lg-${this.sizeLg}`);\n this._config.sizeLg = this.sizeLg;\n }\n if(this.sizeXl) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-xl-${this.sizeXl}`);\n this._config.sizeXl = this.sizeXl;\n }\n }\n\n private setGap() {\n this._renderer.addClass(this._elementRef.nativeElement, `px-${this.gap}`);\n this._renderer.addClass(this._elementRef.nativeElement, `gap-${this.gap}`);\n this._config.gap = this.gap;\n }\n\n private setOutline() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-outline`);\n }\n\n private setPill() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-pill`);\n }\n\n private setLink() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-link`);\n }\n\n private setBasic() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-basic`);\n this._renderer.addClass(this._elementRef.nativeElement, `basic`);\n }\n\n private setIcon() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-icon`);\n }\n\n private updateDividerStyles() {\n // Busca todos os matcha-divider dentro do botão\n const dividers = this._elementRef.nativeElement.querySelectorAll('matcha-divider');\n\n if (dividers && dividers.length > 0) {\n dividers.forEach((divider: HTMLElement) => {\n // Busca as divs dentro do matcha-divider\n const innerDivs = divider.querySelectorAll('div');\n\n innerDivs.forEach((div: HTMLElement) => {\n // Remove a classe border-color-disabled\n if (div.classList.contains('border-color-disabled')) {\n this._renderer.removeClass(div, 'border-color-disabled');\n // Adiciona a classe opacity-03\n this._renderer.addClass(div, 'opacity-03');\n }\n });\n });\n }\n }\n\n private addRippleEffect(e: any) {\n var target = e.target;\n if (target.tagName.toLowerCase() !== 'button') return false;\n var rect = target.getBoundingClientRect();\n var ripple = target.querySelector('.ripple');\n if (!ripple) {\n ripple = document.createElement('span');\n ripple.className = `ripple`;\n ripple.style.height = ripple.style.width = target.offsetWidth + 'px';\n target.appendChild(ripple);\n }\n ripple.classList.remove('show');\n var top = e.pageY - rect.top - ripple.offsetHeight / 2 - window.scrollY;\n var left = e.pageX - rect.left - ripple.offsetWidth / 2 - window.scrollX;\n ripple.style.top = top + 'px';\n ripple.style.left = left + 'px';\n ripple.classList.add('show');\n return false;\n }\n\n ngOnDestroy() {\n const buttons = document.querySelectorAll('.matcha-button');\n buttons.forEach(button => {\n button.removeEventListener('click', this.addRippleEffect, false);\n });\n }\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Directive, HostBinding, Inject, InjectionToken, Input, Optional, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'matcha-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n standalone: false\n})\nexport class MatchaCardComponent {\n\n private _color = 'surface';\n @Input() get color() { return this._color; }\n set color(v: string | null) { this._color = v || 'surface';}\n\n @HostBinding('attr.color')\n get colorAttr(): string | null {\n return this.color;\n }\n\n @Input()\n blockquote: 'left' | 'right' | 'none' | null = 'none';\n\n @Input()\n blockquoteColor: string | null = null;\n\n @Input()\n class: string | null = '';\n\n // Aplique o mesmo padrão para alpha, tint e loading\n private _alpha = false;\n @Input() get alpha() { return this._alpha; }\n set alpha(v: boolean | string) {\n this._alpha = v !== 'false' && v !== false;\n }\n\n @HostBinding('attr.alpha')\n get alphaAttr(): string | null {\n return this.alpha ? 'true' : 'false';\n }\n\n private _tint = false;\n @Input() get tint() { return this._tint; }\n set tint(v: boolean | string) {\n this._tint = v !== 'false' && v !== false;\n }\n\n @HostBinding('attr.tint')\n get tintAttr(): string | null {\n return this.tint ? 'true' : 'false';\n }\n\n private _loading = false;\n @Input() get loading() { return this._loading; }\n set loading(v: boolean | string) {\n this._loading = v !== 'false' && v !== false;\n }\n\n @HostBinding('class')\n public get classes(): string {\n let backgroundColor = '';\n let blockquoteColor = '';\n let blockquotePosition = null;\n\n if (this.color === 'bg' || this.color === 'surface') {\n if (this.hasBlockquotePosition()) {\n blockquotePosition = `matcha-card-border-${this.blockquote}`;\n blockquoteColor = this.blockquoteColor ? `border-color-${this.blockquoteColor}` : '';\n } else {\n blockquotePosition = '';\n blockquoteColor = '';\n }\n\n } else {\n if (this.hasBlockquotePosition()) {\n blockquotePosition = `matcha-card-border-${this.blockquote}`;\n blockquoteColor = this.color ? `border-color-${this.blockquoteColor}` : '';\n } else {\n blockquotePosition = '';\n blockquoteColor = '';\n }\n }\n\n const activeClasses = `matcha-card ${blockquotePosition} ${blockquoteColor} ${backgroundColor} ${this.loading ? 'loading' : ''} ${this.class}`;\n return activeClasses;\n }\n\n public hasBlockquotePosition(): boolean {\n return this.blockquote === 'left' || this.blockquote === 'right';\n }\n\n\n}\n","<ng-content></ng-content>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n standalone: false\n})\nexport class MatchaDividerComponent {\n @Input('gap') gap: string | number | null = null;\n @Input('gap-sm') gapSm: string | number | null = null;\n @Input('gap-md') gapMd: string | number | null = null;\n @Input('gap-lg') gapLg: string | number | null = null;\n @Input('gap-xl') gapXl: string | number | null = null;\n\n\n private _direction = 'horizontal';\n @Input('direction')\n set direction(value: string) {\n this._direction = value;\n }\n get direction(): string {\n return this._direction;\n }\n\n @HostBinding('attr.direction')\n get directionAttr(): string {\n return this.direction;\n }\n\n public get classes(): string {\n const hasVertical = this.direction === 'vertical';\n const directionPrefix = hasVertical ? 'mx' : 'my';\n const gap = this.gap ? `${directionPrefix}-${this.gap}` : '';\n const gapSm = this.gapSm ? `${directionPrefix}-sm-${this.gapSm}` : '';\n const gapMd = this.gapMd ? `${directionPrefix}-md-${this.gapMd}` : '';\n const gapLg = this.gapLg ? `${directionPrefix}-lg-${this.gapLg}` : '';\n const gapXl = this.gapXl ? `${directionPrefix}-xl-${this.gapXl}` : '';\n let activeClasses = '';\n\n const verticalClasses = 'flex-row h-100-p bl-2 border-color-disabled';\n const horizontalClasses = 'flex-column w-100-p bt-2 border-color-disabled';\n\n activeClasses += hasVertical ? verticalClasses : horizontalClasses;\n activeClasses += gap ? ` ${gap}` : '';\n activeClasses += gapSm ? ` ${gapSm}` : '';\n activeClasses += gapMd ? ` ${gapMd}` : '';\n activeClasses += gapLg ? ` ${gapLg}` : '';\n activeClasses += gapXl ? ` ${gapXl}` : '';\n\n return activeClasses;\n }\n}\n","<div [class]=\"classes\"></div>\n","import { Component, EventEmitter, Input, Output, HostBinding } from '@angular/core';\n\nexport interface ILevelClasses {\n [key: number | string]: string;\n}\n\n// matcha-title <matcha-title color=\"fg\" size=\"1\" loading=\"false\" type=\"pill\" icon=\"icon\" (iconClick)=\"emitIconAction($event)\"></matcha-title>\n\n@Component({\n selector: 'matcha-title',\n templateUrl: './title.component.html',\n styleUrls: ['./title.component.scss'],\n standalone: false\n})\nexport class MatchaTitleComponent {\n @Input()\n color: null | string = null;\n\n @Input()\n size: number | string = 4;\n\n private _loading = false;\n @Input() get loading() { return this._loading; }\n set loading(v: boolean | string) { this._loading = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.loading')\n get loadingAttr(): string | null {\n return this.loading ? 'true' : 'false';\n }\n\n private _type: 'pill' | 'bullet' | 'icon' | 'none' = 'pill';\n @Input() get type() { return this._type; }\n set type(v: 'pill' | 'bullet' | 'icon' | 'none' | string) {\n this._type = (v as 'pill' | 'bullet' | 'icon' | 'none') || 'pill';\n }\n\n @HostBinding('attr.type')\n get typeAttr(): string {\n return this.type;\n }\n\n private _icon = '';\n @Input() get icon() { return this._icon; }\n set icon(v: string) { this._icon = v || ''; }\n\n @HostBinding('attr.icon')\n get iconAttr(): string | null {\n return this.icon || null;\n }\n\n @Output() iconClick = new EventEmitter<object>();\n\n\n public sizeClasses: ILevelClasses = {\n 1: 'fw-900 fs-12 lh-12',\n 2: 'fw-900 fs-14 lh-16',\n 3: 'fw-900 fs-16 lh-18',\n 4: 'fw-900 fs-20 lh-22',\n 5: 'fw-900 fs-32 lh-32',\n 6: 'fw-900 fs-40 lh-40',\n 7: 'fw-900 fs-40 lh-40',\n };\n\n public getTypes(): string {\n const color = this.color ? `background-${this.color} ` : 'background-fg';\n const icon = this.icon ? `i-matcha-${this.icon}` : '';\n return this.type === 'pill' ? `min-h-20 h-20 max-h-20 max-w-8 w-8 min-w-8 position-relative mr-8 radius-8 ${color}` :\n this.type === 'bullet' ? `min-h-8 h-8 max-h-8 max-w-8 w-8 min-w-8 position-relative mr-8 radius-8 ${this.color ? `background-${this.color}` : 'background-fg'}` :\n this.type === 'icon' ? `position-relative mr-8 radius-8 ${icon} ${this.color ? `color-${this.color}` : 'color-grey'}` :\n this.type === 'none' ? `d-none--force` : '';\n }\n\n public get signClasses(): string {\n const activeClasses = `d-flex ${this.getTypes()} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n public get textClasses(): string {\n const classes = `d-inline-block position-relative mr-8 radius-8`;\n const size = this.sizeClasses[this.size] ? this.sizeClasses[this.size] : '';\n const activeClasses = `${classes} ${size} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n public emitIconAction(): void {\n const data:object = { icon: this.icon };\n this.iconClick.emit(data);\n }\n\n public hasIconClickOutput(): boolean {\n return this.iconClick.observers.length > 0;\n }\n}\n","<!-- <matcha-title size=\"1\" type=\"bullet\"></matcha-title> -->\n\n<div class=\"d-flex flex-align-center m-0\">\n <ng-container *ngIf=\"loading\">\n <span [class]=\"signClasses\" [class.skeleton-animated-background]=\"loading\"></span>\n <span [class]=\"textClasses\" [class.skeleton-animated-background]=\"loading\" class=\"d-flex px-60\"> </span>\n </ng-container>\n\n <ng-container *ngIf=\"!loading\">\n <span [class]=\"signClasses\" [class.cursor-pointer]=\"hasIconClickOutput()\" (click)=\"emitIconAction()\"></span>\n <span [class]=\"textClasses\">\n <ng-content></ng-content>\n </span>\n </ng-container>\n</div>\n","import { Component, Input, Output, EventEmitter, HostBinding, ElementRef, OnInit, OnDestroy, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nexport type DrawerMode = 'over' | 'push' | 'side';\nexport type DrawerPosition = 'start' | 'end';\n\n@Component({\n selector: 'matcha-drawer',\n templateUrl: './drawer.component.html',\n styleUrls: ['./drawer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer',\n '[class.matcha-drawer-end]': 'position === \"end\"',\n '[class.matcha-drawer-over]': 'mode === \"over\"',\n '[class.matcha-drawer-push]': 'mode === \"push\"',\n '[class.matcha-drawer-side]': 'mode === \"side\"',\n '[class.matcha-drawer-opened]': 'opened',\n 'tabindex': '-1',\n }\n})\nexport class MatchaDrawerComponent implements OnInit, OnDestroy {\n\n // Propriedades principais\n @Input() position: DrawerPosition = 'start';\n\n // Mode com setter para detectar mudanças\n private _mode: DrawerMode = 'over';\n @Input()\n get mode(): DrawerMode {\n return this._mode;\n }\n set mode(value: DrawerMode) {\n if (this._mode !== value) {\n this._mode = value;\n this.modeChange.emit(value);\n this._cdr.markForCheck();\n }\n }\n\n @Input() disableClose: boolean = false;\n @Input() autoFocus: boolean = true;\n @Input() fixedInViewport: boolean = false;\n @Input() fixedTopGap: number = 0;\n @Input() fixedBottomGap: number = 0;\n\n // Largura do drawer\n @Input() width: string = '256px';\n\n @HostBinding('style.width')\n get drawerWidth(): string {\n // Garante que sempre retorne um valor válido\n return this.width || '256px';\n }\n\n // Estado de aberto/fechado\n private _opened: boolean = false;\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n set opened(value: boolean) {\n this.toggle(value);\n }\n\n // Eventos\n @Output() openedChange = new EventEmitter<boolean>();\n @Output() openedStart = new EventEmitter<void>();\n @Output() closedStart = new EventEmitter<void>();\n @Output() modeChange = new EventEmitter<DrawerMode>();\n\n // Subject para debounce de animações\n private _animationSubject = new Subject<boolean>();\n private _animating = false;\n\n constructor(\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef\n ) {\n this._setupAnimationDebounce();\n }\n\n ngOnInit() {\n // Inicialização se necessário\n }\n\n ngOnDestroy() {\n this._animationSubject.complete();\n }\n\n private _setupAnimationDebounce() {\n this._animationSubject.pipe(\n debounceTime(50)\n ).subscribe(() => {\n this._animating = false;\n this._cdr.markForCheck();\n });\n }\n\n /**\n * Toggle o estado do drawer\n */\n toggle(isOpen: boolean = !this._opened): Promise<void> {\n return new Promise((resolve) => {\n if (this._opened === isOpen || this._animating) {\n resolve();\n return;\n }\n\n this._animating = true;\n const wasOpened = this._opened;\n this._opened = isOpen;\n\n if (isOpen) {\n this.openedStart.emit();\n } else {\n this.closedStart.emit();\n }\n\n // Emite a mudança\n this.openedChange.emit(this._opened);\n this._cdr.markForCheck();\n\n // Aguarda a animação\n this._animationSubject.next(true);\n\n setTimeout(() => {\n if (this.autoFocus && isOpen) {\n this._elementRef.nativeElement.focus();\n }\n resolve();\n }, 300);\n });\n }\n\n /**\n * Abre o drawer\n */\n open(): Promise<void> {\n return this.toggle(true);\n }\n\n /**\n * Fecha o drawer\n */\n close(): Promise<void> {\n return this.toggle(false);\n }\n\n /**\n * Getter para saber se está animando\n */\n get animating(): boolean {\n return this._animating;\n }\n\n /**\n * Getter para a largura/altura do drawer\n */\n @HostBinding('style.visibility')\n get visibility(): string {\n return this.opened || this._animating ? 'visible' : 'hidden';\n }\n}\n","<div class=\"matcha-drawer-inner-container\">\n <ng-content></ng-content>\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ElementRef\n} from '@angular/core';\n\n@Component({\n selector: 'matcha-drawer-content',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer-content',\n }\n})\nexport class MatchaDrawerContentComponent {\n constructor(public _elementRef: ElementRef<HTMLElement>) {}\n}\n","import {\n Component,\n ContentChild,\n ContentChildren,\n QueryList,\n AfterContentInit,\n OnDestroy,\n ChangeDetectorRef,\n ViewEncapsulation,\n HostBinding,\n HostListener\n} from '@angular/core';\nimport { MatchaDrawerComponent } from '../drawer/drawer.component';\nimport { MatchaDrawerContentComponent } from '../drawer-content/drawer-content.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil, debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-drawer-container',\n templateUrl: './drawer-container.component.html',\n styleUrls: ['./drawer-container.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer-container',\n '[class.matcha-drawer-container-explicit-backdrop]': '_backdropOverride',\n }\n})\nexport class MatchaDrawerContainerComponent implements AfterContentInit, OnDestroy {\n\n @ContentChildren(MatchaDrawerComponent) _drawers!: QueryList<MatchaDrawerComponent>;\n @ContentChild(MatchaDrawerContentComponent) _content!: MatchaDrawerContentComponent;\n\n @HostBinding('class.matcha-drawer-container-has-open')\n get hasOpenDrawer(): boolean {\n return this._drawers && this._drawers.some(drawer => drawer.opened);\n }\n\n /** Backdrop override */\n _backdropOverride: boolean | null = null;\n\n private _destroyed = new Subject<void>();\n private _doCheck = new Subject<void>();\n\n constructor(private _cdr: ChangeDetectorRef) {\n // Debounce para otimizar detecção de mudanças\n this._doCheck.pipe(\n debounceTime(10),\n takeUntil(this._destroyed)\n ).subscribe(() => {\n this._validateDrawers();\n this._updateContentMargins();\n });\n }\n\n ngAfterContentInit() {\n // Escuta mudanças nos drawers\n this._drawers.changes\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._validateDrawers();\n this._updateContentMargins();\n this._subscribeToDrawerChanges();\n });\n\n // Inscreve nos eventos dos drawers\n this._subscribeToDrawerChanges();\n\n this._updateContentMargins();\n }\n\n /**\n * Inscreve nos eventos de cada drawer\n */\n private _subscribeToDrawerChanges() {\n this._drawers.forEach(drawer => {\n // Escuta mudanças no estado opened\n drawer.openedChange\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._updateContentMargins();\n this._cdr.markForCheck();\n });\n\n // Escuta mudanças no modo do drawer\n drawer.modeChange\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._updateContentMargins();\n this._cdr.markForCheck();\n });\n });\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._doCheck.complete();\n }\n\n /**\n * Fecha todos os drawers que não têm disableClose\n */\n @HostListener('document:keydown.escape')\n onEscape() {\n if (this._drawers) {\n this._drawers.forEach(drawer => {\n if (drawer.opened && !drawer.disableClose && drawer.mode === 'over') {\n drawer.close();\n }\n });\n }\n }\n\n /**\n * Valida que não há múltiplos drawers na mesma posição\n */\n private _validateDrawers() {\n // Implementação simplificada - apenas avisa no console\n if (this._drawers && this._drawers.length > 2) {\n console.warn('Matcha Drawer: Mais de 2 drawers detectados. Use no máximo 2 (start e end).');\n }\n }\n\n /**\n * Atualiza as margens do conteúdo baseado nos drawers abertos\n */\n private _updateContentMargins() {\n if (!this._content || !this._drawers) {\n return;\n }\n\n let left = 0;\n let right = 0;\n\n this._drawers.forEach(drawer => {\n // Só aplica margem para side e push quando o drawer está aberto\n if (drawer.opened && (drawer.mode === 'side' || drawer.mode === 'push')) {\n const width = this._getDrawerWidth(drawer);\n\n if (drawer.position === 'start') {\n left = width;\n } else {\n right = width;\n }\n }\n });\n\n // Aplica as margens no content\n this._setContentMargins(left, right);\n }\n\n /**\n * Obtém a largura do drawer de forma segura\n */\n private _getDrawerWidth(drawer: MatchaDrawerComponent): number {\n // Primeiro tenta usar a propriedade width do componente\n if (drawer.width) {\n const widthValue = parseInt(drawer.width, 10);\n if (!isNaN(widthValue) && widthValue > 0) {\n return widthValue;\n }\n }\n\n const element = (drawer as any)._elementRef?.nativeElement;\n\n if (!element) {\n return 256; // Default 256px\n }\n\n // Tenta obter a largura do CSS primeiro (mais confiável)\n const computedStyle = window.getComputedStyle(element);\n const cssWidth = parseInt(computedStyle.width, 10);\n\n // Se a largura computada é válida e não é absurda, usa ela\n if (cssWidth && cssWidth > 0 && cssWidth < 1000) {\n return cssWidth;\n }\n\n // Fallback para offsetWidth, mas valida o valor\n const offsetWidth = element.offsetWidth;\n if (offsetWidth > 0 && offsetWidth < 1000) {\n return offsetWidth;\n }\n\n // Se tudo falhar, retorna o padrão\n return 256;\n }\n\n /**\n * Define as margens do conteúdo\n */\n private _setContentMargins(left: number, right: number) {\n if (this._content) {\n const contentElement = (this._content as any)._elementRef?.nativeElement;\n if (contentElement) {\n // Valida os valores antes de aplicar\n const validLeft = Math.max(0, Math.min(left, 600)); // Max 600px\n const validRight = Math.max(0, Math.min(right, 600)); // Max 600px\n\n contentElement.style.marginLeft = `${validLeft}px`;\n contentElement.style.marginRight = `${validRight}px`;\n }\n }\n }\n\n /**\n * Retorna se há um backdrop visível\n */\n get _hasBackdrop(): boolean {\n if (this._backdropOverride !== null) {\n return this._backdropOverride;\n }\n\n return this._drawers && this._drawers.some(drawer =>\n drawer.opened && drawer.mode === 'over'\n );\n }\n\n /**\n * Fecha o drawer quando o backdrop é clicado\n */\n _onBackdropClick() {\n if (this._drawers) {\n this._drawers.forEach(drawer => {\n if (drawer.opened && !drawer.disableClose && drawer.mode === 'over') {\n drawer.close();\n }\n });\n }\n }\n}\n","<div class=\"matcha-drawer-backdrop\"\n *ngIf=\"_hasBackdrop\"\n (click)=\"_onBackdropClick()\">\n</div>\n\n<ng-content select=\"matcha-drawer\"></ng-content>\n\n<div class=\"matcha-drawer-content-container\">\n <ng-content select=\"matcha-drawer-content\"></ng-content>\n</div>\n","import { Component, Directive, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n standalone: false\n})\nexport class MatchaIconComponent {\n @Input()\n name: string | undefined | null = '';\n\n @Input()\n size: string | undefined | null = '';\n\n @Input()\n color: string | undefined | null = '';\n\n @Input()\n class: string | undefined | null = '';\n\n @Input()\n loading: boolean | string = false;\n\n public get classes(): string {\n const icon = this.name ? `i-matcha-${this.name}` : '';\n const size = this.size ? `i-size-${this.size}` : '';\n const color = `color-${this.color}`;\n const loading = this.loading == true ? 'loading' : '';\n\n const activeClasses = `${icon} ${color} ${size} ${loading} ${this.class}`;\n return activeClasses;\n }\n}\n","<span [class]=\"classes\">\n <ng-content></ng-content>\n</span>\n","import { Component, ElementRef, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n standalone: false\n})\nexport class MatchaGridComponent {\n @Input()\n breakpoint: string = '';\n\n @Input()\n col: string = '';\n\n @Input()\n gap: string = '';\n\n @Input()\n class: string = '';\n\n @Input()\n span: string = '';\n\n @Input()\n rowspan: string = '';\n\n @Input()\n colspan: string = '';\n\n @Input()\n direction: string = '';\n\n @Input()\n loading: boolean | string = false;\n\n private getStringSplited(inputValue: string): string[] {\n const stringWithoutSpaces = inputValue.replace(/\\s+/g, '');\n return stringWithoutSpaces.split(',');\n }\n\n private getGridClasses(breakpoint: string, col: string): string {\n const breakpoints = this.getStringSplited(breakpoint);\n const columns = this.getStringSplited(col);\n let breakpointClasses = '';\n for (let i = 0; i < breakpoints.length; i++) {\n if (breakpoints[i] === '' || breakpoints[i] === 'xs') {\n breakpointClasses += `grid-${columns[i]} `;\n }\n if (breakpoints[i] === 'sm' && columns[i] !== undefined) {\n breakpointClasses += `grid-sm-${columns[i]} `;\n }\n if (breakpoints[i] === 'md' && columns[i] !== undefined) {\n breakpointClasses += `grid-md-${columns[i]} `;\n }\n if (breakpoints[i] === 'lg' && columns[i] !== undefined) {\n breakpointClasses += `grid-lg-${columns[i]} `;\n }\n if (breakpoints[i] === 'xl' && columns[i] !== undefined) {\n breakpointClasses += `grid-xl-${columns[i]} `;\n }\n }\n return breakpointClasses;\n }\n\n public setColspanClasses(span: string, breakpoint: string): void {\n if (span) {\n const spanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('colspan-'));\n spanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n this.renderer.addClass(this.el.nativeElement, `colspan${breakpoint ? '-' + breakpoint : '-sm'}-${span}`);\n }\n }\n\n public setRowspanClasses(span: string, breakpoint: string): void {\n if (span) {\n const spanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('rowspan-'));\n spanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n this.renderer.addClass(this.el.nativeElement, `rowspan${breakpoint ? '-' + breakpoint : '-sm'}-${span}`);\n }\n }\n\n // public setRowspanClasses(rowspan: string, breakpoint: string): void {\n // const elementsWithRowspanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('rowspan-'));\n // elementsWithRowspanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n // //função que executa a adição de classe para cada breakpoint\n // const breakpoints = this.getStringSplited(breakpoint);\n // const prefix: string = ' rowspan';\n // const rows = this.getStringSplited(rowspan);\n // let rowspanClasses = '';\n // for (let i = 0; i < rows.length; i++) {\n // rowspanClasses = prefix + rows[i];\n // }\n // this.renderer.addClass(this.el.nativeElement, `${rowspanClasses}`);\n // }\n\n public get classes(): string {\n this.class = 'teste';\n const breakpoints = this.getGridClasses(this.breakpoint, this.col);\n const activeClasses = `grid-1 ${breakpoints} gap-${this.gap} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n this.setColspanClasses(this.colspan, this.breakpoint);\n this.setRowspanClasses(this.rowspan, this.breakpoint);\n }\n\n ngOnChanges() {\n this.setColspanClasses(this.colspan, this.breakpoint);\n this.setRowspanClasses(this.rowspan, this.breakpoint);\n }\n}\n","<div [class]=\"classes\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input, AfterViewInit, ElementRef, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-masonry',\n templateUrl: './masonry.component.html',\n styleUrls: ['./masonry.component.scss'],\n standalone: false\n})\nexport class MatchaMasonryComponent implements AfterViewInit, OnDestroy {\n @Input('col') colSize: string | number | null = null;\n @Input('col-sm') smColSize: string | number | null = null;\n @Input('col-md') mdColSize: string | number | null = null;\n @Input('col-lg') lgColSize: string | number | null = null;\n @Input('col-xl') xlColSize: string | number | null = null;\n @Input('gap') gap: string | number | null = null;\n @Input('gap-sm') gapSm: string | number | null = null;\n @Input('gap-md') gapMd: string | number | null = null;\n @Input('gap-lg') gapLg: string | number | null = null;\n @Input('gap-xl') gapXl: string | number | null = null;\n\n private destroy$ = new Subject<void>();\n private resizeObserver?: ResizeObserver;\n private originalItems: HTMLElement[] = [];\n private isDistributing = false;\n\n constructor(\n private elementRef: ElementRef,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngAfterViewInit(): void {\n // Delay para garantir que o conteúdo foi projetado\n setTimeout(() => {\n this.captureOriginalItems();\n this.distributeItems();\n this.setupResizeObserver();\n }, 50);\n\n // Observar mudanças de tamanho da janela\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(200),\n takeUntil(this.destroy$)\n )\n .subscribe(() => this.distributeItems());\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n private captureOriginalItems(): void {\n const contentWrapper = this.elementRef.nativeElement.querySelector('.masonry-content-wrapper');\n if (!contentWrapper) return;\n\n // Capturar todos os filhos diretos (elementos projetados via ng-content)\n this.originalItems = Array.from(contentWrapper.children) as HTMLElement[];\n }\n\n private setupResizeObserver(): void {\n this.resizeObserver = new ResizeObserver(() => {\n if (!this.isDistributing) {\n this.distributeItems();\n }\n });\n\n // Observar os itens originais\n this.originalItems.forEach(item => {\n this.resizeObserver?.observe(item);\n });\n }\n\n private distributeItems(): void {\n if (this.isDistributing || this.originalItems.length === 0) return;\n\n this.isDistributing = true;\n\n const columnCount = this.getCurrentColumnCount();\n console.log('🔵 Masonry Debug - Column count:', columnCount);\n\n if (columnCount <= 0) {\n this.isDistributing = false;\n return;\n }\n\n const columnsContainer = this.elementRef.nativeElement.querySelector('.masonry-columns');\n if (!columnsContainer) {\n console.error('❌ Masonry Debug - .masonry-columns not found!');\n this.isDistributing = false;\n return;\n }\n\n console.log('🔵 Masonry Debug - Container width:', columnsContainer.offsetWidth);\n\n // Limpar colunas existentes\n columnsContainer.innerHTML = '';\n\n // Criar divs de coluna\n const columnDivs: HTMLElement[] = [];\n const columnHeights: number[] = [];\n\n for (let i = 0; i < columnCount; i++) {\n const columnDiv = document.createElement('div');\n columnDiv.className = 'masonry-column';\n columnsContainer.appendChild(columnDiv);\n columnDivs.push(columnDiv);\n columnHeights.push(0);\n }\n\n console.log('🔵 Masonry Debug - Created columns:', columnCount);\n console.log('🔵 Masonry Debug - Items to distribute:', this.originalItems.length);\n\n // Distribuir itens MOVENDO os elementos reais (não clonando)\n this.originalItems.forEach((item, index) => {\n // Encontrar coluna com menor altura\n const minHeightIndex = columnHeights.indexOf(Math.min(...columnHeights));\n\n console.log(`🔵 Item ${index + 1} -> Column ${minHeightIndex + 1} (height: ${item.offsetHeight}px)`);\n\n // MOVER o elemento real para a coluna (preserva todos os bindings do Angular)\n const gapValue = this.getGapValue();\n if (gapValue > 0) {\n item.style.marginBottom = `${gapValue}px`;\n }\n\n // appendChild move o nó (não clona)\n columnDivs[minHeightIndex].appendChild(item);\n\n // Atualizar altura da coluna\n columnHeights[minHeightIndex] += item.offsetHeight + gapValue;\n });\n\n console.log('🔵 Masonry Debug - Final column heights:', columnHeights);\n\n // Log da largura de cada coluna criada\n columnDivs.forEach((col, i) => {\n console.log(`🔵 Column ${i + 1} width:`, col.offsetWidth, 'px');\n });\n\n this.isDistributing = false;\n }\n\n private getCurrentColumnCount(): number {\n const width = window.innerWidth;\n\n // Breakpoints do Material/Angular\n if (width >= 1920 && this.xlColSize) return Number(this.xlColSize);\n if (width >= 1280 && this.lgColSize) return Number(this.lgColSize);\n if (width >= 960 && this.mdColSize) return Number(this.mdColSize);\n if (width >= 600 && this.smColSize) return Number(this.smColSize);\n if (this.colSize) return Number(this.colSize);\n\n return 1; // Fallback para 1 coluna\n }\n\n public getGapValue(): number {\n const gapStr = this.gap?.toString() || '0';\n return parseInt(gapStr, 10);\n }\n}\n","<div class=\"masonry-wrapper\">\n <!-- Container com conteúdo original (oculto) -->\n <div class=\"masonry-content-wrapper\">\n <ng-content></ng-content>\n </div>\n\n <!-- Container onde as colunas serão renderizadas -->\n <div class=\"masonry-columns\" [style.gap.px]=\"getGapValue()\"></div>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-content',\n templateUrl: './modal-content.component.html',\n styleUrls: ['./modal-content.component.scss'],\n standalone: false\n})\nexport class MatchaModalContentComponent {\n\n}\n","\n<div class=\"py-24 pt-0 overflow-auto\" style=\"max-height: calc(100vh - 300px);\n\">\n <div class=\"matcha-card-flat matcha-background-transparent p-0 flex-column--force\">\n <div class=\"flex-column matcha-card-flat matcha-background-transparent px-24 py-0\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-header',\n templateUrl: './modal-header.component.html',\n styleUrls: ['./modal-header.component.scss'],\n standalone: false\n})\nexport class MatchaModalHeaderComponent {\n\n}\n","<!-- [@animate]=\"{ value: '*', params: { delay: '100ms' } }\" -->\n<!-- MATCHA CHECK -->\n<div class=\"matcha-section pt-16 px-16 pt-md-24 px-md-24\">\n <div class=\"d-flex flex-space-between mb-16 mb-md-24\">\n <!-- Remoção do flex-wrap para que o conteúdo seja exibido em uma única linha -->\n <div class=\"flex-space-between flex-align-center\">\n <ng-content></ng-content>\n </div>\n <div class=\"flex-row flex-end gap-8\">\n <ng-content select=\"matcha-modal-options\"></ng-content>\n </div>\n </div>\n <matcha-divider></matcha-divider>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-footer',\n templateUrl: './modal-footer.component.html',\n styleUrls: ['./modal-footer.component.scss'],\n standalone: false\n})\nexport class MatchaModalFooterComponent {\n\n @Input('')\n buttonType: number | string = 0;\n\n ngAfterViewInit() {\n const modalFooter = document.querySelectorAll('matcha-modal-footer');\n modalFooter.forEach(footer => {\n const buttons = footer.querySelectorAll('.matcha-button');\n\n if (buttons.length === 1) {\n buttons.forEach(button => {\n button.classList.add('w-100-p');\n });\n }\n if (buttons.length > 1) {\n buttons.forEach(button => {\n button.classList.add('max-w-sm-256');\n button.classList.add('w-100-p');\n });\n }\n });\n }\n}\n","<div class=\"matcha-section pb-16 px-16 pb-md-24 px-md-24\">\n <matcha-divider></matcha-divider>\n <div class=\"flex-column flex-sm-row w-100-p flex-space-between gap-16\">\n <div class=\"flex-column flex-sm-row w-100-p flex-space-between mt-16 mt-md-24 gap-16\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-options',\n templateUrl: './modal-options.component.html',\n styleUrl: './modal-options.component.scss',\n standalone: false\n})\nexport class MatchaModalOptionsComponent {\n\n}\n","<div class=\"flex-row gap-8\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal',\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss',\n standalone: false\n})\nexport class MatchaModalComponent {\n\n @Input('size') size: string | null = 'large';\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @Input()\n class: string = '';\n\n @Input()\n hasBackdrop: boolean = true;\n\n @Input()\n backdropClass: string = '';\n\n @HostBinding('attr.size')\n get sizeAttr(): string | null {\n return this.size;\n }\n\n @HostBinding('attr.size-xs')\n get sizeAttrXs(): string | null {\n return this.sizeXs;\n }\n\n @HostBinding('arrt.size-sm')\n get sizeAttrSm(): string | null {\n return this.sizeSm;\n }\n\n @HostBinding('attr.size-md')\n get sizeAttrMd(): string | null {\n return this.sizeMd;\n }\n\n @HostBinding('attr.size-lg')\n get sizeAttrLg(): string | null {\n return this.sizeLg;\n }\n\n @HostBinding('attr.size-xl')\n get sizeAttrXl(): string | null {\n return this.sizeXl;\n }\n\n @HostBinding('class')\n public get classes(): string {\n const activeClasses = `matcha-modal flex-column elevation-8 ${this.class}`;\n return activeClasses;\n }\n\n constructor(\n ) {}\n\n}\n","<div class=\"background-surface elevation-z-4 flex-column matcha-modal radius-8\">\n <ng-content></ng-content>\n</div>","import { Component, HostListener, OnInit, OnDestroy, Input } from '@angular/core';\n\n\n@Component({\n selector: 'matcha-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarComponent implements OnInit, OnDestroy{\n\n @Input() elevation: number = 1;\n\n public isMobileScreen = false;\n\n get elevationClass(): string {\n return `elevation-z-${this.elevation}`;\n }\n \n private readonly mobileBreakpoint = 1024;\n private resizeTimeout: any;\n\n ngOnInit(): void {\n this.checkScreenWidth();\n }\n\n @HostListener('window:resize', [])\n onResize(): void {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.checkScreenWidth();\n }, 20);\n }\n\n private checkScreenWidth(): void {\n this.isMobileScreen = window.innerWidth < this.mobileBreakpoint;\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.resizeTimeout);\n }\n}\n\n","<!-- HOW TO USE:\n<matcha-toolbar>\n <matcha-title type=\"icon\" icon=\"settings-out\" (iconClick)=\"FUNÇÃO-AO-CLICAR-NO-ICONE-AQUI\">\n {{'FINANCIAL.CATEGORY.TITLE' | translate}}\n </matcha-title>\n <search-form toolbar-form-field (searchText)=\"searchText($event)\"></search-form>\n <matcha-toolbar-button icon=\"home-out\" (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-button>\n <matcha-toolbar-content>\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-content>\n <matcha-toolbar-main-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-main-button>\n QUALQUER OUTRA FUNCIONALIDADE AQUI\n</matcha-toolbar>\n-->\n<ng-template #toolbarMainButton>\n <ng-content select=\"matcha-toolbar-main-button\"></ng-content>\n</ng-template>\n\n<ng-template #toolbarCustomButton>\n <ng-content select=\"matcha-toolbar-custom-button\"></ng-content>\n</ng-template>\n<!-- CONTENT HEADER -->\n<div class=\"flex-column background-surface radius-8\" [ngClass]=\"elevationClass\">\n <div class=\"flex-column flex-md-row flex-wrap p-16 flex-align-center flex-space-between h-auto min-h-72 flex-wrap gap-8\">\n <div class=\"w-100-p--force w-md-auto--force flex-space-between flex-wrap gap-8\">\n <div class=\"min-h-32 flex-center-center\">\n <ng-content select=\"matcha-title\"></ng-content>\n </div>\n <ng-container *ngIf=\"isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n <div class=\"w-100-p--force w-md-auto--force flex-row flex-end gap-8\">\n <!-- ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <ng-content select=\"search-form\"></ng-content>\n <!-- /ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <div class=\"flex-row gap-8\">\n <ng-content select=\"matcha-toolbar-button\"></ng-content>\n <ng-content select=\"matcha-toolbar-content\"></ng-content>\n <ng-content></ng-content>\n <ng-container *ngIf=\"!isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n<!-- / CONTENT HEADER -->\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-button',\n templateUrl: './toolbar-button.component.html',\n styleUrls: ['./toolbar-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarButtonComponent{\n @Input('icon') icon: string = '';\n @Output() buttonClick = new EventEmitter();\n\n public get classes(): string {\n const activeClasses = `i-matcha-${this.icon}`;\n return activeClasses;\n }\n\n emitButtonClick() {\n this.buttonClick.emit();\n }\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\" toolbar-button-tooltip=\"TOOLTIP-AQUI\">\n TEXTO DO BOTÃO AQUI\n</matcha-toolbar-button>\n-->\n<button matcha-button outline=\"true\" size=\"small\" color=\"grey\" icon=\"true\" (click)=\"emitButtonClick()\">\n <span [class]=\"classes\"></span>\n</button>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-content',\n templateUrl: './toolbar-content.component.html',\n styleUrls: ['./toolbar-content.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarContentComponent{}\n","<!-- HOW TO USE:\n<matcha-toolbar-content>\n OUTROS CONTEUDOS CUSTOMIZADOS NA TOOLBAR\n</matcha-toolbar-content>\n-->\n<div class=\"d-flex flex-wrap gap-8\">\n <ng-content></ng-content>\n</div>\n","import { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-main-button',\n templateUrl: './toolbar-main-button.component.html',\n styleUrls: ['./toolbar-main-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarMainButtonComponent {\n @Output() buttonClick = new EventEmitter();\n\n emitButtonClick() {\n this.buttonClick.emit();\n }\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-main-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n</matcha-toolbar-main-button>\n-->\n<button matcha-button size=\"tiny\" size-md=\"small\" color=\"accent\" (click)=\"emitButtonClick()\">\n <span class=\"i-matcha-action_plus i-size-sm ml--4\"></span>\n <span class=\"ml-8 fs-14\">\n <ng-content></ng-content>\n </span>\n</button>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-custom-button',\n templateUrl: './toolbar-custom-button.component.html',\n styleUrls: ['./toolbar-custom-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarCustomButtonComponent {\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-custom-button>\n Botão customizado aqui\n</matcha-toolbar-custom-button>\n-->\n<ng-content></ng-content>\n","import { Component, ContentChild, Input, AfterViewInit, ElementRef } from '@angular/core';\nimport { FormControlName } from '@angular/forms';\n\n@Component({\n selector: 'matcha-form-field',\n standalone: false,\n templateUrl: './matcha-form-field.component.html',\n styleUrl: './matcha-form-field.component.scss',\n})\nexport class MatchaFormFieldComponent implements AfterViewInit {\n @Input() color: 'red' | 'pink' | 'purple' | 'deep-purple' | 'indigo' | 'blue' | 'light-blue' | 'cyan' | 'teal' | 'green' | 'light-green' | 'lime' | 'yellow' | 'amber' | 'orange' | 'deep-orange' | 'primary' | 'accent' | 'warn' | 'brown' | 'grey' | 'blue-grey' | 'primary' | 'accent' | 'warn' = 'grey';\n\n @Input('size') size: string | null | undefined | 'tiny' | 'small' | 'medium' | 'large' | 'huge' = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @ContentChild(FormControlName) controlDir?: FormControlName;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit(): void {\n this.generateDataCy();\n }\n\n private generateDataCy(): void {\n // Busca o matcha-label dentro do form-field\n const labelElement = this.elementRef.nativeElement.querySelector('matcha-label');\n const inputElement = this.elementRef.nativeElement.querySelector('input, textarea, select');\n\n if (labelElement && inputElement) {\n const labelText = labelElement.textContent?.trim();\n if (labelText) {\n const dataCyValue = this.convertToKebabCase(labelText);\n inputElement.setAttribute('data-cy', `matcha-form-field-${dataCyValue}`);\n }\n }\n }\n\n private convertToKebabCase(text: string): string {\n return text\n .toLowerCase()\n .replace(/\\s+/g, '-') // Substitui espaços por hífens\n .replace(/[^\\w\\-]/g, '') // Remove caracteres especiais\n .replace(/\\-\\-+/g, '-') // Remove hífens duplos\n .replace(/^-+|-+$/g, ''); // Remove hífens do início e fim\n }\n\n get control() {\n return this.controlDir?.control;\n }\n\n get showError(): boolean {\n return !!this.control?.invalid && !!this.control?.touched;\n }\n}\n","<div class=\"flex-column\">\n <div class=\"matcha-form-field position-relative w-100-p min-h-40 flex-align-center\" #inputSelector>\n <div class=\"flex-row position-absolute w-100-p min-h-40 h-100-p\">\n <div class=\"matcha-form-field-border-start bl-2 bt-2 bb-2 radius-left-8 min-w-8 border-color-{{color}}\"></div>\n <div class=\"matcha-form-field-border-middle bb-2 w-auto border-color-{{color}}\">\n <ng-content select=\"matcha-label\"></ng-content>\n </div>\n <div class=\"matcha-form-field-border-end br-2 bt-2 bb-2 radius-right-8 w-100-p border-color-{{color}}\"></div>\n </div>\n <div class=\"flex-row position-relative py-8 px-12 gap-8 w-100-p\">\n <ng-content></ng-content>\n </div>\n </div>\n <ng-container *ngIf=\"showError\">\n <ng-content select=\"matcha-error\"></ng-content>\n </ng-container>\n <ng-content select=\"matcha-autocomplete\"></ng-content>\n</div>\n<ng-content select=\"matcha-hint-text\"></ng-content>\n","import { Component, Input, AfterViewInit, ElementRef, ChangeDetectorRef } from '@angular/core';\n\n@Component({\n selector: 'matcha-label',\n standalone: false,\n templateUrl: './matcha-label.component.html',\n styleUrl: './matcha-label.component.scss',\n})\nexport class MatchaLabelComponent implements AfterViewInit {\n @Input() color: 'red' | 'pink' | 'purple' | 'deep-purple' | 'indigo' | 'blue' | 'light-blue' | 'cyan' | 'teal' | 'green' | 'light-green' | 'lime' | 'yellow' | 'amber' | 'orange' | 'deep-orange' | 'primary' | 'accent' | 'warn' | 'brown' | 'grey' | 'blue-grey' | 'primary' | 'accent' | 'warn' = 'blue-grey';\n\n public isRequired: boolean = false;\n\n constructor(private elementRef: ElementRef, private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n // Usar setTimeout para evitar ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.checkIfRequired();\n this.cdr.detectChanges();\n });\n }\n\n private checkIfRequired(): void {\n // Busca o form-field pai\n const formField = this.elementRef.nativeElement.closest('matcha-form-field');\n if (formField) {\n // Busca por elementos nativos e componentes customizados com required\n const inputElement = formField.querySelector(\n 'input[required], textarea[required], select[required], ' +\n 'matcha-select[required], matcha-autocomplete[required], matcha-date[required]'\n );\n this.isRequired = !!inputElement;\n }\n }\n}\n","<label\n class=\"d-flex d-flex-align-center position-relative text-nowrap px-4 fs-12 lh-18 fw-700 color-{{color}}\"\n style=\"transform: translateY(-8px);\">\n <ng-content></ng-content>\n <span *ngIf=\"isRequired\"> *</span>\n <!-- <span class=\"pl-4 fs-10 fw-400 lh-16 matcha-color-placeholder\">(Opcional)</span> -->\n</label>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-error',\n standalone: false,\n templateUrl: './matcha-error.component.html',\n styleUrl: './matcha-error.component.scss',\n})\nexport class MatchaErrorComponent {}\n","<p class=\"w-100-p color-red fs-12 lh-16 flex-row flex-align-center gap-4 m-0 py-4\">\n <matcha-icon name=\"action_sign_warning-out\" size=\"sm\"></matcha-icon>\n <ng-content></ng-content>\n</p>\n","import { Directive, ElementRef, HostListener, Input, OnDestroy } from '@angular/core';\n\n@Directive({\n selector: '[matchaRipple]',\n standalone: false\n})\nexport class MatchaRippleDirective implements OnDestroy {\n @Input() rippleColor: string = 'rgba(0, 0, 0, 0.5)'; // Cor padrão do efeito\n private ripples: HTMLElement[] = [];\n\n constructor(private el: ElementRef) {\n // Garantir que o elemento tenha position relative\n this.el.nativeElement.style.position = 'relative';\n this.el.nativeElement.style.overflow = 'hidden';\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent): void {\n const target = this.el.nativeElement;\n const rect = target.getBoundingClientRect();\n\n const ripple = document.createElement('span');\n ripple.className = 'ripple';\n\n // Definir o tamanho do ripple baseado no maior lado do elemento\n const size = Math.max(target.offsetWidth, target.offsetHeight);\n ripple.style.height = ripple.style.width = size * 2 + 'px';\n\n // Aplicar estilo básico ao ripple\n ripple.style.backgroundColor = this.rippleColor;\n ripple.style.position = 'absolute';\n ripple.style.borderRadius = '50%';\n ripple.style.opacity = '0.5';\n ripple.style.transform = 'scale(0)';\n ripple.style.transition = 'transform 0.6s, opacity 0.6s';\n ripple.style.pointerEvents = 'none';\n\n const top = event.pageY - rect.top - size + window.scrollY;\n const left = event.pageX - rect.left - size + window.scrollX;\n\n ripple.style.top = top + 'px';\n ripple.style.left = left + 'px';\n\n target.appendChild(ripple);\n this.ripples.push(ripple);\n\n // Inicia a animação no próximo frame\n requestAnimationFrame(() => {\n ripple.style.transform = 'scale(2)';\n ripple.style.opacity = '0';\n });\n\n // Remove o ripple após a animação\n setTimeout(() => {\n if (ripple && ripple.parentElement) {\n ripple.parentElement.removeChild(ripple);\n this.ripples = this.ripples.filter(r => r !== ripple);\n }\n }, 600);\n }\n\n ngOnDestroy() {\n // Limpa todos os ripples quando o componente é destruído\n this.ripples.forEach(ripple => {\n if (ripple && ripple.parentElement) {\n ripple.parentElement.removeChild(ripple);\n }\n });\n this.ripples = [];\n }\n}","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaCheckboxComponent),\n multi: true\n }\n ]\n})\nexport class MatchaCheckboxComponent implements ControlValueAccessor {\n @Input() color: string = 'accent';\n @Input() indeterminate: boolean = false;\n\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean | string) {\n // Converte 'false' (string) ou false (boolean) para false, e qualquer outro valor para true.\n this._disabled = value != null && `${value}` !== 'false';\n }\n\n private _checked = false;\n @Input()\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean | string) {\n // Converte string para boolean: 'false' (string) ou false (boolean) para false, qualquer outro valor para true\n const booleanValue = value != null && `${value}` !== 'false';\n if (booleanValue !== this._checked) {\n this._checked = booleanValue;\n this.onChange(this._checked);\n }\n }\n\n @Output() checkedChange = new EventEmitter<{ checked: boolean }>();\n @Output() change = new EventEmitter<Event>();\n\n // ControlValueAccessor methods\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(value: boolean): void {\n this._checked = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) return;\n\n const input = event.target as HTMLInputElement;\n this.checked = input.checked;\n this.onTouched();\n\n const eventData = { checked: this.checked };\n this.checkedChange.emit(eventData);\n this.change.emit(event);\n }\n}\n","<label\n class=\"matcha-checkbox flex-align-center\"\n [class.matcha-checkbox-disabled]=\"disabled\">\n <div\n class=\"matcha-checkbox-container w-40 h-40 max-w-40 max-h-40 min-w-40 min-h-40 flex-center-center radius-full cursor-pointer\"\n matchaRipple>\n <input\n type=\"checkbox\"\n class=\"matcha-checkbox-input\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [indeterminate]=\"indeterminate\"\n (change)=\"onInputChange($event)\">\n </div>\n\n <span class=\"matcha-checkbox-label fw-500 fs-16 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaRadioComponent),\n multi: true\n }\n ]\n})\nexport class MatchaRadioComponent implements ControlValueAccessor {\n @Input() color: string = 'accent';\n @Input() value: any = null;\n @Input() name: string = '';\n\n private _disabled = false;\n @Input()\n set disabled(value: boolean | string) {\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input()\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean) {\n if (value !== this._checked) {\n this._checked = value;\n const outVal = this.value !== undefined ? this.value : this._checked;\n this.onChange(outVal);\n }\n }\n\n private _checked: boolean = false;\n private _modelValue: any = null;\n\n @Output() checkedChange = new EventEmitter<{ checked: boolean }>();\n @Output() change = new EventEmitter<Event>();\n\n // ControlValueAccessor methods\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(value: any): void {\n this._modelValue = value;\n this._checked = this.value !== undefined ? this.value === value : !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) return;\n\n this.checked = true;\n this.onTouched();\n\n // Emitir o valor correto para o ControlValueAccessor\n const outVal = this.value !== undefined ? this.value : this.checked;\n this.onChange(outVal);\n\n const eventData = { checked: this.checked };\n this.checkedChange.emit(eventData);\n this.change.emit(event);\n }\n}\n","<label\n class=\"matcha-radio flex-align-center\"\n [class.matcha-radio-disabled]=\"disabled\">\n <div\n class=\"matcha-radio-container w-40 h-40 max-w-40 max-h-40 min-w-40 min-h-40 flex-center-center radius-full cursor-pointer\"\n matchaRipple>\n <input\n type=\"radio\"\n class=\"matcha-radio-input\"\n [attr.name]=\"name\"\n [value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onInputChange($event)\">\n </div>\n\n <span class=\"matcha-radio-label fw-500 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>","import { Component, ElementRef, Inject, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-spin',\n standalone: false,\n templateUrl: './spin.component.html',\n styleUrl: './spin.component.scss'\n})\nexport class MatchaSpinComponent {\n private _progress: string | number = 0;\n \n @Input()\n set progress(value: string | number) {\n this._progress = Number(value);\n }\n get progress(): string | number {\n return this._progress;\n }\n\n @Input() color: string = 'accent';\n @Input('size') size: string | null = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n readonly strokeWidth: number = 5;\n\n constructor(\n @Inject(ElementRef) private _elementRef: ElementRef,\n @Inject(Renderer2) private _renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, 'matcha-spin');\n this.setSize();\n }\n\n private setSize() {\n const sizes = ['tiny', 'small', 'medium', 'large', 'huge'];\n sizes.forEach(size => {\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-spin-${size}`);\n });\n\n if (this.size) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-spin-${this.size}`);\n }\n }\n\n get diameter(): number {\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n return rect.width;\n }\n\n get radius(): number {\n return (this.diameter - this.strokeWidth) / 2;\n }\n\n get circumference(): number {\n return 2 * Math.PI * this.radius;\n }\n\n get dashOffset(): number {\n const progress = Math.min(Math.max(Number(this.progress), 0), 100);\n return this.circumference - (progress / 100) * this.circumference;\n }\n\n}\n","<div\n class=\"matcha-spin\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"progress\"\n>\n <svg [attr.viewBox]=\"'0 0 ' + diameter + ' ' + diameter\">\n <circle\n class=\"spin-placeholder\"\n [attr.cx]=\"diameter / 2\"\n [attr.cy]=\"diameter / 2\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n />\n <circle\n class=\"spin-progress\"\n [attr.cx]=\"diameter / 2\"\n [attr.cy]=\"diameter / 2\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.stroke]=\"color\"\n [attr.stroke-dasharray]=\"circumference\"\n [attr.stroke-dashoffset]=\"progress ? dashOffset : null\"\n />\n </svg>\n</div>\n","import { Component, ElementRef, HostBinding, Inject, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-spinner',\n standalone: false,\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss']\n})\nexport class MatchaSpinnerComponent {\n private _progressValue: number = 0;\n @Input()\n set progress(value: string | number) {\n this._progressValue = Number(value);\n }\n get progress(): string | number {\n return this._progressValue;\n }\n\n @HostBinding('attr.progress') get _progress() { return this.progress; }\n\n\n @Input() color: string = 'accent';\n\n @HostBinding('attr.color') get _color() { return this.color; }\n\n @Input('size') size: string | null = null;\n\n @HostBinding('attr.size')\n get hostSize(): string | null {\n return this.size;\n }\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n // Valores fixos baseados no hard coded que funciona\n readonly diameter = 66;\n readonly center = 33;\n readonly radius = 30;\n readonly strokeWidth = 5;\n\n constructor(\n @Inject(ElementRef) private _elementRef: ElementRef,\n @Inject(Renderer2) private _renderer: Renderer2\n ) { }\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, 'matcha-spinner');\n this.setSize();\n }\n\n private setSize() {\n const sizes = ['tiny', 'small', 'medium', 'large', 'huge'];\n sizes.forEach(size => {\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-spinner-${size}`);\n });\n\n if (this.size) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-spinner-${this.size}`);\n }\n }\n\n get circumference(): number {\n return 2 * Math.PI * this.radius;\n }\n\n get dashOffset(): number {\n const progress = Math.min(Math.max(Number(this.progress), 0), 100);\n return this.circumference - (progress / 100) * this.circumference;\n }\n}\n","<div\n class=\"matcha-spinner\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"progress\"\n>\n <svg [attr.viewBox]=\"'0 0 ' + diameter + ' ' + diameter\" class=\"spinner\">\n <circle\n class=\"spinner-placeholder\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n stroke-linecap=\"round\"\n />\n <circle\n class=\"spinner-progress path\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.stroke]=\"color\"\n [attr.stroke-dasharray]=\"circumference\"\n [attr.stroke-dashoffset]=\"dashOffset\"\n stroke-linecap=\"round\"\n />\n </svg>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-hint-text',\n standalone: false,\n templateUrl: './hint-text.component.html',\n styleUrl: './hint-text.component.scss'\n})\nexport class MatchaHintTextComponent {\n @Input('type') type: string = 'error';\n @Input('size') size: string = 'tiny';\n\n get iconName(): string {\n switch (this.type) {\n case 'warning': return 'action_sign_warning-out';\n case 'info': return 'info-out';\n case 'success': return 'action_done';\n default: return 'action_sign_warning-out';\n }\n }\n\n get iconColor(): string {\n switch (this.type) {\n case 'warning': return 'yellow';\n case 'info': return 'blue';\n case 'success': return 'green';\n default: return 'red';\n }\n }\n\n}\n","<div class=\"d-flex flex-align-center gap-4\">\n <matcha-icon color=\"{{ iconColor }}\" name=\"{{ iconName }}\"> </matcha-icon>\n <span class=\"text\"><ng-content></ng-content></span>\n</div>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-skeleton',\n templateUrl: './skeleton.component.html',\n styleUrls: ['./skeleton.component.scss'],\n standalone: false\n})\nexport class MatchaSkeletonComponent {\n\n @Input('amount') @HostBinding('attr.amount') public amount: number | string = 3;\n @Input('grid') @HostBinding('attr.grid') public grid: number | string = 3;\n @Input('height') @HostBinding('attr.height') public height: number | string = 100;\n @Input('model') @HostBinding('attr.model') public model: 'profile'| 'table' | 'empty' | string | null = 'empty';\n @Input('gap') @HostBinding('attr.gap') public gap: number | string = 16;\n\n // Getters privados para conversão sem modificar os inputs\n private get amountNumber(): number {\n return typeof this.amount === 'string' ? parseInt(this.amount, 10) : this.amount;\n }\n\n private get gridNumber(): number {\n return typeof this.grid === 'string' ? parseInt(this.grid, 10) : this.grid;\n }\n\n public get classes(): string {\n // Usa os valores convertidos sem modificar os inputs\n const amountValue = this.amountNumber;\n const gridValue = this.gridNumber;\n\n let classes = `gap-${this.gap} `;\n amountValue > 1 ? classes += `grid-sm-${gridValue - 1} ` : classes;\n amountValue > 2 ? classes += `grid-md-${gridValue} ` : classes;\n return classes;\n }\n\n public get heightClass(): string {\n return `h-${this.height}`;\n }\n\n public get amountArray(): number[] {\n const amountValue = this.amountNumber;\n return Array(amountValue).fill(0).map((_, index) => index);\n }\n}\n","<ng-content></ng-content>\n<!-- CARD SKELETON -->\n<div [class]=\"classes\" *ngIf=\"model !== 'table'\">\n <div class=\"skeleton-animated-background flex-column--force p-0 radius-8 user-select-none overflow-hidden\" *ngFor=\"let i of amountArray\">\n\n <ng-container *ngIf=\"model === 'profile'\"><span class=\"h8 title p-16 m-0\"> <span class=\"radius-full background-surface-alpha h-48 w-48\"></span> </span></ng-container>\n\n <div [class]=\"'h-'+ height + ' flex-column--force p-16'\"></div>\n\n <ng-container *ngIf=\"model === 'profile'\">\n <div class=\"flex-column--force\">\n <div class=\"flex-column--force p-16 gap-16\">\n <div class=\"w-100-p h-16 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p h-16 background-surface-alpha radius-full\"></div>\n </div>\n </div>\n </ng-container>\n\n </div>\n</div>\n<!-- CARD SKELETON -->\n\n<!-- TABLE SKELETON -->\n<div class=\"skeleton-animated-background w-100-p mr-16 flex-column--force p-0 radius-8 user-select-none\" *ngIf=\"model === 'table'\">\n\n <div class=\"flex-column--force h-64 background-surface-alpha\">\n <ng-container> </ng-container>\n </div>\n\n <ng-container *ngFor=\"let i of amountArray\">\n <div class=\"grid-4 h-80 px-16 gap-16 flex-align-center--force\">\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"min-h-48 min-w-48 h-48 w-48 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n </div>\n\n <div class=\"grid-4 h-80 px-16 gap-16 flex-align-center--force background-bg-alpha\">\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"min-h-48 min-w-48 h-48 w-48 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-30-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n </div>\n\n </ng-container>\n\n</div>\n<!-- TABLE SKELETON -->\n","import { Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy, ElementRef, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSlideToggleComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatchaSlideToggleComponent implements ControlValueAccessor, OnChanges, AfterViewInit {\n @Input() color: string = 'accent'; \n\n private _checked: boolean = false;\n @Input()\n set checked(value: boolean | string) {\n const newCheckedState = value === '' ? true : !!value;\n if (newCheckedState !== this._checked) {\n this._checked = newCheckedState;\n }\n }\n get checked(): boolean {\n return this._checked;\n }\n\n private _disabled: boolean = false;\n @Input()\n set disabled(value: boolean | string) {\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Output() change = new EventEmitter<{ checked: boolean }>();\n\n onChange: (value: boolean) => void = (_: boolean) => {};\n onTouched: () => void = () => {};\n\n writeValue(value: any): void {\n this.checked = !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled']) {\n if (this.disabled) {\n this.elementRef.nativeElement.setAttribute('disabled', '');\n } else {\n this.elementRef.nativeElement.removeAttribute('disabled');\n }\n }\n }\n\n ngAfterViewInit(): void {\n \n if (this.disabled) {\n this.elementRef.nativeElement.setAttribute('disabled', '');\n }\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n const inputElement = event.target as HTMLInputElement;\n const newCheckedState = inputElement.checked;\n\n this._checked = newCheckedState;\n this.onChange(newCheckedState);\n this.onTouched();\n this.change.emit({ checked: newCheckedState });\n }\n}\n","<label\n class=\"matcha-slide-toggle-wrapper flex-align-center\"\n [class.matcha-slide-toggle-disabled]=\"disabled\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onInputChange($event)\"\n />\n\n <span class=\"matcha-slide-toggle-label ml-8 fw-500 fs-16 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>\n","import {\n AfterContentInit, Component, ContentChildren, HostBinding,\n Input, QueryList, ElementRef\n} from '@angular/core';\nimport { MatchaButtonComponent } from '../../matcha-button/button/button.component';\n\n@Component({\n selector: 'matcha-button-toggle',\n templateUrl: './button-toggle.component.html',\n styleUrl: './button-toggle.component.scss',\n standalone: false\n})\nexport class MatchaButtonToggleComponent implements AfterContentInit {\n\n private _multiple = false;\n @Input() get multiple() { return this._multiple; }\n set multiple(v: boolean | string) { this._multiple = v === 'false' ? false : !!v; }\n\n private _disabled = false;\n @Input() get disabled() { return this._disabled; }\n set disabled(v: boolean | string) { this._disabled = v === 'false' ? false : !!v; }\n @HostBinding('attr.disabled') get isDisabled() { return this.disabled || null; }\n\n private _required = false;\n @Input() get required() { return this._required; }\n set required(v: boolean | string) { this._required = v === 'false' ? false : !!v; }\n\n @Input() inactiveColor = 'primary';\n\n @Input() inactiveType: string = 'solid';\n\n private _gap = 16;\n @Input() set gap(v: string | number) { const n = +v; this._gap = isNaN(n) ? 16 : n; }\n get gapClass() { return `gap-${this._gap}`; }\n\n get gap(): number {\n return this._gap;\n }\n\n @ContentChildren(MatchaButtonComponent)\n buttons!: QueryList<MatchaButtonComponent>;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterContentInit(): void {\n const buttons = this.elementRef.nativeElement.querySelectorAll('button[matcha-button]');\n buttons.forEach((button: Element, index: number) => {\n const isActive = button.hasAttribute('active');\n this.setButtonState(button as HTMLElement, isActive);\n\n button.addEventListener('click', () => this.onButtonSelected(button as HTMLElement));\n });\n }\n\n private setButtonState(button: HTMLElement, isActive: boolean): void {\n if (isActive) {\n button.setAttribute('active', '');\n } else {\n button.removeAttribute('active');\n }\n }\n\n private onButtonSelected(selectedButton: HTMLElement): void {\n const buttons = this.elementRef.nativeElement.querySelectorAll('button[matcha-button]');\n const activeButtons = Array.from(buttons).filter((button: unknown) =>\n (button as Element).hasAttribute('active')\n );\n\n if (this.required && activeButtons.length === 1 && activeButtons[0] === selectedButton) {\n return;\n }\n\n if (this.multiple) {\n const isActive = selectedButton.hasAttribute('active');\n this.setButtonState(selectedButton, !isActive);\n return;\n }\n\n if (selectedButton.hasAttribute('active')) {\n this.setButtonState(selectedButton, false);\n } else {\n buttons.forEach((button: Element) => {\n this.setButtonState(button as HTMLElement, button === selectedButton);\n });\n }\n }\n}\n","<div\n class=\"button-group d-flex\"\n [ngClass]=\"gapClass\"\n [class.flex-wrap]=\"gap !== 0\"\n role=\"group\"\n>\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-tab',\n templateUrl: './tab-item.component.html',\n standalone: false,\n})\nexport class MatchaTabItemComponent {\n @Input() title: string = '';\n @Input() icon: string = '';\n \n private _active: boolean = false;\n @Input() set active(value: boolean | string) {\n this._active = value === '' || value === true || value === 'true';\n }\n get active(): boolean {\n return this._active;\n }\n}\n","<ng-content *ngIf=\"active\"></ng-content>\n","import { Component, ContentChildren, AfterContentInit, QueryList, Input, Output, EventEmitter, HostListener, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatchaTabItemComponent } from '../tab-item/tab-item.component';\nimport { createAnimations } from '../../matcha-animations/animations';\n\nexport interface TabChangeEvent {\n index: number;\n tab?: MatchaTabItemComponent;\n}\n\n@Component({\n selector: 'matcha-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n animations: [...createAnimations],\n standalone: false,\n})\nexport class MatchaTabsComponent implements AfterContentInit, OnChanges {\n @ContentChildren(MatchaTabItemComponent) tabs!: QueryList<MatchaTabItemComponent>;\n\n @Input() selectedIndex: number = 0;\n @Output() selectedIndexChange = new EventEmitter<number>();\n @Output() selectedTabChange = new EventEmitter<TabChangeEvent>();\n\n @Input()\n get activeTabIndex(): number {\n return this.selectedIndex;\n }\n set activeTabIndex(value: number) {\n this.selectedIndex = value;\n }\n\n @Output() tabSelected = new EventEmitter<number>();\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['selectedIndex'] && !changes['selectedIndex'].firstChange) {\n this.selectTabByIndex(this.selectedIndex);\n }\n }\n\n ngAfterContentInit() {\n this.tabs.changes.subscribe(() => {\n this.handleTabsChange();\n });\n\n this.handleTabsChange();\n }\n\n private handleTabsChange() {\n const activeTabs = this.tabs.filter(tab => tab.active);\n if (activeTabs.length === 0 && this.tabs.first) {\n this.selectTabByIndex(this.selectedIndex);\n }\n }\n\n selectTab(tab: MatchaTabItemComponent) {\n if (tab.active) return;\n\n const tabsArray = this.tabs.toArray();\n tabsArray.forEach(t => t.active = false);\n tab.active = true;\n const index = tabsArray.indexOf(tab);\n\n this.selectedIndex = index;\n\n this.selectedIndexChange.emit(index);\n this.selectedTabChange.emit({ index, tab });\n this.tabSelected.emit(index);\n }\n\n selectTabByIndex(index: number) {\n if (index >= 0 && index < this.tabs.length) {\n const tab = this.tabs.toArray()[index];\n this.selectTab(tab);\n }\n }\n\n @HostListener('keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n const tabsArray = this.tabs.toArray();\n const currentIndex = tabsArray.findIndex(tab => tab.active);\n\n if (event.key === 'ArrowRight') {\n const nextIndex = (currentIndex + 1) % tabsArray.length;\n this.selectTabByIndex(nextIndex);\n } else if (event.key === 'ArrowLeft') {\n const prevIndex = (currentIndex - 1 + tabsArray.length) % tabsArray.length;\n this.selectTabByIndex(prevIndex);\n } else if (event.key === 'Home') {\n this.selectTabByIndex(0);\n } else if (event.key === 'End') {\n this.selectTabByIndex(tabsArray.length - 1);\n }\n }\n}\n","<div class=\"flex-column gap-24 w-100-p\">\n <nav class=\"button-group overflow-auto w-100-p flex-row gap-8 list-style-none pl-0 pb-4\" role=\"tablist\">\n <button *ngFor=\"let tab of tabs; let i = index\" (click)=\"selectTabByIndex(i)\"\n [attr.aria-selected]=\"tab.active\"\n [attr.aria-controls]=\"'tab-content-' + i\"\n [ngClass]=\"{'active': tab.active}\"\n class=\"\n border-color-{{tab.active?'accent':'surface'}} background-surface\n cursor-pointer w-100-p min-w-128 b-2 radius-8 p-8 flex-column flex-align-center gap-4 flex-space-between\"\n role=\"tab\"\n tabindex=\"{{tab.active ? 0 : -1}}\">\n <matcha-icon [name]=\"tab.icon\" color=\"accent\" size=\"md\"></matcha-icon>\n <span class=\"color-fg fw-900 fs-14 lh-16 line-clamp-2\">\n {{ tab.title }}\n </span>\n </button>\n </nav>\n\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, forwardRef, ViewEncapsulation, ViewChild, ElementRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-date',\n templateUrl: './matcha-date.component.html',\n styleUrls: ['./matcha-date.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaDateComponent),\n multi: true\n }\n ]\n})\nexport class MatchaDateComponent implements ControlValueAccessor {\n @Input() placeholder: string = '__/__/____';\n @Input() min: string = '';\n @Input() max: string = '';\n @Input() disabled: boolean = false;\n @Input() showNativePicker: boolean = true; // Mostrar botão para abrir datepicker nativo\n\n @ViewChild('textInput') textInput!: ElementRef<HTMLInputElement>;\n @ViewChild('nativeDateInput') nativeDateInput!: ElementRef<HTMLInputElement>;\n\n value: string = '';\n displayValue: string = '';\n isDisabled: boolean = false;\n\n // ControlValueAccessor methods\n private onChange = (value: any) => {};\n private onTouched = () => {};\n\n writeValue(value: any): void {\n if (value) {\n // Se o valor vem como YYYY-MM-DD (do FormControl)\n if (this.isValidDateFormat(value, 'YYYY-MM-DD')) {\n this.value = value;\n this.displayValue = this.formatDateForDisplay(value);\n // Sincronizar com input nativo\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = value;\n }\n // Atualizar o input de texto\n if (this.textInput?.nativeElement) {\n setTimeout(() => {\n if (this.textInput?.nativeElement) {\n this.textInput.nativeElement.value = this.displayValue;\n }\n }, 0);\n }\n } else if (this.isValidDateFormat(value, 'DD/MM/YYYY')) {\n // Se o valor já vem mascarado\n this.displayValue = value;\n const yyyyMMdd = this.convertToYYYYMMDD(value);\n this.value = yyyyMMdd;\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = yyyyMMdd;\n }\n if (this.textInput?.nativeElement) {\n setTimeout(() => {\n if (this.textInput?.nativeElement) {\n this.textInput.nativeElement.value = this.displayValue;\n }\n }, 0);\n }\n } else {\n this.value = value;\n this.displayValue = value || '';\n }\n } else {\n this.value = '';\n this.displayValue = '';\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = '';\n }\n if (this.textInput?.nativeElement) {\n this.textInput.nativeElement.value = '';\n }\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n let inputValue = input.value;\n\n // Aplicar máscara DD/MM/YYYY manualmente (permite zeros)\n inputValue = this.applyDateMask(inputValue);\n\n // Atualizar o valor do input se a máscara foi aplicada\n if (input.value !== inputValue) {\n input.value = inputValue;\n }\n\n this.displayValue = inputValue;\n\n // Apenas converter para YYYY-MM-DD se a data estiver completa e válida\n if (inputValue && inputValue.length === 10 && this.isValidDateFormat(inputValue, 'DD/MM/YYYY')) {\n const yyyyMMdd = this.convertToYYYYMMDD(inputValue);\n if (this.isValidDate(yyyyMMdd)) {\n this.value = yyyyMMdd;\n this.onChange(yyyyMMdd);\n // Sincronizar com input nativo\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = yyyyMMdd;\n }\n } else {\n // Data inválida (ex: 31/02/2024) - não limpar, apenas não converter\n this.onChange(null);\n }\n } else if (!inputValue || inputValue.length === 0) {\n // Campo vazio\n this.value = '';\n this.onChange(null);\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = '';\n }\n } else {\n // Data incompleta - emitir null para indicar que ainda não está completa\n this.onChange(null);\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n // Permitir Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X, Backspace, Delete, Tab, Arrow keys\n const allowedKeys = ['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\n const isCtrl = event.ctrlKey || event.metaKey;\n const isAllowedCtrl = isCtrl && ['a', 'c', 'v', 'x'].includes(event.key.toLowerCase());\n\n if (allowedKeys.includes(event.key) || isAllowedCtrl) {\n return; // Permitir\n }\n\n // Permitir apenas números e barras\n if (!/[0-9\\/]/.test(event.key)) {\n event.preventDefault();\n }\n }\n\n private applyDateMask(value: string): string {\n // Remove tudo que não é número\n const numbers = value.replace(/\\D/g, '');\n\n // Limita a 8 dígitos (DDMMYYYY)\n const limitedNumbers = numbers.slice(0, 8);\n\n // Aplica máscara DD/MM/YYYY\n if (limitedNumbers.length <= 2) {\n return limitedNumbers;\n } else if (limitedNumbers.length <= 4) {\n return `${limitedNumbers.slice(0, 2)}/${limitedNumbers.slice(2)}`;\n } else {\n return `${limitedNumbers.slice(0, 2)}/${limitedNumbers.slice(2, 4)}/${limitedNumbers.slice(4, 8)}`;\n }\n }\n\n onNativeDateChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n\n if (value) {\n this.value = value;\n this.displayValue = this.formatDateForDisplay(value);\n // Sincronizar com input de texto\n if (this.textInput?.nativeElement) {\n this.textInput.nativeElement.value = this.displayValue;\n }\n this.onChange(value);\n } else {\n this.value = '';\n this.displayValue = '';\n if (this.textInput?.nativeElement) {\n this.textInput.nativeElement.value = '';\n }\n this.onChange(null);\n }\n }\n\n onBlur(): void {\n this.onTouched();\n\n // Obter o valor atual do input\n const currentInputValue = this.textInput?.nativeElement?.value || this.displayValue;\n\n // Se já temos um valor válido e a data digitada é a mesma, não fazer nada\n if (this.value && currentInputValue && currentInputValue.length === 10) {\n const yyyyMMdd = this.convertToYYYYMMDD(currentInputValue);\n if (this.value === yyyyMMdd) {\n return;\n }\n }\n\n // Apenas tentar converter se a data estiver completa\n // Não limpar nada - deixa o matcha-error mostrar erros de validação\n if (currentInputValue && currentInputValue.length === 10) {\n if (this.isValidDateFormat(currentInputValue, 'DD/MM/YYYY')) {\n const yyyyMMdd = this.convertToYYYYMMDD(currentInputValue);\n if (this.isValidDate(yyyyMMdd)) {\n // Data válida, atualizar valores\n this.value = yyyyMMdd;\n this.displayValue = currentInputValue;\n this.onChange(yyyyMMdd);\n // Sincronizar com input nativo\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = yyyyMMdd;\n }\n } else {\n // Data inválida - não limpar, apenas não converter\n // O matcha-error vai mostrar o erro\n this.onChange(null);\n }\n } else {\n // Formato inválido - não limpar, apenas não converter\n this.onChange(null);\n }\n } else if (currentInputValue && currentInputValue.length > 0) {\n // Data incompleta - manter o que foi digitado\n this.displayValue = currentInputValue;\n this.onChange(null);\n } else {\n // Campo vazio\n this.displayValue = '';\n this.value = '';\n this.onChange(null);\n }\n }\n\n openNativeDatePicker(): void {\n if (this.nativeDateInput?.nativeElement && !this.disabled && !this.isDisabled) {\n // Verificar se showPicker está disponível (suporte moderno)\n if (typeof this.nativeDateInput.nativeElement.showPicker === 'function') {\n this.nativeDateInput.nativeElement.showPicker();\n } else {\n // Fallback: focar no input nativo\n this.nativeDateInput.nativeElement.focus();\n this.nativeDateInput.nativeElement.click();\n }\n }\n }\n\n private isValidDateFormat(date: string, format: 'DD/MM/YYYY' | 'YYYY-MM-DD'): boolean {\n if (format === 'DD/MM/YYYY') {\n return /^\\d{2}\\/\\d{2}\\/\\d{4}$/.test(date);\n } else {\n return /^\\d{4}-\\d{2}-\\d{2}$/.test(date);\n }\n }\n\n private isValidDate(dateString: string): boolean {\n if (!this.isValidDateFormat(dateString, 'YYYY-MM-DD')) {\n return false;\n }\n\n // Usar Date constructor com componentes separados para evitar problemas de fuso horário\n const [year, month, day] = dateString.split('-').map(Number);\n\n // Criar data usando componentes locais (não UTC)\n const date = new Date(year, month - 1, day);\n\n // Verificar se a data é válida e corresponde ao que foi digitado\n // Isso evita que 31/02/2024 seja aceito (seria convertido para 03/03/2024)\n return date.getFullYear() === year &&\n date.getMonth() + 1 === month &&\n date.getDate() === day;\n }\n\n private convertToYYYYMMDD(ddMMyyyy: string): string {\n const [day, month, year] = ddMMyyyy.split('/');\n return `${year}-${month}-${day}`;\n }\n\n private formatDateForDisplay(yyyyMMdd: string): string {\n const [year, month, day] = yyyyMMdd.split('-');\n return `${day}/${month}/${year}`;\n }\n}\n\n","<div class=\"matcha-date-container\">\n <input\n #textInput\n type=\"text\"\n class=\"matcha-date-input\"\n [value]=\"displayValue\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled || isDisabled\"\n maxlength=\"10\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeyDown($event)\"\n />\n\n <!-- Input nativo de data (hidden) para usar o datepicker nativo -->\n <input\n #nativeDateInput\n type=\"date\"\n class=\"matcha-date-native-input\"\n [value]=\"value\"\n [min]=\"min\"\n [max]=\"max\"\n [disabled]=\"disabled || isDisabled\"\n (change)=\"onNativeDateChange($event)\"\n tabindex=\"-1\"\n />\n\n <!-- Botão para abrir datepicker nativo (opcional) -->\n <button\n *ngIf=\"showNativePicker && !disabled && !isDisabled\"\n type=\"button\"\n class=\"matcha-date-picker-button mr--12\"\n (click)=\"openNativeDatePicker()\"\n [disabled]=\"disabled || isDisabled\"\n aria-label=\"Abrir seletor de data\"\n tabindex=\"0\"\n >\n <span class=\"i-matcha-calendar color-grey\"></span>\n </button>\n</div>\n\n","import { AfterContentInit, Component, ContentChildren, OnDestroy, QueryList } from '@angular/core';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n standalone: false\n})\nexport class MatchaDateRangeComponent implements AfterContentInit, OnDestroy {\n @ContentChildren(NgControl, { descendants: true }) controls!: QueryList<NgControl>;\n\n private startDateControl: AbstractControl | null = null;\n private endDateControl: AbstractControl | null = null;\n private subscription = new Subscription();\n\n ngAfterContentInit(): void {\n // Pega os controles projetados no template\n const controlsArray = this.controls.toArray();\n if (controlsArray.length >= 2) {\n this.startDateControl = controlsArray[0].control;\n this.endDateControl = controlsArray[1].control;\n\n // Adiciona validação nos dois campos\n if (this.startDateControl && this.endDateControl) {\n this.subscription.add(\n this.startDateControl.valueChanges.subscribe(() => this.validateDateRange())\n );\n this.subscription.add(\n this.endDateControl.valueChanges.subscribe(() => this.validateDateRange())\n );\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /**\n * Validação de formato de data e intervalo: data inicial não pode ser posterior à data final\n */\n private validateDateRange(): void {\n if (!this.startDateControl || !this.endDateControl) return;\n\n const startValue = this.startDateControl.value;\n const endValue = this.endDateControl.value;\n\n // Se ambos os campos estão vazios, não valida\n if (!startValue && !endValue) {\n this.clearDateRangeErrors();\n return;\n }\n\n // Se apenas um campo está preenchido, limpa erros de intervalo\n if (!startValue || !endValue) {\n this.clearDateRangeErrors();\n return;\n }\n\n // Validação de formato de data (YYYY-MM-DD)\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n if (!dateRegex.test(startValue)) {\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['invalidDateFormat']: true\n });\n return;\n }\n\n if (!dateRegex.test(endValue)) {\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['invalidDateFormat']: true\n });\n return;\n }\n\n const startDate = new Date(startValue);\n const endDate = new Date(endValue);\n\n // Verifica se as datas são válidas\n if (isNaN(startDate.getTime())) {\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['invalidDate']: true\n });\n return;\n }\n\n if (isNaN(endDate.getTime())) {\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['invalidDate']: true\n });\n return;\n }\n\n // Validação principal: data inicial não pode ser posterior à data final\n if (startDate > endDate) {\n // Adiciona erros específicos quando a data inicial é posterior à final\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['startAfterEnd']: true\n });\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['endBeforeStart']: true\n });\n } else {\n // Remove apenas nossos erros específicos se o intervalo está correto\n this.clearDateRangeErrors();\n }\n }\n\n /**\n * Limpa apenas os erros relacionados ao intervalo de datas\n */\n private clearDateRangeErrors(): void {\n if (this.startDateControl) {\n this.removeSpecificError(this.startDateControl, 'invalidDateFormat');\n this.removeSpecificError(this.startDateControl, 'invalidDate');\n this.removeSpecificError(this.startDateControl, 'startAfterEnd');\n }\n if (this.endDateControl) {\n this.removeSpecificError(this.endDateControl, 'invalidDateFormat');\n this.removeSpecificError(this.endDateControl, 'invalidDate');\n this.removeSpecificError(this.endDateControl, 'endBeforeStart');\n }\n }\n\n /**\n * Remove um erro específico sem afetar outros erros\n */\n private removeSpecificError(control: AbstractControl, errorName: string): void {\n const errors = { ...control.errors };\n if (errors) {\n delete errors[errorName];\n control.setErrors(Object.keys(errors).length ? errors : null);\n }\n }\n}\n","<div class=\"matcha-date-range-container\">\n <ng-content></ng-content>\n</div>\n","import { AfterContentInit, Component, ContentChildren, Input, OnDestroy, QueryList } from '@angular/core';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-time',\n templateUrl: './time.component.html',\n styleUrls: ['./time.component.scss'],\n standalone: false\n})\nexport class MatchaTimeComponent implements AfterContentInit, OnDestroy {\n @ContentChildren(NgControl, { descendants: true }) controls!: QueryList<NgControl>;\n \n // Adiciona inputs para integração com campos de data\n @Input() startDateControlName?: string;\n @Input() endDateControlName?: string;\n \n // Opção para desabilitar a validação quando dias são diferentes\n @Input() allowCrossDays: boolean = false;\n\n private startTimeControl: AbstractControl | null = null;\n private endTimeControl: AbstractControl | null = null;\n private startDateControl: AbstractControl | null = null;\n private endDateControl: AbstractControl | null = null;\n private subscription = new Subscription();\n\n ngAfterContentInit(): void {\n // Pega os controles projetados no template\n const controlsArray = this.controls.toArray();\n if (controlsArray.length >= 2) {\n this.startTimeControl = controlsArray[0].control;\n this.endTimeControl = controlsArray[1].control;\n \n // Tenta encontrar os controles de data no form parent\n if (this.startTimeControl && this.endTimeControl && \n this.startDateControlName && this.endDateControlName) {\n const formGroup = this.startTimeControl.parent;\n if (formGroup) {\n this.startDateControl = formGroup.get(this.startDateControlName);\n this.endDateControl = formGroup.get(this.endDateControlName);\n }\n }\n\n // Adiciona validação para os campos de tempo\n if (this.startTimeControl && this.endTimeControl) {\n this.subscription.add(\n this.startTimeControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n this.subscription.add(\n this.endTimeControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n }\n \n // Adiciona validação para os campos de data, se existirem\n if (this.startDateControl && this.endDateControl) {\n this.subscription.add(\n this.startDateControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n this.subscription.add(\n this.endDateControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /**\n * Validação de intervalo de tempo que pode cruzar dias\n */\n private validateTimeRange(): void {\n if (!this.startTimeControl || !this.endTimeControl) return;\n if (!this.startTimeControl.value || !this.endTimeControl.value) return;\n\n let startDateTime: Date;\n let endDateTime: Date;\n \n // Se temos controles de data, usamos as datas fornecidas\n if (this.startDateControl?.value && this.endDateControl?.value) {\n const startDate = this.startDateControl.value;\n const endDate = this.endDateControl.value;\n \n startDateTime = new Date(`${startDate}T${this.startTimeControl.value}`);\n endDateTime = new Date(`${endDate}T${this.endTimeControl.value}`);\n \n // Comparação de data + hora\n if (startDateTime > endDateTime) {\n this.setValidationErrors();\n } else {\n this.clearValidationErrors();\n }\n } \n // Sem controles de data, ou se allowCrossDays=true, não validamos cruzamento de dias\n else if (this.allowCrossDays) {\n // Nesse caso, assumimos que o intervalo é válido mesmo se hora final < hora inicial\n this.clearValidationErrors();\n } \n // Caso tradicional: mesmo dia, validação simples de hora\n else {\n const today = new Date().toISOString().split('T')[0];\n startDateTime = new Date(`${today}T${this.startTimeControl.value}`);\n endDateTime = new Date(`${today}T${this.endTimeControl.value}`);\n \n if (startDateTime > endDateTime) {\n this.setValidationErrors();\n } else {\n this.clearValidationErrors();\n }\n }\n }\n \n /**\n * Define erros de validação nos controles\n */\n private setValidationErrors(): void {\n this.startTimeControl?.setErrors({ ['startAfterEnd']: true });\n this.endTimeControl?.setErrors({ ['endBeforeStart']: true });\n }\n \n /**\n * Remove erros específicos de validação\n */\n private clearValidationErrors(): void {\n this.removeSpecificError(this.startTimeControl, 'startAfterEnd');\n this.removeSpecificError(this.endTimeControl, 'endBeforeStart');\n }\n\n /**\n * Remove um erro específico sem afetar outros erros\n */\n private removeSpecificError(control: AbstractControl | null, errorName: string): void {\n if (!control) return;\n const errors = { ...control.errors };\n if (errors) {\n delete errors[errorName];\n control.setErrors(Object.keys(errors).length ? errors : null);\n }\n }\n}\n","<div class=\"d-flex gap-16\">\n <ng-content></ng-content>\n</div>\n","// Array of country objects for the flag dropdown.\n\n// Here is the criteria for the plugin to support a given country/territory\n// - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n// - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n// - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n// - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n\n// Each country array has the following information:\n// [\n// Country name,\n// iso2 code,\n// International dial code,\n// Order (if >1 country with same dial code),\n// Area codes\n// ]\nvar allCountries = [\n [\n \"Afghanistan (افغانستان)\",\n \"af\",\n \"93\"\n ],\n [\n \"Albania (Shqipëri)\",\n \"al\",\n \"355\"\n ],\n [\n \"Algeria (الجزائر)\",\n \"dz\",\n \"213\"\n ],\n [\n \"American Samoa\",\n \"as\",\n \"1\",\n 5,\n [\"684\"]\n ],\n [\n \"Andorra\",\n \"ad\",\n \"376\"\n ],\n [\n \"Angola\",\n \"ao\",\n \"244\"\n ],\n [\n \"Anguilla\",\n \"ai\",\n \"1\",\n 6,\n [\"264\"]\n ],\n [\n \"Antigua and Barbuda\",\n \"ag\",\n \"1\",\n 7,\n [\"268\"]\n ],\n [\n \"Argentina\",\n \"ar\",\n \"54\",\n ],\n [\n \"Armenia (Հայաստան)\",\n \"am\",\n \"374\"\n ],\n [\n \"Aruba\",\n \"aw\",\n \"297\"\n ],\n [\n \"Australia\",\n \"au\",\n \"61\",\n 0\n ],\n [\n \"Austria (Österreich)\",\n \"at\",\n \"43\"\n ],\n [\n \"Azerbaijan (Azərbaycan)\",\n \"az\",\n \"994\"\n ],\n [\n \"Bahamas\",\n \"bs\",\n \"1\",\n 8,\n [\"242\"]\n ],\n [\n \"Bahrain (البحرين)\",\n \"bh\",\n \"973\"\n ],\n [\n \"Bangladesh (বাংলাদেশ)\",\n \"bd\",\n \"880\"\n ],\n [\n \"Barbados\",\n \"bb\",\n \"1\",\n 9,\n [\"246\"]\n ],\n [\n \"Belarus (Беларусь)\",\n \"by\",\n \"375\"\n ],\n [\n \"Belgium (België)\",\n \"be\",\n \"32\"\n ],\n [\n \"Belize\",\n \"bz\",\n \"501\"\n ],\n [\n \"Benin (Bénin)\",\n \"bj\",\n \"229\"\n ],\n [\n \"Bermuda\",\n \"bm\",\n \"1\",\n 10,\n [\"441\"]\n ],\n [\n \"Bhutan (འབྲུག)\",\n \"bt\",\n \"975\"\n ],\n [\n \"Bolivia\",\n \"bo\",\n \"591\"\n ],\n [\n \"Bosnia and Herzegovina (Босна и Херцеговина)\",\n \"ba\",\n \"387\"\n ],\n [\n \"Botswana\",\n \"bw\",\n \"267\"\n ],\n [\n \"Brazil (Brasil)\",\n \"br\",\n \"55\"\n ],\n [\n \"British Indian Ocean Territory\",\n \"io\",\n \"246\"\n ],\n [\n \"British Virgin Islands\",\n \"vg\",\n \"1\",\n 11,\n [\"284\"]\n ],\n [\n \"Brunei\",\n \"bn\",\n \"673\"\n ],\n [\n \"Bulgaria (България)\",\n \"bg\",\n \"359\"\n ],\n [\n \"Burkina Faso\",\n \"bf\",\n \"226\"\n ],\n [\n \"Burundi (Uburundi)\",\n \"bi\",\n \"257\"\n ],\n [\n \"Cambodia (កម្ពុជា)\",\n \"kh\",\n \"855\"\n ],\n [\n \"Cameroon (Cameroun)\",\n \"cm\",\n \"237\"\n ],\n [\n \"Canada\",\n \"ca\",\n \"1\",\n 1,\n [\"204\", \"226\", \"236\", \"249\", \"250\", \"289\", \"306\", \"343\", \"365\", \"387\", \"403\", \"416\", \"418\", \"431\", \"437\", \"438\", \"450\", \"506\", \"514\", \"519\", \"548\", \"579\", \"581\", \"587\", \"604\", \"613\", \"639\", \"647\", \"672\", \"705\", \"709\", \"742\", \"778\", \"780\", \"782\", \"807\", \"819\", \"825\", \"867\", \"873\", \"902\", \"905\"]\n ],\n [\n \"Cape Verde (Kabu Verdi)\",\n \"cv\",\n \"238\"\n ],\n [\n \"Caribbean Netherlands\",\n \"bq\",\n \"599\",\n 1,\n [\"3\", \"4\", \"7\"]\n ],\n [\n \"Cayman Islands\",\n \"ky\",\n \"1\",\n 12,\n [\"345\"]\n ],\n [\n \"Central African Republic (République centrafricaine)\",\n \"cf\",\n \"236\"\n ],\n [\n \"Chad (Tchad)\",\n \"td\",\n \"235\"\n ],\n [\n \"Chile\",\n \"cl\",\n \"56\"\n ],\n [\n \"China (中国)\",\n \"cn\",\n \"86\"\n ],\n [\n \"Christmas Island\",\n \"cx\",\n \"61\",\n 2\n ],\n [\n \"Cocos (Keeling) Islands\",\n \"cc\",\n \"61\",\n 1\n ],\n [\n \"Colombia\",\n \"co\",\n \"57\"\n ],\n [\n \"Comoros (جزر القمر)\",\n \"km\",\n \"269\"\n ],\n [\n \"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\",\n \"cd\",\n \"243\"\n ],\n [\n \"Congo (Republic) (Congo-Brazzaville)\",\n \"cg\",\n \"242\"\n ],\n [\n \"Cook Islands\",\n \"ck\",\n \"682\"\n ],\n [\n \"Costa Rica\",\n \"cr\",\n \"506\"\n ],\n [\n \"Côte d’Ivoire\",\n \"ci\",\n \"225\"\n ],\n [\n \"Croatia (Hrvatska)\",\n \"hr\",\n \"385\"\n ],\n [\n \"Cuba\",\n \"cu\",\n \"53\"\n ],\n [\n \"Curaçao\",\n \"cw\",\n \"599\",\n 0\n ],\n [\n \"Cyprus (Κύπρος)\",\n \"cy\",\n \"357\"\n ],\n [\n \"Czech Republic (Česká republika)\",\n \"cz\",\n \"420\"\n ],\n [\n \"Denmark (Danmark)\",\n \"dk\",\n \"45\"\n ],\n [\n \"Djibouti\",\n \"dj\",\n \"253\"\n ],\n [\n \"Dominica\",\n \"dm\",\n \"1\",\n 13,\n [\"767\"]\n ],\n [\n \"Dominican Republic (República Dominicana)\",\n \"do\",\n \"1\",\n 2,\n [\"809\", \"829\", \"849\"]\n ],\n [\n \"Ecuador\",\n \"ec\",\n \"593\"\n ],\n [\n \"Egypt (مصر)\",\n \"eg\",\n \"20\"\n ],\n [\n \"El Salvador\",\n \"sv\",\n \"503\"\n ],\n [\n \"Equatorial Guinea (Guinea Ecuatorial)\",\n \"gq\",\n \"240\"\n ],\n [\n \"Eritrea\",\n \"er\",\n \"291\"\n ],\n [\n \"Estonia (Eesti)\",\n \"ee\",\n \"372\"\n ],\n [\n \"Ethiopia\",\n \"et\",\n \"251\"\n ],\n [\n \"Falkland Islands (Islas Malvinas)\",\n \"fk\",\n \"500\"\n ],\n [\n \"Faroe Islands (Føroyar)\",\n \"fo\",\n \"298\"\n ],\n [\n \"Fiji\",\n \"fj\",\n \"679\"\n ],\n [\n \"Finland (Suomi)\",\n \"fi\",\n \"358\",\n 0\n ],\n [\n \"France\",\n \"fr\",\n \"33\"\n ],\n [\n \"French Guiana (Guyane française)\",\n \"gf\",\n \"594\"\n ],\n [\n \"French Polynesia (Polynésie française)\",\n \"pf\",\n \"689\"\n ],\n [\n \"Gabon\",\n \"ga\",\n \"241\"\n ],\n [\n \"Gambia\",\n \"gm\",\n \"220\"\n ],\n [\n \"Georgia (საქართველო)\",\n \"ge\",\n \"995\"\n ],\n [\n \"Germany (Deutschland)\",\n \"de\",\n \"49\"\n ],\n [\n \"Ghana (Gaana)\",\n \"gh\",\n \"233\"\n ],\n [\n \"Gibraltar\",\n \"gi\",\n \"350\"\n ],\n [\n \"Greece (Ελλάδα)\",\n \"gr\",\n \"30\"\n ],\n [\n \"Greenland (Kalaallit Nunaat)\",\n \"gl\",\n \"299\"\n ],\n [\n \"Grenada\",\n \"gd\",\n \"1\",\n 14,\n [\"473\"]\n ],\n [\n \"Guadeloupe\",\n \"gp\",\n \"590\",\n 0\n ],\n [\n \"Guam\",\n \"gu\",\n \"1\",\n 15,\n [\"671\"]\n ],\n [\n \"Guatemala\",\n \"gt\",\n \"502\"\n ],\n [\n \"Guernsey\",\n \"gg\",\n \"44\",\n 1,\n [\"1481\", \"7781\", \"7839\", \"7911\"]\n ],\n [\n \"Guinea (Guinée)\",\n \"gn\",\n \"224\"\n ],\n [\n \"Guinea-Bissau (Guiné Bissau)\",\n \"gw\",\n \"245\"\n ],\n [\n \"Guyana\",\n \"gy\",\n \"592\"\n ],\n [\n \"Haiti\",\n \"ht\",\n \"509\"\n ],\n [\n \"Honduras\",\n \"hn\",\n \"504\"\n ],\n [\n \"Hong Kong (香港)\",\n \"hk\",\n \"852\"\n ],\n [\n \"Hungary (Magyarország)\",\n \"hu\",\n \"36\"\n ],\n [\n \"Iceland (Ísland)\",\n \"is\",\n \"354\"\n ],\n [\n \"India (भारत)\",\n \"in\",\n \"91\"\n ],\n [\n \"Indonesia\",\n \"id\",\n \"62\"\n ],\n [\n \"Iran (ایران)\",\n \"ir\",\n \"98\"\n ],\n [\n \"Iraq (العراق)\",\n \"iq\",\n \"964\"\n ],\n [\n \"Ireland\",\n \"ie\",\n \"353\"\n ],\n [\n \"Isle of Man\",\n \"im\",\n \"44\",\n 2,\n [\"1624\", \"74576\", \"7524\", \"7924\", \"7624\"]\n ],\n [\n \"Israel (ישראל)\",\n \"il\",\n \"972\"\n ],\n [\n \"Italy (Italia)\",\n \"it\",\n \"39\",\n 0\n ],\n [\n \"Jamaica\",\n \"jm\",\n \"1\",\n 4,\n [\"876\", \"658\"]\n ],\n [\n \"Japan (日本)\",\n \"jp\",\n \"81\"\n ],\n [\n \"Jersey\",\n \"je\",\n \"44\",\n 3,\n [\"1534\", \"7509\", \"7700\", \"7797\", \"7829\", \"7937\"]\n ],\n [\n \"Jordan (الأردن)\",\n \"jo\",\n \"962\"\n ],\n [\n \"Kazakhstan (Казахстан)\",\n \"kz\",\n \"7\",\n 1,\n [\"33\", \"7\"]\n ],\n [\n \"Kenya\",\n \"ke\",\n \"254\"\n ],\n [\n \"Kiribati\",\n \"ki\",\n \"686\"\n ],\n [\n \"Kosovo\",\n \"xk\",\n \"383\"\n ],\n [\n \"Kuwait (الكويت)\",\n \"kw\",\n \"965\"\n ],\n [\n \"Kyrgyzstan (Кыргызстан)\",\n \"kg\",\n \"996\"\n ],\n [\n \"Laos (ລາວ)\",\n \"la\",\n \"856\"\n ],\n [\n \"Latvia (Latvija)\",\n \"lv\",\n \"371\"\n ],\n [\n \"Lebanon (لبنان)\",\n \"lb\",\n \"961\"\n ],\n [\n \"Lesotho\",\n \"ls\",\n \"266\"\n ],\n [\n \"Liberia\",\n \"lr\",\n \"231\"\n ],\n [\n \"Libya (ليبيا)\",\n \"ly\",\n \"218\"\n ],\n [\n \"Liechtenstein\",\n \"li\",\n \"423\"\n ],\n [\n \"Lithuania (Lietuva)\",\n \"lt\",\n \"370\"\n ],\n [\n \"Luxembourg\",\n \"lu\",\n \"352\"\n ],\n [\n \"Macau (澳門)\",\n \"mo\",\n \"853\"\n ],\n [\n \"Macedonia (FYROM) (Македонија)\",\n \"mk\",\n \"389\"\n ],\n [\n \"Madagascar (Madagasikara)\",\n \"mg\",\n \"261\"\n ],\n [\n \"Malawi\",\n \"mw\",\n \"265\"\n ],\n [\n \"Malaysia\",\n \"my\",\n \"60\"\n ],\n [\n \"Maldives\",\n \"mv\",\n \"960\"\n ],\n [\n \"Mali\",\n \"ml\",\n \"223\"\n ],\n [\n \"Malta\",\n \"mt\",\n \"356\"\n ],\n [\n \"Marshall Islands\",\n \"mh\",\n \"692\"\n ],\n [\n \"Martinique\",\n \"mq\",\n \"596\"\n ],\n [\n \"Mauritania (موريتانيا)\",\n \"mr\",\n \"222\"\n ],\n [\n \"Mauritius (Moris)\",\n \"mu\",\n \"230\"\n ],\n [\n \"Mayotte\",\n \"yt\",\n \"262\",\n 1,\n [\"269\", \"639\"]\n ],\n [\n \"Mexico (México)\",\n \"mx\",\n \"52\"\n ],\n [\n \"Micronesia\",\n \"fm\",\n \"691\"\n ],\n [\n \"Moldova (Republica Moldova)\",\n \"md\",\n \"373\"\n ],\n [\n \"Monaco\",\n \"mc\",\n \"377\"\n ],\n [\n \"Mongolia (Монгол)\",\n \"mn\",\n \"976\"\n ],\n [\n \"Montenegro (Crna Gora)\",\n \"me\",\n \"382\"\n ],\n [\n \"Montserrat\",\n \"ms\",\n \"1\",\n 16,\n [\"664\"]\n ],\n [\n \"Morocco (المغرب)\",\n \"ma\",\n \"212\",\n 0\n ],\n [\n \"Mozambique (Moçambique)\",\n \"mz\",\n \"258\"\n ],\n [\n \"Myanmar (Burma) (မြန်မာ)\",\n \"mm\",\n \"95\"\n ],\n [\n \"Namibia (Namibië)\",\n \"na\",\n \"264\"\n ],\n [\n \"Nauru\",\n \"nr\",\n \"674\"\n ],\n [\n \"Nepal (नेपाल)\",\n \"np\",\n \"977\"\n ],\n [\n \"Netherlands (Nederland)\",\n \"nl\",\n \"31\"\n ],\n [\n \"New Caledonia (Nouvelle-Calédonie)\",\n \"nc\",\n \"687\"\n ],\n [\n \"New Zealand\",\n \"nz\",\n \"64\"\n ],\n [\n \"Nicaragua\",\n \"ni\",\n \"505\"\n ],\n [\n \"Niger (Nijar)\",\n \"ne\",\n \"227\"\n ],\n [\n \"Nigeria\",\n \"ng\",\n \"234\"\n ],\n [\n \"Niue\",\n \"nu\",\n \"683\"\n ],\n [\n \"Norfolk Island\",\n \"nf\",\n \"672\"\n ],\n [\n \"North Korea (조선 민주주의 인민 공화국)\",\n \"kp\",\n \"850\"\n ],\n [\n \"Northern Mariana Islands\",\n \"mp\",\n \"1\",\n 17,\n [\"670\"]\n ],\n [\n \"Norway (Norge)\",\n \"no\",\n \"47\",\n 0\n ],\n [\n \"Oman (عُمان)\",\n \"om\",\n \"968\"\n ],\n [\n \"Pakistan (پاکستان)\",\n \"pk\",\n \"92\"\n ],\n [\n \"Palau\",\n \"pw\",\n \"680\"\n ],\n [\n \"Palestine (فلسطين)\",\n \"ps\",\n \"970\"\n ],\n [\n \"Panama (Panamá)\",\n \"pa\",\n \"507\"\n ],\n [\n \"Papua New Guinea\",\n \"pg\",\n \"675\"\n ],\n [\n \"Paraguay\",\n \"py\",\n \"595\"\n ],\n [\n \"Peru (Perú)\",\n \"pe\",\n \"51\"\n ],\n [\n \"Philippines\",\n \"ph\",\n \"63\"\n ],\n [\n \"Poland (Polska)\",\n \"pl\",\n \"48\"\n ],\n [\n \"Portugal\",\n \"pt\",\n \"351\"\n ],\n [\n \"Puerto Rico\",\n \"pr\",\n \"1\",\n 3,\n [\"787\", \"939\"]\n ],\n [\n \"Qatar (قطر)\",\n \"qa\",\n \"974\"\n ],\n [\n \"Réunion (La Réunion)\",\n \"re\",\n \"262\",\n 0\n ],\n [\n \"Romania (România)\",\n \"ro\",\n \"40\"\n ],\n [\n \"Russia (Россия)\",\n \"ru\",\n \"7\",\n 0\n ],\n [\n \"Rwanda\",\n \"rw\",\n \"250\"\n ],\n [\n \"Saint Barthélemy\",\n \"bl\",\n \"590\",\n 1\n ],\n [\n \"Saint Helena\",\n \"sh\",\n \"290\"\n ],\n [\n \"Saint Kitts and Nevis\",\n \"kn\",\n \"1\",\n 18,\n [\"869\"]\n ],\n [\n \"Saint Lucia\",\n \"lc\",\n \"1\",\n 19,\n [\"758\"]\n ],\n [\n \"Saint Martin (Saint-Martin (partie française))\",\n \"mf\",\n \"590\",\n 2\n ],\n [\n \"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\",\n \"pm\",\n \"508\"\n ],\n [\n \"Saint Vincent and the Grenadines\",\n \"vc\",\n \"1\",\n 20,\n [\"784\"]\n ],\n [\n \"Samoa\",\n \"ws\",\n \"685\"\n ],\n [\n \"San Marino\",\n \"sm\",\n \"378\"\n ],\n [\n \"São Tomé and Príncipe (São Tomé e Príncipe)\",\n \"st\",\n \"239\"\n ],\n [\n \"Saudi Arabia (المملكة العربية السعودية)\",\n \"sa\",\n \"966\"\n ],\n [\n \"Senegal (Sénégal)\",\n \"sn\",\n \"221\"\n ],\n [\n \"Serbia (Србија)\",\n \"rs\",\n \"381\"\n ],\n [\n \"Seychelles\",\n \"sc\",\n \"248\"\n ],\n [\n \"Sierra Leone\",\n \"sl\",\n \"232\"\n ],\n [\n \"Singapore\",\n \"sg\",\n \"65\"\n ],\n [\n \"Sint Maarten\",\n \"sx\",\n \"1\",\n 21,\n [\"721\"]\n ],\n [\n \"Slovakia (Slovensko)\",\n \"sk\",\n \"421\"\n ],\n [\n \"Slovenia (Slovenija)\",\n \"si\",\n \"386\"\n ],\n [\n \"Solomon Islands\",\n \"sb\",\n \"677\"\n ],\n [\n \"Somalia (Soomaaliya)\",\n \"so\",\n \"252\"\n ],\n [\n \"South Africa\",\n \"za\",\n \"27\"\n ],\n [\n \"South Korea (대한민국)\",\n \"kr\",\n \"82\"\n ],\n [\n \"South Sudan (جنوب السودان)\",\n \"ss\",\n \"211\"\n ],\n [\n \"Spain (España)\",\n \"es\",\n \"34\"\n ],\n [\n \"Sri Lanka (ශ්රී ලංකාව)\",\n \"lk\",\n \"94\"\n ],\n [\n \"Sudan (السودان)\",\n \"sd\",\n \"249\"\n ],\n [\n \"Suriname\",\n \"sr\",\n \"597\"\n ],\n [\n \"Svalbard and Jan Mayen\",\n \"sj\",\n \"47\",\n 1,\n [\"79\"]\n ],\n [\n \"Swaziland\",\n \"sz\",\n \"268\"\n ],\n [\n \"Sweden (Sverige)\",\n \"se\",\n \"46\"\n ],\n [\n \"Switzerland (Schweiz)\",\n \"ch\",\n \"41\"\n ],\n [\n \"Syria (سوريا)\",\n \"sy\",\n \"963\"\n ],\n [\n \"Taiwan (台灣)\",\n \"tw\",\n \"886\"\n ],\n [\n \"Tajikistan\",\n \"tj\",\n \"992\"\n ],\n [\n \"Tanzania\",\n \"tz\",\n \"255\"\n ],\n [\n \"Thailand (ไทย)\",\n \"th\",\n \"66\"\n ],\n [\n \"Timor-Leste\",\n \"tl\",\n \"670\"\n ],\n [\n \"Togo\",\n \"tg\",\n \"228\"\n ],\n [\n \"Tokelau\",\n \"tk\",\n \"690\"\n ],\n [\n \"Tonga\",\n \"to\",\n \"676\"\n ],\n [\n \"Trinidad and Tobago\",\n \"tt\",\n \"1\",\n 22,\n [\"868\"]\n ],\n [\n \"Tunisia (تونس)\",\n \"tn\",\n \"216\"\n ],\n [\n \"Turkey (Türkiye)\",\n \"tr\",\n \"90\"\n ],\n [\n \"Turkmenistan\",\n \"tm\",\n \"993\"\n ],\n [\n \"Turks and Caicos Islands\",\n \"tc\",\n \"1\",\n 23,\n [\"649\"]\n ],\n [\n \"Tuvalu\",\n \"tv\",\n \"688\"\n ],\n [\n \"U.S. Virgin Islands\",\n \"vi\",\n \"1\",\n 24,\n [\"340\"]\n ],\n [\n \"Uganda\",\n \"ug\",\n \"256\"\n ],\n [\n \"Ukraine (Україна)\",\n \"ua\",\n \"380\"\n ],\n [\n \"United Arab Emirates (الإمارات العربية المتحدة)\",\n \"ae\",\n \"971\"\n ],\n [\n \"United Kingdom\",\n \"gb\",\n \"44\",\n 0\n ],\n [\n \"United States\",\n \"us\",\n \"1\",\n 0\n ],\n [\n \"Uruguay\",\n \"uy\",\n \"598\"\n ],\n [\n \"Uzbekistan (Oʻzbekiston)\",\n \"uz\",\n \"998\"\n ],\n [\n \"Vanuatu\",\n \"vu\",\n \"678\"\n ],\n [\n \"Vatican City (Città del Vaticano)\",\n \"va\",\n \"39\",\n 1,\n [\"06698\"]\n ],\n [\n \"Venezuela\",\n \"ve\",\n \"58\"\n ],\n [\n \"Vietnam (Việt Nam)\",\n \"vn\",\n \"84\"\n ],\n [\n \"Wallis and Futuna (Wallis-et-Futuna)\",\n \"wf\",\n \"681\"\n ],\n [\n \"Western Sahara (الصحراء الغربية)\",\n \"eh\",\n \"212\",\n 1,\n [\"5288\", \"5289\"]\n ],\n [\n \"Yemen (اليمن)\",\n \"ye\",\n \"967\"\n ],\n [\n \"Zambia\",\n \"zm\",\n \"260\"\n ],\n [\n \"Zimbabwe\",\n \"zw\",\n \"263\"\n ],\n [\n \"Åland Islands\",\n \"ax\",\n \"358\",\n 1,\n [\"18\"]\n ]\n];\n\n// loop over all of the countries above, restructuring the data to be objects with named keys\n\nexport function getCountryISO2() {\n let countries: { name: string; iso2: string; dialCode: string; priority: number; areaCodes: string[] | null, mask: string | string[] }[] = [];\n for (var i = 0; i < allCountries.length; i++) {\n var c = allCountries[i];\n // Garante que o array tenha pelo menos 3 elementos\n const safeCountry: [string, string, string, number?, string[]?] = [\n c[0] as string,\n c[1] as string,\n c[2] as string,\n c[3] as number || 0,\n c[4] as string[] || null\n ];\n countries[i] = {\n name: c[0] as string,\n iso2: c[1] as string,\n dialCode: c[2] as string,\n priority: c[3] as number || 0,\n areaCodes: c[4] as string[] || null,\n mask: applyPhoneMask(safeCountry)\n };\n }\n return countries;\n}\n\nfunction applyPhoneMask(country: [string, string, string, number?, string[]?]) {\n const countryCode = country[2];\n const areaCodes = country[4] || [countryCode];\n const masks = areaCodes.map((areaCode: string) => {\n\n if (countryCode === \"1\") {\n // North American Numbering Plan (NANP)\n return `000 000 0000`;\n } else if (countryCode === \"44\" && areaCode.length === 4) {\n // UK\n return `000 0000 0000`;\n } else if (countryCode === \"55\") {\n // Brazil\n return `00 0000 0000`;\n } else {\n // General international format\n return `000 0000 0000`;\n }\n });\n return masks;\n}\n\n\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\nexport type InputTransformFn = (value: unknown) => string | number;\n\nexport type OutputTransformFn = (value: string | number | undefined | null) => unknown;\n\nexport type MatchaMaskConfig = {\n suffix: string;\n prefix: string;\n thousandSeparator: string;\n decimalMarker: '.' | ',' | ['.', ','];\n clearIfNotMatch: boolean;\n showMaskTyped: boolean;\n placeHolderCharacter: string;\n shownMaskExpression: string;\n specialCharacters: string[] | readonly string[];\n dropSpecialCharacters: boolean | string[] | readonly string[];\n hiddenInput: boolean;\n validation: boolean;\n instantPrefix: boolean;\n separatorLimit: string;\n apm: boolean;\n allowNegativeNumbers: boolean;\n leadZeroDateTime: boolean;\n leadZero: boolean;\n triggerOnMaskChange: boolean;\n keepCharacterPositions: boolean;\n currencyMode: boolean; // Modo moeda: dígitos entram pela direita (1 → 0,01, 12 → 0,12, 123 → 1,23)\n inputTransformFn: InputTransformFn;\n outputTransformFn: OutputTransformFn;\n maskFilled: EventEmitter<void>;\n patterns: Record<\n string,\n {\n pattern: RegExp;\n optional?: boolean;\n symbol?: string;\n }\n >;\n};\n\nexport type MatchaMaskOptions = Partial<MatchaMaskConfig>;\nexport const MATCHA_MASK_CONFIG = new InjectionToken<MatchaMaskConfig>('matcha-mask config');\nexport const NEW_CONFIG = new InjectionToken<MatchaMaskConfig>('new matcha-mask config');\nexport const INITIAL_CONFIG = new InjectionToken<MatchaMaskConfig>('initial matcha-mask config');\n\nexport const initialConfig: MatchaMaskConfig = {\n suffix: '',\n prefix: '',\n thousandSeparator: ' ',\n decimalMarker: ['.', ','],\n clearIfNotMatch: false,\n showMaskTyped: false,\n instantPrefix: false,\n placeHolderCharacter: '_',\n dropSpecialCharacters: true,\n hiddenInput: false,\n shownMaskExpression: '',\n separatorLimit: '',\n allowNegativeNumbers: false,\n validation: true,\n specialCharacters: ['-', '/', '(', ')', '.', ':', ' ', '+', ',', '@', '[', ']', '\"', \"'\"],\n leadZeroDateTime: false,\n apm: false,\n leadZero: false,\n keepCharacterPositions: false,\n triggerOnMaskChange: false,\n currencyMode: false,\n inputTransformFn: (value: unknown) => value as string | number,\n outputTransformFn: (value: string | number | undefined | null) => value,\n maskFilled: new EventEmitter<void>(),\n patterns: {\n '0': {\n pattern: new RegExp('\\\\d'),\n },\n '9': {\n pattern: new RegExp('\\\\d'),\n optional: true,\n },\n X: {\n pattern: new RegExp('\\\\d'),\n symbol: '*',\n },\n A: {\n pattern: new RegExp('[a-zA-Z0-9]'),\n },\n S: {\n pattern: new RegExp('[a-zA-Z]'),\n },\n U: {\n pattern: new RegExp('[A-Z]'),\n },\n L: {\n pattern: new RegExp('[a-z]'),\n },\n d: {\n pattern: new RegExp('\\\\d'),\n },\n m: {\n pattern: new RegExp('\\\\d'),\n },\n M: {\n pattern: new RegExp('\\\\d'),\n },\n H: {\n pattern: new RegExp('\\\\d'),\n },\n h: {\n pattern: new RegExp('\\\\d'),\n },\n s: {\n pattern: new RegExp('\\\\d'),\n },\n },\n};\n\nexport const timeMasks: string[] = [\n MaskExpression.HOURS_MINUTES_SECONDS,\n MaskExpression.HOURS_MINUTES,\n MaskExpression.MINUTES_SECONDS,\n];\n\nexport const withoutValidation: string[] = [\n MaskExpression.PERCENT,\n MaskExpression.HOURS_HOUR,\n MaskExpression.SECONDS,\n MaskExpression.MINUTES,\n MaskExpression.SEPARATOR,\n MaskExpression.DAYS_MONTHS_YEARS,\n MaskExpression.DAYS_MONTHS,\n MaskExpression.DAYS,\n MaskExpression.MONTHS,\n];\n","import { inject, Injectable } from '@angular/core';\nimport { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Injectable()\nexport class MatchaMaskApplierService {\n protected _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n public dropSpecialCharacters: MatchaMaskConfig['dropSpecialCharacters'] =\n this._config.dropSpecialCharacters;\n\n public hiddenInput: MatchaMaskConfig['hiddenInput'] = this._config.hiddenInput;\n\n public clearIfNotMatch: MatchaMaskConfig['clearIfNotMatch'] = this._config.clearIfNotMatch;\n\n public specialCharacters: MatchaMaskConfig['specialCharacters'] = this._config.specialCharacters;\n\n public patterns: MatchaMaskConfig['patterns'] = this._config.patterns;\n\n public prefix: MatchaMaskConfig['prefix'] = this._config.prefix || '';\n\n public suffix: MatchaMaskConfig['suffix'] = this._config.suffix || '';\n\n public thousandSeparator: MatchaMaskConfig['thousandSeparator'] = this._config.thousandSeparator || '';\n\n public decimalMarker: MatchaMaskConfig['decimalMarker'] = this._config.decimalMarker || '';\n\n public customPattern!: MatchaMaskConfig['patterns'];\n\n public showMaskTyped: MatchaMaskConfig['showMaskTyped'] = this._config.showMaskTyped;\n\n public placeHolderCharacter: MatchaMaskConfig['placeHolderCharacter'] =\n this._config.placeHolderCharacter;\n\n public validation: MatchaMaskConfig['validation'] = this._config.validation;\n\n public separatorLimit: MatchaMaskConfig['separatorLimit'] = this._config.separatorLimit;\n\n public allowNegativeNumbers: MatchaMaskConfig['allowNegativeNumbers'] =\n this._config.allowNegativeNumbers;\n\n public leadZeroDateTime: MatchaMaskConfig['leadZeroDateTime'] = this._config.leadZeroDateTime;\n\n public leadZero: MatchaMaskConfig['leadZero'] = this._config.leadZero;\n\n public apm: MatchaMaskConfig['apm'] = this._config.apm;\n\n public inputTransformFn: MatchaMaskConfig['inputTransformFn'] | null =\n this._config.inputTransformFn;\n\n public outputTransformFn: MatchaMaskConfig['outputTransformFn'] | null =\n this._config.outputTransformFn;\n\n public keepCharacterPositions: MatchaMaskConfig['keepCharacterPositions'] =\n this._config.keepCharacterPositions;\n\n public instantPrefix: MatchaMaskConfig['instantPrefix'] = this._config.instantPrefix;\n\n public triggerOnMaskChange: MatchaMaskConfig['triggerOnMaskChange'] =\n this._config.triggerOnMaskChange;\n\n public currencyMode: MatchaMaskConfig['currencyMode'] = this._config.currencyMode;\n\n private _shift = new Set<number>();\n\n public plusOnePosition = false;\n\n public maskExpression = '';\n\n public actualValue = '';\n\n public showKeepCharacterExp = '';\n\n public shownMaskExpression: MatchaMaskConfig['shownMaskExpression'] =\n this._config.shownMaskExpression;\n\n public deletedSpecialCharacter = false;\n\n public ipError?: boolean;\n\n public cpfCnpjError?: boolean;\n\n public applyMask(\n inputValue: string | object | boolean | null | undefined,\n maskExpression: string,\n position = 0,\n justPasted = false,\n backspaced = false,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): string {\n if (!maskExpression || typeof inputValue !== 'string') {\n return MaskExpression.EMPTY_STRING;\n }\n let cursor = 0;\n let result = '';\n let multi = false;\n let backspaceShift = false;\n let shift = 1;\n let stepBack = false;\n let processedValue = inputValue;\n let processedPosition = position;\n\n if (processedValue.slice(0, this.prefix.length) === this.prefix) {\n processedValue = processedValue.slice(this.prefix.length, processedValue.length);\n }\n if (!!this.suffix && processedValue.length > 0) {\n processedValue = this.checkAndRemoveSuffix(processedValue);\n }\n if (processedValue === '(' && this.prefix) {\n processedValue = '';\n }\n const inputArray: string[] = processedValue.toString().split(MaskExpression.EMPTY_STRING);\n if (\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS\n ) {\n result += processedValue.slice(cursor, cursor + 1);\n }\n if (maskExpression === MaskExpression.IP) {\n const valuesIP = processedValue.split(MaskExpression.DOT);\n this.ipError = this._validIP(valuesIP);\n\n // eslint-disable-next-line no-param-reassign\n maskExpression = '099.099.099.099';\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < processedValue.length; i++) {\n if (processedValue[i]?.match('\\\\d')) {\n arr.push(processedValue[i] ?? MaskExpression.EMPTY_STRING);\n }\n }\n if (maskExpression === MaskExpression.CPF_CNPJ) {\n this.cpfCnpjError = arr.length !== 11 && arr.length !== 14;\n if (arr.length > 11) {\n // eslint-disable-next-line no-param-reassign\n maskExpression = '00.000.000/0000-00';\n } else {\n // eslint-disable-next-line no-param-reassign\n maskExpression = '000.000.000-00';\n }\n }\n if (maskExpression.startsWith(MaskExpression.PERCENT)) {\n if (\n processedValue.match('[a-z]|[A-Z]') ||\n // eslint-disable-next-line no-useless-escape\n (processedValue.match(/[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,\\/.]/) && !backspaced)\n ) {\n processedValue = this._stripToDecimal(processedValue);\n const precision: number = this.getPrecision(maskExpression);\n\n processedValue = this.checkInputPrecision(\n processedValue,\n precision,\n this.decimalMarker\n );\n }\n const decimalMarker =\n typeof this.decimalMarker === 'string' ? this.decimalMarker : MaskExpression.DOT;\n if (\n processedValue.indexOf(decimalMarker) > 0 &&\n !this.percentage(processedValue.substring(0, processedValue.indexOf(decimalMarker)))\n ) {\n let base: string = processedValue.substring(\n 0,\n processedValue.indexOf(decimalMarker) - 1\n );\n if (\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS &&\n !backspaced\n ) {\n base = processedValue.substring(0, processedValue.indexOf(decimalMarker));\n }\n\n processedValue = `${base}${processedValue.substring(\n processedValue.indexOf(decimalMarker),\n processedValue.length\n )}`;\n }\n let value = '';\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS\n ? (value = `${MaskExpression.MINUS}${processedValue.slice(cursor + 1, cursor + processedValue.length)}`)\n : (value = processedValue);\n if (this.percentage(value)) {\n result = this._splitPercentZero(processedValue);\n } else {\n result = this._splitPercentZero(\n processedValue.substring(0, processedValue.length - 1)\n );\n }\n } else if (maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n if (\n processedValue.match('[wа-яА-Я]') ||\n processedValue.match('[ЁёА-я]') ||\n processedValue.match('[a-z]|[A-Z]') ||\n processedValue.match(/[-@#!$%\\\\^&*()_£¬'+|~=`{}\\]:\";<>.?/]/) ||\n processedValue.match('[^A-Za-z0-9,]')\n ) {\n processedValue = this._stripToDecimal(processedValue);\n }\n\n const precision: number = this.getPrecision(maskExpression);\n let decimalMarker = this.decimalMarker;\n\n if (Array.isArray(this.decimalMarker)) {\n if (\n this.actualValue.includes(this.decimalMarker[0]) ||\n this.actualValue.includes(this.decimalMarker[1])\n ) {\n decimalMarker = this.actualValue.includes(this.decimalMarker[0])\n ? this.decimalMarker[0]\n : this.decimalMarker[1];\n } else {\n decimalMarker = this.decimalMarker.find(\n (dm) => dm !== this.thousandSeparator\n ) as '.' | ',';\n }\n }\n\n // Modo moeda: dígitos entram pela direita (ex: 1 → 0,01, 12 → 0,12, 123 → 1,23)\n // IMPORTANTE: Detectar se devemos aplicar currencyMode\n // - NÃO aplicar se estamos em writeValue (valor vindo do backend/programático)\n // - Aplicar apenas durante digitação do usuário (onInput)\n const actualDecimalMarker = typeof decimalMarker === 'string' ? decimalMarker : ',';\n const hasDecimalMarker = processedValue.includes(actualDecimalMarker);\n\n let shouldApplyCurrencyMode = false;\n\n // NUNCA aplicar currencyMode quando writingValue = true (writeValue do backend)\n if (this.currencyMode && precision > 0 && !(this as any).writingValue) {\n if (!hasDecimalMarker) {\n // Sem vírgula: aplicar currencyMode (digitação começando)\n shouldApplyCurrencyMode = true;\n } else {\n // Com vírgula: verificar se é digitação em andamento ou valor do backend\n const parts = processedValue.split(actualDecimalMarker);\n const decimalPart = parts[1] || '';\n\n // Se a parte decimal tem mais dígitos que a precisão, é digitação em andamento\n // Se tem menos, veio do backend (ex: \"10,5\" com precisão 2)\n shouldApplyCurrencyMode = decimalPart.length > precision;\n }\n }\n\n if (shouldApplyCurrencyMode) {\n // Extrair apenas dígitos e sinal negativo\n const hasMinus = processedValue.startsWith(MaskExpression.MINUS) ||\n (this.allowNegativeNumbers && processedValue.includes(MaskExpression.MINUS));\n const digitsOnly = processedValue.replace(/[^\\d]/g, '');\n\n if (digitsOnly.length === 0) {\n result = MaskExpression.EMPTY_STRING;\n } else {\n // Remover zeros à esquerda desnecessários\n const cleanDigits = digitsOnly.replace(/^0+/, '') || '0';\n\n let formattedValue: string;\n if (cleanDigits.length <= precision) {\n // Menos ou igual dígitos que a precisão: 0,XX\n const paddedDecimal = cleanDigits.padStart(precision, '0');\n formattedValue = '0' + (decimalMarker as string) + paddedDecimal;\n } else {\n // Mais dígitos que a precisão: separar inteiro e decimal\n const integerPart = cleanDigits.slice(0, -precision);\n const decimalPart = cleanDigits.slice(-precision);\n\n // Aplicar separador de milhares na parte inteira\n let formattedInteger = integerPart;\n const rgx = /(\\d+)(\\d{3})/;\n while (this.thousandSeparator && rgx.test(formattedInteger)) {\n formattedInteger = formattedInteger.replace(rgx, '$1' + this.thousandSeparator + '$2');\n }\n\n formattedValue = formattedInteger + (decimalMarker as string) + decimalPart;\n }\n\n result = (hasMinus ? MaskExpression.MINUS : '') + formattedValue;\n }\n\n // Mover o cursor para o final\n cb(result.length, result.length);\n\n // Pular toda a lógica de formatação normal e ir direto para o retorno\n // O result já está formatado corretamente para exibição\n // O formControlResult (no service) vai processar e remover prefixo/sufixo\n let res = `${this.prefix}${result}${this.suffix}`;\n if (result.length === 0) {\n res = this.instantPrefix ? `${this.prefix}${result}` : `${result}`;\n }\n return res;\n }\n\n if (backspaced) {\n const { decimalMarkerIndex, nonZeroIndex } = this._findFirstNonZeroAndDecimalIndex(\n processedValue,\n decimalMarker as '.' | ','\n );\n const zeroIndexMinus = processedValue[0] === MaskExpression.MINUS;\n const zeroIndexNumberZero = processedValue[0] === MaskExpression.NUMBER_ZERO;\n const zeroIndexDecimalMarker = processedValue[0] === decimalMarker;\n const firstIndexDecimalMarker = processedValue[1] === decimalMarker;\n\n if (\n (zeroIndexDecimalMarker && !nonZeroIndex) ||\n (zeroIndexMinus && firstIndexDecimalMarker && !nonZeroIndex) ||\n (zeroIndexNumberZero && !decimalMarkerIndex && !nonZeroIndex)\n ) {\n processedValue = MaskExpression.NUMBER_ZERO;\n }\n\n if (\n decimalMarkerIndex &&\n nonZeroIndex &&\n zeroIndexMinus &&\n processedPosition === 1\n ) {\n if (decimalMarkerIndex < nonZeroIndex || decimalMarkerIndex > nonZeroIndex) {\n processedValue = MaskExpression.MINUS + processedValue.slice(nonZeroIndex);\n }\n }\n\n if (!decimalMarkerIndex && nonZeroIndex && processedValue.length > nonZeroIndex) {\n processedValue = zeroIndexMinus\n ? MaskExpression.MINUS + processedValue.slice(nonZeroIndex)\n : processedValue.slice(nonZeroIndex);\n }\n\n if (decimalMarkerIndex && nonZeroIndex && processedPosition === 0) {\n if (decimalMarkerIndex < nonZeroIndex) {\n processedValue = processedValue.slice(decimalMarkerIndex - 1);\n }\n if (decimalMarkerIndex > nonZeroIndex) {\n processedValue = processedValue.slice(nonZeroIndex);\n }\n }\n }\n\n if (precision === 0) {\n processedValue = this.allowNegativeNumbers\n ? processedValue.length > 2 &&\n processedValue[0] === MaskExpression.MINUS &&\n processedValue[1] === MaskExpression.NUMBER_ZERO &&\n processedValue[2] !== this.thousandSeparator &&\n processedValue[2] !== MaskExpression.COMMA &&\n processedValue[2] !== MaskExpression.DOT\n ? '-' + processedValue.slice(2, processedValue.length)\n : processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue.length > 1 &&\n processedValue[1] !== this.thousandSeparator &&\n processedValue[1] !== MaskExpression.COMMA &&\n processedValue[1] !== MaskExpression.DOT\n ? processedValue.slice(1, processedValue.length)\n : processedValue\n : processedValue.length > 1 &&\n processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue[1] !== this.thousandSeparator &&\n processedValue[1] !== MaskExpression.COMMA &&\n processedValue[1] !== MaskExpression.DOT\n ? processedValue.slice(1, processedValue.length)\n : processedValue;\n } else {\n if (\n processedValue[0] === decimalMarker &&\n processedValue.length > 1 &&\n !backspaced\n ) {\n processedValue =\n MaskExpression.NUMBER_ZERO +\n processedValue.slice(0, processedValue.length + 1);\n this.plusOnePosition = true;\n }\n if (\n processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue[1] !== decimalMarker &&\n processedValue[1] !== this.thousandSeparator &&\n !backspaced\n ) {\n processedValue =\n processedValue.length > 1\n ? processedValue.slice(0, 1) +\n decimalMarker +\n processedValue.slice(1, processedValue.length + 1)\n : processedValue;\n this.plusOnePosition = true;\n }\n if (\n this.allowNegativeNumbers &&\n !backspaced &&\n processedValue[0] === MaskExpression.MINUS &&\n (processedValue[1] === decimalMarker ||\n processedValue[1] === MaskExpression.NUMBER_ZERO)\n ) {\n processedValue =\n processedValue[1] === decimalMarker && processedValue.length > 2\n ? processedValue.slice(0, 1) +\n MaskExpression.NUMBER_ZERO +\n processedValue.slice(1, processedValue.length)\n : processedValue[1] === MaskExpression.NUMBER_ZERO &&\n processedValue.length > 2 &&\n processedValue[2] !== decimalMarker\n ? processedValue.slice(0, 2) +\n decimalMarker +\n processedValue.slice(2, processedValue.length)\n : processedValue;\n this.plusOnePosition = true;\n }\n }\n\n // TODO: we had different rexexps here for the different cases... but tests dont seam to bother - check this\n // separator: no COMMA, dot-sep: no SPACE, COMMA OK, comma-sep: no SPACE, COMMA OK\n\n const thousandSeparatorCharEscaped: string = this._charToRegExpExpression(\n this.thousandSeparator\n );\n let invalidChars: string = '@#!$%^&*()_+|~=`{}\\\\[\\\\]:\\\\s,\\\\.\";<>?\\\\/'.replace(\n thousandSeparatorCharEscaped,\n ''\n );\n //.replace(decimalMarkerEscaped, '');\n if (Array.isArray(this.decimalMarker)) {\n for (const marker of this.decimalMarker) {\n invalidChars = invalidChars.replace(\n this._charToRegExpExpression(marker),\n MaskExpression.EMPTY_STRING\n );\n }\n } else {\n invalidChars = invalidChars.replace(\n this._charToRegExpExpression(this.decimalMarker),\n ''\n );\n }\n\n const invalidCharRegexp = new RegExp('[' + invalidChars + ']');\n if (processedValue.match(invalidCharRegexp)) {\n processedValue = processedValue.substring(0, processedValue.length - 1);\n }\n\n processedValue = this.checkInputPrecision(\n processedValue,\n precision,\n this.decimalMarker\n );\n const strForSep: string = processedValue.replace(\n new RegExp(thousandSeparatorCharEscaped, 'g'),\n ''\n );\n\n result = this._formatWithSeparators(\n strForSep,\n this.thousandSeparator,\n this.decimalMarker,\n precision\n );\n\n const commaShift: number =\n result.indexOf(MaskExpression.COMMA) - processedValue.indexOf(MaskExpression.COMMA);\n const shiftStep: number = result.length - processedValue.length;\n const backspacedDecimalMarkerWithSeparatorLimit =\n backspaced && result.length < inputValue.length && this.separatorLimit;\n\n if (\n (result[processedPosition - 1] === this.thousandSeparator ||\n result[processedPosition - this.prefix.length]) &&\n this.prefix &&\n backspaced\n ) {\n processedPosition = processedPosition - 1;\n } else if (\n (shiftStep > 0 && result[processedPosition] !== this.thousandSeparator) ||\n backspacedDecimalMarkerWithSeparatorLimit\n ) {\n backspaceShift = true;\n let _shift = 0;\n do {\n this._shift.add(processedPosition + _shift);\n _shift++;\n } while (_shift < shiftStep);\n } else if (\n result[processedPosition - 1] === this.thousandSeparator ||\n shiftStep === -4 ||\n shiftStep === -3 ||\n result[processedPosition] === this.thousandSeparator\n ) {\n this._shift.clear();\n this._shift.add(processedPosition - 1);\n } else if (\n (commaShift !== 0 &&\n processedPosition > 0 &&\n !(\n result.indexOf(MaskExpression.COMMA) >= processedPosition &&\n processedPosition > 3\n )) ||\n (!(\n result.indexOf(MaskExpression.DOT) >= processedPosition && processedPosition > 3\n ) &&\n shiftStep <= 0)\n ) {\n this._shift.clear();\n backspaceShift = true;\n shift = shiftStep;\n\n processedPosition += shiftStep;\n this._shift.add(processedPosition);\n } else {\n this._shift.clear();\n }\n } else {\n for (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let i = 0, inputSymbol: string = inputArray[0]!;\n i < inputArray.length;\n i++, inputSymbol = inputArray[i] ?? MaskExpression.EMPTY_STRING\n ) {\n if (cursor === maskExpression.length) {\n break;\n }\n\n const symbolStarInPattern: boolean = MaskExpression.SYMBOL_STAR in this.patterns;\n if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) &&\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION\n ) {\n result += inputSymbol;\n cursor += 2;\n } else if (\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n multi &&\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n result += inputSymbol;\n cursor += 3;\n multi = false;\n } else if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) &&\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n !symbolStarInPattern\n ) {\n result += inputSymbol;\n multi = true;\n } else if (\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION &&\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n result += inputSymbol;\n cursor += 3;\n } else if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n if (maskExpression[cursor] === MaskExpression.HOURS) {\n if (this.apm ? Number(inputSymbol) > 9 : Number(inputSymbol) > 2) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n if (maskExpression[cursor] === MaskExpression.HOUR) {\n if (\n this.apm\n ? (result.length === 1 && Number(result) > 1) ||\n (result === '1' && Number(inputSymbol) > 2) ||\n (processedValue.slice(cursor - 1, cursor).length === 1 &&\n Number(processedValue.slice(cursor - 1, cursor)) > 2) ||\n (processedValue.slice(cursor - 1, cursor) === '1' &&\n Number(inputSymbol) > 2)\n : (result === '2' && Number(inputSymbol) > 3) ||\n ((result.slice(cursor - 2, cursor) === '2' ||\n result.slice(cursor - 3, cursor) === '2' ||\n result.slice(cursor - 4, cursor) === '2' ||\n result.slice(cursor - 1, cursor) === '2') &&\n Number(inputSymbol) > 3 &&\n cursor > 10)\n ) {\n processedPosition = processedPosition + 1;\n cursor += 1;\n i--;\n continue;\n }\n }\n if (\n maskExpression[cursor] === MaskExpression.MINUTE ||\n maskExpression[cursor] === MaskExpression.SECOND\n ) {\n if (Number(inputSymbol) > 5) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n const daysCount = 31;\n const inputValueCursor = processedValue[cursor] as string;\n const inputValueCursorPlusOne = processedValue[cursor + 1] as string;\n const inputValueCursorPlusTwo = processedValue[cursor + 2] as string;\n const inputValueCursorMinusOne = processedValue[cursor - 1] as string;\n const inputValueCursorMinusTwo = processedValue[cursor - 2] as string;\n const inputValueSliceMinusThreeMinusOne = processedValue.slice(\n cursor - 3,\n cursor - 1\n );\n const inputValueSliceMinusOnePlusOne = processedValue.slice(\n cursor - 1,\n cursor + 1\n );\n const inputValueSliceCursorPlusTwo = processedValue.slice(cursor, cursor + 2);\n const inputValueSliceMinusTwoCursor = processedValue.slice(cursor - 2, cursor);\n if (maskExpression[cursor] === MaskExpression.DAY) {\n const maskStartWithMonth =\n maskExpression.slice(0, 2) === MaskExpression.MONTHS;\n const startWithMonthInput: boolean =\n maskExpression.slice(0, 2) === MaskExpression.MONTHS &&\n this.specialCharacters.includes(inputValueCursorMinusTwo);\n if (\n (Number(inputSymbol) > 3 && this.leadZeroDateTime) ||\n (!maskStartWithMonth &&\n (Number(inputValueSliceCursorPlusTwo) > daysCount ||\n Number(inputValueSliceMinusOnePlusOne) > daysCount ||\n this.specialCharacters.includes(inputValueCursorPlusOne))) ||\n (startWithMonthInput\n ? Number(inputValueSliceMinusOnePlusOne) > daysCount ||\n (!this.specialCharacters.includes(inputValueCursor) &&\n this.specialCharacters.includes(inputValueCursorPlusTwo)) ||\n this.specialCharacters.includes(inputValueCursor)\n : Number(inputValueSliceCursorPlusTwo) > daysCount ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n !backspaced))\n ) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n if (maskExpression[cursor] === MaskExpression.MONTH) {\n const monthsCount = 12;\n // mask without day\n const withoutDays: boolean =\n cursor === 0 &&\n (Number(inputSymbol) > 2 ||\n Number(inputValueSliceCursorPlusTwo) > monthsCount ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n !backspaced));\n // day<10 && month<12 for input\n const specialChart = maskExpression.slice(cursor + 2, cursor + 3);\n const day1monthInput: boolean =\n inputValueSliceMinusThreeMinusOne.includes(specialChart) &&\n maskExpression.includes('d0') &&\n ((this.specialCharacters.includes(inputValueCursorMinusTwo) &&\n Number(inputValueSliceMinusOnePlusOne) > monthsCount &&\n !this.specialCharacters.includes(inputValueCursor)) ||\n this.specialCharacters.includes(inputValueCursor));\n // month<12 && day<10 for input\n const day2monthInput: boolean =\n Number(inputValueSliceMinusThreeMinusOne) <= daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n this.specialCharacters.includes(inputValueCursorMinusOne) &&\n (Number(inputValueSliceCursorPlusTwo) > monthsCount ||\n this.specialCharacters.includes(inputValueCursorPlusOne));\n // cursor === 5 && without days\n const day2monthInputDot: boolean =\n (Number(inputValueSliceCursorPlusTwo) > monthsCount && cursor === 5) ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n cursor === 5);\n // // day<10 && month<12 for paste whole data\n const day1monthPaste: boolean =\n Number(inputValueSliceMinusThreeMinusOne) > daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n !this.specialCharacters.includes(\n inputValueSliceMinusTwoCursor as string\n ) &&\n Number(inputValueSliceMinusTwoCursor) > monthsCount &&\n maskExpression.includes('d0');\n // 10<day<31 && month<12 for paste whole data\n const day2monthPaste: boolean =\n Number(inputValueSliceMinusThreeMinusOne) <= daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n !this.specialCharacters.includes(inputValueCursorMinusOne) &&\n Number(inputValueSliceMinusOnePlusOne) > monthsCount;\n if (\n (Number(inputSymbol) > 1 && this.leadZeroDateTime) ||\n withoutDays ||\n day1monthInput ||\n day2monthPaste ||\n day1monthPaste ||\n day2monthInput ||\n (day2monthInputDot && !this.leadZeroDateTime)\n ) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n result += inputSymbol;\n cursor++;\n } else if (\n this.specialCharacters.includes(inputSymbol) &&\n maskExpression[cursor] === inputSymbol\n ) {\n result += inputSymbol;\n cursor++;\n } else if (\n this.specialCharacters.indexOf(\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) !== -1\n ) {\n result += maskExpression[cursor];\n cursor++;\n this._shiftStep(cursor);\n i--;\n } else if (\n maskExpression[cursor] === MaskExpression.NUMBER_NINE &&\n this.showMaskTyped\n ) {\n this._shiftStep(cursor);\n } else if (\n this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING] &&\n this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING]?.optional\n ) {\n if (\n !!inputArray[cursor] &&\n maskExpression !== '099.099.099.099' &&\n maskExpression !== '000.000.000-00' &&\n maskExpression !== '00.000.000/0000-00' &&\n !maskExpression.match(/^9+\\.0+$/) &&\n !this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING]\n ?.optional\n ) {\n result += inputArray[cursor];\n }\n if (\n maskExpression.includes(\n MaskExpression.NUMBER_NINE + MaskExpression.SYMBOL_STAR\n ) &&\n maskExpression.includes(\n MaskExpression.NUMBER_ZERO + MaskExpression.SYMBOL_STAR\n )\n ) {\n cursor++;\n }\n\n cursor++;\n i--;\n } else if (\n this.maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n this._findSpecialChar(\n this.maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n ) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (\n this.maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION &&\n this._findSpecialChar(\n this.maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n ) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (\n this.showMaskTyped &&\n this.specialCharacters.indexOf(inputSymbol) < 0 &&\n inputSymbol !== this.placeHolderCharacter &&\n this.placeHolderCharacter.length === 1\n ) {\n stepBack = true;\n }\n }\n }\n if (\n result[processedPosition - 1] &&\n result.length + 1 === maskExpression.length &&\n this.specialCharacters.indexOf(\n maskExpression[maskExpression.length - 1] ?? MaskExpression.EMPTY_STRING\n ) !== -1\n ) {\n result += maskExpression[maskExpression.length - 1];\n }\n let newPosition: number = processedPosition + 1;\n\n while (this._shift.has(newPosition)) {\n shift++;\n newPosition++;\n }\n\n let actualShift: number =\n justPasted && !maskExpression.startsWith(MaskExpression.SEPARATOR)\n ? cursor\n : this._shift.has(processedPosition)\n ? shift\n : 0;\n if (stepBack) {\n actualShift--;\n }\n\n cb(actualShift, backspaceShift);\n if (shift < 0) {\n this._shift.clear();\n }\n let onlySpecial = false;\n if (backspaced) {\n onlySpecial = inputArray.every((char) => this.specialCharacters.includes(char));\n }\n\n let res = `${this.prefix}${onlySpecial ? MaskExpression.EMPTY_STRING : result}${\n this.showMaskTyped ? '' : this.suffix\n }`;\n\n if (result.length === 0) {\n res = this.instantPrefix ? `${this.prefix}${result}` : `${result}`;\n }\n\n const isSpecialCharacterMaskFirstSymbol =\n processedValue.length === 1 &&\n this.specialCharacters.includes(maskExpression[0] as string) &&\n processedValue !== maskExpression[0];\n\n if (\n !this._checkSymbolMask(processedValue, maskExpression[1] as string) &&\n isSpecialCharacterMaskFirstSymbol\n ) {\n return '';\n }\n\n if (result.includes(MaskExpression.MINUS) && this.prefix && this.allowNegativeNumbers) {\n if (backspaced && result === MaskExpression.MINUS) {\n return '';\n }\n res = `${MaskExpression.MINUS}${this.prefix}${result\n .split(MaskExpression.MINUS)\n .join(MaskExpression.EMPTY_STRING)}${this.suffix}`;\n }\n return res;\n }\n\n public _findDropSpecialChar(inputSymbol: string): undefined | string {\n if (Array.isArray(this.dropSpecialCharacters)) {\n return this.dropSpecialCharacters.find((val: string) => val === inputSymbol);\n }\n return this._findSpecialChar(inputSymbol);\n }\n\n public _findSpecialChar(inputSymbol: string): undefined | string {\n return this.specialCharacters.find((val: string) => val === inputSymbol);\n }\n\n public _checkSymbolMask(inputSymbol: string, maskSymbol: string): boolean {\n this.patterns = this.customPattern ? this.customPattern : this.patterns;\n return (\n (this.patterns?.[maskSymbol]?.pattern &&\n this.patterns?.[maskSymbol]?.pattern.test(inputSymbol)) ??\n false\n );\n }\n\n private _formatWithSeparators = (\n str: string,\n thousandSeparatorChar: string,\n decimalChars: string | string[],\n precision: number\n ) => {\n let x: string[] = [];\n let decimalChar = '';\n\n if (Array.isArray(decimalChars)) {\n const regExp = new RegExp(\n decimalChars.map((v) => ('[\\\\^$.|?*+()'.indexOf(v) >= 0 ? `\\\\${v}` : v)).join('|')\n );\n x = str.split(regExp);\n decimalChar = str.match(regExp)?.[0] ?? MaskExpression.EMPTY_STRING;\n } else {\n x = str.split(decimalChars);\n decimalChar = decimalChars;\n }\n const decimals: string =\n x.length > 1 ? `${decimalChar}${x[1]}` : MaskExpression.EMPTY_STRING;\n let res: string = x[0] ?? MaskExpression.EMPTY_STRING;\n const separatorLimit: string = this.separatorLimit.replace(\n /\\s/g,\n MaskExpression.EMPTY_STRING\n );\n if (separatorLimit && +separatorLimit) {\n if (res[0] === MaskExpression.MINUS) {\n res = `-${res.slice(1, res.length).slice(0, separatorLimit.length)}`;\n } else {\n res = res.slice(0, separatorLimit.length);\n }\n }\n const rgx = /(\\d+)(\\d{3})/;\n\n while (thousandSeparatorChar && rgx.test(res)) {\n res = res.replace(rgx, '$1' + thousandSeparatorChar + '$2');\n }\n\n if (typeof precision === 'undefined') {\n return res + decimals;\n } else if (precision === 0) {\n return res;\n }\n return res + decimals.substring(0, precision + 1);\n };\n\n private percentage = (str: string): boolean => {\n const sanitizedStr = str.replace(',', '.');\n const value = Number(\n this.allowNegativeNumbers && str.includes(MaskExpression.MINUS)\n ? sanitizedStr.slice(1, str.length)\n : sanitizedStr\n );\n\n return !isNaN(value) && value >= 0 && value <= 100;\n };\n\n public getPrecision = (maskExpression: string): number => {\n const x: string[] = maskExpression.split(MaskExpression.DOT);\n if (x.length > 1) {\n return Number(x[x.length - 1]);\n }\n\n return Infinity;\n };\n\n private checkAndRemoveSuffix = (inputValue: string): string => {\n for (let i = this.suffix?.length - 1; i >= 0; i--) {\n const substr = this.suffix.substring(i, this.suffix?.length);\n if (\n inputValue.includes(substr) &&\n i !== this.suffix?.length - 1 &&\n (i - 1 < 0 ||\n !inputValue.includes(this.suffix.substring(i - 1, this.suffix?.length)))\n ) {\n return inputValue.replace(substr, MaskExpression.EMPTY_STRING);\n }\n }\n return inputValue;\n };\n\n private checkInputPrecision = (\n inputValue: string,\n precision: number,\n decimalMarker: MatchaMaskConfig['decimalMarker']\n ): string => {\n let processedInputValue = inputValue;\n let processedDecimalMarker = decimalMarker;\n\n if (precision < Infinity) {\n // TODO need think about decimalMarker\n if (Array.isArray(processedDecimalMarker)) {\n const marker = processedDecimalMarker.find((dm) => dm !== this.thousandSeparator);\n\n processedDecimalMarker = marker ? marker : processedDecimalMarker[0];\n }\n const precisionRegEx = new RegExp(\n this._charToRegExpExpression(processedDecimalMarker) + `\\\\d{${precision}}.*$`\n );\n const precisionMatch: RegExpMatchArray | null =\n processedInputValue.match(precisionRegEx);\n const precisionMatchLength: number = (precisionMatch && precisionMatch[0]?.length) ?? 0;\n if (precisionMatchLength - 1 > precision) {\n const diff = precisionMatchLength - 1 - precision;\n\n processedInputValue = processedInputValue.substring(\n 0,\n processedInputValue.length - diff\n );\n }\n if (\n precision === 0 &&\n this._compareOrIncludes(\n processedInputValue[processedInputValue.length - 1],\n processedDecimalMarker,\n this.thousandSeparator\n )\n ) {\n processedInputValue = processedInputValue.substring(\n 0,\n processedInputValue.length - 1\n );\n }\n }\n return processedInputValue;\n };\n\n private _stripToDecimal(str: string): string {\n return str\n .split(MaskExpression.EMPTY_STRING)\n .filter((i: string, idx: number) => {\n const isDecimalMarker =\n typeof this.decimalMarker === 'string'\n ? i === this.decimalMarker\n : // TODO (inepipenko) use utility type\n this.decimalMarker.includes(\n i as MaskExpression.COMMA | MaskExpression.DOT\n );\n return (\n i.match('^-?\\\\d') ||\n i === this.thousandSeparator ||\n isDecimalMarker ||\n (i === MaskExpression.MINUS && idx === 0 && this.allowNegativeNumbers)\n );\n })\n .join(MaskExpression.EMPTY_STRING);\n }\n\n private _charToRegExpExpression(char: string): string {\n // if (Array.isArray(char)) {\n // \treturn char.map((v) => ('[\\\\^$.|?*+()'.indexOf(v) >= 0 ? `\\\\${v}` : v)).join('|');\n // }\n if (char) {\n const charsToEscape = '[\\\\^$.|?*+()';\n return char === ' ' ? '\\\\s' : charsToEscape.indexOf(char) >= 0 ? `\\\\${char}` : char;\n }\n return char;\n }\n\n private _shiftStep(cursor: number) {\n this._shift.add(cursor + this.prefix.length || 0);\n }\n\n protected _compareOrIncludes<T>(value: T, comparedValue: T | T[], excludedValue: T): boolean {\n return Array.isArray(comparedValue)\n ? comparedValue.filter((v) => v !== excludedValue).includes(value)\n : value === comparedValue;\n }\n\n private _validIP(valuesIP: string[]): boolean {\n return !(\n valuesIP.length === 4 &&\n !valuesIP.some((value: string, index: number) => {\n if (valuesIP.length !== index + 1) {\n return value === MaskExpression.EMPTY_STRING || Number(value) > 255;\n }\n return value === MaskExpression.EMPTY_STRING || Number(value.substring(0, 3)) > 255;\n })\n );\n }\n\n private _splitPercentZero(value: string): string {\n if (value === MaskExpression.MINUS && this.allowNegativeNumbers) {\n return value;\n }\n const decimalIndex =\n typeof this.decimalMarker === 'string'\n ? value.indexOf(this.decimalMarker)\n : value.indexOf(MaskExpression.DOT);\n const emptyOrMinus =\n this.allowNegativeNumbers && value.includes(MaskExpression.MINUS) ? '-' : '';\n if (decimalIndex === -1) {\n const parsedValue = parseInt(emptyOrMinus ? value.slice(1, value.length) : value, 10);\n return isNaN(parsedValue)\n ? MaskExpression.EMPTY_STRING\n : `${emptyOrMinus}${parsedValue}`;\n } else {\n const integerPart = parseInt(value.replace('-', '').substring(0, decimalIndex), 10);\n const decimalPart = value.substring(decimalIndex + 1);\n const integerString = isNaN(integerPart) ? '' : integerPart.toString();\n\n const decimal =\n typeof this.decimalMarker === 'string' ? this.decimalMarker : MaskExpression.DOT;\n\n return integerString === MaskExpression.EMPTY_STRING\n ? MaskExpression.EMPTY_STRING\n : `${emptyOrMinus}${integerString}${decimal}${decimalPart}`;\n }\n }\n\n private _findFirstNonZeroAndDecimalIndex(inputString: string, decimalMarker: '.' | ',') {\n let decimalMarkerIndex: number | null = null;\n let nonZeroIndex: number | null = null;\n\n for (let i = 0; i < inputString.length; i++) {\n const char = inputString[i];\n\n if (char === decimalMarker && decimalMarkerIndex === null) {\n decimalMarkerIndex = i;\n }\n\n if (char && char >= '1' && char <= '9' && nonZeroIndex === null) {\n nonZeroIndex = i;\n }\n\n if (decimalMarkerIndex !== null && nonZeroIndex !== null) {\n break;\n }\n }\n\n return {\n decimalMarkerIndex,\n nonZeroIndex,\n };\n }\n}\n","import { ElementRef, inject, Injectable, Renderer2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n\nimport type { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MatchaMaskApplierService } from './matcha-mask-applier.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n// console.log('🎯 MATCHA-MASK VERSION: v107 - FIX DECIMAL DISPLAY & BACKSPACE LOOP - ' + new Date().toISOString());\n\n@Injectable()\nexport class MatchaMaskService extends MatchaMaskApplierService {\n public isNumberValue = false;\n public maskIsShown = '';\n public selStart: number | null = null;\n public selEnd: number | null = null;\n public maskChanged = false;\n public maskExpressionArray: string[] = [];\n public previousValue = '';\n public currentValue = '';\n /**\n * Whether we are currently in writeValue function, in this case when applying the mask we don't want to trigger onChange function,\n * since writeValue should be a one way only process of writing the DOM value based on the Angular model value.\n */\n public writingValue = false;\n\n private _emitValue = false;\n private _start!: number;\n private _end!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (_: any) => {};\n\n public readonly _elementRef = inject(ElementRef, { optional: true });\n\n private readonly document = inject(DOCUMENT);\n\n protected override _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n private readonly _renderer = inject(Renderer2, { optional: true });\n\n /**\n * Applies the mask to the input value.\n * @param inputValue The input value to be masked.\n * @param maskExpression The mask expression to apply.\n * @param position The position in the input value.\n * @param justPasted Whether the value was just pasted.\n * @param backspaced Whether the value was backspaced.\n * @param cb Callback function.\n * @returns The masked value.\n */\n public override applyMask(\n inputValue: string | object | boolean | null | undefined,\n maskExpression: string,\n position = 0,\n justPasted = false,\n backspaced = false,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): string {\n // Armazenar maskExpression como propriedade da classe para uso posterior\n this.maskExpression = maskExpression;\n\n // Converter automaticamente número, boolean ou object para string (retrocompatível)\n // Isso previne o erro \"indexOf is not a function\" quando números são passados\n let processedInputValue: string;\n if (inputValue === null || inputValue === undefined) {\n processedInputValue = '';\n } else if (typeof inputValue === 'number') {\n processedInputValue = String(inputValue);\n } else if (typeof inputValue === 'boolean') {\n processedInputValue = inputValue ? 'true' : 'false';\n } else if (typeof inputValue === 'object') {\n // Para objetos, tentar converter para string (JSON.stringify ou toString)\n try {\n processedInputValue = JSON.stringify(inputValue);\n } catch {\n processedInputValue = String(inputValue);\n }\n } else {\n processedInputValue = String(inputValue);\n }\n\n // If no mask expression, return the input value or the actual value\n if (!maskExpression) {\n return processedInputValue !== this.actualValue ? this.actualValue : processedInputValue;\n }\n\n // Show mask in input if required\n this.maskIsShown = this.showMaskTyped\n ? this.showMaskInInput()\n : MaskExpression.EMPTY_STRING;\n\n // Handle specific mask expressions\n if (this.maskExpression === MaskExpression.IP && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(processedInputValue || MaskExpression.HASH);\n }\n if (this.maskExpression === MaskExpression.CPF_CNPJ && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(processedInputValue || MaskExpression.HASH);\n }\n\n // Handle empty input value with mask typed\n if (!processedInputValue && this.showMaskTyped) {\n this.formControlResult(this.prefix);\n return `${this.prefix}${this.maskIsShown}${this.suffix}`;\n }\n\n const getSymbol: string =\n !!processedInputValue && typeof this.selStart === 'number'\n ? (processedInputValue[this.selStart] ?? MaskExpression.EMPTY_STRING)\n : MaskExpression.EMPTY_STRING;\n let newInputValue = '';\n let newPosition = position;\n\n // Handle hidden input or input with asterisk symbol\n if (\n (this.hiddenInput ||\n (processedInputValue && processedInputValue.indexOf(MaskExpression.SYMBOL_STAR) >= 0)) &&\n !this.writingValue\n ) {\n let actualResult: string[] =\n processedInputValue && processedInputValue.length === 1\n ? processedInputValue.split(MaskExpression.EMPTY_STRING)\n : this.actualValue.split(MaskExpression.EMPTY_STRING);\n\n // Handle backspace\n if (backspaced) {\n actualResult = actualResult\n .slice(0, position)\n .concat(actualResult.slice(position + 1));\n }\n\n // Remove mask if showMaskTyped is true\n if (this.showMaskTyped) {\n // eslint-disable-next-line no-param-reassign\n processedInputValue = this.removeMask(processedInputValue);\n actualResult = this.removeMask(actualResult.join('')).split(\n MaskExpression.EMPTY_STRING\n );\n }\n\n // Handle selection start and end\n if (typeof this.selStart === 'object' && typeof this.selEnd === 'object') {\n this.selStart = Number(this.selStart);\n this.selEnd = Number(this.selEnd);\n } else {\n if (processedInputValue !== MaskExpression.EMPTY_STRING && actualResult.length) {\n if (typeof this.selStart === 'number' && typeof this.selEnd === 'number') {\n if (processedInputValue.length > actualResult.length) {\n actualResult.splice(this.selStart, 0, getSymbol);\n } else if (processedInputValue.length < actualResult.length) {\n if (actualResult.length - processedInputValue.length === 1) {\n if (backspaced) {\n actualResult.splice(this.selStart - 1, 1);\n } else {\n actualResult.splice(processedInputValue.length - 1, 1);\n }\n } else {\n actualResult.splice(this.selStart, this.selEnd - this.selStart);\n }\n }\n }\n } else {\n actualResult = [];\n }\n }\n\n // Remove mask if showMaskTyped is true and hiddenInput is false\n if (this.showMaskTyped && !this.hiddenInput) {\n newInputValue = this.removeMask(processedInputValue);\n }\n\n // Handle actual value length\n if (this.actualValue.length) {\n if (actualResult.length < processedInputValue.length) {\n newInputValue = this.shiftTypedSymbols(\n actualResult.join(MaskExpression.EMPTY_STRING)\n );\n } else if (actualResult.length === processedInputValue.length) {\n newInputValue = actualResult.join(MaskExpression.EMPTY_STRING);\n } else {\n newInputValue = processedInputValue;\n }\n } else {\n newInputValue = processedInputValue;\n }\n }\n\n // Handle just pasted input\n if (justPasted && (this.hiddenInput || !this.hiddenInput)) {\n newInputValue = processedInputValue;\n }\n\n // Handle backspace with special characters\n if (\n backspaced &&\n this.specialCharacters.indexOf(\n this.maskExpression[newPosition] ?? MaskExpression.EMPTY_STRING\n ) !== -1 &&\n this.showMaskTyped &&\n !this.prefix\n ) {\n newInputValue = this.currentValue;\n }\n\n // Handle deleted special character\n if (this.deletedSpecialCharacter && newPosition) {\n if (\n this.specialCharacters.includes(\n this.actualValue.slice(newPosition, newPosition + 1)\n )\n ) {\n newPosition = newPosition + 1;\n } else if (\n maskExpression.slice(newPosition - 1, newPosition + 1) !== MaskExpression.MONTHS\n ) {\n newPosition = newPosition - 2;\n }\n\n this.deletedSpecialCharacter = false;\n }\n\n // Remove mask if showMaskTyped is true and placeHolderCharacter length is 1\n if (\n this.showMaskTyped &&\n this.placeHolderCharacter.length === 1 &&\n !this.leadZeroDateTime\n ) {\n newInputValue = this.removeMask(newInputValue);\n }\n\n // Handle mask changed\n if (this.maskChanged) {\n newInputValue = processedInputValue;\n } else {\n newInputValue =\n Boolean(newInputValue) && newInputValue.length ? newInputValue : processedInputValue;\n }\n\n // Handle showMaskTyped and keepCharacterPositions\n if (\n this.showMaskTyped &&\n this.keepCharacterPositions &&\n this.actualValue &&\n !justPasted &&\n !this.writingValue\n ) {\n const value = this.dropSpecialCharacters\n ? this.removeMask(this.actualValue)\n : this.actualValue;\n this.formControlResult(value);\n return this.actualValue\n ? this.actualValue\n : `${this.prefix}${this.maskIsShown}${this.suffix}`;\n }\n\n // Apply the mask using the parent class method\n const result: string = super.applyMask(\n newInputValue,\n maskExpression,\n newPosition,\n justPasted,\n backspaced,\n cb\n );\n\n this.actualValue = this.getActualValue(result);\n\n // handle some separator implications:\n // a.) adjust decimalMarker default (. -> ,) if thousandSeparator is a dot\n if (\n this.thousandSeparator === MaskExpression.DOT &&\n this.decimalMarker === MaskExpression.DOT\n ) {\n this.decimalMarker = MaskExpression.COMMA;\n }\n // b) remove ONLY decimal marker from list of special characters to mask\n // The thousandSeparator should REMAIN in the list to be removed from the final value\n if (\n this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n this.dropSpecialCharacters === true\n ) {\n this.specialCharacters = this.specialCharacters.filter(\n (item: string) =>\n !this._compareOrIncludes(item, this.decimalMarker, null) // Only remove decimalMarker, keep thousandSeparator\n );\n }\n // c) set isNumberValue to true for separator masks to ensure proper number conversion\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n this.isNumberValue = true;\n }\n\n // Update previous and current values\n if (result || result === '') {\n this.previousValue = this.currentValue;\n this.currentValue = result;\n\n this._emitValue =\n this.previousValue !== this.currentValue ||\n (newInputValue !== this.currentValue && this.writingValue) ||\n (this.previousValue === this.currentValue && justPasted);\n }\n\n // Propagate the input value back to the Angular model\n // eslint-disable-next-line no-unused-expressions,@typescript-eslint/no-unused-expressions\n this._emitValue ? this.formControlResult(result) : '';\n\n // Handle hidden input and showMaskTyped\n if (!this.showMaskTyped || (this.showMaskTyped && this.hiddenInput)) {\n if (this.hiddenInput) {\n return `${this.hideInput(result, this.maskExpression)}${this.maskIsShown.slice(result.length)}`;\n }\n return result;\n }\n\n const resLen: number = result.length;\n const prefNmask = `${this.prefix}${this.maskIsShown}${this.suffix}`;\n\n // Handle specific mask expressions\n if (this.maskExpression.includes(MaskExpression.HOURS)) {\n const countSkipedSymbol = this._numberSkipedSymbols(result);\n return `${result}${prefNmask.slice(resLen + countSkipedSymbol)}`;\n } else if (\n this.maskExpression === MaskExpression.IP ||\n this.maskExpression === MaskExpression.CPF_CNPJ\n ) {\n return `${result}${prefNmask}`;\n }\n\n return `${result}${prefNmask.slice(resLen)}`;\n }\n\n // get the number of characters that were shifted\n private _numberSkipedSymbols(value: string): number {\n const regex = /(^|\\D)(\\d\\D)/g;\n let match = regex.exec(value);\n let countSkipedSymbol = 0;\n while (match != null) {\n countSkipedSymbol += 1;\n match = regex.exec(value);\n }\n return countSkipedSymbol;\n }\n\n public applyValueChanges(\n position: number,\n justPasted: boolean,\n backspaced: boolean,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): void {\n const formElement = this._elementRef?.nativeElement;\n if (!formElement) {\n return;\n }\n\n formElement.value = this.applyMask(\n formElement.value,\n this.maskExpression,\n position,\n justPasted,\n backspaced,\n cb\n );\n if (formElement === this._getActiveElement()) {\n return;\n }\n this.clearIfNotMatchFn();\n }\n\n public hideInput(inputValue: string, maskExpression: string): string {\n return inputValue\n .split(MaskExpression.EMPTY_STRING)\n .map((curr: string, index: number) => {\n if (\n this.patterns &&\n this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING] &&\n this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING]?.symbol\n ) {\n return this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING]\n ?.symbol;\n }\n return curr;\n })\n .join(MaskExpression.EMPTY_STRING);\n }\n\n // this function is not necessary, it checks result against maskExpression\n public getActualValue(res: string): string {\n const compare: string[] = res\n .split(MaskExpression.EMPTY_STRING)\n .filter((symbol: string, i: number) => {\n const maskChar = this.maskExpression[i] ?? MaskExpression.EMPTY_STRING;\n return (\n this._checkSymbolMask(symbol, maskChar) ||\n (this.specialCharacters.includes(maskChar) && symbol === maskChar)\n );\n });\n if (compare.join(MaskExpression.EMPTY_STRING) === res) {\n return compare.join(MaskExpression.EMPTY_STRING);\n }\n return res;\n }\n\n public shiftTypedSymbols(inputValue: string): string {\n let symbolToReplace = '';\n const newInputValue: (string | undefined)[] =\n (inputValue &&\n inputValue\n .split(MaskExpression.EMPTY_STRING)\n .map((currSymbol: string, index: number) => {\n if (\n this.specialCharacters.includes(\n inputValue[index + 1] ?? MaskExpression.EMPTY_STRING\n ) &&\n inputValue[index + 1] !== this.maskExpression[index + 1]\n ) {\n symbolToReplace = currSymbol;\n return inputValue[index + 1];\n }\n if (symbolToReplace.length) {\n const replaceSymbol: string = symbolToReplace;\n symbolToReplace = MaskExpression.EMPTY_STRING;\n return replaceSymbol;\n }\n return currSymbol;\n })) ||\n [];\n return newInputValue.join(MaskExpression.EMPTY_STRING);\n }\n\n /**\n * Convert number value to string\n * 3.1415 -> '3.1415'\n * 1e-7 -> '0.0000001'\n */\n public numberToString(value: number | string): string {\n if (\n (!value && value !== 0) ||\n (this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n (this.leadZero || !this.dropSpecialCharacters)) ||\n (this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n this.separatorLimit.length > 14 &&\n String(value).length > 14)\n ) {\n return String(value);\n }\n return Number(value)\n .toLocaleString('fullwide', {\n useGrouping: false,\n maximumFractionDigits: 20,\n })\n .replace(`/${MaskExpression.MINUS}/`, MaskExpression.MINUS);\n }\n\n public showMaskInInput(inputVal?: string): string {\n if (this.showMaskTyped && !!this.shownMaskExpression) {\n if (this.maskExpression.length !== this.shownMaskExpression.length) {\n throw new Error('Mask expression must match mask placeholder length');\n } else {\n return this.shownMaskExpression;\n }\n } else if (this.showMaskTyped) {\n if (inputVal) {\n if (this.maskExpression === MaskExpression.IP) {\n return this._checkForIp(inputVal);\n }\n if (this.maskExpression === MaskExpression.CPF_CNPJ) {\n return this._checkForCpfCnpj(inputVal);\n }\n }\n if (this.placeHolderCharacter.length === this.maskExpression.length) {\n return this.placeHolderCharacter;\n }\n return this.maskExpression.replace(/\\w/g, this.placeHolderCharacter);\n }\n return '';\n }\n\n public clearIfNotMatchFn(): void {\n const formElement = this._elementRef?.nativeElement;\n if (!formElement) {\n return;\n }\n if (\n this.clearIfNotMatch &&\n this.prefix.length + this.maskExpression.length + this.suffix.length !==\n formElement.value.replace(this.placeHolderCharacter, MaskExpression.EMPTY_STRING)\n .length\n ) {\n this.formElementProperty = ['value', MaskExpression.EMPTY_STRING];\n this.applyMask('', this.maskExpression);\n }\n }\n\n public set formElementProperty([name, value]: [string, string | boolean]) {\n if (!this._renderer || !this._elementRef) {\n return;\n }\n //[TODO]: andriikamaldinov1 find better solution\n Promise.resolve().then(() =>\n this._renderer?.setProperty(this._elementRef?.nativeElement, name, value)\n );\n }\n\n public checkDropSpecialCharAmount(mask: string): number {\n const chars: string[] = mask\n .split(MaskExpression.EMPTY_STRING)\n .filter((item: string) => this._findDropSpecialChar(item));\n return chars.length;\n }\n\n public removeMask(inputValue: string): string {\n return this._removeMask(\n this._removeSuffix(this._removePrefix(inputValue)),\n this.specialCharacters.concat('_').concat(this.placeHolderCharacter)\n );\n }\n\n private _checkForIp(inputVal: string): string {\n if (inputVal === MaskExpression.HASH) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inputVal.length; i++) {\n const value = inputVal[i] ?? MaskExpression.EMPTY_STRING;\n if (!value) {\n continue;\n }\n if (value.match('\\\\d')) {\n arr.push(value);\n }\n }\n if (arr.length <= 3) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 3 && arr.length <= 6) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 6 && arr.length <= 9) {\n return this.placeHolderCharacter;\n }\n if (arr.length > 9 && arr.length <= 12) {\n return '';\n }\n return '';\n }\n\n private _checkForCpfCnpj(inputVal: string): string {\n const cpf =\n `${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\n const cnpj =\n `${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `/${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\n\n if (inputVal === MaskExpression.HASH) {\n return cpf;\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inputVal.length; i++) {\n const value = inputVal[i] ?? MaskExpression.EMPTY_STRING;\n if (!value) {\n continue;\n }\n if (value.match('\\\\d')) {\n arr.push(value);\n }\n }\n if (arr.length <= 3) {\n return cpf.slice(arr.length, cpf.length);\n }\n if (arr.length > 3 && arr.length <= 6) {\n return cpf.slice(arr.length + 1, cpf.length);\n }\n if (arr.length > 6 && arr.length <= 9) {\n return cpf.slice(arr.length + 2, cpf.length);\n }\n if (arr.length > 9 && arr.length < 11) {\n return cpf.slice(arr.length + 3, cpf.length);\n }\n if (arr.length === 11) {\n return '';\n }\n if (arr.length === 12) {\n if (inputVal.length === 17) {\n return cnpj.slice(16, cnpj.length);\n }\n return cnpj.slice(15, cnpj.length);\n }\n if (arr.length > 12 && arr.length <= 14) {\n return cnpj.slice(arr.length + 4, cnpj.length);\n }\n return '';\n }\n\n /**\n * Recursively determine the current active element by navigating the Shadow DOM until the Active Element is found.\n */\n private _getActiveElement(document: DocumentOrShadowRoot = this.document): Element | null {\n const shadowRootEl = document?.activeElement?.shadowRoot;\n if (!shadowRootEl?.activeElement) {\n return document.activeElement;\n } else {\n return this._getActiveElement(shadowRootEl);\n }\n }\n\n /**\n * Propogates the input value back to the Angular model by triggering the onChange function. It won't do this if writingValue\n * is true. If that is true it means we are currently in the writeValue function, which is supposed to only update the actual\n * DOM element based on the Angular model value. It should be a one way process, i.e. writeValue should not be modifying the Angular\n * model value too. Therefore, we don't trigger onChange in this scenario.\n * @param inputValue the current form input value\n */\n private formControlResult(inputValue: string): void {\n const outputTransformFn = this.outputTransformFn\n ? this.outputTransformFn\n : (v: unknown) => v;\n this.writingValue = false;\n this.maskChanged = false;\n\n // Para máscaras de separador (currency), fazer conversão direta para número\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR) && this.dropSpecialCharacters) {\n // Remover prefixo e sufixo\n let cleanValue = inputValue;\n if (this.prefix) {\n cleanValue = cleanValue.replace(this.prefix, '');\n }\n if (this.suffix) {\n cleanValue = cleanValue.replace(this.suffix, '');\n }\n\n // Remover separador de milhares\n if (this.thousandSeparator) {\n cleanValue = cleanValue.split(this.thousandSeparator).join('');\n }\n\n // Converter decimal marker para ponto\n const markers = Array.isArray(this.decimalMarker)\n ? this.decimalMarker\n : [this.decimalMarker];\n for (const marker of markers) {\n if (marker && marker !== '.') {\n cleanValue = cleanValue.replace(marker, '.');\n }\n }\n\n // Converter para número\n const numValue = parseFloat(cleanValue);\n const finalValue = isNaN(numValue) ? 0 : numValue;\n\n this.onChange(outputTransformFn(finalValue));\n return;\n }\n\n // Para máscaras de separador, garantir que isNumberValue é true\n // Isso assegura a conversão correta para número\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n this.isNumberValue = true;\n }\n\n if (Array.isArray(this.dropSpecialCharacters)) {\n this.onChange(\n outputTransformFn(\n this._toNumber(\n this._checkSymbols(\n this._removeMask(\n this._removeSuffix(this._removePrefix(inputValue)),\n this.dropSpecialCharacters\n )\n )\n )\n )\n );\n } else if (\n this.dropSpecialCharacters ||\n (!this.dropSpecialCharacters && this.prefix === inputValue)\n ) {\n this.onChange(\n outputTransformFn(\n this._toNumber(\n this._checkSymbols(this._removeSuffix(this._removePrefix(inputValue)))\n )\n )\n );\n } else {\n this.onChange(outputTransformFn(this._toNumber(inputValue)));\n }\n }\n\n private _toNumber(value: string | number | undefined | null) {\n if (!this.isNumberValue || value === MaskExpression.EMPTY_STRING) {\n return value;\n }\n if (\n this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n (this.leadZero || !this.dropSpecialCharacters)\n ) {\n return value;\n }\n\n if (String(value).length > 14 && this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n return String(value);\n }\n\n const num = Number(value);\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR) && Number.isNaN(num)) {\n const val = String(value).replace(',', '.');\n return Number(val);\n }\n\n return Number.isNaN(num) ? value : num;\n }\n\n private _removeMask(value: string, specialCharactersForRemove: string[]): string {\n if (\n this.maskExpression.startsWith(MaskExpression.PERCENT) &&\n value.includes(MaskExpression.DOT)\n ) {\n return value;\n }\n\n return value\n ? value.replace(\n this._regExpForRemove(specialCharactersForRemove),\n MaskExpression.EMPTY_STRING\n )\n : value;\n }\n\n private _removePrefix(value: string): string {\n if (!this.prefix) {\n return value;\n }\n return value ? value.replace(this.prefix, MaskExpression.EMPTY_STRING) : value;\n }\n\n private _removeSuffix(value: string): string {\n if (!this.suffix) {\n return value;\n }\n return value ? value.replace(this.suffix, MaskExpression.EMPTY_STRING) : value;\n }\n\n private _retrieveSeparatorValue(result: string): string {\n let specialCharacters = Array.isArray(this.dropSpecialCharacters)\n ? this.specialCharacters.filter((v) => {\n return (this.dropSpecialCharacters as string[]).includes(v);\n })\n : [...this.specialCharacters]; // Criar cópia para não modificar o original\n\n if (\n !this.deletedSpecialCharacter &&\n this._checkPatternForSpace() &&\n result.includes(MaskExpression.WHITE_SPACE) &&\n this.maskExpression.includes(MaskExpression.SYMBOL_STAR)\n ) {\n specialCharacters = specialCharacters.filter(\n (char) => char !== MaskExpression.WHITE_SPACE\n );\n }\n\n // Para máscaras de separador, NÃO remover o decimalMarker - ele será convertido para ponto depois\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n specialCharacters = specialCharacters.filter(\n (char) => !this._compareOrIncludes(char, this.decimalMarker, null)\n );\n }\n\n return this._removeMask(result, specialCharacters as string[]);\n }\n\n private _regExpForRemove(specialCharactersForRemove: string[]): RegExp {\n return new RegExp(\n specialCharactersForRemove.map((item: string) => `\\\\${item}`).join('|'),\n 'gi'\n );\n }\n\n private _replaceDecimalMarkerToDot(value: string): string {\n const markers = Array.isArray(this.decimalMarker)\n ? this.decimalMarker\n : [this.decimalMarker];\n\n return value.replace(this._regExpForRemove(markers), MaskExpression.DOT);\n }\n\n public _checkSymbols(result: string): string | number | undefined | null {\n let processedResult = result;\n\n if (processedResult === MaskExpression.EMPTY_STRING) {\n return processedResult;\n }\n\n if (\n this.maskExpression.startsWith(MaskExpression.PERCENT) &&\n this.decimalMarker === MaskExpression.COMMA\n ) {\n processedResult = processedResult.replace(MaskExpression.COMMA, MaskExpression.DOT);\n }\n\n // Para máscaras de separador (currency), processar de forma especial\n // Remover separador de milhares e converter decimal marker para ponto\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n let cleanValue = processedResult;\n\n // Remover separador de milhares\n if (this.thousandSeparator) {\n cleanValue = cleanValue.split(this.thousandSeparator).join('');\n }\n\n // Converter decimal marker para ponto\n const markers = Array.isArray(this.decimalMarker)\n ? this.decimalMarker\n : [this.decimalMarker];\n for (const marker of markers) {\n if (marker && marker !== '.') {\n cleanValue = cleanValue.replace(marker, '.');\n }\n }\n\n return cleanValue;\n }\n\n const separatorPrecision: number | null = this._retrieveSeparatorPrecision(\n this.maskExpression\n );\n\n const separatorValue: string =\n this.specialCharacters.length === 0\n ? this._retrieveSeparatorValue(processedResult)\n : this._replaceDecimalMarkerToDot(this._retrieveSeparatorValue(processedResult));\n\n if (!this.isNumberValue) {\n return separatorValue;\n }\n if (separatorPrecision) {\n if (processedResult === this.decimalMarker) {\n return null;\n }\n if (separatorValue.length > 14) {\n return String(separatorValue);\n }\n return this._checkPrecision(this.maskExpression, separatorValue);\n } else {\n return separatorValue;\n }\n }\n\n private _checkPatternForSpace(): boolean {\n for (const key in this.patterns) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.patterns[key] && this.patterns[key]?.hasOwnProperty('pattern')) {\n const patternString = this.patterns[key]?.pattern.toString();\n const pattern = this.patterns[key]?.pattern;\n if (\n (patternString?.includes(MaskExpression.WHITE_SPACE) as boolean) &&\n pattern?.test(this.maskExpression)\n ) {\n return true;\n }\n }\n }\n return false;\n }\n // TODO should think about helpers or separting decimal precision to own property\n private _retrieveSeparatorPrecision(maskExpretion: string): number | null {\n const matcher: RegExpMatchArray | null = maskExpretion.match(\n new RegExp(`^separator\\\\.([^d]*)`)\n );\n return matcher ? Number(matcher[1]) : null;\n }\n\n public _checkPrecision(separatorExpression: string, separatorValue: string): number | string {\n const separatorPrecision = this.getPrecision(separatorExpression);\n let value = separatorValue;\n\n if (\n separatorExpression.indexOf('2') > 0 ||\n (this.leadZero && Number(separatorPrecision) > 0)\n ) {\n if (this.decimalMarker === MaskExpression.COMMA && this.leadZero) {\n value = value.replace(',', '.');\n }\n return this.leadZero\n ? Number(value).toFixed(Number(separatorPrecision))\n : Number(value).toFixed(2);\n }\n return this.numberToString(value);\n }\n\n public _repeatPatternSymbols(maskExp: string): string {\n return (\n (maskExp.match(/{[0-9]+}/) &&\n maskExp\n .split(MaskExpression.EMPTY_STRING)\n .reduce((accum: string, currVal: string, index: number): string => {\n this._start =\n currVal === MaskExpression.CURLY_BRACKETS_LEFT ? index : this._start;\n if (currVal !== MaskExpression.CURLY_BRACKETS_RIGHT) {\n return this._findSpecialChar(currVal) ? accum + currVal : accum;\n }\n this._end = index;\n const repeatNumber = Number(maskExp.slice(this._start + 1, this._end));\n const replaceWith: string = new Array(repeatNumber + 1).join(\n maskExp[this._start - 1]\n );\n if (\n maskExp.slice(0, this._start).length > 1 &&\n maskExp.includes(MaskExpression.LETTER_S)\n ) {\n const symbols = maskExp.slice(0, this._start - 1);\n return symbols.includes(MaskExpression.CURLY_BRACKETS_LEFT)\n ? accum + replaceWith\n : symbols + accum + replaceWith;\n } else {\n return accum + replaceWith;\n }\n }, '')) ||\n maskExp\n );\n }\n\n public currentLocaleDecimalMarker(): string {\n return (1.1).toLocaleString().substring(1, 2);\n }\n}\n","import { OnChanges, SimpleChanges, Input, Output, EventEmitter, HostListener, Directive, forwardRef, inject, HostBinding, ElementRef } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ControlValueAccessor,\n FormControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CustomKeyboardEvent } from './custom-keyboard-event';\nimport { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG, timeMasks, withoutValidation } from './matcha-mask.config';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Directive({\n selector: 'input[matchaMask], textarea[matchaMask]',\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaMaskCompatibleDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatchaMaskCompatibleDirective),\n multi: true,\n },\n MatchaMaskService,\n ],\n exportAs: 'matchaMask',\n})\nexport class MatchaMaskCompatibleDirective implements ControlValueAccessor, OnChanges, Validator {\n private _mask: string | undefined | null = '';\n @Input('matchaMask')\n get mask(): string | undefined | null { return this._mask; }\n set mask(v: string | undefined | null) { this._mask = v; }\n\n @HostBinding('attr.data-matcha-mask')\n get maskAttr(): string | null {\n return this._mask ?? null;\n }\n\n @Input() specialCharacters: MatchaMaskConfig['specialCharacters'] = [];\n @Input() patterns: MatchaMaskConfig['patterns'] = {};\n\n private _prefix: MatchaMaskConfig['prefix'] = '';\n @Input()\n get prefix(): MatchaMaskConfig['prefix'] { return this._prefix; }\n set prefix(v: MatchaMaskConfig['prefix']) { this._prefix = v; }\n\n @HostBinding('attr.data-prefix')\n get prefixAttr(): string | null {\n return this._prefix || null;\n }\n\n private _suffix: MatchaMaskConfig['suffix'] = '';\n @Input()\n get suffix(): MatchaMaskConfig['suffix'] { return this._suffix; }\n set suffix(v: MatchaMaskConfig['suffix']) { this._suffix = v; }\n\n @HostBinding('attr.data-suffix')\n get suffixAttr(): string | null {\n return this._suffix || null;\n }\n\n @Input() thousandSeparator: MatchaMaskConfig['thousandSeparator'] = ' ';\n @Input() decimalMarker: MatchaMaskConfig['decimalMarker'] = '.';\n\n private _dropSpecialCharacters: MatchaMaskConfig['dropSpecialCharacters'] | null = null;\n @Input()\n set dropSpecialCharacters(value: MatchaMaskConfig['dropSpecialCharacters'] | string | null) {\n // Converter string \"true\" ou \"false\" para boolean (retrocompatível)\n if (value === 'true' || value === true) {\n this._dropSpecialCharacters = true;\n } else if (value === 'false' || value === false) {\n this._dropSpecialCharacters = false;\n } else if (Array.isArray(value) || value === null) {\n this._dropSpecialCharacters = value;\n } else {\n // Para qualquer outro valor string, tratar como false\n this._dropSpecialCharacters = false;\n }\n }\n get dropSpecialCharacters(): MatchaMaskConfig['dropSpecialCharacters'] | null {\n return this._dropSpecialCharacters;\n }\n // Helper function para converter string para boolean (retrocompatível)\n private convertToBoolean(value: boolean | string | null | undefined): boolean | null {\n if (value === null || value === undefined) {\n return null;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n return value.toLowerCase() === 'true';\n }\n return false;\n }\n\n private _hiddenInput: boolean | null = null;\n @Input()\n set hiddenInput(value: boolean | string | null) {\n this._hiddenInput = this.convertToBoolean(value);\n }\n get hiddenInput(): boolean | null {\n return this._hiddenInput;\n }\n\n private _showMaskTyped: boolean | null = null;\n @Input()\n set showMaskTyped(value: boolean | string | null) {\n this._showMaskTyped = this.convertToBoolean(value);\n }\n get showMaskTyped(): boolean | null {\n return this._showMaskTyped;\n }\n\n @Input() placeHolderCharacter: MatchaMaskConfig['placeHolderCharacter'] | null = null;\n @Input() shownMaskExpression: MatchaMaskConfig['shownMaskExpression'] | null = null;\n\n private _clearIfNotMatch: boolean | null = null;\n @Input()\n set clearIfNotMatch(value: boolean | string | null) {\n this._clearIfNotMatch = this.convertToBoolean(value);\n }\n get clearIfNotMatch(): boolean | null {\n return this._clearIfNotMatch;\n }\n\n private _validation: boolean | null = null;\n @Input()\n set validation(value: boolean | string | null) {\n this._validation = this.convertToBoolean(value);\n }\n get validation(): boolean | null {\n return this._validation;\n }\n @Input() separatorLimit: MatchaMaskConfig['separatorLimit'] | null = '';\n\n private _allowNegativeNumbers: boolean | null = null;\n @Input()\n set allowNegativeNumbers(value: boolean | string | null) {\n this._allowNegativeNumbers = this.convertToBoolean(value);\n }\n get allowNegativeNumbers(): boolean | null {\n return this._allowNegativeNumbers;\n }\n\n private _leadZeroDateTime: boolean | null = null;\n @Input()\n set leadZeroDateTime(value: boolean | string | null) {\n this._leadZeroDateTime = this.convertToBoolean(value);\n }\n get leadZeroDateTime(): boolean | null {\n return this._leadZeroDateTime;\n }\n\n private _leadZero: boolean | null = null;\n @Input()\n set leadZero(value: boolean | string | null) {\n this._leadZero = this.convertToBoolean(value);\n }\n get leadZero(): boolean | null {\n return this._leadZero;\n }\n\n private _triggerOnMaskChange: boolean | null = null;\n @Input()\n set triggerOnMaskChange(value: boolean | string | null) {\n this._triggerOnMaskChange = this.convertToBoolean(value);\n }\n get triggerOnMaskChange(): boolean | null {\n return this._triggerOnMaskChange;\n }\n\n private _apm: boolean | null = null;\n @Input()\n set apm(value: boolean | string | null) {\n this._apm = this.convertToBoolean(value);\n }\n get apm(): boolean | null {\n return this._apm;\n }\n\n @Input() inputTransformFn: MatchaMaskConfig['inputTransformFn'] | null = null;\n @Input() outputTransformFn: MatchaMaskConfig['outputTransformFn'] | null = null;\n\n private _keepCharacterPositions: boolean | null = null;\n @Input()\n set keepCharacterPositions(value: boolean | string | null) {\n this._keepCharacterPositions = this.convertToBoolean(value);\n }\n get keepCharacterPositions(): boolean | null {\n return this._keepCharacterPositions;\n }\n\n private _instantPrefix: boolean | null = null;\n @Input()\n set instantPrefix(value: boolean | string | null) {\n this._instantPrefix = this.convertToBoolean(value);\n }\n get instantPrefix(): boolean | null {\n return this._instantPrefix;\n }\n\n private _currencyMode: boolean | null = null;\n @Input()\n set currencyMode(value: boolean | string | null) {\n this._currencyMode = this.convertToBoolean(value);\n }\n get currencyMode(): boolean | null {\n return this._currencyMode;\n }\n\n @Output() maskFilled = new EventEmitter<void>();\n\n private _maskValue = '';\n private _inputValue = '';\n private _position: number | null = null;\n private _code = '';\n private _maskExpressionArray: string[] = [];\n private _justPasted = false;\n private _isFocused = false;\n /**For IME composition event */\n private _isComposing = false;\n\n public _maskService = inject(MatchaMaskService, { self: true });\n\n private readonly document = inject(DOCUMENT);\n\n private readonly elementRef = inject(ElementRef);\n\n protected _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (_: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouch = () => {};\n\n public ngOnChanges(changes: SimpleChanges): void {\n const {\n mask,\n specialCharacters,\n patterns,\n prefix,\n suffix,\n thousandSeparator,\n decimalMarker,\n dropSpecialCharacters,\n hiddenInput,\n showMaskTyped,\n placeHolderCharacter,\n shownMaskExpression,\n clearIfNotMatch,\n validation,\n separatorLimit,\n allowNegativeNumbers,\n leadZeroDateTime,\n leadZero,\n triggerOnMaskChange,\n apm,\n inputTransformFn,\n outputTransformFn,\n keepCharacterPositions,\n instantPrefix,\n currencyMode,\n } = changes;\n\n if (mask) {\n this._mask = mask.currentValue ?? '';\n this._maskValue = this._mask ?? '';\n this._maskExpressionArray = this._maskValue.split('');\n }\n\n if (specialCharacters) {\n this._maskService.specialCharacters = specialCharacters.currentValue ?? [];\n }\n\n if (patterns) {\n this._maskService.patterns = patterns.currentValue ?? {};\n }\n\n if (prefix) {\n this._prefix = prefix.currentValue ?? '';\n this._maskService.prefix = this._prefix ?? '';\n }\n\n if (suffix) {\n this._suffix = suffix.currentValue ?? '';\n this._maskService.suffix = this._suffix ?? '';\n }\n\n if (thousandSeparator) {\n this._maskService.thousandSeparator = thousandSeparator.currentValue ?? ' ';\n }\n\n if (decimalMarker) {\n this._maskService.decimalMarker = decimalMarker.currentValue ?? '.';\n }\n\n if (dropSpecialCharacters) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.dropSpecialCharacters;\n if (value !== null) {\n this._maskService.dropSpecialCharacters = value;\n }\n }\n\n if (hiddenInput) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.hiddenInput;\n if (value !== null) {\n this._maskService.hiddenInput = value;\n }\n }\n\n if (showMaskTyped) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.showMaskTyped;\n if (value !== null) {\n this._maskService.showMaskTyped = value;\n }\n }\n\n if (placeHolderCharacter) {\n this._maskService.placeHolderCharacter = placeHolderCharacter.currentValue;\n }\n\n if (shownMaskExpression) {\n this._maskService.shownMaskExpression = shownMaskExpression.currentValue;\n }\n\n if (clearIfNotMatch) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.clearIfNotMatch;\n if (value !== null) {\n this._maskService.clearIfNotMatch = value;\n }\n }\n\n if (validation) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.validation;\n if (value !== null) {\n this._maskService.validation = value;\n }\n }\n\n if (separatorLimit) {\n this._maskService.separatorLimit = separatorLimit.currentValue ?? '';\n }\n\n if (allowNegativeNumbers) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.allowNegativeNumbers;\n if (value !== null) {\n this._maskService.allowNegativeNumbers = value;\n }\n }\n\n if (leadZeroDateTime) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.leadZeroDateTime;\n if (value !== null) {\n this._maskService.leadZeroDateTime = value;\n }\n }\n\n if (leadZero) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.leadZero;\n if (value !== null) {\n this._maskService.leadZero = value;\n }\n }\n\n if (triggerOnMaskChange) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.triggerOnMaskChange;\n if (value !== null) {\n this._maskService.triggerOnMaskChange = value;\n }\n }\n\n if (apm) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.apm;\n if (value !== null) {\n this._maskService.apm = value;\n }\n }\n\n if (inputTransformFn) {\n this._maskService.inputTransformFn = inputTransformFn.currentValue;\n }\n\n if (outputTransformFn) {\n this._maskService.outputTransformFn = outputTransformFn.currentValue;\n }\n\n if (keepCharacterPositions) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.keepCharacterPositions;\n if (value !== null) {\n this._maskService.keepCharacterPositions = value;\n }\n }\n\n if (instantPrefix) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.instantPrefix;\n if (value !== null) {\n this._maskService.instantPrefix = value;\n }\n }\n\n if (currencyMode) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.currencyMode;\n if (value !== null) {\n this._maskService.currencyMode = value;\n }\n }\n }\n\n @HostListener('paste', ['$event'])\n public onPaste(): void {\n this._justPasted = true;\n }\n\n @HostListener('focus', ['$event'])\n public onFocus(event: FocusEvent): void {\n this._isFocused = true;\n // Implementar lógica de foco se necessário\n }\n\n @HostListener('ngModelChange', ['$event'])\n public onModelChange(value: string | number): void {\n // Ignorar se estamos no meio de uma operação de escrita\n if (this._maskService.writingValue) {\n return;\n }\n\n // Se o valor é um número, significa que veio do formControlResult (já processado)\n // Não precisamos reprocessar para evitar loop infinito\n if (typeof value === 'number') {\n return;\n }\n\n // Converter para string\n const stringValue = value || '';\n this._inputValue = stringValue;\n\n // Para máscaras, não chamar applyMask aqui pois isso criaria um loop\n // O onInput já cuida de aplicar a máscara durante a digitação\n // O writeValue cuida de formatar valores vindos do backend\n if (!this._mask || this._mask.trim() === '') {\n this._maskService.onChange(stringValue);\n }\n }\n\n @HostListener('input', ['$event'])\n public onInput(event: KeyboardEvent): void {\n if (this._isComposing) {\n return;\n }\n const target = event.target as HTMLInputElement;\n const value = target.value;\n\n // Se o usuário está tentando limpar o campo (apenas prefixo/sufixo restante), permitir vazio\n const prefix = this._maskService.prefix || '';\n const suffix = this._maskService.suffix || '';\n const valueWithoutPrefixSuffix = value.replace(prefix, '').replace(suffix, '').trim();\n\n // Se ficou vazio ou apenas com separadores/zeros, permitir limpar completamente\n const onlySymbols = /^[^\\d]*$/.test(valueWithoutPrefixSuffix) ||\n /^0+[,.]?0*$/.test(valueWithoutPrefixSuffix);\n\n if (valueWithoutPrefixSuffix === '' || onlySymbols) {\n target.value = '';\n this._maskService.onChange('');\n return;\n }\n\n // Aplicar máscara se definida\n if (this._mask && this._mask.trim() !== '') {\n const maskedValue = this._maskService.applyMask(value, this._mask);\n if (maskedValue !== value) {\n target.value = maskedValue;\n }\n // NÃO chamar onChange aqui - o formControlResult no applyMask já cuida disso\n // com o valor limpo (sem prefixo, sem separadores, convertido para número)\n } else {\n this._maskService.onChange(value);\n }\n }\n\n @HostListener('compositionstart', ['$event'])\n public onCompositionStart(event: CompositionEvent): void {\n this._isComposing = true;\n }\n\n @HostListener('compositionend', ['$event'])\n public onCompositionEnd(event: CompositionEvent): void {\n this._isComposing = false;\n const target = event.target as HTMLInputElement;\n const value = target.value;\n this._maskService.onChange(value);\n }\n\n @HostListener('blur', ['$event'])\n public onBlur(event: FocusEvent): void {\n this._isFocused = false;\n this.onTouch();\n }\n\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n // Implementar lógica de clique se necessário\n }\n\n @HostListener('keydown', ['$event'])\n public onKeyDown(event: KeyboardEvent): void {\n // Implementar lógica de teclado se necessário\n }\n\n public writeValue(value: string | number | null | undefined): void {\n // Se já estamos escrevendo, não processar novamente (prevenir loop infinito)\n if (this._maskService.writingValue) {\n return;\n }\n\n this._maskService.writingValue = true;\n\n // Converter automaticamente número para string (retrocompatível)\n // Isso previne o erro \"indexOf is not a function\" quando números são passados\n let inputValue: string;\n if (value === null || value === undefined) {\n inputValue = '';\n } else if (typeof value === 'number') {\n // Para máscaras de separador, formatar o número com casas decimais\n if (this._mask && this._mask.trim().startsWith('separator.')) {\n const precision = parseInt(this._mask.split('.')[1], 10) || 2;\n inputValue = value.toFixed(precision).replace('.', ',');\n } else {\n inputValue = value.toString();\n }\n } else {\n inputValue = String(value);\n }\n\n // Para máscaras de separador, converter ponto para vírgula antes de processar\n // Isso permite que valores do backend (ex: 10.5) sejam formatados corretamente\n if (this._mask && this._mask.trim().startsWith('separator.') && inputValue.includes('.')) {\n const decimalMarker = this._maskService.decimalMarker;\n const actualDecimalMarker = decimalMarker === ',' ||\n (Array.isArray(decimalMarker) && decimalMarker.includes(',')) ? ',' : '.';\n\n if (actualDecimalMarker === ',') {\n // Converter ponto para vírgula para que applyMask processe corretamente\n inputValue = inputValue.replace('.', ',');\n }\n }\n\n this._inputValue = inputValue;\n\n // Aplicar máscara se definida\n if (this._mask && this._mask.trim() !== '') {\n const maskedValue = this._maskService.applyMask(inputValue, this._mask);\n\n // Atualizar o valor do elemento HTML diretamente usando ElementRef\n if (this.elementRef && this.elementRef.nativeElement) {\n this.elementRef.nativeElement.value = maskedValue;\n }\n }\n\n this._maskService.writingValue = false;\n }\n\n public registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n this._maskService.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n // Implementar lógica de desabilitar se necessário\n }\n\n public validate(control: FormControl): ValidationErrors | null {\n // Implementar validação se necessário\n return null;\n }\n}\n","/**\n * Componente MatchaInputPhone\n * \n * Componente Angular para entrada de telefone internacional com seleção de país, máscara dinâmica e exibição de bandeira.\n * \n * Funcionalidades:\n * - Seleção de país com dropdown e bandeira.\n * - Máscara dinâmica de acordo com o país e DDD digitado.\n * - Suporte a diferentes formatos de telefone (fixo/celular) para o Brasil.\n * - Emissão de evento ao alterar o valor do telefone.\n * - Inicialização automática pelo valor informado ou pelo idioma do navegador.\n * \n * Inputs:\n * - fallbackMask: string - Máscara padrão caso não seja encontrada uma específica.\n * - label: string - Rótulo do campo (padrão: 'Telefone').\n * - value: string - Valor inicial do telefone (com ou sem DDI).\n * \n * Outputs:\n * - onChange: EventEmitter<string> - Emite o valor do telefone completo (com DDI) ao alterar.\n * \n * ViewChild:\n * - inputSelector: ElementRef - Referência ao container do input (usado para fechar o dropdown).\n * - phoneRef: ElementRef - Referência ao input do telefone.\n * \n * Métodos principais:\n * - ngOnInit: Inicializa o componente pelo valor ou idioma.\n * - ngOnChanges: Atualiza o valor ao receber novo input externo.\n * - initCountryPhone: Inicializa país e máscara pelo valor do telefone.\n * - selectMaskForDialCode: Seleciona a máscara conforme país e DDD.\n * - selectCountry: Troca o país selecionado e atualiza máscara.\n * - onInput: Atualiza máscara e emite evento ao digitar.\n * - toggleDropdown: Abre/fecha o dropdown de países.\n */\nimport { \n Component, \n Renderer2, \n OnChanges, \n OnDestroy, \n OnInit, \n SimpleChanges, \n ViewChild, \n ElementRef, \n Input, \n Output, \n EventEmitter, \n ChangeDetectorRef, \n} from '@angular/core';\nimport { getCountryISO2 } from './all-countries';\n\n@Component({\n selector: 'matcha-input-phone',\n templateUrl: './input-phone.component.html',\n standalone: false\n})\nexport class MatchaInputPhoneComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('inputSelector') inputSelector!: ElementRef;\n @ViewChild('phoneRef') phoneRef!: ElementRef;\n @Input('fallbackMask') fallbackMask: string = '00 0000 0000'; \n @Input('value') value?: string; \n @Output() onChange: EventEmitter<string> = new EventEmitter<string>();\n\n public typeMask: string = ''; \n public labelHover: string = 'su';\n public allCountries: any[] = getCountryISO2();\n public isOpen: boolean = false;\n public selectedCountry: any;\n public inputValueModel: string = '';\n private clickListener: (() => void) | null = null;\n public isInitialized: boolean = false;\n constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef) {\n \n }\n\n ngOnInit() {\n this.value ? this.initCountryPhone(this.value) : this.initCountrylanguageNavigator();\n this.cdr.detectChanges();\n this.isInitialized = true;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] && !changes['value'].firstChange) {\n \n this.value = changes['value'].currentValue;\n if (!this.value) {\n this.inputValueModel = this.value ?? '';\n return;\n }\n this.initCountryPhone(this.value);\n this.cdr.detectChanges();\n }\n }\n\n initCountryPhone(phone: string) {\n \n if (!phone.startsWith('+')) {\n \n this.setCountryAndInputValue('br', phone);\n return;\n }\n\n \n const phoneWithoutPlus = phone.replace('+', '');\n const countryDialCode = this.selectedCountry?.dialCode;\n \n if (phoneWithoutPlus.startsWith(countryDialCode)) {\n \n this.setCountryAndInputValue(this.selectedCountry.iso2, phoneWithoutPlus.replace(countryDialCode, ''));\n \n this.inputValueModel = phoneWithoutPlus.replace(countryDialCode, '');\n \n } else {\n \n this.matchCountryAndSetInputValue(phoneWithoutPlus);\n }\n }\n\n private setCountryAndInputValue(iso2: string, phone: string) {\n \n this.selectedCountry = this.allCountries.find((country) => country.iso2 === iso2);\n \n this.inputValueModel = phone.startsWith('0') ? phone.slice(1) : phone;\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000', this.inputValueModel);\n }\n\n private matchCountryAndSetInputValue(phoneWithoutPlus: string) {\n \n const matchingCountry = this.getMatchingCountry(phoneWithoutPlus);\n\n \n if (matchingCountry.length === 1) {\n \n this.setCountryAndInputValue(matchingCountry[0].iso2, phoneWithoutPlus.replace(matchingCountry[0].dialCode, ''));\n } else {\n \n this.matchAreaCodeAndSetInputValue(phoneWithoutPlus, matchingCountry);\n }\n }\n\n private getMatchingCountry(phoneWithoutPlus: string) {\n \n return this.allCountries.filter((country) => {\n const dialCode = country.dialCode;\n return phoneWithoutPlus.startsWith(dialCode);\n });\n }\n\n private matchAreaCodeAndSetInputValue(phoneWithoutPlus: string, matchingCountry: any[]) {\n \n const phoneWithoutDialCode = phoneWithoutPlus.replace(matchingCountry[0].dialCode, '');\n \n const filterAreaCode = phoneWithoutDialCode.substring(0, 3);\n\n \n const matchingAreaCode = matchingCountry.filter((country) => {\n if (country.areaCodes) {\n return country.areaCodes.includes(filterAreaCode);\n }\n });\n\n \n if (matchingAreaCode.length === 1) {\n \n this.setCountryAndInputValue(matchingAreaCode[0].iso2, phoneWithoutDialCode);\n } else {\n \n const defaultCountry = matchingCountry.find((country) => country.priority === 0);\n this.setCountryAndInputValue(defaultCountry.iso2, phoneWithoutDialCode);\n }\n }\n\n selectMaskForDialCode(inputDigits: string, targetValuePhone?: string) {\n const previousMask = this.typeMask;\n const maskArray = this.selectedCountry?.mask;\n const maskIndex = this.selectedCountry?.areaCodes\n ? this.selectedCountry.areaCodes.findIndex((code: string) => inputDigits === code)\n : -1;\n\n if (this.selectedCountry?.iso2 === 'br' && (targetValuePhone && targetValuePhone.length > 2)) {\n const eventInput = targetValuePhone.substring(2)\n if (eventInput && eventInput[0] === '9') {\n this.typeMask = \"00 0 0000 0000\";\n this.cdr.detectChanges();\n return;\n }\n }\n\n if (Array.isArray(maskArray)) {\n if (maskIndex !== -1 && maskArray[maskIndex]) {\n this.typeMask = maskArray[maskIndex];\n } else if (maskArray[0]) {\n this.typeMask = maskArray[0];\n } else {\n this.typeMask = this.fallbackMask;\n }\n } else {\n this.typeMask = this.fallbackMask;\n }\n\n \n if (previousMask !== this.typeMask) this.inputValueModel = '';\n this.cdr.detectChanges();\n}\n\n initCountrylanguageNavigator() {\n \n let lang = navigator.language;\n if (lang.includes('-')) {\n const langParts = lang.split('-');\n lang = langParts[1];\n }\n\n \n this.selectedCountry = this.allCountries.find((country) => country.iso2 === lang.toLocaleLowerCase());\n\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000');\n }\n\n public selectCountry(country: any): void {\n this.selectedCountry = country;\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000');\n this.isOpen = false;\n \n this.onChange.emit('+' + this.selectedCountry.dialCode + this.inputValueModel);\n\n this.removeClickListener();\n this.cdr.detectChanges();\n }\n\n toggleDropdown(): void {\n this.isOpen = !this.isOpen;\n \n this.clickListener = this.renderer.listen('window', 'click', (event: Event) => {\n if (this.isOpen && !this.inputSelector.nativeElement.contains(event.target)) {\n this.isOpen = false;\n this.removeClickListener();\n }\n });\n this.cdr.detectChanges();\n }\n\n private removeClickListener() {\n \n if (this.clickListener) {\n this.clickListener();\n this.clickListener = null;\n }\n }\n\n onInput(event: any): void {\n this.phoneRef.nativeElement.value = event.target.value.replace(/[^\\d\\s]/g, '');\n let targetValuePhone = event.target.value.replace(/\\D/g, '');\n \n this.onChange.emit('+' + this.selectedCountry.dialCode + this.inputValueModel);\n\n const inputDigits = targetValuePhone.substring(0, 3);\n if (inputDigits) {\n this.selectMaskForDialCode(inputDigits, targetValuePhone);\n }\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n \n this.removeClickListener();\n }\n\n}\n","\n<div class=\"flex-row position-relative px-16 gap-8\" #inputSelector>\n <div class=\"min-h-24 radius-8 cursor-pointer d-flex gap-8 flex-align-center fs-16\" (click)=\"toggleDropdown()\">\n <div class=\"d-flex-row flex-align-center\">\n <img alt=\"\" [src]=\"'https://flagcdn.com/16x12/'+ selectedCountry?.iso2?.toLowerCase() + '.png'\"\n height=\"16\">\n </div>\n <span class=\"w-16 fs-16\"\n [ngClass]=\"isOpen ? 'i-matcha-action_arrow_up': 'i-matcha-action_arrow_down'\"></span>\n\n </div>\n <input *ngIf=\"isInitialized\" #phoneRef type=\"text\" placeholder=\"{{ typeMask }}\"\n [(ngModel)]=\"inputValueModel\"\n pattern=\"[0-9]*\" (keyup)=\"onInput($event)\" [matchaMask]=\"typeMask\">\n\n <ng-container *ngIf=\"isOpen\">\n <div class=\"position-absolute z-index-10\">\n <div class=\"grid-1 gap-16 radius-8 z-index-10 p-8 w-300 position-absolute background-surface elevation-z-1\"\n style=\"top: calc(100% + 10px); overflow: hidden; height: 300px; overflow-y: auto;\">\n\n <label *ngFor=\"let country of allCountries; let i = index\"\n class=\"fs-16 lh-18 cursor-pointer d-flex-align-center p-8 ts-300-l\"\n [ngClass]=\"labelHover === i+'bg' ? 'background-bg' : 'background-surface'\"\n (mouseover)=\"labelHover = i+'bg'\" (mouseout)=\"labelHover = i+'su'\"\n (click)=\"selectCountry(country)\">\n <img alt=\"\" class=\"mr-8\"\n [src]=\"'https://flagcdn.com/16x12/'+ country?.iso2?.toLowerCase() + '.png'\" height=\"16\">\n {{country.name}}\n </label>\n </div>\n </div>\n </ng-container>\n</div>\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'matcha-step',\n template: `<ng-template><ng-content></ng-content></ng-template>`,\n standalone: false\n})\nexport class StepComponent {\n @Input('title') step: any;\n @ViewChild(TemplateRef, { static: true }) template!: TemplateRef<any>;\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class MatchaStepperStateService {\n private steps: any[] = [];\n private _steps$ = new BehaviorSubject<any[]>([]);\n steps$ = this._steps$.asObservable();\n\n private _activeStep$ = new BehaviorSubject<number>(0);\n activeStep$ = this._activeStep$.asObservable();\n\n private pendingActiveStep: number | null = null;\n\n setSteps(steps: any[]) {\n this.steps = steps;\n this._steps$.next(steps);\n\n // Se havia um índice pendente, aplica agora\n if (this.pendingActiveStep !== null) {\n this.setActiveStep(this.pendingActiveStep);\n this.pendingActiveStep = null;\n }\n }\n\n setActiveStep(index: number) {\n if (this.steps.length === 0) {\n // Steps ainda não definidos, guarda para depois\n this.pendingActiveStep = index;\n return;\n }\n if (index >= 0 && index < this.steps.length) {\n this._activeStep$.next(index);\n }\n }\n\n nextStep() {\n const current = this._activeStep$.value;\n if (current < this.steps.length - 1) {\n this._activeStep$.next(current + 1);\n }\n }\n\n prevStep() {\n const current = this._activeStep$.value;\n if (current > 0) {\n this._activeStep$.next(current - 1);\n }\n }\n}","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper', \n template: `<ng-content></ng-content>`, \n providers: [MatchaStepperStateService],\n standalone: false\n})\nexport class MatchaStepperComponent {\n @Input() active: number = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['active'] && typeof changes['active'].currentValue === 'number') {\n this.stepperState.setActiveStep(this.active);\n }\n }\n}","import { Component, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\nimport { StepComponent } from '../step/step.component';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper-content',\n template: `\n <ng-container *ngIf=\"stepsArray.length\">\n <ng-container *ngTemplateOutlet=\"stepsArray[activeStep]?.template || null\"></ng-container>\n </ng-container>\n `,\n standalone: false\n})\nexport class MatchaStepperContentComponent implements AfterContentInit {\n @ContentChildren(StepComponent) steps!: QueryList<StepComponent>;\n stepsArray: StepComponent[] = [];\n activeStep = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngAfterContentInit() {\n this.stepsArray = this.steps.toArray().sort((a, b) => {\n const stepA = a.step !== undefined && a.step !== null && a.step !== '' ? Number(a.step) : a.step;\n const stepB = b.step !== undefined && b.step !== null && b.step !== '' ? Number(b.step) : b.step;\n return stepA - stepB;\n });\n this.stepperState.setSteps(this.stepsArray.map(s => s.step));\n this.stepperState.activeStep$.subscribe(step => this.activeStep = step);\n }\n\n nextStep() {\n this.stepperState.nextStep();\n }\n\n prevStep() {\n this.stepperState.prevStep();\n }\n}","import { Component, Input, OnInit } from '@angular/core';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper-controller', \n templateUrl: './stepper-controller.component.html',\n providers: [],\n standalone: false\n})\nexport class MatchaStepperControllerComponent implements OnInit {\n @Input() disableNext!: boolean;\n steps: string[] = [];\n activeStep = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngOnInit() {\n this.stepperState.steps$.subscribe((steps: any[]) => this.steps = steps);\n this.stepperState.activeStep$.subscribe(step => this.activeStep = step);\n }\n\n goToStep(index: number) {\n if(this.disableNext && this.activeStep < index) return;\n this.stepperState.setActiveStep(index);\n }\n}\n","<div class=\"flex-column flex-align-end gap-16\">\n <span class=\"fw-900 fs-12 lh-12\">{{steps[activeStep]}}</span>\n <div class=\"d-flex align-center gap-8\">\n <ng-container *ngFor=\"let step of steps; let i = index\">\n <div (click)=\"goToStep(i)\" class=\"cursor-pointer w-32 h-8 radius-8\" [class.background-accent]=\"i <= activeStep\" [class.background-disabled]=\"i > activeStep\"></div> \n </ng-container>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MatchaDropListService {\n private dropZones = new Map<HTMLElement, any>();\n\n registerDropZone(element: HTMLElement, component: any) {\n this.dropZones.set(element, component);\n }\n\n unregisterDropZone(element: HTMLElement) {\n this.dropZones.delete(element);\n }\n\n findDropZone(element: Element | null): any {\n while (element) {\n if (this.dropZones.has(element as HTMLElement)) {\n return this.dropZones.get(element as HTMLElement);\n }\n element = element.parentElement;\n }\n return null;\n }\n\n getAllDropZones(): any[] {\n return Array.from(this.dropZones.values());\n }\n}\n","import { Directive, ElementRef, Input, OnInit, OnDestroy, Renderer2, HostBinding, NgZone } from '@angular/core';\nimport { MatchaDropListService } from '../services/drop-list.service';\n\n@Directive({\n selector: '[matchaDrag]',\n standalone:false\n})\nexport class MatchaDragDirective implements OnInit, OnDestroy {\n @Input() matchaDragData: any;\n @Input() matchaDragDisabled: boolean = false;\n\n @HostBinding('class.matcha-drag-item') get dragItemClass() {\n return true;\n }\n\n @HostBinding('class.matcha-drag-disabled') get dragDisabledClass() {\n return this.matchaDragDisabled;\n }\n\n private listeners: (() => void)[] = [];\n private isDragging = false;\n private dragHandle?: HTMLElement;\n private dropList?: any;\n\n // Touch/Mobile support\n private touchStartPosition = { x: 0, y: 0 };\n private touchCurrentPosition = { x: 0, y: 0 };\n private touchDragThreshold = 10; // pixels\n private isTouchDragging = false;\n private dragPreview?: HTMLElement;\n private touchIdentifier?: number;\n\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private ngZone: NgZone,\n private dropListService: MatchaDropListService\n ) {}\n\n ngOnInit() {\n this.setupDragEvents();\n }\n\n ngOnDestroy() {\n this.cleanupListeners();\n this.cleanupTouchDrag();\n }\n\n setDropList(dropList: any) {\n this.dropList = dropList;\n }\n\n setDragHandle(handle: HTMLElement) {\n this.dragHandle = handle;\n this.setupDragEvents(); // Re-setup when handle is set\n }\n\n private setupDragEvents() {\n if (this.matchaDragDisabled) return;\n\n this.cleanupListeners();\n\n const element = this.elementRef.nativeElement;\n const dragSource = this.dragHandle || element;\n\n // Configurar draggable para desktop\n if (this.dragHandle) {\n this.renderer.setAttribute(element, 'draggable', 'false');\n this.renderer.setAttribute(this.dragHandle, 'draggable', 'true');\n } else {\n this.renderer.setAttribute(element, 'draggable', 'true');\n }\n\n // Configurar touch-action para mobile\n this.renderer.setStyle(dragSource, 'touch-action', 'none');\n this.renderer.setStyle(dragSource, 'user-select', 'none');\n this.renderer.setStyle(dragSource, '-webkit-user-select', 'none');\n\n this.ngZone.runOutsideAngular(() => {\n // Desktop drag events\n this.listeners.push(\n this.renderer.listen(dragSource, 'dragstart', (event: DragEvent) => {\n if (this.matchaDragDisabled) return;\n this.onDragStart(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'dragend', () => {\n this.onDragEnd();\n })\n );\n\n this.listeners.push(\n this.renderer.listen(element, 'dragover', (event: DragEvent) => {\n event.preventDefault();\n })\n );\n\n // Mobile/Touch events\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchstart', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchStart(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchmove', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchMove(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchend', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchEnd(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchcancel', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchCancel(event);\n })\n );\n });\n }\n\n // Desktop drag methods\n private onDragStart(event: DragEvent) {\n this.isDragging = true;\n this.renderer.addClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n const dataTransfer = event.dataTransfer;\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n dataTransfer.setData('text/plain', '');\n this.createDragImage(dataTransfer, this.elementRef.nativeElement, event);\n }\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragStart(this, event);\n });\n }\n }\n\n private onDragEnd() {\n this.isDragging = false;\n this.renderer.removeClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragEnd();\n });\n }\n }\n\n // Touch/Mobile drag methods\n private onTouchStart(event: TouchEvent) {\n const touch = event.touches[0];\n if (!touch) return;\n\n this.touchIdentifier = touch.identifier;\n this.touchStartPosition = { x: touch.clientX, y: touch.clientY };\n this.touchCurrentPosition = { x: touch.clientX, y: touch.clientY };\n this.isTouchDragging = false;\n\n // Prevenir scroll enquanto toca\n event.preventDefault();\n }\n\n private onTouchMove(event: TouchEvent) {\n if (this.touchIdentifier === undefined) return;\n\n const touch = this.findTouch(event.touches, this.touchIdentifier);\n if (!touch) return;\n\n this.touchCurrentPosition = { x: touch.clientX, y: touch.clientY };\n\n const deltaX = Math.abs(touch.clientX - this.touchStartPosition.x);\n const deltaY = Math.abs(touch.clientY - this.touchStartPosition.y);\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n if (!this.isTouchDragging && distance > this.touchDragThreshold) {\n // Iniciar drag\n this.isTouchDragging = true;\n this.startTouchDrag(touch);\n }\n\n if (this.isTouchDragging) {\n this.updateTouchDrag(touch);\n event.preventDefault();\n }\n }\n\n private onTouchEnd(event: TouchEvent) {\n if (this.touchIdentifier === undefined) return;\n\n const touch = this.findTouch(event.changedTouches, this.touchIdentifier);\n if (!touch) return;\n\n if (this.isTouchDragging) {\n this.endTouchDrag(touch);\n }\n\n this.resetTouchState();\n }\n\n private onTouchCancel(event: TouchEvent) {\n if (this.isTouchDragging) {\n this.cancelTouchDrag();\n }\n this.resetTouchState();\n }\n\n private startTouchDrag(touch: Touch) {\n this.isDragging = true;\n this.renderer.addClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n // Criar preview visual do drag\n this.createTouchDragPreview();\n\n if (this.dropList) {\n this.ngZone.run(() => {\n // Simular DragEvent para compatibilidade\n const fakeEvent = this.createFakeDragEvent('dragstart', touch);\n this.dropList.onDragStart(this, fakeEvent);\n });\n }\n }\n\n private updateTouchDrag(touch: Touch) {\n if (this.dragPreview) {\n // Atualizar posição do preview\n this.renderer.setStyle(this.dragPreview, 'left', `${touch.clientX - 50}px`);\n this.renderer.setStyle(this.dragPreview, 'top', `${touch.clientY - 25}px`);\n }\n\n // Verificar drop zones\n this.checkDropZones(touch);\n }\n\n private endTouchDrag(touch: Touch) {\n // Encontrar elemento sob o touch\n const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY);\n const dropZone = this.findDropZone(elementBelow);\n\n if (dropZone && this.dropList) {\n this.ngZone.run(() => {\n // Simular drop event\n const fakeEvent = this.createFakeDragEvent('drop', touch);\n dropZone.handleTouchDrop(fakeEvent, this);\n });\n }\n\n this.cleanupTouchDrag();\n }\n\n private cancelTouchDrag() {\n this.cleanupTouchDrag();\n }\n\n private createTouchDragPreview() {\n const element = this.elementRef.nativeElement;\n const rect = element.getBoundingClientRect();\n\n // Criar clone do elemento para preview\n this.dragPreview = element.cloneNode(true) as HTMLElement;\n\n // Estilizar preview\n this.renderer.setStyle(this.dragPreview, 'position', 'fixed');\n this.renderer.setStyle(this.dragPreview, 'z-index', '9999');\n this.renderer.setStyle(this.dragPreview, 'pointer-events', 'none');\n this.renderer.setStyle(this.dragPreview, 'width', `${rect.width}px`);\n this.renderer.setStyle(this.dragPreview, 'height', `${rect.height}px`);\n this.renderer.setStyle(this.dragPreview, 'opacity', '0.8');\n this.renderer.setStyle(this.dragPreview, 'transform', 'rotate(5deg)');\n this.renderer.setStyle(this.dragPreview, 'box-shadow', '0 8px 25px rgba(0,0,0,0.3)');\n\n // Adicionar ao DOM\n document.body.appendChild(this.dragPreview);\n }\n\n private checkDropZones(touch: Touch) {\n const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY);\n const dropZone = this.findDropZone(elementBelow);\n\n // Notificar drop zones sobre o drag over\n if (dropZone && this.dropList) {\n this.ngZone.run(() => {\n const fakeEvent = this.createFakeDragEvent('dragover', touch);\n dropZone.handleTouchDragOver(fakeEvent);\n });\n }\n }\n\n private findDropZone(element: Element | null): any {\n return this.dropListService.findDropZone(element);\n }\n\n private findAngularComponent(element: Element): any {\n // Método mantido para compatibilidade, mas agora usa o serviço\n return this.dropListService.findDropZone(element);\n }\n\n private createFakeDragEvent(type: string, touch: Touch): any {\n return {\n type,\n clientX: touch.clientX,\n clientY: touch.clientY,\n preventDefault: () => {},\n dataTransfer: {\n effectAllowed: 'move',\n dropEffect: 'move',\n setData: () => {},\n getData: () => '',\n setDragImage: () => {}\n }\n };\n }\n\n private findTouch(touches: TouchList, identifier: number): Touch | null {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === identifier) {\n return touches[i];\n }\n }\n return null;\n }\n\n private resetTouchState() {\n this.touchIdentifier = undefined;\n this.isTouchDragging = false;\n this.isDragging = false;\n this.renderer.removeClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragEnd();\n });\n }\n }\n\n private cleanupTouchDrag() {\n if (this.dragPreview) {\n document.body.removeChild(this.dragPreview);\n this.dragPreview = undefined;\n }\n }\n\n private createDragImage(dataTransfer: DataTransfer, element: HTMLElement, event: DragEvent) {\n try {\n const rect = element.getBoundingClientRect();\n const offsetX = event.clientX - rect.left;\n const offsetY = event.clientY - rect.top;\n dataTransfer.setDragImage(element, offsetX, offsetY);\n } catch (error) {\n console.warn('Erro ao configurar drag image:', error);\n }\n }\n\n private cleanupListeners() {\n this.listeners.forEach(cleanup => cleanup());\n this.listeners = [];\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n ContentChildren,\n QueryList,\n AfterContentInit,\n HostBinding\n} from '@angular/core';\nimport { MatchaDragDirective } from '../directives/drag.directive';\nimport { MatchaDropListService } from '../services/drop-list.service';\n\nexport interface MatchaDropListDroppedEvent<T = any> {\n previousIndex: number;\n currentIndex: number;\n item: T;\n container: MatchaDropListComponent;\n previousContainer?: MatchaDropListComponent;\n data: T[];\n}\n\nexport interface MatchaDropListConnectedToEvent<T = any> {\n sourceData: T[];\n targetData: T[];\n item: T;\n previousIndex: number;\n currentIndex: number;\n}\n\n@Component({\n selector: 'matcha-drop-list',\n templateUrl: './drop-list.component.html',\n standalone:false\n})\nexport class MatchaDropListComponent<T = any> implements OnInit, OnDestroy, AfterContentInit {\n @Input() matchaDropListData: T[] = [];\n @Input() matchaDropListDisabled: boolean = false;\n @Input() matchaDropListConnectedTo: MatchaDropListComponent[] = [];\n @Input() matchaDropListSortingDisabled: boolean = false;\n @Input() matchaDropListAcceptPredicate?: (item: any, sourceContainer: MatchaDropListComponent, targetContainer: MatchaDropListComponent) => boolean;\n\n @Output() matchaDropListDropped = new EventEmitter<MatchaDropListDroppedEvent<T>>();\n\n @ContentChildren(MatchaDragDirective) dragItems!: QueryList<MatchaDragDirective>;\n\n @HostBinding('class.matcha-drop-list') get dropListClass() {\n return true;\n }\n\n // Estado do drag\n private currentDragItem?: MatchaDragDirective;\n private dragStartIndex: number = -1;\n private sourceContainer?: MatchaDropListComponent;\n\n // Estado visual\n public isReceivingDrag = false;\n public showDropIndicator = false;\n public dropIndicatorPosition = 0;\n public canAcceptDrop = true; // Controla se pode aceitar o drop atual\n private calculatedDropIndex = 0; // Armazenar o índice calculado durante o dragover\n\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private dropListService: MatchaDropListService\n ) {}\n\n ngOnInit() {\n this.setupDropZone();\n // Registrar este drop zone no serviço\n this.dropListService.registerDropZone(this.elementRef.nativeElement, this);\n }\n\n ngAfterContentInit() {\n // Configurar referência do drop list para cada item drag\n this.dragItems.forEach(dragItem => {\n dragItem.setDropList(this);\n });\n\n // Monitorar mudanças nos itens drag\n this.dragItems.changes.subscribe(() => {\n this.dragItems.forEach(dragItem => {\n dragItem.setDropList(this);\n });\n });\n }\n\n ngOnDestroy() {\n // Desregistrar do serviço\n this.dropListService.unregisterDropZone(this.elementRef.nativeElement);\n // Cleanup automático via renderer\n }\n\n private setupDropZone() {\n const element = this.elementRef.nativeElement;\n\n this.renderer.listen(element, 'dragover', (event: DragEvent) => {\n event.preventDefault();\n\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n\n // Verificar se pode aceitar o drop\n this.canAcceptDrop = this.canAcceptCurrentDrop();\n\n if (this.canAcceptDrop) {\n event.dataTransfer!.dropEffect = 'move';\n // Mostrar linha indicadora\n this.updateDropIndicator(event);\n } else {\n event.dataTransfer!.dropEffect = 'none';\n this.showDropIndicator = false;\n }\n });\n\n this.renderer.listen(element, 'dragenter', (event: DragEvent) => {\n event.preventDefault();\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n });\n\n this.renderer.listen(element, 'dragleave', (event: DragEvent) => {\n const rect = element.getBoundingClientRect();\n const x = event.clientX;\n const y = event.clientY;\n\n // Verificar se realmente saiu do container\n if (x < rect.left || x > rect.right || y < rect.top || y > rect.bottom) {\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n }\n });\n\n this.renderer.listen(element, 'drop', (event: DragEvent) => {\n event.preventDefault();\n this.handleDrop(event);\n });\n }\n\n private updateDropIndicator(event: DragEvent) {\n if (!this.currentDragItem) return;\n\n const containerRect = this.elementRef.nativeElement.getBoundingClientRect();\n const y = event.clientY - containerRect.top;\n\n const dragItemElements = this.dragItems.toArray().map(item => item.elementRef.nativeElement);\n\n let indicatorY = 0;\n let dropIndex = 0;\n let found = false;\n\n for (let i = 0; i < dragItemElements.length; i++) {\n const itemRect = dragItemElements[i].getBoundingClientRect();\n const itemY = itemRect.top - containerRect.top;\n const itemHeight = itemRect.height;\n const itemCenter = itemY + itemHeight / 2;\n\n if (y < itemCenter) {\n indicatorY = itemY;\n dropIndex = i;\n found = true;\n break;\n }\n }\n\n if (!found && dragItemElements.length > 0) {\n // Posicionar no final da lista\n const lastItem = dragItemElements[dragItemElements.length - 1];\n const lastRect = lastItem.getBoundingClientRect();\n indicatorY = lastRect.bottom - containerRect.top;\n dropIndex = dragItemElements.length;\n }\n\n // Armazenar tanto a posição visual quanto o índice calculado\n this.dropIndicatorPosition = indicatorY;\n this.calculatedDropIndex = dropIndex;\n this.showDropIndicator = true;\n }\n\n // Métodos chamados pelo directive\n onDragStart(dragItem: MatchaDragDirective, event: DragEvent) {\n if (this.matchaDropListDisabled) return;\n\n this.currentDragItem = dragItem;\n this.sourceContainer = this;\n this.dragStartIndex = this.getDragItemIndex(dragItem);\n\n // Notificar containers conectados\n this.matchaDropListConnectedTo.forEach(container => {\n container.notifyDragStart(dragItem, this);\n });\n }\n\n onDragEnd() {\n this.currentDragItem = undefined;\n this.sourceContainer = undefined;\n this.dragStartIndex = -1;\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n this.calculatedDropIndex = 0;\n\n // Notificar containers conectados\n this.matchaDropListConnectedTo.forEach(container => {\n container.notifyDragEnd();\n });\n }\n\n private handleDrop(event: DragEvent) {\n if (!this.currentDragItem || this.matchaDropListDisabled) return;\n\n // Verificar se pode aceitar o drop\n if (!this.canAcceptCurrentDrop()) {\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n return;\n }\n\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n\n // Usar o índice já calculado durante o dragover ao invés de recalcular\n const dropIndex = this.calculatedDropIndex;\n\n if (this.sourceContainer === this) {\n // Drop na mesma lista - reordenar\n if (!this.matchaDropListSortingDisabled && dropIndex !== this.dragStartIndex) {\n this.reorderItems(this.dragStartIndex, dropIndex);\n }\n } else if (this.sourceContainer) {\n // Drop entre listas - transferir\n this.transferItem(this.currentDragItem, this.sourceContainer, this, dropIndex);\n }\n }\n\n private reorderItems(fromIndex: number, toIndex: number) {\n const newData = [...this.matchaDropListData];\n const item = newData[fromIndex];\n\n // Remover item da posição original\n newData.splice(fromIndex, 1);\n\n // Calcular nova posição\n const insertIndex = toIndex > fromIndex ? toIndex - 1 : toIndex;\n\n // Inserir na nova posição\n newData.splice(insertIndex, 0, item);\n\n this.matchaDropListData = newData;\n\n // Emitir evento\n this.matchaDropListDropped.emit({\n previousIndex: fromIndex,\n currentIndex: insertIndex,\n item,\n container: this,\n data: this.matchaDropListData\n });\n }\n\n private transferItem(dragItem: MatchaDragDirective, sourceContainer: MatchaDropListComponent, targetContainer: MatchaDropListComponent, targetIndex: number) {\n const item = dragItem.matchaDragData;\n const sourceIndex = sourceContainer.dragStartIndex;\n\n // Remover do container origem\n const sourceData = [...sourceContainer.matchaDropListData];\n sourceData.splice(sourceIndex, 1);\n sourceContainer.matchaDropListData = sourceData;\n\n // Adicionar ao container destino\n const targetData = [...targetContainer.matchaDropListData];\n targetData.splice(targetIndex, 0, item);\n targetContainer.matchaDropListData = targetData;\n\n // Emitir eventos\n targetContainer.matchaDropListDropped.emit({\n previousIndex: sourceIndex,\n currentIndex: targetIndex,\n item,\n container: targetContainer,\n previousContainer: sourceContainer,\n data: targetContainer.matchaDropListData\n });\n\n sourceContainer.matchaDropListDropped.emit({\n previousIndex: sourceIndex,\n currentIndex: -1,\n item,\n container: sourceContainer,\n data: sourceContainer.matchaDropListData\n });\n }\n\n private getDragItemIndex(dragItem: MatchaDragDirective): number {\n return this.dragItems.toArray().indexOf(dragItem);\n }\n\n // Métodos para comunicação entre containers conectados\n notifyDragStart(dragItem: MatchaDragDirective, sourceContainer: MatchaDropListComponent) {\n this.currentDragItem = dragItem;\n this.sourceContainer = sourceContainer;\n this.dragStartIndex = sourceContainer.getDragItemIndex(dragItem);\n }\n\n notifyDragEnd() {\n this.currentDragItem = undefined;\n this.sourceContainer = undefined;\n this.dragStartIndex = -1;\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n this.calculatedDropIndex = 0;\n }\n\n private canAcceptCurrentDrop(): boolean {\n if (!this.currentDragItem || !this.sourceContainer) {\n return false;\n }\n\n if (this.matchaDropListAcceptPredicate) {\n const sourceContainer = this.sourceContainer;\n const targetContainer = this;\n const item = this.currentDragItem.matchaDragData;\n return this.matchaDropListAcceptPredicate(item, sourceContainer, targetContainer);\n }\n return true;\n }\n\n // Métodos para suporte touch/mobile\n handleTouchDragOver(event: any) {\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n\n // Verificar se pode aceitar o drop\n this.canAcceptDrop = this.canAcceptCurrentDrop();\n\n if (this.canAcceptDrop) {\n // Mostrar linha indicadora\n this.updateDropIndicator(event);\n } else {\n this.showDropIndicator = false;\n }\n }\n\n handleTouchDrop(event: any, dragItem: any) {\n if (!this.currentDragItem || this.matchaDropListDisabled) return;\n\n // Verificar se pode aceitar o drop\n if (!this.canAcceptCurrentDrop()) {\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n return;\n }\n\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n\n // Usar o índice já calculado durante o dragover\n const dropIndex = this.calculatedDropIndex;\n\n if (this.sourceContainer === this) {\n // Drop na mesma lista - reordenar\n if (!this.matchaDropListSortingDisabled && dropIndex !== this.dragStartIndex) {\n this.reorderItems(this.dragStartIndex, dropIndex);\n }\n } else if (this.sourceContainer) {\n // Drop entre listas - transferir\n this.transferItem(this.currentDragItem, this.sourceContainer, this, dropIndex);\n }\n }\n}\n","<div class=\"matcha-drop-list-container\"\n [class.matcha-drop-list-receiving]=\"isReceivingDrag\"\n [class.matcha-drop-list-disabled]=\"matchaDropListDisabled\"\n [class.matcha-drop-list-can-accept]=\"isReceivingDrag && canAcceptDrop\"\n [class.matcha-drop-list-cannot-accept]=\"isReceivingDrag && !canAcceptDrop\">\n <ng-content></ng-content>\n\n <!-- Linha indicadora de drop -->\n <div class=\"matcha-drop-indicator\"\n [class.active]=\"showDropIndicator && canAcceptDrop\"\n [style.top.px]=\"dropIndicatorPosition\">\n </div>\n\n <!-- Placeholder para lista vazia -->\n <div *ngIf=\"isReceivingDrag && dragItems.length === 0\"\n class=\"matcha-drop-list-placeholder\">\n <div class=\"matcha-drop-list-empty-placeholder\"\n [class.can-accept]=\"canAcceptDrop\"\n [class.cannot-accept]=\"!canAcceptDrop\">\n <span [class.i-matcha-action_sign_success]=\"canAcceptDrop\"\n [class.i-matcha-action_sign_error]=\"!canAcceptDrop\"\n [class.color-green]=\"canAcceptDrop\"\n [class.color-red]=\"!canAcceptDrop\"\n class=\"i-size-lg\"></span>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-page-layout',\n templateUrl: './page-layout.component.html',\n styleUrls: ['./page-layout.component.scss'],\n standalone: false,\n})\nexport class MatchaPageLayoutComponent {\n\n}\n","<div class=\"page-layout carded fullwidth\">\n <!-- TOP BACKGROUND -->\n <div class=\"top-bg\"></div>\n <!--/ TOP BACKGROUND -->\n\n <!-- CENTER -->\n <div class=\"center pt-24 gap-16\">\n <!-- CONTENT CARD -->\n <div class=\"content-card flatten flex-column h-100-p\">\n <!-- CONTENT -->\n <div class=\"content flex-column h-100-p\">\n <div class=\"content-card card-flat flex-column h-100-p background-bg border-radius-0 pb-16\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n standalone: false\n})\nexport class MatchaAvatarComponent {\n @Input() src: string = '';\n @Input() name: string = '';\n \n @Input() size: 'tiny' | 'small' | 'medium' | 'large' | 'huge' = 'medium';\n @Input() color: string = 'blue'; \n\n private _disabled = false;\n @Input()\n set disabled(value: boolean | string) {\n\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n public get initials(): string {\n if (!this.name.trim()) {\n return '';\n }\n\n const words = this.name.trim().split(/\\s+/);\n \n if (this.size === 'tiny') {\n return words[0].charAt(0).toUpperCase();\n }\n\n if (words.length >= 2) {\n\n return (words[0].charAt(0) + words[1].charAt(0)).toUpperCase();\n } else if (words.length === 1 && words[0].length >= 2) {\n\n return words[0].substring(0, 2).toUpperCase();\n } else {\n\n return words[0].charAt(0).toUpperCase();\n }\n }\n\n public get hasImage(): boolean {\n return !!(this.src && this.src.trim() !== '');\n }\n\n public get hasName(): boolean {\n return !!(this.name && this.name.trim() !== '');\n }\n\n public get showDefaultIcon(): boolean {\n return !this.hasImage && !this.hasName;\n }\n\n public get sizeClass(): string {\n return `matcha-avatar-${this.size}`;\n }\n\n public get avatarClasses(): string {\n let classes = `matcha-avatar radius-full ${this.sizeClass}`;\n \n if (!this.showDefaultIcon) {\n classes += ' ' + this.color;\n }\n \n if (this.disabled) {\n classes += ' color-disabled';\n }\n \n return classes;\n }\n}\n","<span [class]=\"avatarClasses\">\n <!-- Imagem do usuário -->\n <img \n *ngIf=\"hasImage\" \n [src]=\"src\" \n [alt]=\"name || 'Avatar'\"\n class=\"matcha-avatar-image\">\n \n <!-- Iniciais do nome -->\n <span \n *ngIf=\"!hasImage && hasName\" \n class=\"matcha-avatar-initials\">\n {{ initials }}\n </span>\n \n\n <svg \n *ngIf=\"showDefaultIcon\"\n class=\"matcha-avatar-icon\"\n viewBox=\"0 0 56 56\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\">\n <path \n fill-rule=\"evenodd\" \n clip-rule=\"evenodd\" \n d=\"M28 0C12.544 0 0 12.544 0 28C0 43.456 12.544 56 28 56C43.456 56 56 43.456 56 28C56 12.544 43.456 0 28 0ZM28.0022 8.4C32.6502 8.4 36.4022 12.152 36.4022 16.8C36.4022 21.448 32.6502 25.2 28.0022 25.2C23.3542 25.2 19.6022 21.448 19.6022 16.8C19.6022 12.152 23.3542 8.4 28.0022 8.4ZM28.0022 48.1601C21.0022 48.1601 14.8142 44.5761 11.2022 39.1441C11.2862 33.5721 22.4022 30.5201 28.0022 30.5201C33.5742 30.5201 44.7182 33.5721 44.8022 39.1441C41.1902 44.5761 35.0022 48.1601 28.0022 48.1601Z\" \n fill=\"currentColor\"/>\n </svg>\n </span>","import { Component, Input, HostBinding, HostListener, Optional, ElementRef, Output, EventEmitter, Inject } from '@angular/core';\nimport { MatchaOptionParent, MATCHA_OPTION_PARENT } from './matcha-option-parent.interface';\n\n@Component({\n selector: 'matcha-option',\n template: `<ng-content></ng-content>`,\n host: {\n class: 'matcha-option',\n role: 'option',\n tabindex: '0'\n },\n standalone: false,\n})\nexport class MatchaOptionComponent {\n @Input() value: any;\n @Input() disabled = false;\n @HostBinding('attr.aria-selected') selected = false;\n\n // ✅ EventEmitters para uso standalone\n @Output() optionClick = new EventEmitter<any>();\n @Output() optionSelect = new EventEmitter<MatchaOptionComponent>();\n\n constructor(\n @Optional() @Inject(MATCHA_OPTION_PARENT) private parent: MatchaOptionParent | null,\n private elRef: ElementRef\n ) {}\n\n @HostListener('click')\n onClick() {\n if (this.disabled) return;\n\n console.log('MatchaOption: Clique na opção', {\n value: this.value,\n parent: this.parent,\n disabled: this.disabled\n });\n\n // ✅ Notifica o pai (se houver) - qualquer componente que implemente MatchaOptionParent\n if (this.parent) {\n console.log('MatchaOption: Usando parent.selectOption');\n this.parent.selectOption(this);\n } else {\n console.log('MatchaOption: Usando fallback findParentAndSelect');\n // Fallback: busca o pai via DOM\n this.findParentAndSelect();\n }\n\n // ✅ Emite eventos para uso standalone\n this.optionClick.emit(this.value);\n this.optionSelect.emit(this);\n }\n\n private findParentAndSelect() {\n // Busca o elemento pai matcha-autocomplete ou matcha-select\n const autocompleteEl = this.elRef.nativeElement.closest('matcha-autocomplete');\n const selectEl = this.elRef.nativeElement.closest('matcha-select');\n\n if (autocompleteEl) {\n console.log('MatchaOption: Encontrou autocomplete element', autocompleteEl);\n // Dispara um evento customizado que o autocomplete pode escutar\n const event = new CustomEvent('matcha-option-selected', {\n detail: { option: this, value: this.value },\n bubbles: true\n });\n autocompleteEl.dispatchEvent(event);\n console.log('MatchaOption: Evento customizado disparado', event);\n } else if (selectEl) {\n console.log('MatchaOption: Encontrou select element', selectEl);\n // Dispara um evento customizado que o select pode escutar\n const event = new CustomEvent('matcha-option-selected', {\n detail: { option: this, value: this.value },\n bubbles: true\n });\n selectEl.dispatchEvent(event);\n console.log('MatchaOption: Evento customizado disparado para select', event);\n } else {\n console.log('MatchaOption: Não encontrou elemento pai (autocomplete ou select)');\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n ev.preventDefault();\n this.onClick();\n }\n }\n\n // Getter para acessar o elemento nativo (usado para scroll)\n get nativeElement(): HTMLElement {\n return this.elRef.nativeElement;\n }\n\n // Método público para obter o texto interno da opção\n getTextContent(): string {\n return this.elRef.nativeElement.textContent?.trim() || '';\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ViewChild,\n TemplateRef,\n OnDestroy,\n OnInit,\n OnChanges,\n ChangeDetectorRef,\n AfterViewInit\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { max, takeUntil } from 'rxjs/operators';\n\nexport interface PanelPosition {\n top: number;\n left: number;\n width: number;\n maxHeight?: number;\n}\n\nexport type PanelPlacement = 'bottom' | 'top' | 'auto';\n\n@Component({\n selector: 'matcha-panel',\n template: `\n <div class=\"matcha-panel-container\" style=\"position: relative;\">\n <ng-container *ngIf=\"open\">\n <!-- Painel -->\n <div\n #panel\n class=\"matcha-panel\"\n [class.matcha-panel-top]=\"placement === 'top'\"\n [class.matcha-panel-bottom]=\"placement === 'bottom'\"\n [ngStyle]=\"panelStyle\"\n role=\"listbox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-hidden]=\"!open\">\n <ng-content></ng-content>\n </div>\n </ng-container>\n </div>\n `,\n standalone: false\n})\nexport class MatchaPanelComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n @Input() placement: PanelPlacement = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n @Input() offset = 4; // Espaçamento entre trigger e painel\n @Input() triggerElement?: HTMLElement;\n @Input() open = false;\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n\n @ViewChild('panel', { static: false }) panelRef?: ElementRef<HTMLElement>;\n panelStyle: { [key: string]: any } = {};\n private destroy$ = new Subject<void>();\n private scrollListener?: () => void;\n private resizeListener?: () => void;\n\n constructor(\n private elRef: ElementRef,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngOnInit() {\n // Inicialização básica\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.cleanupListeners();\n }\n\n /**\n * Anexa o painel a um elemento trigger\n */\n attachTo(trigger: HTMLElement) {\n this.triggerElement = trigger;\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada antes de calcular posição\n if (this.triggerElement && this.open) {\n this.cdr.detectChanges();\n this.updatePosition();\n }\n }\n\n /**\n * Lifecycle hook para detectar mudanças no triggerElement\n */\n ngOnChanges() {\n // Só logar quando há mudanças significativas\n if (this.triggerElement && this.open) {\n console.log('MatchaPanel: ngOnChanges - painel aberto, atualizando posição');\n // Usar detectChanges para forçar a detecção de mudanças\n this.cdr.detectChanges();\n this.updatePosition();\n }\n }\n\n /**\n * Abre o painel\n */\n openPanel() {\n if (!this.triggerElement) {\n console.log('MatchaPanel: triggerElement não encontrado');\n return;\n }\n\n // Força a detecção de mudanças antes de atualizar a posição\n this.cdr.detectChanges();\n this.updatePosition();\n this.setupListeners();\n this.opened.emit();\n }\n\n /**\n * Fecha o painel\n */\n closePanel() {\n console.log('MatchaPanel: Fechando painel', {\n open: this.open,\n triggerElement: this.triggerElement,\n stackTrace: new Error().stack\n });\n this.cleanupListeners();\n this.closed.emit();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n }\n\n /**\n * Alterna o estado do painel\n */\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n /**\n * Atualiza a posição do painel (simplificado para absolute)\n */\n updatePosition() {\n if (!this.triggerElement) {\n console.log('MatchaPanel: updatePosition - triggerElement não encontrado');\n return;\n }\n const position = this.calculatePosition();\n this.panelStyle = {\n // top: `${position.top}px`,\n // left: `${position.left}px`,\n // minWidth: `${position.width}px`,\n top: 0,\n left: 0,\n width: '100%',\n maxHeight: `${position.maxHeight || this.maxHeight}px`,\n zIndex: 1\n };\n }\n\n /**\n * Calcula a posição ideal do painel (simplificado para absolute)\n */\n private calculatePosition(): PanelPosition {\n if (!this.triggerElement) {\n return { top: 0, left: 0, width: this.minWidth };\n }\n\n const rect = this.triggerElement.getBoundingClientRect();\n const containerRect = this.triggerElement.offsetParent?.getBoundingClientRect() || { top: 0, left: 0 };\n\n let top: number;\n let left: number;\n let width = Math.max(rect.width, this.minWidth);\n let maxHeight = this.maxHeight;\n\n // Calcular posição horizontal (relativa ao container)\n left = rect.left - containerRect.left;\n\n // Calcular posição vertical (relativa ao container)\n if (this.placement === 'top') {\n // Posicionar acima\n top = rect.top - containerRect.top - this.maxHeight - this.offset;\n } else {\n // Posicionar abaixo (padrão)\n top = rect.bottom - containerRect.top + this.offset;\n }\n\n return { top, left, width, maxHeight };\n }\n\n /**\n * Configura listeners para scroll e resize\n */\n private setupListeners() {\n // Com position absolute, não precisamos de listeners de scroll/resize\n console.log('MatchaPanel: setupListeners - position absolute, sem listeners necessários');\n }\n\n /**\n * Remove listeners\n */\n private cleanupListeners() {\n if (this.scrollListener) {\n window.removeEventListener('scroll', this.scrollListener);\n this.scrollListener = undefined;\n }\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n this.resizeListener = undefined;\n }\n }\n\n}\n\n","import {\n Component, ContentChildren, QueryList, ElementRef,\n AfterContentInit, Renderer2, ViewEncapsulation, ChangeDetectorRef,\n Input, Output, EventEmitter, ViewChild, AfterViewInit\n} from '@angular/core';\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\nimport { MatchaOptionParent } from '../matcha-option/matcha-option-parent.interface';\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\n\n@Component({\n selector: 'matcha-autocomplete',\n templateUrl: './matcha-autocomplete.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class MatchaAutocompleteComponent implements AfterContentInit, AfterViewInit, MatchaOptionParent {\n @ContentChildren(MatchaOptionComponent, { descendants: true }) options!: QueryList<MatchaOptionComponent>;\n @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\n\n // Armazenar o valor selecionado independente da QueryList\n private selectedValue: any = undefined;\n\n // Configurações do painel\n @Input() placement: 'bottom' | 'top' | 'auto' = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n\n // Funcionalidades avançadas\n @Input() autoSelectOnBlur: boolean = false;\n @Input() displayWith: ((value: any) => string | null) | null = null;\n @Input() displayProperty: string = 'name';\n @Input() showClearButton: boolean = false;\n @Input() clearButtonIcon: string = 'action_close';\n @Input() clearButtonAriaLabel: string = 'Limpar seleção';\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n @Output() cleared = new EventEmitter<void>();\n @Output() autoSelected = new EventEmitter<any>();\n\n open = false;\n triggerElement?: HTMLElement;\n private activeIndex = -1;\n\n constructor(\n public elRef: ElementRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterContentInit() {\n // quando options mudarem, resetamos estado relevante\n this.options.changes.subscribe(() => {\n if (this.open) {\n this.resetActive();\n this.cdr.detectChanges();\n }\n });\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada\n this.cdr.detectChanges();\n\n // Escuta eventos customizados das opções\n this.elRef.nativeElement.addEventListener('matcha-option-selected', (event: any) => {\n console.log('MatchaAutocomplete: Evento matcha-option-selected recebido', event.detail);\n const { option, value } = event.detail;\n this.selectOption(option);\n });\n\n // Escuta evento para fechar este painel quando outro for aberto\n this.elRef.nativeElement.addEventListener('matcha-autocomplete-close', () => {\n if (this.open) {\n console.log('MatchaAutocomplete: Fechando painel por evento de outro autocomplete');\n this.closePanel();\n }\n });\n }\n\n attachTo(input: HTMLElement) {\n this.triggerElement = input;\n }\n\n private closeOtherPanels() {\n // Buscar todos os outros autocompletes na página e fechá-los\n const allAutocompletes = document.querySelectorAll('matcha-autocomplete');\n allAutocompletes.forEach(autocompleteEl => {\n if (autocompleteEl !== this.elRef.nativeElement) {\n // Disparar evento para fechar outros painéis\n const closeEvent = new CustomEvent('matcha-autocomplete-close', {\n bubbles: true\n });\n autocompleteEl.dispatchEvent(closeEvent);\n }\n });\n }\n\n private notifyDirectiveOfSelection(data: { value: any; displayText?: string }) {\n // Disparar evento customizado para notificar a diretiva sobre a seleção\n const selectionEvent = new CustomEvent('matcha-autocomplete-selection', {\n detail: data,\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(selectionEvent);\n console.log('MatchaAutocomplete: Evento de seleção disparado', data);\n }\n\n openPanel() {\n if (!this.triggerElement) {\n console.log('MatchaAutocomplete: triggerElement não encontrado');\n return;\n }\n\n console.log('MatchaAutocomplete: Abrindo painel', {\n triggerElement: this.triggerElement,\n panel: this.panel,\n open: this.open\n });\n\n // Fechar outros painéis abertos antes de abrir este\n this.closeOtherPanels();\n\n this.open = true;\n this.cdr.detectChanges(); // Força detecção de mudanças\n\n this.panel.attachTo(this.triggerElement);\n this.panel.openPanel();\n this.resetActive();\n this.opened.emit();\n }\n\n closePanel() {\n console.log('MatchaAutocomplete: Fechando painel', {\n open: this.open,\n stackTrace: new Error().stack\n });\n this.open = false;\n this.activeIndex = -1;\n this.updateSelectedStates();\n this.panel.closePanel();\n this.closed.emit();\n }\n\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n\n resetActive() {\n this.activeIndex = -1;\n this.updateSelectedStates();\n }\n\n private updateSelectedStates() {\n const items = this.options.toArray();\n items.forEach((opt, i) => opt.selected = i === this.activeIndex);\n }\n\n highlightNext() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex + 1) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n highlightPrevious() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex - 1 + length) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n private scrollToActive() {\n const opts = this.options.toArray();\n if (this.activeIndex < 0 || this.activeIndex >= opts.length) return;\n const host = opts[this.activeIndex].nativeElement;\n if (host && host.scrollIntoView) {\n host.scrollIntoView({ block: 'nearest' });\n }\n }\n\n selectActive() {\n if (this.activeIndex < 0) return;\n const opt = this.options.toArray()[this.activeIndex];\n if (opt?.disabled) return;\n this.selectOption(opt);\n }\n\n // chamado por matcha-option quando clicado\n selectOption(option: MatchaOptionComponent) {\n console.log('MatchaAutocomplete: Opção selecionada', {\n option,\n value: option.value,\n selected: option.selected,\n optionsLength: this.options.length,\n allOptions: this.options.toArray()\n });\n\n // Armazenar o valor selecionado\n this.selectedValue = option.value;\n\n // Marcar a opção como selecionada diretamente\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n console.log('MatchaAutocomplete: Após marcar seleção', {\n selectedOption: option,\n selected: option.selected,\n selectedValue: this.selectedValue,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n // Notificar a diretiva sobre a seleção antes de fechar o painel\n // Passar tanto o valor quanto o texto de exibição\n const displayText = this.getDisplayValue(option.value);\n this.notifyDirectiveOfSelection({\n value: option.value,\n displayText: displayText\n });\n\n // Fechamos painel automaticamente\n console.log('MatchaAutocomplete: Fechando painel após seleção');\n this.closePanel();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n\n // indireto: a directive pode ler o value via getSelectedValue()\n }\n\n getSelectedValue() {\n // Usar o valor armazenado se disponível, senão buscar na QueryList\n const value = this.selectedValue !== undefined ? this.selectedValue : this.options.find(o => o.selected)?.value;\n\n console.log('MatchaAutocomplete: getSelectedValue chamado', {\n selectedValue: this.selectedValue,\n value,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n return value;\n }\n\n hasSelection(): boolean {\n return this.selectedValue !== undefined && this.selectedValue !== null;\n }\n\n clearSelection(): void {\n this.selectedValue = undefined;\n\n // Limpar seleção visual das opções\n this.options.forEach(opt => {\n opt.selected = false;\n });\n\n // Notificar diretiva para limpar input\n const clearEvent = new CustomEvent('matcha-autocomplete-clear', {\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(clearEvent);\n\n // Emitir evento de limpeza\n this.cleared.emit();\n }\n\n /**\n * Obtém o texto de exibição de um valor\n * Usa displayWith se fornecido, senão displayProperty, senão retorna o valor como string\n */\n getDisplayValue(value: any): string {\n if (value == null) return '';\n\n if (this.displayWith) {\n return this.displayWith(value) || '';\n }\n\n if (typeof value === 'object' && this.displayProperty) {\n return value[this.displayProperty] || '';\n }\n\n return String(value);\n }\n\n /**\n * Busca uma opção que corresponda ao texto digitado\n * Compara usando displayWith ou displayProperty\n */\n findOptionByText(text: string): MatchaOptionComponent | null {\n if (!text || text.trim() === '') return null;\n\n const searchText = text.toLowerCase().trim();\n const options = this.options.toArray();\n\n for (const option of options) {\n if (option.disabled) continue;\n\n const displayText = this.getDisplayValue(option.value).toLowerCase().trim();\n\n if (displayText === searchText) {\n return option;\n }\n }\n\n return null;\n }\n}\n\n","<matcha-panel\n #panel\n [open]=\"open\"\n [placement]=\"placement\"\n [maxHeight]=\"maxHeight\"\n [minWidth]=\"minWidth\"\n [triggerElement]=\"triggerElement\"\n (opened)=\"opened.emit()\"\n (closed)=\"closed.emit()\">\n <div class=\"matcha-panel-content flex-column\">\n <ng-content></ng-content>\n </div>\n</matcha-panel>\n","import {\n Component, ContentChildren, QueryList, ElementRef,\n AfterContentInit, Renderer2, ViewEncapsulation, ChangeDetectorRef,\n Input, Output, EventEmitter, ViewChild, AfterViewInit, forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\nimport { MatchaOptionParent } from '../matcha-option/matcha-option-parent.interface';\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\n\n@Component({\n selector: 'matcha-select',\n templateUrl: './matcha-select.component.html',\n styleUrls: ['./matcha-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSelectComponent),\n multi: true\n }\n ]\n})\nexport class MatchaSelectComponent implements AfterContentInit, AfterViewInit, MatchaOptionParent, ControlValueAccessor {\n @ContentChildren(MatchaOptionComponent, { descendants: true }) options!: QueryList<MatchaOptionComponent>;\n @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\n\n // Armazenar o valor selecionado independente da QueryList\n selectedValue: any = undefined;\n selectedLabel: string = '';\n\n // Configurações do painel\n @Input() placement: 'bottom' | 'top' | 'auto' = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n @Input() placeholder = 'Selecione uma opção';\n @Input() disabled = false;\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n @Output() selectionChange = new EventEmitter<any>();\n\n open = false;\n triggerElement?: HTMLElement;\n private activeIndex = -1;\n\n // ControlValueAccessor properties\n private onChange = (value: any) => {};\n private onTouched = () => {};\n isDisabled = false;\n\n constructor(\n public elRef: ElementRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterContentInit() {\n // quando options mudarem, resetamos estado relevante\n this.options.changes.subscribe(() => {\n if (this.open) {\n this.resetActive();\n this.cdr.detectChanges();\n }\n });\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada\n this.cdr.detectChanges();\n\n // Configurar o trigger element\n this.triggerElement = this.elRef.nativeElement.querySelector('.matcha-select-trigger');\n if (this.triggerElement && this.panel) {\n this.panel.attachTo(this.triggerElement);\n }\n\n // Adicionar event listeners para navegação por teclado\n this.setupKeyboardNavigation();\n\n // Escuta eventos customizados das opções\n this.elRef.nativeElement.addEventListener('matcha-option-selected', (event: any) => {\n const { option, value } = event.detail;\n this.selectOption(option);\n });\n\n // Escuta evento para fechar este painel quando outro for aberto\n this.elRef.nativeElement.addEventListener('matcha-select-close', () => {\n if (this.open) {\n this.closePanel();\n }\n });\n\n // Escuta click outside para fechar o painel\n document.addEventListener('click', (event: MouseEvent) => {\n const target = event.target as Node;\n const isInsideSelect = this.elRef.nativeElement.contains(target);\n\n if (!isInsideSelect && this.open) {\n this.closePanel();\n }\n });\n }\n\n private setupKeyboardNavigation() {\n if (!this.triggerElement) return;\n\n this.triggerElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (this.disabled || this.isDisabled) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.handleArrowDown();\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.handleArrowUp();\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.handleEnterOrSpace();\n break;\n case 'Escape':\n event.preventDefault();\n this.handleEscape();\n break;\n case 'Tab':\n // Permitir navegação normal com Tab\n break;\n default:\n // Para outras teclas, não fazer nada\n break;\n }\n });\n }\n\n private handleArrowDown() {\n if (!this.open) {\n // Se o painel estiver fechado, selecionar a próxima opção diretamente\n this.selectNextOption();\n } else {\n // Se o painel estiver aberto, navegar para a próxima opção\n this.highlightNext();\n }\n }\n\n private handleArrowUp() {\n if (!this.open) {\n // Se o painel estiver fechado, selecionar a opção anterior diretamente\n this.selectPreviousOption();\n } else {\n // Se o painel estiver aberto, navegar para a opção anterior\n this.highlightPrevious();\n }\n }\n\n private handleEnterOrSpace() {\n if (this.open) {\n // Se o painel estiver aberto, selecionar a opção ativa\n this.selectActive();\n } else {\n // Se o painel estiver fechado, abrir\n this.openPanel();\n }\n }\n\n private handleEscape() {\n if (this.open) {\n this.closePanel();\n }\n }\n\n private closeOtherPanels() {\n // Buscar todos os outros selects na página e fechá-los\n const allSelects = document.querySelectorAll('matcha-select');\n allSelects.forEach(selectEl => {\n if (selectEl !== this.elRef.nativeElement) {\n // Disparar evento para fechar outros painéis\n const closeEvent = new CustomEvent('matcha-select-close', {\n bubbles: true\n });\n selectEl.dispatchEvent(closeEvent);\n }\n });\n }\n\n private notifyDirectiveOfSelection(value: any) {\n // Disparar evento customizado para notificar a diretiva sobre a seleção\n const selectionEvent = new CustomEvent('matcha-select-selection', {\n detail: { value },\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(selectionEvent);\n }\n\n onTriggerClick() {\n if (this.disabled || this.isDisabled) return;\n this.togglePanel();\n }\n\n openPanel() {\n if (this.disabled || this.isDisabled) {\n return;\n }\n\n // Garantir que o triggerElement está configurado\n if (!this.triggerElement) {\n this.triggerElement = this.elRef.nativeElement.querySelector('.matcha-select-trigger');\n }\n\n if (!this.triggerElement) {\n return;\n }\n\n // Fechar outros painéis abertos antes de abrir este\n this.closeOtherPanels();\n\n this.open = true;\n this.cdr.detectChanges(); // Força detecção de mudanças\n\n this.panel.attachTo(this.triggerElement);\n this.panel.openPanel();\n\n // Configurar o activeIndex baseado no valor selecionado\n this.setActiveIndexFromSelectedValue();\n this.updateSelectedStates();\n\n this.opened.emit();\n }\n\n closePanel() {\n this.open = false;\n this.activeIndex = -1;\n this.updateSelectedStates();\n this.panel.closePanel();\n this.closed.emit();\n\n // Marcar como touched quando o painel fecha (importante para validação)\n this.onTouched();\n }\n\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n resetActive() {\n this.activeIndex = -1;\n this.updateSelectedStates();\n }\n\n private setActiveIndexFromSelectedValue() {\n if (this.selectedValue !== undefined) {\n const options = this.options.toArray();\n const selectedIndex = options.findIndex(opt => opt.value === this.selectedValue);\n this.activeIndex = selectedIndex >= 0 ? selectedIndex : 0;\n } else {\n this.activeIndex = 0;\n }\n }\n\n private selectNextOption() {\n const options = this.options.toArray();\n if (!options.length) return;\n\n let currentIndex = -1;\n if (this.selectedValue !== undefined) {\n currentIndex = options.findIndex(opt => opt.value === this.selectedValue);\n }\n\n // Se não há seleção atual ou é a última opção, selecionar a primeira\n const nextIndex = currentIndex < 0 || currentIndex >= options.length - 1 ? 0 : currentIndex + 1;\n this.selectOptionByIndex(nextIndex);\n }\n\n private selectPreviousOption() {\n const options = this.options.toArray();\n if (!options.length) return;\n\n let currentIndex = -1;\n if (this.selectedValue !== undefined) {\n currentIndex = options.findIndex(opt => opt.value === this.selectedValue);\n }\n\n // Se não há seleção atual ou é a primeira opção, selecionar a última\n const prevIndex = currentIndex <= 0 ? options.length - 1 : currentIndex - 1;\n this.selectOptionByIndex(prevIndex);\n }\n\n private selectOptionByIndex(index: number) {\n const options = this.options.toArray();\n if (index < 0 || index >= options.length) return;\n\n const option = options[index];\n if (option.disabled) return;\n\n // Atualizar o valor selecionado\n this.selectedValue = option.value;\n // Armazenar o label (texto interno) da opção selecionada\n this.selectedLabel = option.getTextContent();\n\n // Marcar a opção como selecionada\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n // Notificar a diretiva sobre a seleção\n this.notifyDirectiveOfSelection(option.value);\n\n // Emitir evento de mudança de seleção\n this.selectionChange.emit(option.value);\n\n // Notificar o Angular Forms sobre a mudança\n this.onChange(option.value);\n this.onTouched();\n\n // Forçar detecção de mudanças\n this.cdr.detectChanges();\n }\n\n private updateSelectedStates() {\n const items = this.options.toArray();\n items.forEach((opt, i) => opt.selected = i === this.activeIndex);\n }\n\n highlightNext() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex + 1) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n highlightPrevious() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex - 1 + length) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n private scrollToActive() {\n const opts = this.options.toArray();\n if (this.activeIndex < 0 || this.activeIndex >= opts.length) return;\n const host = opts[this.activeIndex].nativeElement;\n if (host && host.scrollIntoView) {\n host.scrollIntoView({ block: 'nearest' });\n }\n }\n\n selectActive() {\n if (this.activeIndex < 0) return;\n const opt = this.options.toArray()[this.activeIndex];\n if (opt?.disabled) return;\n this.selectOption(opt);\n }\n\n // chamado por matcha-option quando clicado\n selectOption(option: MatchaOptionComponent) {\n // Armazenar o valor selecionado\n this.selectedValue = option.value;\n // Armazenar o label (texto interno) da opção selecionada\n this.selectedLabel = option.getTextContent();\n\n // Marcar a opção como selecionada diretamente\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n // Notificar a diretiva sobre a seleção antes de fechar o painel\n this.notifyDirectiveOfSelection(option.value);\n\n // Emitir evento de mudança de seleção\n this.selectionChange.emit(option.value);\n\n // Notificar o Angular Forms sobre a mudança\n this.onChange(option.value);\n this.onTouched();\n\n // Fechamos painel automaticamente\n this.closePanel();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n }\n\n getSelectedValue() {\n // Usar o valor armazenado se disponível, senão buscar na QueryList\n const value = this.selectedValue !== undefined ? this.selectedValue : this.options.find(o => o.selected)?.value;\n return value;\n }\n\n getSelectedLabel(): string {\n // Retorna o label armazenado ou placeholder\n return this.selectedLabel || '';\n }\n\n // Método para definir valor programaticamente\n setValue(value: any) {\n this.selectedValue = value;\n this.cdr.detectChanges();\n }\n\n // Método para limpar seleção\n clearSelection() {\n this.selectedValue = undefined;\n this.selectedLabel = '';\n this.options.forEach(o => o.selected = false);\n this.cdr.detectChanges();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any): void {\n this.selectedValue = value;\n // Atualizar o label quando o valor é definido programaticamente\n if (value !== undefined && value !== null) {\n const selectedOption = this.options?.find(o => o.value === value);\n if (selectedOption) {\n this.selectedLabel = selectedOption.getTextContent();\n }\n } else {\n this.selectedLabel = '';\n }\n this.cdr.detectChanges();\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n this.cdr.detectChanges();\n }\n}\n","<div class=\"matcha-select-container\" [class.matcha-select-disabled]=\"disabled || isDisabled\">\n <div\n class=\"matcha-select-trigger\"\n [class.matcha-select-open]=\"open\"\n [class.matcha-select-disabled]=\"disabled || isDisabled\"\n (click)=\"onTriggerClick()\"\n [attr.tabindex]=\"(disabled || isDisabled) ? -1 : 0\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-disabled]=\"disabled || isDisabled\">\n\n <span class=\"matcha-select-value\" [class.matcha-select-placeholder]=\"!selectedValue\">\n {{ getSelectedLabel() || placeholder }}\n </span>\n\n <span class=\"matcha-select-arrow\" [class.matcha-select-arrow-open]=\"open\">\n <span class=\"i-matcha-action_arrow_down\"></span>\n </span>\n </div>\n\n <matcha-panel\n #panel\n [placement]=\"placement\"\n [maxHeight]=\"maxHeight\"\n [minWidth]=\"minWidth\"\n [open]=\"open\">\n <ng-content></ng-content>\n </matcha-panel>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * Service to internationalize the paginator component.\n * Based on Angular Material's MatPaginatorIntl\n */\n@Injectable({ providedIn: 'root' })\nexport class MatchaPaginatorIntl {\n /** Stream to emit from when labels are changed. Used by the paginator to update the labels. */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the page size selector. */\n itemsPerPageLabel: string = 'Itens por página:';\n\n /** A label for the button that increments the current page. */\n nextPageLabel: string = 'Próxima página';\n\n /** A label for the button that decrements the current page. */\n previousPageLabel: string = 'Página anterior';\n\n /** A label for the button that moves to the first page. */\n firstPageLabel: string = 'Primeira página';\n\n /** A label for the button that moves to the last page. */\n lastPageLabel: string = 'Última página';\n\n /**\n * A label for the range of items within the current page and the length of the whole list.\n */\n getRangeLabel: (page: number, pageSize: number, length: number) => string =\n (page: number, pageSize: number, length: number) => {\n if (length === 0) {\n return `0 de 0`;\n }\n const amountPages = Math.ceil(length / pageSize);\n return `Página ${page + 1} de ${amountPages}`;\n };\n\n /**\n * A label for the range display (e.g., \"Exibindo 1 a 10 de 100 registros\")\n */\n getRangeDisplayLabel: (start: number, end: number, length: number) => string =\n (start: number, end: number, length: number) => {\n if (length === 0) {\n return 'Exibindo 0 de 0 registros';\n }\n return `Exibindo ${start} a ${end} de ${length} registros`;\n };\n\n /**\n * A label for filtered results (e.g., \"(filtrados de 500 no total)\")\n */\n getFilteredLabel: (totalLength: number) => string =\n (totalLength: number) => {\n return `(filtrados de ${totalLength} no total)`;\n };\n}\n","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PageEvent } from './page-event.interface';\nimport { MatchaPaginatorIntl } from '../paginator-intl.service';\n\n@Component({\n selector: 'matcha-paginator',\n templateUrl: './paginator.component.html',\n styleUrl: './paginator.component.scss',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatchaPaginatorComponent implements OnDestroy {\n @Input() public pageIndex: number = 0;\n @Input() public length: number = 0;\n @Input() public pageSize: number = 50;\n @Input() public pageSizeOptions: number[] = [];\n \n /** Color theme for active page button. Defaults to 'accent' */\n @Input() public color: string = 'accent';\n\n /** Show total records information. Defaults to false */\n @Input() public showTotal: boolean = false;\n\n /** Filtered length for displaying filtered records count. Optional */\n @Input() public filteredLength?: number;\n\n @Output() public page = new EventEmitter<PageEvent>();\n\n private _intlChanges: Subscription;\n\n constructor(\n public _intl: MatchaPaginatorIntl,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n this._intlChanges = _intl.changes.subscribe(() => {\n // Trigger change detection when labels change\n this._changeDetectorRef.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._intlChanges.unsubscribe();\n }\n\n public get currentPage(): number {\n return this.pageIndex + 1;\n }\n\n public get totalPages(): number {\n if (this.pageSize === 0) return 0;\n return Math.ceil(this.length / this.pageSize);\n }\n\n public get hasPreviousPage(): boolean {\n return this.pageIndex > 0;\n }\n\n public get hasNextPage(): boolean {\n return this.pageIndex < this.totalPages - 1;\n }\n\n public get displayPages(): (number | string)[] {\n const current = this.currentPage;\n const total = this.totalPages;\n const pages: (number | string)[] = [];\n\n if (total <= 1) {\n if (total === 1) {\n pages.push(1);\n }\n return pages;\n }\n\n if (total <= 5) {\n for (let i = 1; i <= total; i++) {\n pages.push(i);\n }\n } else {\n \n if (current <= 3) {\n pages.push(1, 2, 3, '...', total);\n } else if (current >= total - 2) {\n for (let i = total - 4; i <= total; i++) {\n pages.push(i);\n }\n } else {\n const startPage = current - 1;\n \n for (let i = startPage; i <= current + 2 && i <= total; i++) {\n pages.push(i);\n }\n \n if (current + 2 < total - 1) {\n pages.push('...');\n }\n \n if (current + 2 < total) {\n pages.push(total);\n }\n }\n }\n\n return pages;\n }\n\n public trackByPage(index: number, item: number | string): number | string {\n return item;\n }\n\n /** Check if item is a number (for template use only) */\n public isNumber(value: any): boolean {\n return typeof value === 'number';\n }\n\n /** Navigate to previous page */\n public previousPage(): void {\n if (this.hasPreviousPage) {\n this.changePage(this.pageIndex - 1);\n }\n }\n\n /** Navigate to next page */\n public nextPage(): void {\n if (this.hasNextPage) {\n this.changePage(this.pageIndex + 1);\n }\n }\n\n /** Navigate to specific page */\n public goToPage(page: number | string): void {\n if (typeof page === 'number' && page >= 1 && page <= this.totalPages) {\n this.changePage(page - 1);\n }\n }\n \n\n /** Handle page size change */\n public onPageSizeChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n const newPageSize = parseInt(target.value, 10);\n \n if (newPageSize !== this.pageSize) {\n this.changePage(0, newPageSize);\n }\n }\n\n private changePage(pageIndex: number, pageSize?: number): void {\n const previousPageIndex = this.pageIndex;\n \n const event: PageEvent = {\n pageIndex,\n previousPageIndex,\n pageSize: pageSize || this.pageSize,\n length: this.length\n };\n\n this.page.emit(event);\n }\n\n /** Get the range of items being displayed */\n public get rangeStart(): number {\n if (this.length === 0) return 0;\n return (this.pageIndex * this.pageSize) + 1;\n }\n\n public get rangeEnd(): number {\n if (this.length === 0) return 0;\n const end = (this.pageIndex + 1) * this.pageSize;\n return Math.min(end, this.length);\n }\n\n /** Check if there are filtered results */\n public get hasFilteredResults(): boolean {\n return this.filteredLength !== undefined && this.filteredLength !== this.length;\n }\n\n /** Get range label for display */\n public getRangeLabel(): string {\n return this._intl.getRangeDisplayLabel(this.rangeStart, this.rangeEnd, this.length);\n }\n\n /** Get filtered label for display */\n public getFilteredLabel(): string {\n if (this.hasFilteredResults && this.filteredLength !== undefined) {\n return this._intl.getFilteredLabel(this.filteredLength);\n }\n return '';\n }\n}","<div class=\"matcha-paginator flex-row flex-align-center gap-20\">\n <!-- Total records information -->\n <div class=\"paginator-total-info\" *ngIf=\"showTotal\">\n <div class=\"total-range\">{{ getRangeLabel() }}</div>\n <div class=\"total-filtered\" *ngIf=\"hasFilteredResults\">{{ getFilteredLabel() }}</div>\n </div>\n\n <!-- Items per page selector -->\n <div class=\"flex-row flex-align-center gap-8\" *ngIf=\"pageSizeOptions && pageSizeOptions.length > 0\">\n <span class=\"text-sm color-placeholder\">{{ _intl.itemsPerPageLabel }}</span>\n <div class=\"page-size-selector\">\n <select \n class=\"page-size-select radius-8\" \n [value]=\"pageSize\" \n (change)=\"onPageSizeChange($event)\">\n <option *ngFor=\"let option of pageSizeOptions\" [value]=\"option\">\n {{ option }}\n </option>\n </select>\n <div class=\"select-icon\">\n <matcha-icon name=\"action_arrow_down\" size=\"sm\" color=\"fg\"></matcha-icon>\n </div>\n </div>\n </div>\n \n <!-- Page navigation -->\n <div class=\"flex-row flex-align-center gap-8\">\n <!-- Previous page button -->\n <button \n class=\"nav-button\" \n [disabled]=\"!hasPreviousPage\"\n (click)=\"previousPage()\"\n [attr.aria-label]=\"_intl.previousPageLabel\">\n <matcha-icon name=\"action_arrow_left\" size=\"md\"></matcha-icon>\n </button>\n \n <!-- Page numbers -->\n <div class=\"flex-row flex-align-center gap-4\">\n <ng-container *ngFor=\"let page of displayPages; trackBy: trackByPage\">\n <button \n *ngIf=\"isNumber(page); else ellipsis\"\n class=\"page-button\"\n [class.active]=\"page === currentPage\"\n [class.radius-full]=\"page === currentPage\"\n [ngClass]=\"page === currentPage ? color : ''\"\n (click)=\"goToPage(page)\"\n [attr.aria-label]=\"'Ir para página ' + page\">\n {{ page }}\n </button>\n <ng-template #ellipsis>\n <span class=\"ellipsis\">{{ page }}</span>\n </ng-template>\n </ng-container>\n </div>\n \n <!-- Next page button -->\n <button \n class=\"nav-button\" \n [disabled]=\"!hasNextPage\"\n (click)=\"nextPage()\"\n [attr.aria-label]=\"_intl.nextPageLabel\">\n <matcha-icon name=\"action_arrow_right\" size=\"md\"></matcha-icon>\n </button>\n </div>\n </div>","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'matcha-copy-button',\n templateUrl: './copy-button.component.html',\n styleUrls: ['./copy-button.component.scss'],\n standalone: false\n})\nexport class CopyButtonComponent {\n\n @Input() type: string = 'Código';\n @Input() size: 'tiny' | 'small' | 'medium' | 'large' = 'tiny';\n @Input() icon: string = 'copy-out';\n @Input() position: 'absolute' | 'relative' = 'absolute';\n @Input() customClass: string = '';\n\n @Output() copied = new EventEmitter<{text: string, type: string}>();\n\n // Propriedade para controlar o ícone do botão\n currentIcon: string = this.icon;\n isCopied: boolean = false;\n\n // Método para copiar código para a área de transferência\n async copyToClipboard() {\n // Busca o componente matcha-highlight pai\n const highlightComponent = this.elementRef.nativeElement.closest('matcha-highlight');\n\n // Primeiro tenta encontrar textarea (para casos onde ainda não foi processado)\n let textarea = highlightComponent?.querySelector('textarea');\n let textToCopy = '';\n\n if (textarea) {\n // Se encontrou textarea, usa o valor dela\n textToCopy = textarea.value;\n } else {\n // Se não encontrou textarea, procura pelo código destacado\n const codeElement = highlightComponent?.querySelector('code.highlight');\n if (codeElement) {\n textToCopy = codeElement.textContent || codeElement.innerText || '';\n } else {\n console.warn('Nenhum conteúdo encontrado para copiar');\n return;\n }\n }\n\n if (!textToCopy.trim()) {\n console.warn('Conteúdo vazio para copiar');\n return;\n }\n\n try {\n await navigator.clipboard.writeText(textToCopy);\n console.log(`Código ${this.type} copiado para a área de transferência!`);\n this.copied.emit({ text: textToCopy, type: this.type });\n\n // Feedback visual temporário\n this.showCopyFeedback();\n } catch (err) {\n console.error('Erro ao copiar código:', err);\n // Fallback para navegadores mais antigos\n this.fallbackCopyToClipboard(textToCopy);\n }\n }\n\n // Fallback para navegadores que não suportam clipboard API\n private fallbackCopyToClipboard(textToCopy: string) {\n // Cria um textarea temporário para usar o método antigo\n const tempTextarea = document.createElement('textarea');\n tempTextarea.value = textToCopy;\n tempTextarea.style.position = 'fixed';\n tempTextarea.style.left = '-999999px';\n tempTextarea.style.top = '-999999px';\n document.body.appendChild(tempTextarea);\n\n tempTextarea.focus();\n tempTextarea.select();\n tempTextarea.setSelectionRange(0, 99999); // Para mobile\n\n try {\n document.execCommand('copy');\n console.log('Código copiado para a área de transferência!');\n this.copied.emit({ text: textToCopy, type: this.type });\n this.showCopyFeedback();\n } catch (err) {\n console.error('Erro ao copiar código:', err);\n } finally {\n document.body.removeChild(tempTextarea);\n }\n }\n\n // Feedback visual quando copiado\n private showCopyFeedback() {\n const button = this.elementRef.nativeElement.querySelector('button');\n if (button) {\n const originalText = button.title;\n button.title = 'Copiado!';\n\n // Muda o ícone para checked\n this.isCopied = true;\n this.currentIcon = 'action_done';\n\n setTimeout(() => {\n button.title = originalText;\n button.style.transform = '';\n\n // Volta para o ícone original após 2 segundos\n setTimeout(() => {\n this.isCopied = false;\n this.currentIcon = this.icon;\n }, 3000);\n }, 1000);\n }\n }\n\n // Método para obter as classes CSS do botão\n getButtonClasses(): string {\n let classes = `position-${this.position} top-8 right-8 m-8 z-index-10`;\n\n if (this.customClass) {\n classes += ` ${this.customClass}`;\n }\n\n return classes;\n }\n\n constructor(private elementRef: ElementRef) {}\n}\n","<button\n matcha-button\n [size]=\"size\"\n pill=\"true\"\n icon=\"true\"\n [class]=\"getButtonClasses()\"\n (click)=\"copyToClipboard()\"\n [title]=\"'Copiar código ' + type\">\n <matcha-icon [name]=\"currentIcon\" [size]=\"size === 'tiny' ? 'small' : size\"></matcha-icon>\n</button>\n\n\n","import { Component, ContentChild, ElementRef, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n// Prism.js é carregado no módulo highlight.module.ts\n\n@Component({\n selector : 'matcha-highlight',\n template : `\n <matcha-copy-button [type]=\"lang\" class=\"copy-button\"></matcha-copy-button>\n <div class=\"matcha-highlight-container\">\n <div class=\"highlight-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n standalone: false\n})\nexport class MatchaHighlightComponent implements OnInit, OnDestroy\n{\n // Source\n @ContentChild('source', {static: true})\n source!: ElementRef;\n\n // Lang\n @Input('lang')\n lang!: string;\n\n // Path\n @Input('path')\n path!: string;\n\n // Theme\n @Input('theme') theme: string = '';\n @HostBinding('attr.theme') get themeAttr(): string { return this.theme; }\n\n // Private\n private _unsubscribeAll: Subject<any>;\n\n /**\n * Constructor\n *\n * @param {ElementRef} _elementRef\n * @param {HttpClient} _httpClient\n */\n constructor(\n private _elementRef: ElementRef,\n private _httpClient: HttpClient\n )\n {\n // Set the private defaults\n this._unsubscribeAll = new Subject();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n ngOnInit(): void\n {\n // Debug: Verificar se Prism está carregado\n const Prism = (window as any).Prism;\n console.log('Prism loaded:', typeof Prism !== 'undefined');\n if (typeof Prism !== 'undefined') {\n console.log('Prism languages:', Object.keys(Prism.languages));\n }\n\n // Aplicar tema\n // this.applyTheme();\n\n // If there is no language defined, return...\n if ( !this.lang )\n {\n return;\n }\n\n // If the path is defined...\n if ( this.path )\n {\n // Get the source\n this._httpClient.get(this.path, {responseType: 'text'})\n .pipe(takeUntil(this._unsubscribeAll))\n .subscribe((response) => {\n\n // Highlight it\n this.highlight(response);\n });\n }\n\n // If the path is not defined and the source element exists...\n if ( !this.path && this.source )\n {\n // Highlight it\n this.highlight(this.source.nativeElement.value);\n }\n }\n\n /**\n * On destroy\n */\n ngOnDestroy(): void\n {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Apply theme to the component\n */\n // applyTheme(): void\n // {\n // const element = this._elementRef.nativeElement;\n\n // // Remove existing theme classes\n // element.classList.remove('theme-matcha', 'theme-default', 'theme-dark', 'theme-coy', 'theme-funky', 'theme-okaidia', 'theme-solarizedlight', 'theme-tomorrow', 'theme-twilight');\n\n // // Add new theme class\n // element.classList.add(`theme-${this.theme}`);\n // }\n\n /**\n * Carrega o PrismJS dinamicamente\n */\n private async loadPrismJS(): Promise<void> {\n return new Promise((resolve, reject) => {\n // Verifica se já está carregado\n if (typeof (window as any).Prism !== 'undefined') {\n resolve();\n return;\n }\n\n // Carrega o PrismJS principal\n const script = document.createElement('script');\n script.src = '/assets/prismjs/prism.js';\n script.onload = () => {\n // Carrega os componentes de linguagem\n this.loadPrismComponent('/assets/prismjs/components/prism-javascript.js');\n this.loadPrismComponent('/assets/prismjs/components/prism-css.js');\n this.loadPrismComponent('/assets/prismjs/components/prism-markup.js');\n\n console.log('PrismJS carregado com sucesso');\n resolve();\n };\n script.onerror = () => {\n console.error('Erro ao carregar PrismJS');\n reject(new Error('Erro ao carregar PrismJS'));\n };\n document.head.appendChild(script);\n });\n }\n\n /**\n * Carrega um componente do PrismJS\n */\n private loadPrismComponent(src: string): void {\n const script = document.createElement('script');\n script.src = src;\n document.head.appendChild(script);\n }\n\n /**\n * Highlight the given source code\n *\n * @param sourceCode\n */\n async highlight(sourceCode: string): Promise<void>\n {\n // Carrega o PrismJS dinamicamente se não estiver disponível\n if (typeof (window as any).Prism === 'undefined') {\n await this.loadPrismJS();\n }\n\n const Prism = (window as any).Prism;\n\n console.log('Highlighting code:', sourceCode.substring(0, 50) + '...');\n console.log('Language:', this.lang);\n console.log('Prism available:', typeof Prism !== 'undefined');\n\n // Check if Prism is available\n if (typeof Prism === 'undefined') {\n console.error('Prism.js is not loaded');\n this._elementRef.nativeElement.innerHTML = '<pre><code>' + sourceCode + '</code></pre>';\n return;\n }\n\n // Check if the language is supported\n if (!Prism.languages[this.lang]) {\n console.error(`Language \"${this.lang}\" is not supported by Prism.js`);\n console.log('Available languages:', Object.keys(Prism.languages));\n this._elementRef.nativeElement.innerHTML = '<pre><code>' + sourceCode + '</code></pre>';\n return;\n }\n\n // Split the source into lines\n const sourceLines = sourceCode.split('\\n');\n\n\n // Verificar se o array não está vazio\n if (sourceLines.length === 0) {\n console.warn('Source code is empty');\n this._elementRef.nativeElement.innerHTML = '<pre><code></code></pre>';\n return;\n }\n // Remove the first and the last line of the source\n // code if they are blank lines. This way, the html\n // can be formatted properly while using matcha-highlight\n // component\n if (sourceLines.length > 0 && sourceLines[0] && !sourceLines[0].trim())\n {\n sourceLines.shift();\n }\n\n if (sourceLines.length > 0 && sourceLines[sourceLines.length - 1] && !sourceLines[sourceLines.length - 1].trim())\n {\n sourceLines.pop();\n }\n\n // Find the first non-whitespace char index in\n\n // Verificar novamente se o array não está vazio após remoções\n if (sourceLines.length === 0) {\n console.warn('Source code is empty after trimming');\n this._elementRef.nativeElement.innerHTML = '<pre><code></code></pre>';\n return;\n }\n // the first line of the source code\n const indexOfFirstChar = sourceLines[0].search(/\\S|$/);\n\n // Generate the trimmed source\n let source = '';\n\n // Iterate through all the lines\n sourceLines.forEach((line: string, index: number) => {\n\n // Trim the beginning white space depending on the index\n // and concat the source code\n source = source + line.substr(indexOfFirstChar, line.length);\n\n // If it's not the last line...\n if ( index !== sourceLines.length - 1 )\n {\n // Add a line break at the end\n source = source + '\\n';\n }\n });\n\n console.log('Processed source:', source.substring(0, 50) + '...');\n\n // Generate the highlighted code\n const highlightedCode = Prism.highlight(source, Prism.languages[this.lang], this.lang);\n\n console.log('Highlighted result:', highlightedCode.substring(0, 100) + '...');\n\n // Replace the innerHTML of the highlight-content div with the highlighted code\n const highlightContent = this._elementRef.nativeElement.querySelector('.highlight-content');\n if (highlightContent) {\n highlightContent.innerHTML =\n '<pre><code class=\"highlight language-' + this.lang + '\">' + highlightedCode + '</code></pre>';\n } else {\n // Fallback: if highlight-content doesn't exist, use the old method\n this._elementRef.nativeElement.innerHTML =\n '<pre><code class=\"highlight language-' + this.lang + '\">' + highlightedCode + '</code></pre>';\n }\n }\n}\n","// projects/matcha-components/src/lib/matcha-slider/slider/slider.component.ts\n\nimport { Component, Input, Output, EventEmitter, forwardRef, OnInit, OnDestroy, ElementRef, ViewChild, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nexport interface SliderOptions {\n floor?: number;\n ceil?: number;\n step?: number;\n disabled?: boolean;\n pushRange?: boolean;\n noSwitching?: boolean;\n minRange?: number;\n maxRange?: number;\n animate?: boolean;\n draggableRange?: boolean;\n draggableRangeOnly?: boolean;\n showSelectionBar?: boolean;\n showSelectionBarEnd?: boolean;\n showSelectionBarFromValue?: number;\n showSelectionBarToValue?: number;\n selectionBarGradient?: {\n from: string;\n to: string;\n };\n getPointerColor?: (value: number) => string;\n getSelectionBarColor?: (value: number) => string;\n hidePointerLabels?: boolean;\n hideLimitLabels?: boolean;\n keyboardSupport?: boolean;\n scale?: number;\n enforceRange?: boolean;\n enforceStep?: boolean;\n noCommaStyle?: boolean;\n bindIndexForPushRange?: boolean;\n combineLabels?: boolean;\n format?: (value: number) => string;\n combinePossible?: boolean;\n includeTicksScale?: boolean;\n logScale?: boolean;\n customValueToPosition?: (val: number, minVal: number, maxVal: number) => number;\n customPositionToValue?: (percent: number, minVal: number, maxVal: number) => number;\n translate?: (value: number, sliderId: string, label: string) => string;\n}\n\n@Component({\n selector: 'matcha-slider',\n templateUrl: './slider.component.html',\n styleUrl: './slider.component.scss',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSliderComponent),\n multi: true\n }\n ]\n})\nexport class MatchaSliderComponent implements ControlValueAccessor, OnInit, OnDestroy {\n\n\n@Input() value: number = 0;\n\nprivate _highValue: number = 0;\n@Input() set highValue(val: number) {\n this._highValue = val;\n if (val !== null && val !== undefined && val !== 0) {\n this.isRangeInternal = true;\n }\n}\nget highValue(): number {\n return this._highValue;\n}\n\n @Input() options: SliderOptions = {};\n @Input() color: string = 'accent';\n @Input() disabled: boolean | string = false;\n \n @Output() valueChange = new EventEmitter<number>();\n @Output() highValueChange = new EventEmitter<number>();\n @Output() userChange = new EventEmitter<number>();\n @Output() userChangeEnd = new EventEmitter<number>();\n\n @ViewChild('sliderElement', { static: false }) sliderElement?: ElementRef;\n\n private destroy$ = new Subject<void>();\n private isDragging = false;\n private draggingPointer: 'low' | 'high' | null = null;\n private lastUpdateTime = 0;\n private animationFrameId: number | null = null;\n private isRangeInternal = false;\n\n private readonly defaultOptions: SliderOptions = {\n floor: 0,\n ceil: 100,\n step: 1,\n disabled: false,\n pushRange: false,\n noSwitching: false,\n minRange: 0,\n maxRange: 0,\n animate: true,\n draggableRange: false,\n draggableRangeOnly: false,\n showSelectionBar: true,\n showSelectionBarEnd: false,\n showSelectionBarFromValue: 0,\n showSelectionBarToValue: 0,\n hidePointerLabels: false,\n hideLimitLabels: false,\n keyboardSupport: true,\n scale: 1,\n enforceRange: false,\n enforceStep: false,\n noCommaStyle: false,\n bindIndexForPushRange: false,\n combineLabels: false,\n format: (value: number) => value.toString(),\n combinePossible: false,\n includeTicksScale: false,\n logScale: false,\n translate: (value: number) => value.toString()\n };\n\n private onChange = (value: any) => {};\n private onTouched = () => {};\n\n private boundOnMouseMove = this.onMouseMove.bind(this);\n private boundOnMouseUp = this.onMouseUp.bind(this);\n\n constructor(private cdr: ChangeDetectorRef, private elementRef: ElementRef) {}\n\n public get mergedOptions(): SliderOptions {\n return { ...this.defaultOptions, ...this.options };\n }\n\n public get isRange(): boolean {\n return this.isRangeInternal;\n }\n\n public get percentage(): number {\n return this.valueToPercentage(this.value);\n }\n\n public get highPercentage(): number {\n return this.valueToPercentage(this.highValue);\n }\n\n public get selectionBarStyle(): any {\n if (this.isRange) {\n const left = Math.min(this.percentage, this.highPercentage);\n const width = Math.abs(this.highPercentage - this.percentage);\n return {\n left: `${left}%`,\n width: `${width}%`\n };\n } else {\n return {\n left: '0%',\n width: `${this.percentage}%`\n };\n }\n }\n\n public get isAtMaxValue(): boolean {\n const ceil = this.mergedOptions.ceil || 100;\n if (this.isRange) {\n return this.highValue >= ceil;\n } else {\n return this.value >= ceil;\n }\n }\n\n public get isAtMinValue(): boolean {\n const floor = this.mergedOptions.floor || 0;\n if (this.isRange) {\n return this.value <= floor || this.highValue <= floor;\n } else {\n return this.value <= floor;\n }\n }\n\n public get isDisabled(): boolean {\n if (typeof this.disabled === 'string') {\n const stringDisabled = this.disabled === '' || (this.disabled !== 'false');\n return stringDisabled || Boolean(this.mergedOptions.disabled);\n }\n return Boolean(this.disabled) || Boolean(this.mergedOptions.disabled);\n }\n\n public ngOnInit(): void {\n this.initializeValues();\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.cleanupEventListeners();\n this.cancelAnimationFrame();\n }\n\n private initializeValues(): void {\n if (this.isRange && this._highValue === 0) {\n this.highValue = this.mergedOptions.ceil!;\n }\n }\n private valueToPercentage(value: number): number {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n return ((value - floor) / (ceil - floor)) * 100;\n }\n\n private percentageToValue(percentage: number): number {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const value = (percentage / 100) * (ceil - floor) + floor;\n return this.snapToStep(value);\n }\n\n private snapToStep(value: number): number {\n const step = this.mergedOptions.step || 1;\n return Math.round(value / step) * step;\n }\n\n public onPointerMouseDown(event: MouseEvent, isHighValue: boolean = false): void {\n if (this.isDisabled) return;\n \n event.preventDefault();\n event.stopPropagation();\n \n this.isDragging = true;\n this.draggingPointer = isHighValue ? 'high' : 'low';\n \n this.addVisualFeedback();\n this.addEventListeners();\n }\n\n public onTrackMouseDown(event: MouseEvent): void {\n if (this.isDisabled) return;\n \n const sliderElement = this.elementRef.nativeElement.querySelector('.matcha-slider');\n if (!sliderElement) return;\n \n const rect = sliderElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n this.handleRangeTrackClick(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n private addEventListeners(): void {\n document.addEventListener('mousemove', this.boundOnMouseMove);\n document.addEventListener('mouseup', this.boundOnMouseUp);\n document.addEventListener('mouseleave', this.boundOnMouseUp);\n }\n\n private cleanupEventListeners(): void {\n document.removeEventListener('mousemove', this.boundOnMouseMove);\n document.removeEventListener('mouseup', this.boundOnMouseUp);\n document.removeEventListener('mouseleave', this.boundOnMouseUp);\n }\n\n private onMouseMove(event: MouseEvent): void {\n if (!this.isDragging || !this.draggingPointer) return;\n \n const now = Date.now();\n if (now - this.lastUpdateTime < 16) return;\n this.lastUpdateTime = now;\n \n this.cancelAnimationFrame();\n this.animationFrameId = requestAnimationFrame(() => {\n this.updateSliderPosition(event);\n });\n }\n\n private updateSliderPosition(event: MouseEvent): void {\n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n if (this.draggingPointer === 'low') {\n this.updateLowValue(newValue);\n } else {\n this.updateHighValue(newValue);\n }\n } else {\n this.updateSingleValue(newValue);\n }\n \n this.cdr.detectChanges();\n }\n\n private onMouseUp(): void {\n if (this.isDragging) {\n this.isDragging = false;\n this.draggingPointer = null;\n \n this.removeVisualFeedback();\n this.userChangeEnd.emit(this.value);\n this.onChange(this.isRange ? [this.value, this.highValue] : this.value);\n this.onTouched();\n }\n \n this.cleanupEventListeners();\n this.cancelAnimationFrame();\n }\n\n public onPointerClick(event: MouseEvent, isHighValue: boolean = false): void {\n if (this.isDragging) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n \n if (this.isDisabled) return;\n \n event.stopPropagation();\n \n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n if (isHighValue) {\n this.updateHighValue(newValue);\n } else {\n this.updateLowValue(newValue);\n }\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n public onTrackClick(event: MouseEvent): void {\n if (this.isDisabled) return;\n \n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n this.updateRangeValues(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n private calculateValueFromPosition(clientX: number, rect: DOMRect): number {\n const clickX = clientX - rect.left;\n const percentage = Math.max(0, Math.min(100, (clickX / rect.width) * 100));\n return this.percentageToValue(percentage);\n }\n\n private handleRangeTrackClick(newValue: number): void {\n const lowDistance = Math.abs(newValue - this.value);\n const highDistance = Math.abs(newValue - this.highValue);\n \n this.draggingPointer = lowDistance <= highDistance ? 'low' : 'high';\n \n if (this.draggingPointer === 'low') {\n this.updateLowValue(newValue);\n } else {\n this.updateHighValue(newValue);\n }\n }\n\n private addVisualFeedback(): void {\n if (this.sliderElement) {\n this.sliderElement.nativeElement.classList.add('dragging');\n }\n }\n\n private removeVisualFeedback(): void {\n if (this.sliderElement) {\n this.sliderElement.nativeElement.classList.remove('dragging');\n }\n }\n\n private cancelAnimationFrame(): void {\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n }\n\n private updateSingleValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (clampedValue !== this.value) {\n this.value = clampedValue;\n this.valueChange.emit(this.value);\n this.userChange.emit(this.value);\n this.onChange(this.value);\n this.cdr.markForCheck();\n }\n }\n\n private updateRangeValues(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n const lowDistance = Math.abs(clampedValue - this.value);\n const highDistance = Math.abs(clampedValue - this.highValue);\n \n if (lowDistance < highDistance) {\n this.updateLowValue(clampedValue);\n } else {\n this.updateHighValue(clampedValue);\n }\n }\n\n private updateLowValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const minRange = this.mergedOptions.minRange || 0;\n const maxRange = this.mergedOptions.maxRange || 0;\n \n let clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (maxRange > 0) {\n clampedValue = Math.min(clampedValue, this.highValue - maxRange);\n }\n \n if (minRange > 0) {\n clampedValue = Math.max(clampedValue, this.highValue - minRange);\n }\n \n if (this.mergedOptions.noSwitching) {\n clampedValue = Math.min(clampedValue, this.highValue);\n }\n \n if (clampedValue !== this.value) {\n this.value = clampedValue;\n this.valueChange.emit(this.value);\n this.userChange.emit(this.value);\n this.onChange([this.value, this.highValue]);\n this.cdr.markForCheck();\n }\n }\n\n private updateHighValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const minRange = this.mergedOptions.minRange || 0;\n const maxRange = this.mergedOptions.maxRange || 0;\n \n let clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (maxRange > 0) {\n clampedValue = Math.min(clampedValue, this.value + maxRange);\n }\n \n if (minRange > 0) {\n clampedValue = Math.max(clampedValue, this.value + minRange);\n }\n \n if (this.mergedOptions.noSwitching) {\n clampedValue = Math.max(clampedValue, this.value);\n }\n \n if (clampedValue !== this.highValue) {\n this.highValue = clampedValue;\n this.highValueChange.emit(this.highValue);\n this.userChange.emit(this.highValue);\n this.onChange([this.value, this.highValue]);\n this.cdr.markForCheck();\n }\n }\n\n public onKeyDown(event: KeyboardEvent): void {\n if (this.isDisabled || !this.mergedOptions.keyboardSupport) return;\n \n const step = this.mergedOptions.step || 1;\n let newValue = this.value;\n \n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault();\n newValue = this.value + step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault();\n newValue = this.value - step;\n break;\n case 'Home':\n event.preventDefault();\n newValue = this.mergedOptions.floor || 0;\n break;\n case 'End':\n event.preventDefault();\n newValue = this.mergedOptions.ceil || 100;\n break;\n case 'PageUp':\n event.preventDefault();\n newValue = this.value + (step * 10);\n break;\n case 'PageDown':\n event.preventDefault();\n newValue = this.value - (step * 10);\n break;\n default:\n return;\n }\n \n if (this.isRange) {\n this.updateRangeValues(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n\n\npublic writeValue(value: any): void {\n if (Array.isArray(value)) {\n this.isRangeInternal = true;\n this.value = value[0] || 0;\n this.highValue = value[1] ?? (this.mergedOptions.ceil || 100);\n } else if (typeof value === 'number') {\n this.isRangeInternal = false;\n this.value = value;\n }\n this.cdr.markForCheck();\n}\n\n public registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n public getPointerStyle(isHighValue: boolean = false): any {\n const percentage = isHighValue ? this.highPercentage : this.percentage;\n return {\n left: `${percentage}%`\n };\n }\n\n public formatValue(value: number): string {\n return this.mergedOptions.format ? this.mergedOptions.format(value) : value.toString();\n }\n}","<!-- projects/matcha-components/src/lib/matcha-slider/slider/slider.component.html -->\n\n<div class=\"matcha-slider\" [class.disabled]=\"isDisabled\" [class.range]=\"isRange\"\n [attr.data-color]=\"color\" #sliderElement>\n\n <div class=\"limit-labels\" *ngIf=\"!mergedOptions.hideLimitLabels\">\n <span class=\"floor-label\" [style.visibility]=\"isAtMinValue ? 'hidden' : 'visible'\">\n {{ formatValue(mergedOptions.floor || 0) }}\n </span>\n \n <span class=\"ceil-label\" [style.visibility]=\"isAtMaxValue ? 'hidden' : 'visible'\">\n {{ formatValue(mergedOptions.ceil || 100) }}\n </span>\n </div>\n \n <div class=\"slider-track\" (mousedown)=\"onTrackMouseDown($event)\" (click)=\"onTrackClick($event)\">\n\n <div class=\"selection-bar\" [style]=\"selectionBarStyle\" *ngIf=\"mergedOptions.showSelectionBar\">\n </div>\n\n <div class=\"pointer low-pointer\" [style]=\"getPointerStyle(false)\"\n [attr.tabindex]=\"isDisabled ? -1 : 0\"\n (mousedown)=\"onPointerMouseDown($event, false)\" (click)=\"onPointerClick($event, false)\"\n (keydown)=\"onKeyDown($event)\" role=\"slider\" [attr.aria-valuemin]=\"mergedOptions.floor\"\n [attr.aria-valuemax]=\"mergedOptions.ceil\" [attr.aria-valuenow]=\"value\"\n [attr.aria-disabled]=\"isDisabled\">\n\n <div class=\"pointer-label\" *ngIf=\"!mergedOptions.hidePointerLabels\">\n {{ formatValue(value) }}\n </div>\n </div>\n\n <div class=\"pointer high-pointer\" [style]=\"getPointerStyle(true)\"\n [attr.tabindex]=\"isDisabled ? -1 : 0\" (mousedown)=\"onPointerMouseDown($event, true)\"\n (click)=\"onPointerClick($event, true)\" (keydown)=\"onKeyDown($event)\" role=\"slider\"\n [attr.aria-valuemin]=\"mergedOptions.floor\" [attr.aria-valuemax]=\"mergedOptions.ceil\"\n [attr.aria-valuenow]=\"highValue\" [attr.aria-disabled]=\"isDisabled\" *ngIf=\"isRange\">\n\n <div class=\"pointer-label\" *ngIf=\"!mergedOptions.hidePointerLabels\">\n {{ formatValue(highValue) }}\n </div>\n </div>\n </div>\n\n</div>","import { Component, Input, Output, EventEmitter, ElementRef, HostBinding, HostListener, AfterViewInit, ContentChildren, QueryList, OnInit } from '@angular/core';\n\n@Component({\n selector: 'matcha-chip',\n standalone: false,\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss']\n})\nexport class MatchaChipComponent implements OnInit, AfterViewInit {\n @HostBinding('class')\n get hostClasses(): string {\n return 'matcha-chip radius-full d-flex align-items-center gap-8 px-14 py-10 h-20';\n }\n /** Cor do chip (primary, accent, warn) */\n @Input() color: 'primary' | 'accent' | 'warn' | string = 'default';\n \n /** Se o chip está selecionado */\n @Input() \n get selected(): boolean {\n return this._selected;\n }\n set selected(value: boolean) {\n this._selected = value;\n this.selectedChange.emit(this._selected);\n }\n private _selected = false;\n\n /** Se o chip pode ser selecionado */\n @Input() selectable: boolean = false;\n\n /** Se o chip pode ser removido */\n @Input() removable: boolean = false;\n\n /** Se o chip está desabilitado */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled = false;\n\n /** Valor associado ao chip */\n @Input() value: any = null;\n\n /** Evento emitido quando o chip é selecionado */\n @Output() selectedChange = new EventEmitter<boolean>();\n\n /** Evento emitido quando o botão de remover é clicado */\n @Output() removed = new EventEmitter<MatchaChipComponent>();\n\n /** Evento emitido quando o chip é destruído */\n @Output() destroyed = new EventEmitter<MatchaChipComponent>();\n\n \n\n constructor(public _elementRef: ElementRef) {}\n\n ngOnInit() {\n // Aplica as classes CSS diretamente no elemento\n const element = this._elementRef.nativeElement;\n element.classList.add('matcha-chip', 'radius-full', 'd-flex', 'align-items-center', 'gap-8', 'px-14', 'py-10', 'h-20');\n }\n\n ngAfterViewInit() {\n this._setupChipRemoveDirective();\n }\n\n private _setupChipRemoveDirective() {\n // Usa event delegation para capturar cliques em elementos com matchaChipRemove\n this._elementRef.nativeElement.addEventListener('click', (event: Event) => {\n const target = event.target as Element;\n \n // Verifica se o elemento clicado tem o atributo matchaChipRemove\n // ou se é um elemento filho de um elemento com matchaChipRemove\n const removeElement = target.closest('[matchaChipRemove]');\n \n if (removeElement) {\n event.stopPropagation();\n event.preventDefault();\n if (this.removable && !this.disabled) {\n this.remove();\n }\n }\n });\n }\n\n hasCustomRemoveIcon(): boolean {\n return this._elementRef.nativeElement.querySelector('[matchaChipRemove]') !== null;\n }\n\n /** Manipula o clique no chip */\n @HostListener('click', ['$event'])\n _handleClick(event: Event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n if (this.selectable) {\n this.toggleSelected();\n }\n }\n\n /** Manipula o evento de teclado */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent) {\n if (this.disabled) {\n return;\n }\n\n switch (event.key) {\n case 'Delete':\n case 'Backspace':\n if (this.removable) {\n this.remove();\n event.preventDefault();\n }\n break;\n case ' ':\n case 'Enter':\n if (this.selectable) {\n this.toggleSelected();\n event.preventDefault();\n }\n break;\n }\n }\n\n /** Alterna o estado de seleção do chip */\n toggleSelected(): void {\n if (this.selectable && !this.disabled) {\n this.selected = !this.selected;\n }\n }\n\n /** Remove o chip */\n remove(): void {\n if (this.removable && !this.disabled) {\n this.removed.emit(this);\n }\n }\n\n /** Foco no elemento do chip */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n ngOnDestroy() {\n this.destroyed.emit(this);\n }\n}\n","<span class=\"matcha-chip-content color-label\">\n <ng-content></ng-content>\n</span>\n<ng-container *ngIf=\"removable && !hasCustomRemoveIcon()\">\n <matcha-divider direction=\"vertical\" gap=\"0\"></matcha-divider>\n <button \n type=\"button\"\n class=\"matcha-chip-remove d-flex align-items-center justify-content-center w-20 h-20 min-w-20 radius-full cursor-pointer border-0 background-transparent p-0 m-0\"\n [disabled]=\"disabled\"\n (click)=\"remove(); $event.stopPropagation()\"\n tabindex=\"-1\"\n aria-label=\"Remove\"\n matchaChipRemove>\n <matcha-icon name=\"close\" class=\"fs-14\" color=\"label\"></matcha-icon>\n </button>\n</ng-container>\n","import { \n Component, \n Input, \n Output, \n EventEmitter, \n ContentChildren, \n QueryList, \n AfterContentInit,\n HostBinding,\n HostListener,\n forwardRef,\n OnDestroy,\n OnInit,\n ElementRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatchaChipComponent } from '../chip/chip.component';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-chip-list',\n standalone: false,\n templateUrl: './chip-list.component.html',\n styleUrls: ['./chip-list.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaChipListComponent),\n multi: true\n }\n ]\n})\nexport class MatchaChipListComponent implements OnInit, AfterContentInit, OnDestroy, ControlValueAccessor {\n \n /** Se múltiplos chips podem ser selecionados */\n @Input() multiple: boolean = false;\n\n /** Se os chips podem ser selecionados */\n @Input() selectable: boolean = false;\n\n /** Se a chip list está desabilitada */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n this._updateChipsDisabledState();\n }\n private _disabled = false;\n\n /** Valor(es) selecionado(s) */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n this._value = newValue;\n this._updateChipsSelectionState();\n }\n private _value: any;\n\n /** Orientação da lista de chips */\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /** Evento emitido quando a seleção muda */\n @Output() change = new EventEmitter<any>();\n\n /** Evento emitido quando um chip é removido */\n @Output() removed = new EventEmitter<MatchaChipComponent>();\n\n @ContentChildren(MatchaChipComponent, { descendants: true }) \n chips!: QueryList<MatchaChipComponent>;\n\n @HostBinding('class.matcha-chip-list') chipListClass = true;\n @HostBinding('class.matcha-chip-list-disabled') \n get isDisabled() { return this.disabled; }\n\n @HostBinding('attr.role') role = 'listbox';\n \n @HostBinding('attr.aria-multiselectable')\n get ariaMultiselectable() { return this.multiple ? 'true' : null; }\n\n @HostBinding('attr.aria-disabled')\n get ariaDisabled() { return this.disabled.toString(); }\n\n private _chipSubscriptions: Subscription[] = [];\n private _focusedChipIndex = 0;\n\n // ControlValueAccessor\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(public _elementRef: ElementRef) {}\n\n ngOnInit() {\n // Aplica as classes CSS diretamente no elemento\n const element = this._elementRef.nativeElement;\n element.classList.add('matcha-chip-list');\n }\n\n ngAfterContentInit() {\n this._setupChipListeners();\n this._updateChipsSelectionState();\n this._updateChipsDisabledState();\n\n // Observa mudanças na lista de chips\n this.chips.changes.subscribe(() => {\n this._cleanupChipSubscriptions();\n this._setupChipListeners();\n this._updateChipsSelectionState();\n this._updateChipsDisabledState();\n });\n }\n\n ngOnDestroy() {\n this._cleanupChipSubscriptions();\n }\n\n /** Configura listeners para os chips */\n private _setupChipListeners() {\n this.chips.forEach((chip, index) => {\n // Torna os chips selecionáveis se a lista for selecionável\n if (this.selectable) {\n chip.selectable = true;\n }\n\n // Listener para mudanças de seleção\n const selectedChangeSub = chip.selectedChange.subscribe(() => {\n this._onChipSelectionChange(chip);\n });\n\n // Listener para remoção de chips\n const removedSub = chip.removed.subscribe(() => {\n this._onChipRemoved(chip);\n });\n\n this._chipSubscriptions.push(selectedChangeSub, removedSub);\n });\n }\n\n /** Limpa as subscrições dos chips */\n private _cleanupChipSubscriptions() {\n this._chipSubscriptions.forEach(sub => sub.unsubscribe());\n this._chipSubscriptions = [];\n }\n\n /** Manipula mudança de seleção de um chip */\n private _onChipSelectionChange(chip: MatchaChipComponent) {\n if (this.disabled) {\n return;\n }\n\n if (!this.multiple) {\n // Deseleciona todos os outros chips se não for múltiplo\n this.chips.forEach(c => {\n if (c !== chip && c.selected) {\n c.selected = false;\n }\n });\n }\n\n this._updateValue();\n this.onTouched();\n }\n\n /** Manipula remoção de um chip */\n private _onChipRemoved(chip: MatchaChipComponent) {\n if (this.disabled) {\n return;\n }\n\n // Remove o chip da seleção se estiver selecionado\n if (chip.selected) {\n chip.selected = false;\n this._updateValue();\n }\n\n // Emite o evento de remoção\n this.removed.emit(chip);\n this.onTouched();\n }\n\n\n\n /** Atualiza o valor baseado nos chips selecionados */\n private _updateValue() {\n if (this.multiple) {\n this._value = this.chips\n .filter(chip => chip.selected)\n .map(chip => chip.value);\n } else {\n const selectedChip = this.chips.find(chip => chip.selected);\n this._value = selectedChip ? selectedChip.value : null;\n }\n\n this.onChange(this._value);\n this.change.emit(this._value);\n }\n\n /** Atualiza o estado de seleção dos chips baseado no valor */\n private _updateChipsSelectionState() {\n if (!this.chips) {\n return;\n }\n\n if (this.multiple && Array.isArray(this._value)) {\n this.chips.forEach(chip => {\n chip.selected = this._value.includes(chip.value);\n });\n } else {\n this.chips.forEach(chip => {\n chip.selected = chip.value === this._value;\n });\n }\n }\n\n /** Atualiza o estado desabilitado dos chips */\n private _updateChipsDisabledState() {\n if (!this.chips) {\n return;\n }\n\n this.chips.forEach(chip => {\n chip.disabled = this.disabled;\n });\n }\n\n /** Manipula navegação por teclado */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent) {\n if (this.disabled || !this.chips || this.chips.length === 0) {\n return;\n }\n\n const chipsArray = this.chips.toArray();\n const isHorizontal = this.orientation === 'horizontal';\n\n switch (event.key) {\n case isHorizontal ? 'ArrowLeft' : 'ArrowUp':\n this._focusPreviousChip();\n event.preventDefault();\n break;\n case isHorizontal ? 'ArrowRight' : 'ArrowDown':\n this._focusNextChip();\n event.preventDefault();\n break;\n case 'Home':\n this._focusFirstChip();\n event.preventDefault();\n break;\n case 'End':\n this._focusLastChip();\n event.preventDefault();\n break;\n }\n }\n\n /** Foca no chip anterior */\n private _focusPreviousChip() {\n const chipsArray = this.chips.toArray();\n if (this._focusedChipIndex > 0) {\n this._focusedChipIndex--;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n /** Foca no próximo chip */\n private _focusNextChip() {\n const chipsArray = this.chips.toArray();\n if (this._focusedChipIndex < chipsArray.length - 1) {\n this._focusedChipIndex++;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n /** Foca no primeiro chip */\n private _focusFirstChip() {\n const chipsArray = this.chips.toArray();\n if (chipsArray.length > 0) {\n this._focusedChipIndex = 0;\n chipsArray[0].focus();\n }\n }\n\n /** Foca no último chip */\n private _focusLastChip() {\n const chipsArray = this.chips.toArray();\n if (chipsArray.length > 0) {\n this._focusedChipIndex = chipsArray.length - 1;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"matcha-chip-list-wrapper\" [class.matcha-chip-list-vertical]=\"orientation === 'vertical'\">\n <ng-content></ng-content>\n</div>","import { Directive, ElementRef, HostListener, Input, Renderer2, OnDestroy, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[matchaTooltip]',\n standalone: false\n})\nexport class MatchaTooltipDirective implements OnDestroy {\n @Input('matchaTooltip') tooltipText: string = '';\n private _tooltipDisabled = false;\n @Input('matchaTooltipDisabled') get tooltipDisabled() { return this._tooltipDisabled; }\n set tooltipDisabled(v: boolean | string) { this._tooltipDisabled = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-disabled')\n get tooltipDisabledAttr(): string | null {\n return this.tooltipDisabled ? 'true' : 'false';\n }\n\n private _preferAbove = false;\n @Input('matchaTooltipAbove') get preferAbove() { return this._preferAbove; }\n set preferAbove(v: boolean | string) { this._preferAbove = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-above')\n get preferAboveAttr(): string | null {\n return this.preferAbove ? 'true' : 'false';\n }\n\n private _preferBelow = false;\n @Input('matchaTooltipBelow') get preferBelow() { return this._preferBelow; }\n set preferBelow(v: boolean | string) { this._preferBelow = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-below')\n get preferBelowAttr(): string | null {\n return this.preferBelow ? 'true' : 'false';\n }\n\n private _preferLeft = false;\n @Input('matchaTooltipLeft') get preferLeft() { return this._preferLeft; }\n set preferLeft(v: boolean | string) { this._preferLeft = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-left')\n get preferLeftAttr(): string | null {\n return this.preferLeft ? 'true' : 'false';\n }\n\n private _preferRight = false;\n @Input('matchaTooltipRight') get preferRight() { return this._preferRight; }\n set preferRight(v: boolean | string) { this._preferRight = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-right')\n get preferRightAttr(): string | null {\n return this.preferRight ? 'true' : 'false';\n }\n\n private _tooltipEnableClose = false;\n @Input('matchaTooltipEnableClose') get tooltipEnableClose() { return this._tooltipEnableClose; }\n set tooltipEnableClose(v: boolean | string) { this._tooltipEnableClose = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-enable-close')\n get tooltipEnableCloseAttr(): string | null {\n return this.tooltipEnableClose ? 'true' : 'false';\n }\n\n private tooltipElement: HTMLElement | null = null;\n private documentClickListener: (() => void) | null = null;\n private isDestroyed = false;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('mouseenter')\n onMouseEnter() {\n if (this.isDestroyed || this.tooltipEnableClose) {\n // Em modo de clique/tap, não abre via hover\n return;\n }\n if (this.tooltipDisabled || this.tooltipElement || !this.tooltipText) {\n return;\n }\n this.createTooltip();\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n if (this.isDestroyed || (!this.tooltipEnableClose && this.tooltipElement)) {\n this.destroyTooltip();\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n if (this.isDestroyed || !this.tooltipEnableClose) {\n return;\n }\n event.stopPropagation();\n if (!this.tooltipElement && !this.tooltipDisabled && this.tooltipText) {\n this.createTooltip();\n }\n }\n\n private createTooltip() {\n // Verificar se já existe um tooltip ativo\n if (this.tooltipElement || this.isDestroyed) {\n return;\n }\n\n // Cria o tooltip e adiciona a classe base\n this.tooltipElement = this.renderer.createElement('div');\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content');\n\n // Define o conteúdo do tooltip\n this.tooltipElement!.textContent = this.tooltipText;\n\n // Define estilos iniciais para medição\n this.renderer.setStyle(this.tooltipElement, 'position', 'absolute');\n this.renderer.setStyle(this.tooltipElement, 'top', '0');\n this.renderer.setStyle(this.tooltipElement, 'left', '0');\n this.renderer.setStyle(this.tooltipElement, 'visibility', 'hidden');\n this.renderer.appendChild(document.body, this.tooltipElement);\n\n // Se tooltipEnableClose estiver ativo, adiciona o botão de fechar\n if (this.tooltipEnableClose) {\n const closeButton = this.renderer.createElement('div');\n this.renderer.addClass(closeButton, 'matcha-tooltip-close');\n this.renderer.appendChild(this.tooltipElement, closeButton);\n this.renderer.listen(closeButton, 'click', (e: Event) => {\n e.stopPropagation();\n this.destroyTooltip();\n });\n // Remover listener anterior se existir\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n\n this.documentClickListener = this.renderer.listen('document', 'click', (e: Event) => {\n if (this.tooltipElement && !this.tooltipElement.contains(e.target as Node)) {\n this.destroyTooltip();\n }\n });\n }\n\n // Medidas e cálculo de posição\n const margin = 8;\n const hostRect = this.el.nativeElement.getBoundingClientRect();\n const tooltipRect = this.tooltipElement!.getBoundingClientRect();\n\n const hasSpaceAbove = hostRect.top >= tooltipRect.height + margin;\n const hasSpaceBelow = (window.innerHeight - hostRect.bottom) >= tooltipRect.height + margin;\n const hasSpaceLeft = hostRect.left >= tooltipRect.width + margin;\n const hasSpaceRight = (window.innerWidth - hostRect.right) >= tooltipRect.width + margin;\n\n let chosenPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n if (this.preferAbove && hasSpaceAbove) {\n chosenPosition = 'above';\n } else if (this.preferBelow && hasSpaceBelow) {\n chosenPosition = 'below';\n } else if (this.preferLeft && hasSpaceLeft) {\n chosenPosition = 'left';\n } else if (this.preferRight && hasSpaceRight) {\n chosenPosition = 'right';\n } else {\n chosenPosition = hasSpaceAbove ? 'above' : (hasSpaceBelow ? 'below' : 'above');\n }\n\n let top: number = 0;\n let left: number = 0;\n switch (chosenPosition) {\n case 'above':\n top = hostRect.top + window.scrollY - tooltipRect.height - margin;\n left = hostRect.left + window.scrollX + (hostRect.width - tooltipRect.width) / 2;\n break;\n case 'below':\n top = hostRect.bottom + window.scrollY + margin;\n left = hostRect.left + window.scrollX + (hostRect.width - tooltipRect.width) / 2;\n break;\n case 'left':\n top = hostRect.top + window.scrollY + (hostRect.height - tooltipRect.height) / 2;\n left = hostRect.left + window.scrollX - tooltipRect.width - margin;\n break;\n case 'right':\n top = hostRect.top + window.scrollY + (hostRect.height - tooltipRect.height) / 2;\n left = hostRect.right + window.scrollX + margin;\n break;\n }\n\n if (left < margin) {\n left = margin;\n } else if (left + tooltipRect.width > window.innerWidth - margin) {\n left = window.innerWidth - tooltipRect.width - margin;\n }\n\n this.renderer.setStyle(this.tooltipElement, 'top', `${top}px`);\n this.renderer.setStyle(this.tooltipElement, 'left', `${left}px`);\n this.renderer.setStyle(this.tooltipElement, 'visibility', 'visible');\n\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_below');\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_left');\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_right');\n if (chosenPosition === 'below') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_below');\n } else if (chosenPosition === 'left') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_left');\n } else if (chosenPosition === 'right') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_right');\n }\n }\n\n private destroyTooltip() {\n if (this.tooltipElement) {\n this.renderer.removeChild(document.body, this.tooltipElement);\n this.tooltipElement = null;\n }\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n\n ngOnDestroy() {\n this.isDestroyed = true;\n this.destroyTooltip();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n// import { MatchaTooltipComponent } from './tooltip/tooltip.component';\nimport { MatchaTooltipDirective } from './tooltip.directive';\n\n@NgModule({\n declarations: [MatchaTooltipDirective],\n imports: [CommonModule],\n exports: [MatchaTooltipDirective],\n})\nexport class MatchaTooltipModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconComponent } from './icon.component';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n@NgModule({\n declarations: [MatchaIconComponent],\n imports: [CommonModule, MatchaTooltipModule],\n exports: [MatchaIconComponent],\n})\nexport class MatchaIconModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaTitleComponent } from './title/title.component';\n\n@NgModule({\n declarations: [MatchaTitleComponent],\n imports: [CommonModule],\n exports: [MatchaTitleComponent],\n})\nexport class MatchaTitleModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaDividerComponent } from './divider/divider.component';\n\n@NgModule({\n declarations: [\n MatchaDividerComponent\n ],\n imports: [CommonModule],\n exports: [\n MatchaDividerComponent\n ],\n})\nexport class MatchaDividerModule {}\n","import { NgModule } from '@angular/core';\n\nimport { MatchaButtonComponent } from './button/button.component';\n\n@NgModule({\n declarations: [MatchaButtonComponent],\n imports: [],\n exports: [MatchaButtonComponent],\n})\nexport class MatchaButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAccordionComponent } from './accordion/accordion.component';\nimport { MatchaAccordionItemComponent } from './accordion-item/accordion-item.component';\nimport { MatchaAccordionHeaderComponent } from './accordion-header/accordion-header.component';\nimport { MatchaAccordionContentComponent } from './accordion-content/accordion-content.component';\n\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\n\n\n@NgModule({\n declarations: [\n MatchaAccordionComponent,\n MatchaAccordionItemComponent,\n MatchaAccordionHeaderComponent,\n MatchaAccordionContentComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n MatchaButtonModule\n ],\n exports: [\n MatchaAccordionComponent,\n MatchaAccordionItemComponent,\n MatchaAccordionHeaderComponent,\n MatchaAccordionContentComponent\n ]\n})\nexport class MatchaAccordionModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaInfiniteScrollComponent } from './matcha-infinite-scroll/matcha-infinite-scroll.component';\nimport { MatchaInfiniteScrollDataComponent } from './matcha-infinite-scroll-data/matcha-infinite-scroll-data.component';\n\n\n@NgModule({\n declarations: [MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent]\n})\nexport class MatchaInfiniteScrollModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaLazyloadComponent } from './lazyload/lazyload.component';\nimport { MatchaLazyloadDataComponent } from './lazyload-data/lazyload-data.component';\n\n\n@NgModule({\n declarations: [MatchaLazyloadComponent, MatchaLazyloadDataComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaLazyloadComponent, MatchaLazyloadDataComponent]\n})\nexport class MatchaLazyloadModule { }\n","import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[elevation]',\n standalone: false\n})\nexport class MatchaElevationDirective {\n @Input('elevation') elevation: number | string = 0; // Valor padrão para elevação é 0\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {}\n\n ngOnChanges() {\n // Remove qualquer classe de elevação existente\n for (let i = 0; i <= 24; i++) {\n this._renderer.removeClass(this._elementRef.nativeElement, `elevation-z-${i}`);\n }\n\n // Converte para número se for string\n const elevationValue = typeof this.elevation === 'string'\n ? parseInt(this.elevation, 10)\n : this.elevation;\n\n // Adiciona a classe de elevação correspondente\n if (elevationValue >= 1 && elevationValue <= 24) {\n this._renderer.addClass(this._elementRef.nativeElement, `elevation-z-${elevationValue}`);\n } else {\n this._renderer.addClass(this._elementRef.nativeElement, `elevation-z-0`);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaElevationDirective } from './elevation.directive';\n\n@NgModule({\n declarations: [MatchaElevationDirective],\n imports: [CommonModule],\n exports: [MatchaElevationDirective],\n})\nexport class MatchaElevationModule {}\n","import { Injectable, ComponentRef, createComponent, ApplicationRef, Injector, Type, EmbeddedViewRef, Renderer2, RendererFactory2 } from '@angular/core';\n\n/**\n * Serviço responsável pela implementação técnica do overlay e backdrop dos modais.\n *\n * Este serviço lida com a criação e gerenciamento do container do overlay,\n * criação do backdrop e manipulação do DOM. É um serviço de baixo nível\n * utilizado internamente pelo MatchaModalService.\n *\n * @example\n * ```typescript\n * constructor(private overlayService: MatchaOverlayService) {}\n *\n * createOverlay() {\n * this.overlayService.open(MyComponent);\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class MatchaOverlayService {\n private overlayContainer: HTMLElement | null = null;\n private activeModal: ComponentRef<any> | null = null;\n private backdrop: HTMLElement | null = null;\n private renderer: Renderer2;\n\n constructor(\n private appRef: ApplicationRef,\n private injector: Injector,\n private rendererFactory: RendererFactory2,\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n\n /**\n * Cria o container do overlay se ainda não existir.\n * O container é um elemento div que será usado para hospedar os modais.\n *\n * @private\n */\n private createOverlayContainer(): void {\n if (!this.overlayContainer) {\n this.overlayContainer = this.renderer.createElement('div');\n this.renderer.addClass(this.overlayContainer, 'matcha-overlay-container');\n this.renderer.appendChild(document.body, this.overlayContainer);\n }\n }\n\n /**\n * Remove o container do overlay do DOM.\n *\n * @private\n */\n private removeOverlayContainer(): void {\n if (this.overlayContainer) {\n this.renderer.removeChild(document.body, this.overlayContainer);\n this.overlayContainer = null;\n }\n }\n\n /**\n * Cria o backdrop do modal se ainda não existir.\n * O backdrop é um elemento div que cria o efeito de escurecimento\n * por trás do modal.\n *\n * @private\n */\n private createBackdrop(): void {\n if (!this.backdrop) {\n this.backdrop = this.renderer.createElement('div');\n this.renderer.addClass(this.backdrop, 'matcha-modal-backdrop');\n this.renderer.appendChild(document.body, this.backdrop);\n }\n }\n\n /**\n * Remove o backdrop do modal do DOM.\n *\n * @private\n */\n private removeBackdrop(): void {\n if (this.backdrop) {\n this.renderer.removeChild(document.body, this.backdrop);\n this.backdrop = null;\n }\n }\n\n /**\n * Abre um componente dentro de um modal.\n *\n * @param component - O componente que será exibido dentro do modal\n * @param config - Configurações opcionais para o modal\n * @returns Uma referência ao componente criado\n *\n * @example\n * ```typescript\n * const componentRef = this.overlayService.open(MyComponent, {\n * data: { id: 1 }\n * });\n * ```\n */\n open<T>(component: Type<T>, config: any = {}): ComponentRef<T> {\n this.createOverlayContainer();\n this.createBackdrop();\n\n const componentRef = createComponent(component, {\n environmentInjector: this.appRef.injector,\n elementInjector: this.injector,\n });\n\n const componentElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0];\n this.renderer.appendChild(this.overlayContainer, componentElement);\n\n this.appRef.attachView(componentRef.hostView);\n this.activeModal = componentRef;\n\n return componentRef;\n }\n\n /**\n * Fecha o modal atualmente aberto e remove o backdrop e o container.\n *\n * @example\n * ```typescript\n * this.overlayService.close();\n * ```\n */\n close(): void {\n if (this.activeModal) {\n this.appRef.detachView(this.activeModal.hostView);\n this.activeModal.destroy();\n this.activeModal = null;\n this.removeBackdrop();\n this.removeOverlayContainer();\n }\n }\n}\n","import { Injectable, Type } from '@angular/core';\nimport { MatchaOverlayService } from './overlay.service';\nimport { Subject, Observable } from 'rxjs';\n\nexport interface ModalComponent {\n afterClose?: Observable<any>;\n data?: any;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MatchaModalService {\n private afterCloseSubject = new Subject<any>();\n private currentData: any = {};\n\n constructor(private overlayService: MatchaOverlayService) {}\n\n open<T extends ModalComponent>(component: Type<T>, data: any = {}) {\n this.currentData = data;\n const componentRef = this.overlayService.open(component, data);\n\n // Injeta os dados no componente\n componentRef.instance.data = data;\n\n if (componentRef.instance.afterClose) {\n componentRef.instance.afterClose.subscribe((result: any) => {\n this.afterCloseSubject.next(result);\n });\n }\n\n return {\n componentRef,\n afterClose: this.afterCloseSubject.asObservable()\n };\n }\n \n close(result?: any) {\n this.afterCloseSubject.next(result);\n this.overlayService.close();\n this.currentData = {};\n }\n\n getData(): any {\n return this.currentData;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaElevationModule } from '../matcha-elevation/elevation.module';\n\nimport { MatchaModalHeaderComponent } from './modal-header/modal-header.component';\nimport { MatchaModalContentComponent } from './modal-content/modal-content.component';\nimport { MatchaModalFooterComponent } from './modal-footer/modal-footer.component';\nimport { MatchaModalOptionsComponent } from './modal-options/modal-options.component';\nimport { MatchaModalComponent } from './modal/modal.component';\nimport { MatchaModalService } from './modal.service';\nimport { MatchaOverlayService } from './overlay.service';\n\n@NgModule({\n declarations: [\n MatchaModalHeaderComponent,\n MatchaModalContentComponent,\n MatchaModalFooterComponent,\n MatchaModalOptionsComponent,\n MatchaModalComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n MatchaElevationModule\n ],\n exports: [\n MatchaModalHeaderComponent,\n MatchaModalContentComponent,\n MatchaModalFooterComponent,\n MatchaModalOptionsComponent,\n MatchaModalComponent\n ],\n providers: [\n MatchaModalService,\n MatchaOverlayService\n ]\n})\nexport class MatchaModalModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaCardComponent } from './card/card.component';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaElevationModule } from '../matcha-elevation/elevation.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n@NgModule({\n declarations: [MatchaCardComponent],\n imports: [\n CommonModule,\n MatchaElevationModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n ],\n exports: [MatchaCardComponent],\n})\nexport class MatchaCardModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaMasonryComponent } from './masonry/masonry.component';\n\n@NgModule({\n declarations: [MatchaMasonryComponent],\n imports: [CommonModule],\n exports: [MatchaMasonryComponent]\n})\nexport class MatchaMasonryModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaButtonToggleComponent } from './button-toggle/button-toggle.component';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n\n\n@NgModule({\n declarations: [MatchaButtonToggleComponent],\n imports: [\n CommonModule,\n MatchaTooltipModule\n ],\n exports: [MatchaButtonToggleComponent]\n})\nexport class MatchaButtonToggleModule { }\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaToolbarComponent } from '../matcha-toolbar/toolbar/toolbar.component';\nimport { MatchaToolbarButtonComponent } from \"./toolbar-button/toolbar-button.component\";\nimport { MatchaToolbarContentComponent } from \"./toolbar-content/toolbar-content.component\";\nimport { MatchaToolbarMainButtonComponent } from \"./toolbar-main-button/toolbar-main-button.component\";\nimport { MatchaToolbarCustomButtonComponent } from \"./toolbar-custom-button/toolbar-custom-button.component\";\n\n\n@NgModule({\n declarations: [\n MatchaToolbarComponent,\n MatchaToolbarButtonComponent,\n MatchaToolbarContentComponent,\n MatchaToolbarMainButtonComponent,\n MatchaToolbarCustomButtonComponent\n ],\n imports: [\n CommonModule,\n MatchaButtonModule,\n MatchaTitleModule,\n MatchaTooltipModule\n ],\n exports: [\n MatchaToolbarComponent,\n MatchaToolbarButtonComponent,\n MatchaToolbarContentComponent,\n MatchaToolbarMainButtonComponent,\n MatchaToolbarCustomButtonComponent,\n MatchaTitleModule\n ]\n})\nexport class MatchaToolbarModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaGridComponent } from './grid.component';\n\n@NgModule({\n declarations: [MatchaGridComponent],\n imports: [CommonModule],\n exports: [MatchaGridComponent],\n})\nexport class MatchaGridModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EventEmitter } from '@angular/core';\nimport { MatchaMaskCompatibleDirective } from './matcha-mask-compatible.directive';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MATCHA_MASK_CONFIG, MatchaMaskOptions } from './matcha-mask.config';\n\nexport const compatibleOptions: MatchaMaskOptions = {\n specialCharacters: ['/', '(', ')', '.', ':', '-', ' ', '+', ',', '@', '[', ']', '\"', \"'\", '*'],\n patterns: {\n '0': { pattern: /\\d/ },\n '9': { pattern: /\\d/, optional: true },\n 'A': { pattern: /[a-zA-Z0-9]/ },\n 'S': { pattern: /[a-zA-Z]/ }\n },\n prefix: '',\n suffix: '',\n thousandSeparator: '',\n decimalMarker: '.',\n clearIfNotMatch: false,\n showMaskTyped: false,\n placeHolderCharacter: '_',\n shownMaskExpression: '',\n dropSpecialCharacters: true,\n hiddenInput: false,\n validation: true,\n instantPrefix: false,\n separatorLimit: '',\n apm: false,\n allowNegativeNumbers: false,\n leadZeroDateTime: false,\n leadZero: false,\n triggerOnMaskChange: false,\n keepCharacterPositions: false,\n inputTransformFn: (v) => v as string,\n outputTransformFn: (v) => v,\n maskFilled: new EventEmitter<void>()\n};\n\n@NgModule({\n declarations: [\n MatchaMaskCompatibleDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaMaskCompatibleDirective\n ],\n providers: [\n MatchaMaskService,\n { provide: MATCHA_MASK_CONFIG, useValue: compatibleOptions }\n ]\n})\nexport class MatchaMaskModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaFormFieldComponent } from './matcha-form-field/matcha-form-field.component';\nimport { MatchaLabelComponent } from './matcha-label/matcha-label.component';\nimport { MatchaErrorComponent } from './matcha-error/matcha-error.component';\n\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaMaskModule } from '../matcha-mask/matcha-mask.module';\n\n@NgModule({\n declarations: [MatchaFormFieldComponent, MatchaLabelComponent, MatchaErrorComponent],\n imports: [CommonModule, MatchaIconModule, ReactiveFormsModule, MatchaMaskModule],\n exports: [MatchaFormFieldComponent, MatchaLabelComponent, MatchaErrorComponent, ReactiveFormsModule, MatchaMaskModule],\n})\nexport class MatchaFormFieldModule {}\n","import { Directive, Input, HostListener, ElementRef, AfterViewInit, OnDestroy, Renderer2, ChangeDetectorRef, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatchaAutocompleteComponent } from './matcha-autocomplete.component';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[matchaAutocomplete]',\n standalone: false,\n})\nexport class MatchaAutocompleteTriggerDirective implements AfterViewInit, OnDestroy {\n @Input('matchaAutocomplete') panel!: MatchaAutocompleteComponent;\n private subs = new Subscription();\n private clearButton?: HTMLElement;\n\n constructor(\n private el: ElementRef<HTMLInputElement>,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef,\n @Optional() private ngControl: NgControl\n ) {}\n\n ngAfterViewInit() {\n if (!this.panel) {\n throw new Error('Você precisa passar uma referência para <matcha-autocomplete> ex: [matchaAutocomplete]=\"auto\"');\n }\n this.panel.attachTo(this.el.nativeElement);\n\n // close panel ao clicar fora - usando click para evitar conflito com focus\n const clickSub = fromEvent(document, 'click').pipe(\n filter((ev: any) => {\n const target = ev.target as Node;\n const isInsideInput = this.el.nativeElement.contains(target) || this.el.nativeElement === target;\n const isInsidePanel = this.panel?.elRef?.nativeElement?.contains?.(target);\n\n console.log('MatchaAutocomplete: Click outside check', {\n target: target,\n inputElement: this.el.nativeElement,\n isInsideInput,\n isInsidePanel,\n shouldClose: !isInsideInput && !isInsidePanel,\n panelOpen: this.panel?.open\n });\n\n // Só fechar se o painel estiver aberto e clicou fora\n return this.panel?.open && !isInsideInput && !isInsidePanel;\n })\n ).subscribe(() => {\n console.log('MatchaAutocomplete: Fechando painel por click outside');\n this.panel.closePanel();\n });\n\n this.subs.add(clickSub);\n\n // Escutar evento de seleção do autocomplete\n const selectionSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-selection').subscribe((event: any) => {\n console.log('MatchaAutocomplete: Evento de seleção recebido na diretiva', event.detail);\n const { value, displayText } = event.detail;\n if (value !== undefined) {\n // Usar displayText se fornecido, senão usar o valor diretamente\n const textToWrite = displayText !== undefined ? displayText : value;\n this.writeValueToInput(textToWrite, value);\n }\n });\n\n this.subs.add(selectionSub);\n\n // Escutar evento de limpeza\n const clearSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-clear').subscribe(() => {\n console.log('MatchaAutocomplete: Evento de limpeza recebido na diretiva');\n this.clearInput();\n });\n\n this.subs.add(clearSub);\n\n // Criar botão de limpar se necessário\n if (this.panel.showClearButton) {\n this.createClearButton();\n\n // Observar mudanças no estado disabled do input\n const input = this.el.nativeElement;\n const observer = new MutationObserver(() => {\n this.updateClearButtonVisibility();\n });\n observer.observe(input, {\n attributes: true,\n attributeFilter: ['disabled']\n });\n // Armazenar observer para cleanup\n (this as any)._disabledObserver = observer;\n }\n\n // Observar mudanças na seleção para mostrar/esconder botão\n const selectionChangeSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-selection').subscribe(() => {\n this.updateClearButtonVisibility();\n });\n\n const clearChangeSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-clear').subscribe(() => {\n this.updateClearButtonVisibility();\n });\n\n this.subs.add(selectionChangeSub);\n this.subs.add(clearChangeSub);\n\n // Observar mudanças no FormControl para sincronizar o input com displayWith\n if (this.ngControl && this.ngControl.control) {\n const controlValueSub = this.ngControl.control.valueChanges.subscribe((value) => {\n console.log('MatchaAutocomplete: FormControl valor mudou', value);\n\n // Se o valor é um objeto, usar displayWith para exibir no input\n if (value && typeof value === 'object') {\n const displayText = this.panel.getDisplayValue(value);\n console.log('MatchaAutocomplete: Atualizando input com displayWith', { value, displayText });\n\n // Atualizar apenas o input visual, sem disparar eventos do FormControl\n const input = this.el.nativeElement;\n if (input.value !== displayText) {\n input.value = displayText;\n }\n\n // Atualizar visibilidade do botão de limpar\n this.updateClearButtonVisibility();\n }\n });\n\n this.subs.add(controlValueSub);\n }\n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n\n // Limpar observer se existir\n if ((this as any)._disabledObserver) {\n (this as any)._disabledObserver.disconnect();\n }\n\n // Remover botão de limpar se existir\n if (this.clearButton && this.clearButton.parentNode) {\n this.renderer.removeChild(this.clearButton.parentNode, this.clearButton);\n }\n }\n\n private writeValueToInput(displayText: string, actualValue?: any) {\n console.log('MatchaAutocomplete: writeValueToInput chamado', {\n displayText,\n actualValue,\n input: this.el.nativeElement,\n hasNgControl: !!this.ngControl\n });\n\n const input = this.el.nativeElement;\n\n // Se há ngControl e actualValue é um objeto (não string), atualizar FormControl diretamente\n if (this.ngControl && this.ngControl.control && actualValue !== undefined) {\n // Se actualValue é um objeto, atualizar o FormControl com o objeto completo\n if (typeof actualValue === 'object' && actualValue !== null) {\n console.log('MatchaAutocomplete: Atualizando FormControl com objeto', actualValue);\n // Usar setValue com emitEvent: false para evitar loop infinito, depois emitir manualmente\n this.ngControl.control.setValue(actualValue, { emitEvent: false });\n // Atualizar o input visual com o displayText\n input.value = displayText == null ? '' : String(displayText);\n // Emitir eventos de mudança manualmente\n this.ngControl.control.updateValueAndValidity({ emitEvent: true });\n } else {\n // Se actualValue é primitivo, atualizar normalmente\n input.value = displayText == null ? '' : String(displayText);\n // Dispatch eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n }\n } else {\n // Sem ngControl ou sem actualValue, apenas atualizar o input visual\n input.value = displayText == null ? '' : String(displayText);\n // Dispatch eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n }\n\n // Atualizar visibilidade do botão após escrever valor\n setTimeout(() => {\n this.updateClearButtonVisibility();\n }, 0);\n\n console.log('MatchaAutocomplete: Valor escrito no input', {\n inputValue: input.value,\n formControlValue: this.ngControl?.control?.value\n });\n }\n\n private clearInput() {\n const input = this.el.nativeElement;\n input.value = '';\n\n // Se há ngControl, limpar o FormControl diretamente\n if (this.ngControl && this.ngControl.control) {\n console.log('MatchaAutocomplete: Limpando FormControl');\n this.ngControl.control.setValue(null, { emitEvent: true });\n } else {\n // Sem ngControl, apenas disparar eventos\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n const blurEvent = new Event('blur', { bubbles: true });\n\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n input.dispatchEvent(blurEvent);\n }\n\n // Atualizar visibilidade do botão\n this.updateClearButtonVisibility();\n\n console.log('MatchaAutocomplete: Input limpo', {\n formControlValue: this.ngControl?.control?.value\n });\n }\n\n @HostListener('click')\n onClick() {\n // Abrir painel quando clicar no input\n this.panel.openPanel();\n }\n\n @HostListener('focus')\n onFocus() {\n // Não abrir automaticamente no focus para evitar conflito com click outside\n // O painel será aberto apenas quando o usuário clicar ou digitar\n }\n\n @HostListener('input', ['$event'])\n onInput(e: Event) {\n // se o usuário digitar, apenas reabre painel. O filtro de opções geralmente é controlado pelo componente pai\n if (!this.panel.open) this.panel.openPanel();\n }\n\n @HostListener('blur')\n onBlur() {\n // Implementar auto-seleção no blur se configurado\n if (!this.panel.autoSelectOnBlur) {\n return;\n }\n\n const input = this.el.nativeElement;\n const currentValue = input.value;\n\n // Se já há uma seleção válida (objeto), verificar se o texto ainda corresponde\n const selectedValue = this.panel.getSelectedValue();\n if (selectedValue !== undefined && selectedValue !== null) {\n // Verificar se o texto do input corresponde ao valor selecionado\n const displayText = this.panel.getDisplayValue(selectedValue);\n if (displayText.toLowerCase().trim() === currentValue.toLowerCase().trim()) {\n // Texto corresponde à seleção, não fazer nada\n return;\n }\n }\n\n // Se o valor é uma string (texto digitado mas não selecionado)\n if (typeof currentValue === 'string' && currentValue.trim() !== '') {\n // Procurar match exato (case-insensitive) nas opções disponíveis\n const exactMatch = this.panel.findOptionByText(currentValue);\n\n if (exactMatch) {\n // Match exato encontrado - selecionar automaticamente\n console.log('MatchaAutocomplete: Match exato encontrado no blur, selecionando automaticamente');\n this.panel.selectOption(exactMatch);\n\n // Emitir evento de auto-seleção\n this.panel.autoSelected.emit(exactMatch.value);\n\n // Atualizar visibilidade do botão de limpar após auto-seleção\n this.updateClearButtonVisibility();\n } else {\n // Nenhum match exato - limpar o campo\n console.log('MatchaAutocomplete: Nenhum match exato encontrado no blur, limpando campo');\n this.panel.clearSelection();\n }\n } else if (currentValue === '' || !currentValue) {\n // Campo vazio - limpar seleção se houver\n if (this.panel.hasSelection()) {\n console.log('MatchaAutocomplete: Campo vazio no blur, limpando seleção');\n this.panel.clearSelection();\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (!this.panel) return;\n\n switch (ev.key) {\n case 'ArrowDown':\n ev.preventDefault();\n this.panel.highlightNext();\n break;\n case 'ArrowUp':\n ev.preventDefault();\n this.panel.highlightPrevious();\n break;\n case 'Enter':\n ev.preventDefault();\n this.panel.selectActive();\n // pega o value escolhido e escreve no input\n setTimeout(() => {\n const val = this.panel.getSelectedValue();\n if (val !== undefined) {\n const displayText = this.panel.getDisplayValue(val);\n this.writeValueToInput(displayText, val);\n }\n });\n break;\n case 'Escape':\n ev.preventDefault();\n this.panel.closePanel();\n break;\n }\n }\n\n // Se uma opção for selecionada via click (o matcha-option notifica o pai que faz close),\n // lemos selectedValue e escrevemos no input. Como o selectOption do painel fecha imediatamente,\n // precisamos observar mudanças no DOM/QueryList ou checar logo após close.\n // Simples solução: observar clicks nas options via delegation:\n @HostListener('document:click', ['$event'])\n onDocClick(ev: MouseEvent) {\n const target = ev.target as HTMLElement;\n\n // Verificar se o clique foi em uma opção deste painel específico\n const isOptionClick = target.closest('matcha-option') &&\n this.panel?.elRef?.nativeElement?.contains(target);\n\n if (isOptionClick) {\n // Se clicou em uma opção deste painel, aguardar um pouco e atualizar o input\n setTimeout(() => {\n if (this.panel && typeof this.panel.getSelectedValue === 'function') {\n const val = this.panel.getSelectedValue();\n if (val !== undefined) {\n const displayText = this.panel.getDisplayValue(val);\n this.writeValueToInput(displayText, val);\n }\n }\n }, 10);\n }\n }\n\n private createClearButton(): void {\n if (this.clearButton) return;\n\n const input = this.el.nativeElement;\n const formField = input.closest('matcha-form-field');\n\n if (!formField) {\n console.warn('MatchaAutocomplete: matcha-form-field não encontrado para adicionar botão de limpar');\n return;\n }\n\n // Criar botão\n this.clearButton = this.renderer.createElement('span');\n // Adicionar classe do ícone (formato: i-matcha-{iconName})\n const iconClass = this.panel.clearButtonIcon.startsWith('i-matcha-')\n ? this.panel.clearButtonIcon\n : 'i-matcha-' + this.panel.clearButtonIcon;\n this.renderer.addClass(this.clearButton, iconClass);\n this.renderer.addClass(this.clearButton, 'i-size-sm');\n this.renderer.addClass(this.clearButton, 'matcha-autocomplete-clear-button');\n this.renderer.setStyle(this.clearButton, 'cursor', 'pointer');\n this.renderer.setStyle(this.clearButton, 'position', 'absolute');\n this.renderer.setStyle(this.clearButton, 'right', '12px');\n this.renderer.setStyle(this.clearButton, 'z-index', '10');\n this.renderer.setAttribute(this.clearButton, 'aria-label', this.panel.clearButtonAriaLabel);\n this.renderer.setAttribute(this.clearButton, 'role', 'button');\n this.renderer.setAttribute(this.clearButton, 'tabindex', '0');\n\n // Adicionar evento de clique\n this.renderer.listen(this.clearButton, 'click', (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.panel.clearSelection();\n });\n\n // Adicionar evento de teclado (Enter e Space)\n this.renderer.listen(this.clearButton, 'keydown', (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.stopPropagation();\n this.panel.clearSelection();\n }\n });\n\n // Inserir botão no form-field (após o input)\n const inputContainer = input.parentElement;\n if (inputContainer) {\n this.renderer.setStyle(inputContainer, 'position', 'relative');\n this.renderer.appendChild(inputContainer, this.clearButton);\n } else {\n this.renderer.appendChild(formField, this.clearButton);\n }\n\n // Atualizar visibilidade inicial\n this.updateClearButtonVisibility();\n }\n\n private updateClearButtonVisibility(): void {\n if (!this.clearButton) return;\n\n const hasSelection = this.panel.hasSelection();\n const isDisabled = this.el.nativeElement.disabled;\n\n if (hasSelection && !isDisabled && this.panel.showClearButton) {\n this.renderer.setStyle(this.clearButton, 'display', 'block');\n } else {\n this.renderer.setStyle(this.clearButton, 'display', 'none');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaOptionComponent } from './matcha-option.component';\n\n@NgModule({\n declarations: [\n MatchaOptionComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaOptionComponent\n ]\n})\n\nexport class MatchaOptionModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPanelComponent } from './matcha-panel.component';\n\n@NgModule({\n declarations: [\n MatchaPanelComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaPanelComponent\n ]\n})\nexport class MatchaPanelModule { }\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAutocompleteComponent } from './matcha-autocomplete.component';\nimport { MatchaAutocompleteTriggerDirective } from './matcha-autocomplete.directive';\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\n\n@NgModule({\n declarations: [\n MatchaAutocompleteComponent,\n MatchaAutocompleteTriggerDirective\n ],\n imports: [\n CommonModule,\n MatchaOptionModule,\n MatchaPanelModule\n ],\n exports: [\n MatchaAutocompleteComponent,\n MatchaAutocompleteTriggerDirective,\n MatchaOptionModule // Re-exporta para conveniência\n ]\n})\nexport class MatchaAutocompleteModule { }\n\n","import { Directive, Input, HostListener, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';\nimport { MatchaSelectComponent } from './matcha-select.component';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[matchaSelect]',\n standalone: false,\n})\nexport class MatchaSelectTriggerDirective implements AfterViewInit, OnDestroy {\n @Input('matchaSelect') select!: MatchaSelectComponent;\n private subs = new Subscription();\n\n constructor(private el: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit() {\n if (!this.select) {\n throw new Error('Você precisa passar uma referência para <matcha-select> ex: [matchaSelect]=\"select\"');\n }\n\n // close panel ao clicar fora - usando click para evitar conflito com focus\n const clickSub = fromEvent(document, 'click').pipe(\n filter((ev: any) => {\n const target = ev.target as Node;\n const isInsideTrigger = this.el.nativeElement.contains(target) || this.el.nativeElement === target;\n const isInsidePanel = this.select?.elRef?.nativeElement?.contains?.(target);\n\n // Só fechar se o painel estiver aberto e clicou fora\n return this.select?.open && !isInsideTrigger && !isInsidePanel;\n })\n ).subscribe(() => {\n this.select.closePanel();\n });\n\n this.subs.add(clickSub);\n\n // Escutar evento de seleção do select\n const selectionSub = fromEvent(this.select.elRef.nativeElement, 'matcha-select-selection').subscribe((event: any) => {\n const { value } = event.detail;\n if (value !== undefined) {\n this.writeValueToInput(value);\n }\n });\n\n this.subs.add(selectionSub);\n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n\n private writeValueToInput(value: any) {\n const input = this.el.nativeElement as HTMLInputElement;\n input.value = value == null ? '' : value;\n\n // Dispatch múltiplos eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n const blurEvent = new Event('blur', { bubbles: true });\n\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n input.dispatchEvent(blurEvent);\n }\n\n @HostListener('click')\n onClick() {\n // Abrir painel quando clicar no trigger\n this.select.openPanel();\n }\n\n @HostListener('focus')\n onFocus() {\n // Não abrir automaticamente no focus para evitar conflito com click outside\n // O painel será aberto apenas quando o usuário clicar\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (!this.select) return;\n\n switch (ev.key) {\n case 'ArrowDown':\n ev.preventDefault();\n this.select.highlightNext();\n break;\n case 'ArrowUp':\n ev.preventDefault();\n this.select.highlightPrevious();\n break;\n case 'Enter':\n case ' ':\n ev.preventDefault();\n this.select.selectActive();\n // pega o value escolhido e escreve no input\n setTimeout(() => {\n const val = this.select.getSelectedValue();\n if (val !== undefined) this.writeValueToInput(val);\n });\n break;\n case 'Escape':\n ev.preventDefault();\n this.select.closePanel();\n break;\n }\n }\n\n // Se uma opção for selecionada via click (o matcha-option notifica o pai que faz close),\n // lemos selectedValue e escrevemos no input. Como o selectOption do painel fecha imediatamente,\n // precisamos observar mudanças no DOM/QueryList ou checar logo após close.\n // Simples solução: observar clicks nas options via delegation:\n @HostListener('document:click', ['$event'])\n onDocClick(ev: MouseEvent) {\n const target = ev.target as HTMLElement;\n\n // Verificar se o clique foi em uma opção deste painel específico\n const isOptionClick = target.closest('matcha-option') &&\n this.select?.elRef?.nativeElement?.contains(target);\n\n if (isOptionClick) {\n // Se clicou em uma opção deste painel, aguardar um pouco e atualizar o input\n setTimeout(() => {\n if (this.select && typeof this.select.getSelectedValue === 'function') {\n const val = this.select.getSelectedValue();\n if (val !== undefined) this.writeValueToInput(val);\n }\n }, 10);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSelectComponent } from './matcha-select.component';\nimport { MatchaSelectTriggerDirective } from './matcha-select.directive';\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\n\n@NgModule({\n declarations: [\n MatchaSelectComponent,\n MatchaSelectTriggerDirective\n ],\n imports: [\n CommonModule,\n MatchaOptionModule,\n MatchaPanelModule\n ],\n exports: [\n MatchaSelectComponent,\n MatchaSelectTriggerDirective\n ]\n})\nexport class MatchaSelectModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleDirective } from './ripple.directive';\n\n@NgModule({\n declarations: [\n MatchaRippleDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaRippleDirective\n ],\n})\nexport class MatchaRippleModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleModule } from '../matcha-ripple/ripple.module';\nimport { MatchaCheckboxComponent } from './checkbox/checkbox.component';\n\n@NgModule({\n declarations: [\n MatchaCheckboxComponent,\n ],\n imports: [CommonModule, MatchaRippleModule],\n exports: [\n MatchaCheckboxComponent,\n ],\n})\nexport class MatchaCheckboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\nimport { MatchaHintTextComponent } from './hint/hint-text.component';\n\n@NgModule({\n declarations: [MatchaHintTextComponent],\n imports: [\n CommonModule,\n MatchaIconModule,\n ],\n exports: [MatchaHintTextComponent],\n})\nexport class MatchaHintTextModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-overflow-draggable',\n templateUrl: './matcha-overflow-draggable.component.html',\n styleUrls: ['./matcha-overflow-draggable.component.scss'],\n standalone: false\n})\n\nexport class MatchaOverflowDraggableComponent {\n @Input() dragRef: string = '';\n\n public dragToScroll(): void {\n const ele = document.querySelector(`matchaDraggableReference${this.dragRef}`);\n if (ele) {\n let pos = { top: 0, left: 0, x: 0, y: 0 };\n const mouseDownHandler = function (e: any) {\n pos = {\n // The current scroll\n left: ele.scrollLeft,\n top: ele.scrollTop,\n // Get the current mouse position\n x: e.clientX,\n y: e.clientY,\n };\n ele.setAttribute('style', 'cursor: grabbing; user-select: none');\n document.addEventListener('mousemove', mouseMoveHandler);\n document.addEventListener('mouseup', mouseUpHandler);\n };\n\n const mouseMoveHandler = function (e: any) {\n // How far the mouse has been moved\n const dx = e.clientX - pos.x;\n const dy = e.clientY - pos.y;\n // Scroll the element\n ele.scrollTop = pos.top - dy;\n ele.scrollLeft = pos.left - dx;\n };\n\n const mouseUpHandler = function () {\n document.removeEventListener('mousemove', mouseMoveHandler);\n document.removeEventListener('mouseup', mouseUpHandler);\n ele.setAttribute('style', 'cursor: grab; user-select: initial');\n };\n ele.addEventListener('mousedown', mouseDownHandler);\n }\n }\n\n public get classes(): string {\n const draggableReference = this.dragRef ? `matchaDraggableReference${this.dragRef}` : '';\n\n const activeClasses = `${draggableReference}`;\n return activeClasses;\n }\n\n}\n","<div [class]=\"classes\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPaginatorComponent } from './paginator/paginator.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaPaginatorIntl } from './paginator-intl.service';\n\n@NgModule({\n declarations: [MatchaPaginatorComponent],\n imports: [CommonModule, MatchaIconModule],\n exports: [MatchaPaginatorComponent],\n providers: [MatchaPaginatorIntl]\n})\nexport class MatchaPaginatorModule {}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSlideToggleComponent } from './slide-toggle/slide-toggle.component';\nimport { FormsModule } from '@angular/forms';\n\n\n\n\n@NgModule({\n declarations: [MatchaSlideToggleComponent],\n imports: [\n CommonModule,FormsModule\n ],\n exports: [MatchaSlideToggleComponent]\n})\nexport class MatchaSlideToggleModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSpinComponent } from './spin/spin.component';\n\n\n\n@NgModule({\n declarations: [MatchaSpinComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSpinComponent]\n})\nexport class MatchaSpinModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSpinnerComponent } from './spinner/spinner.component';\n\n\n@NgModule({\n declarations: [MatchaSpinnerComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSpinnerComponent]\n})\nexport class MatchaSpinnerModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaTabsComponent } from './tabs/tabs.component';\nimport { MatchaTabItemComponent } from './tab-item/tab-item.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\nexport { TabChangeEvent } from './tabs/tabs.component';\n\n@NgModule({\n declarations: [\n MatchaTabsComponent,\n MatchaTabItemComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule\n ],\n exports: [\n MatchaTabsComponent,\n MatchaTabItemComponent\n ]\n})\nexport class MatchaTabsModule { }","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatchaDateComponent } from './date/matcha-date.component';\n\n@NgModule({\n declarations: [\n MatchaDateComponent\n ],\n imports: [\n CommonModule,\n FormsModule\n ],\n exports: [\n MatchaDateComponent\n ]\n})\nexport class MatchaDateModule { }\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaDateRangeComponent } from './date-range/date-range.component';\nimport { MatchaDateModule } from '../matcha-date/matcha-date.module';\n\n@NgModule({\n declarations: [MatchaDateRangeComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatchaDateModule\n ],\n exports: [\n MatchaDateRangeComponent,\n MatchaDateModule\n ]\n})\nexport class MatchaDateRangeModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaTimeComponent } from './time/time.component';\n\n@NgModule({\n declarations: [MatchaTimeComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n exports: [MatchaTimeComponent]\n})\nexport class MatchaTimeModule { }\n","import { Directive, HostListener } from '@angular/core';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\n\n@Directive({\n selector: '[prevStep]',\n standalone: true\n})\nexport class PrevStepDirective {\n private stepper: MatchaStepperContentComponent | null;\n\n constructor(\n stepper: MatchaStepperContentComponent | null\n ) {\n this.stepper = stepper;\n }\n\n @HostListener('click')\n onClick() {\n this.stepper?.prevStep();\n }\n}","import { Directive, HostListener } from '@angular/core';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\n\n@Directive({\n selector: '[nextStep]',\n standalone: true\n})\nexport class NextStepDirective {\n private stepper: MatchaStepperContentComponent | null;\n\n constructor(\n stepper: MatchaStepperContentComponent | null\n ) {\n this.stepper = stepper;\n }\n\n @HostListener('click')\n onClick() {\n this.stepper?.nextStep();\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaStepperControllerComponent } from './stepper-controller/stepper-controller.component';\nimport { MatchaStepperComponent } from './stepper/stepper.component';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\nimport { StepComponent } from './step/step.component';\nimport { PrevStepDirective } from './prev-step.diretive';\nimport { NextStepDirective } from './next-step.diretive';\n\n@NgModule({\n declarations: [\n MatchaStepperControllerComponent,\n MatchaStepperComponent,\n MatchaStepperContentComponent,\n StepComponent\n ],\n imports: [\n CommonModule,\n PrevStepDirective,\n NextStepDirective,\n ],\n exports: [\n MatchaStepperControllerComponent, \n MatchaStepperComponent, \n MatchaStepperContentComponent,\n StepComponent,\n PrevStepDirective,\n NextStepDirective\n ],\n providers: []\n})\nexport class MatchaStepperModule { }\n","import { Directive, ElementRef, OnInit, HostBinding } from '@angular/core';\nimport { MatchaDragDirective } from './drag.directive';\n\n@Directive({\n selector: '[matchaDragHandle]',\n standalone:false\n})\nexport class MatchaDragHandleDirective implements OnInit {\n\n @HostBinding('class.matcha-drag-handle') get dragHandleClass() {\n return true;\n }\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private dragDirective: MatchaDragDirective\n ) {}\n\n ngOnInit() {\n this.dragDirective.setDragHandle(this.elementRef.nativeElement);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatchaDropListComponent } from './drop-list/drop-list.component';\nimport { MatchaDragDirective } from './directives/drag.directive';\nimport { MatchaDragHandleDirective } from './directives/drag-handle.directive';\nimport { MatchaDropListService } from './services/drop-list.service';\n\n@NgModule({\n declarations: [\n MatchaDropListComponent,\n MatchaDragDirective,\n MatchaDragHandleDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaDropListComponent,\n MatchaDragDirective,\n MatchaDragHandleDirective\n ],\n providers: [\n MatchaDropListService\n ]\n})\nexport class MatchaDropListModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatchaInputPhoneComponent } from \"./input-phone.component\";\n\n// dependencies\nimport { FormsModule } from '@angular/forms';\nimport { MatchaFormFieldModule } from '../matcha-form-field/matcha-form-field.module';\nimport { MatchaMaskModule } from '../matcha-mask/matcha-mask.module';\n@NgModule({\n declarations: [MatchaInputPhoneComponent],\n imports: [\n CommonModule,\n MatchaFormFieldModule,\n FormsModule,\n MatchaMaskModule\n ],\n exports: [MatchaInputPhoneComponent]\n})\nexport class MatchaInputPhoneModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPageLayoutComponent } from './page-layout.component';\nimport { MatchaStepperModule } from '../matcha-stepper/stepper.module';\n\n\n@NgModule({\n declarations: [\n MatchaPageLayoutComponent\n ],\n imports: [\n CommonModule,\n MatchaStepperModule\n ],\n exports: [\n MatchaPageLayoutComponent\n ]\n})\nexport class MatchaPageLayoutModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleModule } from '../matcha-ripple/ripple.module';\nimport { MatchaRadioComponent } from './radio/radio.component';\n\n\n@NgModule({\n declarations: [\n MatchaRadioComponent,\n ],\n imports: [CommonModule, MatchaRippleModule],\n exports: [\n MatchaRadioComponent,\n ],\n})\nexport class MatchaRadioModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAvatarComponent } from './avatar/avatar.component';\n\n\n\n\n@NgModule({\n declarations: [MatchaAvatarComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaAvatarComponent]\n})\nexport class MatchaAvatarModule { }\n\n\n","import { Injectable, OnDestroy, PLATFORM_ID, Inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject, Observable, fromEvent, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, startWith, map } from 'rxjs/operators';\n\nexport interface BreakpointState {\n matches: boolean;\n breakpoint: string;\n}\n\n/**\n * Serviço singleton para observação de breakpoints CSS\n * Funciona tanto no browser quanto no servidor (SSR)\n */\n@Injectable({\n providedIn: 'root' // Singleton garantido pelo Angular\n})\nexport class MatchaBreakpointObserver implements OnDestroy {\n private breakpointSubject = new BehaviorSubject<BreakpointState>({\n matches: false,\n breakpoint: ''\n });\n\n private resizeSubscription: any;\n private isBrowser: boolean;\n private currentBreakpoints = new Map<string, boolean>();\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {\n this.isBrowser = isPlatformBrowser(this.platformId);\n\n if (this.isBrowser) {\n this.setupResizeListener();\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n\n /**\n * Observa um breakpoint específico\n * @param breakpoint - String no formato CSS media query (ex: '(max-width: 768px)')\n * @returns Observable<BreakpointState>\n */\n observe(breakpoint: string): Observable<BreakpointState> {\n if (!this.isBrowser) {\n // No servidor, retorna um observable que emite false\n return of({ matches: false, breakpoint });\n }\n\n // Emite o estado inicial\n const initialState = this.getState(breakpoint);\n\n return this.breakpointSubject.asObservable().pipe(\n startWith(initialState),\n map(() => this.getState(breakpoint)),\n distinctUntilChanged((prev, curr) =>\n prev.matches === curr.matches && prev.breakpoint === curr.breakpoint\n )\n );\n }\n\n /**\n * Verifica se um breakpoint específico está ativo\n * @param breakpoint - String no formato CSS media query\n * @returns boolean\n */\n isMatched(breakpoint: string): boolean {\n if (!this.isBrowser) {\n return false;\n }\n return this.checkBreakpoint(breakpoint);\n }\n\n /**\n * Obtém o estado atual do breakpoint\n * @param breakpoint - String no formato CSS media query\n * @returns BreakpointState\n */\n getState(breakpoint: string): BreakpointState {\n return {\n matches: this.isMatched(breakpoint),\n breakpoint\n };\n }\n\n /**\n * Observa múltiplos breakpoints simultaneamente\n * @param breakpoints - Array de strings de breakpoints\n * @returns Observable<Map<string, boolean>>\n */\n observeMultiple(breakpoints: string[]): Observable<Map<string, boolean>> {\n if (!this.isBrowser) {\n const emptyMap = new Map<string, boolean>();\n breakpoints.forEach(bp => emptyMap.set(bp, false));\n return of(emptyMap);\n }\n\n return this.breakpointSubject.asObservable().pipe(\n startWith({ matches: false, breakpoint: '' }),\n map(() => {\n const result = new Map<string, boolean>();\n breakpoints.forEach(bp => {\n result.set(bp, this.checkBreakpoint(bp));\n });\n return result;\n }),\n distinctUntilChanged((prev, curr) => {\n if (prev.size !== curr.size) return false;\n for (const [key, value] of prev) {\n if (curr.get(key) !== value) return false;\n }\n return true;\n })\n );\n }\n\n private setupResizeListener(): void {\n if (!this.isBrowser) return;\n\n // Usa fromEvent para criar um observable do evento resize\n this.resizeSubscription = fromEvent(window, 'resize')\n .pipe(\n debounceTime(100) // Debounce para evitar muitas chamadas\n )\n .subscribe(() => {\n // Limpa o cache de breakpoints\n this.currentBreakpoints.clear();\n\n // Emite um novo evento para forçar reavaliação\n this.breakpointSubject.next({\n matches: false,\n breakpoint: ''\n });\n });\n }\n\n private checkBreakpoint(breakpoint: string): boolean {\n if (!this.isBrowser) return false;\n\n // Verifica cache primeiro\n if (this.currentBreakpoints.has(breakpoint)) {\n return this.currentBreakpoints.get(breakpoint)!;\n }\n\n try {\n // Remove parênteses se existirem\n const cleanBreakpoint = breakpoint.replace(/[()]/g, '');\n\n // Extrai o valor numérico e a condição\n const match = cleanBreakpoint.match(/(max-width|min-width|max-height|min-height):\\s*(\\d+)px/);\n\n if (!match) {\n console.warn(`Breakpoint inválido: ${breakpoint}`);\n this.currentBreakpoints.set(breakpoint, false);\n return false;\n }\n\n const [, condition, value] = match;\n const numericValue = parseInt(value, 10);\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n let result = false;\n switch (condition) {\n case 'max-width':\n result = windowWidth <= numericValue;\n break;\n case 'min-width':\n result = windowWidth >= numericValue;\n break;\n case 'max-height':\n result = windowHeight <= numericValue;\n break;\n case 'min-height':\n result = windowHeight >= numericValue;\n break;\n default:\n result = false;\n }\n\n // Armazena no cache\n this.currentBreakpoints.set(breakpoint, result);\n return result;\n } catch (error) {\n console.error('Erro ao verificar breakpoint:', error);\n this.currentBreakpoints.set(breakpoint, false);\n return false;\n }\n }\n\n /**\n * Método utilitário para criar breakpoints comuns\n */\n static createBreakpoint(width: number, condition: 'max' | 'min' = 'max'): string {\n const prefix = condition === 'max' ? 'max-width' : 'min-width';\n return `(${prefix}: ${width}px)`;\n }\n\n /**\n * Breakpoints pré-definidos para facilitar o uso\n */\n static readonly BREAKPOINTS = {\n XS: '(max-width: 480px)',\n SM: '(max-width: 768px)',\n MD: '(max-width: 1024px)',\n LG: '(max-width: 1200px)',\n XL: '(max-width: 1440px)',\n MOBILE: '(max-width: 768px)',\n TABLET: '(min-width: 769px) and (max-width: 1024px)',\n DESKTOP: '(min-width: 1025px)'\n } as const;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaDrawerComponent } from './drawer/drawer.component';\nimport { MatchaDrawerContainerComponent } from './drawer-container/drawer-container.component';\nimport { MatchaDrawerContentComponent } from './drawer-content/drawer-content.component';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\nimport { MatchaBreakpointObserver } from '../matcha-breakpoint-observable/breakpoint-observer.service';\n\n@NgModule({\n declarations: [\n MatchaDrawerComponent,\n MatchaDrawerContainerComponent,\n MatchaDrawerContentComponent\n ],\n imports: [\n CommonModule,\n MatchaButtonModule\n ],\n providers: [\n MatchaBreakpointObserver\n ],\n exports: [\n MatchaDrawerComponent,\n MatchaDrawerContainerComponent,\n MatchaDrawerContentComponent\n ]\n})\nexport class MatchaDrawerModule { }\n","import { NgModule } from '@angular/core';\n\nimport { MatchaHighlightComponent } from './highlight.component';\nimport { CopyButtonComponent } from './copy-button/copy-button.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\n\n// Prism.js será carregado dinamicamente no componente quando necessário\n\n@NgModule({\n declarations: [\n MatchaHighlightComponent,\n CopyButtonComponent\n ],\n imports: [\n MatchaIconModule,\n MatchaButtonModule\n ],\n exports: [\n MatchaHighlightComponent,\n CopyButtonComponent\n ],\n})\nexport class MatchaHighlightModule\n{\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\nimport { MatchaSliderComponent } from './slider/slider.component';\n\n\n@NgModule({\n declarations: [MatchaSliderComponent],\n imports: [\n CommonModule,FormsModule\n ],\n exports: [MatchaSliderComponent]\n})\nexport class MatchaSliderModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaChipComponent } from './chip/chip.component';\nimport { MatchaChipListComponent } from './chip-list/chip-list.component';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\n@NgModule({\n declarations: [\n MatchaChipComponent,\n MatchaChipListComponent\n ],\n imports: [CommonModule, MatchaDividerModule, MatchaIconModule],\n exports: [\n MatchaChipComponent,\n MatchaChipListComponent\n ],\n})\nexport class MatchaChipModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatchaAutocompleteModule } from './matcha-autocomplete/matcha-autocomplete.module';\nimport { MatchaOptionModule } from './matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from './matcha-panel/matcha-panel.module';\nimport { MatchaSelectModule } from './matcha-select/matcha-select.module';\nimport { MatchaAccordionModule } from './matcha-accordion/accordion.module';\nimport { MatchaButtonModule } from './matcha-button/button.module';\nimport { MatchaButtonToggleModule } from './matcha-button-toggle/button-toggle.module';\nimport { MatchaCardModule } from './matcha-card/card.module';\nimport { MatchaCheckboxModule } from './matcha-checkbox/checkbox.module';\nimport { MatchaDividerModule } from './matcha-divider/divider.module';\nimport { MatchaElevationModule } from './matcha-elevation/elevation.module';\nimport { MatchaFormFieldModule } from './matcha-form-field/matcha-form-field.module';\nimport { MatchaHintTextModule } from './matcha-hint-text/hint.module';\nimport { MatchaIconModule } from './matcha-icon/icon.module';\nimport { MatchaInfiniteScrollModule } from './matcha-infinite-scroll/matcha-infinite-scroll.module';\nimport { MatchaMasonryModule } from './matcha-masonry/masonry.module';\nimport { MatchaModalModule } from './matcha-modal/matcha-modal.module';\nimport { MatchaOverflowDraggableComponent } from './matcha-overflow-draggable/matcha-overflow-draggable.component';\nimport { MatchaPaginatorModule } from './matcha-paginator/paginator.module';\nimport { MatchaRippleModule } from './matcha-ripple/ripple.module';\nimport { MatchaSlideToggleModule } from './matcha-slide-toggle/slide-toggle.module';\n\nimport { MatchaSpinModule } from './matcha-spin/spin.module';\nimport { MatchaSpinnerModule } from './matcha-spinner/spinner.module';\nimport { MatchaTabsModule } from './matcha-tabs/tabs.module';\nimport { MatchaTitleModule } from './matcha-title/title.module';\nimport { MatchaTooltipModule } from './matcha-tooltip/tooltip.module';\nimport { MatchaDateRangeModule } from './matcha-date-range/date-range.module';\nimport { MatchaTimeModule } from './matcha-time/time.module';\nimport { MatchaStepperModule } from './matcha-stepper/stepper.module';\nimport { MatchaDropListModule } from './matcha-drop-list/drop-list.module';\nimport { MatchaInputPhoneModule } from './matcha-input-phone/input-phone.module';\nimport { MatchaPageLayoutModule } from './matcha-page-layout/page-layout.module';\nimport { MatchaLazyloadModule } from './matcha-lazyload/lazyload.module';\nimport { MatchaRadioModule } from './matcha-radio/radio.module';\nimport { MatchaAvatarModule } from './matcha-avatar/avatar.module';\nimport { MatchaDrawerModule } from './matcha-drawer/drawer.module';\nimport { MatchaHighlightModule } from './matcha-highlight/highlight.module';\nimport { MatchaSliderModule } from './matcha-slider/slider.module';\nimport { MatchaMaskModule } from './matcha-mask/matcha-mask.module';\nimport { MatchaChipModule } from './matcha-chip/chip.module';\n@NgModule({\n declarations: [MatchaOverflowDraggableComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatchaAccordionModule,\n MatchaAutocompleteModule,\n MatchaOptionModule,\n MatchaPanelModule,\n MatchaSelectModule,\n MatchaButtonModule,\n MatchaButtonToggleModule,\n MatchaCardModule,\n MatchaCheckboxModule,\n MatchaRadioModule,\n MatchaDividerModule,\n MatchaElevationModule,\n MatchaFormFieldModule,\n MatchaHintTextModule,\n MatchaIconModule,\n MatchaInfiniteScrollModule,\n MatchaLazyloadModule,\n MatchaInputPhoneModule,\n MatchaMasonryModule,\n MatchaModalModule,\n MatchaPaginatorModule,\n MatchaRippleModule,\n MatchaSlideToggleModule,\n MatchaSliderModule,\n MatchaSpinModule,\n MatchaSpinnerModule,\n MatchaStepperModule,\n MatchaTabsModule,\n MatchaTitleModule,\n MatchaTooltipModule,\n MatchaDateRangeModule,\n MatchaTimeModule,\n MatchaDropListModule,\n MatchaPageLayoutModule,\n MatchaDrawerModule,\n MatchaHighlightModule,\n MatchaMaskModule,\n MatchaChipModule\n ],\n exports: [MatchaAccordionModule,\n MatchaAutocompleteModule,\n MatchaOptionModule,\n MatchaPanelModule,\n MatchaSelectModule,\n MatchaButtonModule,\n MatchaButtonToggleModule,\n MatchaCardModule,\n MatchaCheckboxModule,\n MatchaRadioModule,\n MatchaDividerModule,\n MatchaElevationModule,\n MatchaFormFieldModule,\n MatchaHintTextModule,\n MatchaIconModule,\n MatchaInfiniteScrollModule,\n MatchaLazyloadModule,\n MatchaInputPhoneModule,\n MatchaMasonryModule,\n MatchaModalModule,\n MatchaPaginatorModule,\n MatchaRippleModule,\n MatchaSlideToggleModule,\n MatchaSliderModule,\n MatchaSpinModule,\n MatchaSpinnerModule,\n MatchaStepperModule,\n MatchaTabsModule,\n MatchaTitleModule,\n MatchaTooltipModule,\n MatchaDateRangeModule,\n MatchaTimeModule,\n MatchaDropListModule,\n MatchaPageLayoutModule,\n MatchaAvatarModule,\n MatchaDrawerModule,\n MatchaHighlightModule,\n MatchaMaskModule,\n MatchaChipModule\n ],\n})\nexport class MatchaComponentsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSkeletonComponent } from './skeleton/skeleton.component';\n@NgModule({\n declarations: [MatchaSkeletonComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSkeletonComponent],\n})\nexport class MatchaSkeletonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaBreakpointObserver } from './breakpoint-observer.service';\n\n/**\n * Módulo para o MatchaBreakpointObserver\n *\n * Este módulo fornece o serviço MatchaBreakpointObserver que pode ser usado\n * em qualquer parte da aplicação para observar breakpoints CSS.\n *\n * O serviço é um singleton (providedIn: 'root') e não precisa ser importado\n * explicitamente, mas este módulo pode ser usado para organização.\n */\n@NgModule({\n imports: [\n CommonModule\n ],\n providers: [\n // O serviço já é providedIn: 'root', mas incluímos aqui para clareza\n MatchaBreakpointObserver\n ]\n})\nexport class MatchaBreakpointObservableModule { }\n","import type { PipeTransform } from '@angular/core';\nimport { inject, Pipe } from '@angular/core';\n\nimport type { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Pipe({\n name: 'mask',\n pure: true,\n standalone: false,\n})\nexport class MatchaMaskPipe implements PipeTransform {\n private readonly defaultOptions = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n private readonly _maskService = inject(MatchaMaskService);\n\n private _maskExpressionArray: string[] = [];\n\n private mask = '';\n\n public transform(\n value: string | number,\n mask: string,\n { patterns, ...config }: Partial<MatchaMaskConfig> = {} as Partial<MatchaMaskConfig>\n ): string {\n let processedValue: string | number = value;\n\n const currentConfig = {\n maskExpression: mask,\n ...this.defaultOptions,\n ...config,\n patterns: {\n ...this._maskService.patterns,\n ...patterns,\n },\n };\n\n Object.entries(currentConfig).forEach(([key, val]) => {\n (this._maskService as any)[key] = val;\n });\n\n if (mask.includes('||')) {\n const maskParts = mask.split('||');\n if (maskParts.length > 1) {\n this._maskExpressionArray = maskParts.sort(\n (a: string, b: string) => a.length - b.length\n );\n this._setMask(`${processedValue}`);\n return this._maskService.applyMask(`${processedValue}`, this.mask);\n } else {\n this._maskExpressionArray = [];\n return this._maskService.applyMask(`${processedValue}`, this.mask);\n }\n }\n\n if (mask.includes(MaskExpression.CURLY_BRACKETS_LEFT)) {\n return this._maskService.applyMask(\n `${processedValue}`,\n this._maskService._repeatPatternSymbols(mask)\n );\n }\n\n if (mask.startsWith(MaskExpression.SEPARATOR)) {\n if (config.decimalMarker) {\n this._maskService.decimalMarker = config.decimalMarker;\n }\n if (config.thousandSeparator) {\n this._maskService.thousandSeparator = config.thousandSeparator;\n }\n if (config.leadZero) {\n this._maskService.leadZero = config.leadZero;\n }\n\n processedValue = String(processedValue);\n const localeDecimalMarker = this._maskService.currentLocaleDecimalMarker();\n\n if (!Array.isArray(this._maskService.decimalMarker)) {\n processedValue =\n this._maskService.decimalMarker !== localeDecimalMarker\n ? (processedValue as string).replace(\n localeDecimalMarker,\n this._maskService.decimalMarker\n )\n : processedValue;\n }\n\n if (\n this._maskService.leadZero &&\n processedValue &&\n this._maskService.dropSpecialCharacters !== false\n ) {\n processedValue = this._maskService._checkPrecision(mask, processedValue as string);\n }\n\n if (this._maskService.decimalMarker === MaskExpression.COMMA) {\n processedValue = (processedValue as string).replace(\n MaskExpression.DOT,\n MaskExpression.COMMA\n );\n }\n\n this._maskService.isNumberValue = true;\n }\n\n if (processedValue === null || typeof processedValue === 'undefined') {\n return this._maskService.applyMask('', mask);\n }\n\n return this._maskService.applyMask(`${processedValue}`, mask);\n }\n\n private _setMask(value: string) {\n if (this._maskExpressionArray.length > 0) {\n this._maskExpressionArray.some((mask): boolean | void => {\n const test =\n this._maskService.removeMask(value)?.length <=\n this._maskService.removeMask(mask)?.length;\n if (value && test) {\n this.mask = mask;\n return test;\n } else {\n this.mask =\n this._maskExpressionArray[this._maskExpressionArray.length - 1] ??\n MaskExpression.EMPTY_STRING;\n }\n });\n }\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[step]'\n})\nexport class StepContentDirective {\n @Input('step') step!: string;\n constructor(public template: TemplateRef<any>) {}\n}","/*\n * Public API Surface of matcha-components\n */\n\n// -----------------------------------------------------------\n// INTERFACES\n// -----------------------------------------------------------\nexport * from './lib/matcha-option/matcha-option-parent.interface';\n\n// -----------------------------------------------------------\n// COMPONENTS\n// -----------------------------------------------------------\nexport * from './lib/matcha-accordion/accordion/accordion.component';\nexport * from './lib/matcha-accordion/accordion-item/accordion-item.component';\nexport * from './lib/matcha-accordion/accordion-header/accordion-header.component';\nexport * from './lib/matcha-accordion/accordion-content/accordion-content.component';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component';\nexport * from './lib/matcha-lazyload/lazyload/lazyload.component';\nexport * from './lib/matcha-lazyload/lazyload-data/lazyload-data.component';\nexport * from './lib/matcha-button/button/button.component';\nexport * from './lib/matcha-card/card/card.component';\nexport * from './lib/matcha-divider/divider/divider.component';\nexport * from './lib/matcha-title/title/title.component';\nexport * from './lib/matcha-drawer/drawer/drawer.component';\nexport * from './lib/matcha-drawer/drawer-container/drawer-container.component';\nexport * from './lib/matcha-drawer/drawer-content/drawer-content.component';\nexport * from './lib/matcha-icon/icon.component';\nexport * from './lib/matcha-grid/grid.component';\nexport * from './lib/matcha-masonry/masonry/masonry.component';\nexport * from './lib/matcha-modal/modal-content/modal-content.component';\nexport * from './lib/matcha-modal/modal-header/modal-header.component';\nexport * from './lib/matcha-modal/modal-footer/modal-footer.component';\nexport * from './lib/matcha-modal/modal-options/modal-options.component';\nexport * from './lib/matcha-modal/modal/modal.component';\nexport * from './lib/matcha-toolbar/toolbar/toolbar.component';\nexport * from './lib/matcha-toolbar/toolbar-button/toolbar-button.component';\nexport * from './lib/matcha-toolbar/toolbar-content/toolbar-content.component';\nexport * from './lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component';\nexport * from './lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component';\nexport * from './lib/matcha-form-field/matcha-form-field/matcha-form-field.component';\nexport * from './lib/matcha-form-field/matcha-label/matcha-label.component';\nexport * from './lib/matcha-form-field/matcha-error/matcha-error.component';\nexport * from './lib/matcha-checkbox/checkbox/checkbox.component';\nexport * from './lib/matcha-radio/radio/radio.component';\nexport * from './lib/matcha-spin/spin/spin.component';\nexport * from './lib/matcha-spinner/spinner/spinner.component';\nexport * from './lib/matcha-hint-text/hint/hint-text.component';\nexport * from './lib/matcha-skeleton/skeleton/skeleton.component';\nexport * from './lib/matcha-slide-toggle/slide-toggle/slide-toggle.component';\nexport * from './lib/matcha-button-toggle/button-toggle/button-toggle.component';\nexport * from './lib/matcha-tabs/tabs/tabs.component';\nexport * from './lib/matcha-tabs/tab-item/tab-item.component';\nexport * from './lib/matcha-date/date/matcha-date.component';\nexport * from './lib/matcha-date-range/date-range/date-range.component';\nexport * from './lib/matcha-time/time/time.component';\nexport * from './lib/matcha-input-phone/input-phone.component';\nexport * from './lib/matcha-stepper/step/step.component';\nexport * from './lib/matcha-stepper/stepper/stepper.component';\nexport * from './lib/matcha-stepper/stepper-content/stepper-content.component';\nexport * from './lib/matcha-stepper/stepper-controller/stepper-controller.component';\nexport * from './lib/matcha-drop-list/drop-list/drop-list.component';\nexport * from './lib/matcha-page-layout/page-layout.component';\nexport * from './lib/matcha-avatar/avatar/avatar.component';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.component';\nexport * from './lib/matcha-option/matcha-option.component';\nexport * from './lib/matcha-panel/matcha-panel.component';\nexport * from './lib/matcha-select/matcha-select.component';\nexport * from './lib/matcha-paginator/paginator/paginator.component';\nexport * from './lib/matcha-paginator/paginator/page-event.interface';\nexport * from './lib/matcha-paginator/paginator-intl.service';\nexport * from './lib/matcha-highlight/highlight.component';\nexport * from './lib/matcha-highlight/copy-button/copy-button.component';\nexport * from './lib/matcha-slider/slider/slider.component';\nexport * from './lib/matcha-chip/chip/chip.component';\nexport * from './lib/matcha-chip/chip-list/chip-list.component';\n\n// -----------------------------------------------------------\n// MODULES\n// -----------------------------------------------------------\nexport * from './lib/matcha-accordion/accordion.module';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll.module';\nexport * from './lib/matcha-lazyload/lazyload.module';\nexport * from './lib/matcha-modal/matcha-modal.module';\nexport * from './lib/matcha-card/card.module';\nexport * from './lib/matcha-masonry/masonry.module';\nexport * from './lib/matcha-title/title.module';\nexport * from './lib/matcha-button/button.module';\nexport * from './lib/matcha-button-toggle/button-toggle.module';\nexport * from './lib/matcha-toolbar/toolbar.module';\nexport * from './lib/matcha-tooltip/tooltip.module';\nexport * from './lib/matcha-divider/divider.module';\nexport * from './lib/matcha-elevation/elevation.module';\nexport * from './lib/matcha-grid/grid.module';\nexport * from './lib/matcha-form-field/matcha-form-field.module';\nexport * from './lib/matcha-components.module';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.module';\nexport * from './lib/matcha-option/matcha-option.module';\nexport * from './lib/matcha-select/matcha-select.module';\nexport * from './lib/matcha-tabs/tabs.module';\nexport * from './lib/matcha-checkbox/checkbox.module';\nexport * from './lib/matcha-radio/radio.module';\nexport * from './lib/matcha-icon/icon.module';\nexport * from './lib/matcha-paginator/paginator.module';\nexport * from './lib/matcha-skeleton/skeleton.module';\nexport * from './lib/matcha-slide-toggle/slide-toggle.module';\nexport * from './lib/matcha-slider/slider.module';\nexport * from './lib/matcha-ripple/ripple.module';\nexport * from './lib/matcha-spin/spin.module';\nexport * from './lib/matcha-spinner/spinner.module';\nexport * from './lib/matcha-hint-text/hint.module';\nexport * from './lib/matcha-input-phone/input-phone.module';\nexport * from './lib/matcha-stepper/stepper.module';\nexport * from './lib/matcha-drop-list/drop-list.module';\nexport * from './lib/matcha-page-layout/page-layout.module';\nexport * from './lib/matcha-avatar/avatar.module';\nexport * from './lib/matcha-drawer/drawer.module';\nexport * from './lib/matcha-breakpoint-observable/breakpoint-observable.module';\nexport * from './lib/matcha-panel/matcha-panel.module';\nexport * from './lib/matcha-highlight/highlight.module';\nexport * from './lib/matcha-chip/chip.module';\n\n// -----------------------------------------------------------\n// MASK COMPONENTS\n// -----------------------------------------------------------\n// export * from './lib/matcha-mask/matcha-mask.directive';\nexport * from './lib/matcha-mask/matcha-mask.pipe';\nexport * from './lib/matcha-mask/matcha-mask.service';\nexport * from './lib/matcha-mask/matcha-mask-applier.service';\nexport * from './lib/matcha-mask/matcha-mask.config';\nexport * from './lib/matcha-mask/matcha-mask-expression.enum';\n// export * from './lib/matcha-mask/matcha-mask.module';\n\n// -----------------------------------------------------------\n// MASK COMPONENTS (COMPATIBLE VERSION)\n// -----------------------------------------------------------\nexport * from './lib/matcha-mask/matcha-mask-compatible.directive';\nexport * from './lib/matcha-mask/matcha-mask.module';\n\n// -----------------------------------------------------------\n// SERVICES\n// -----------------------------------------------------------\nexport * from './lib/matcha-modal/modal.service';\nexport * from './lib/matcha-modal/overlay.service';\nexport * from './lib/matcha-date/matcha-date.module';\nexport * from './lib/matcha-date-range/date-range.module';\nexport * from './lib/matcha-time/time.module';\nexport * from './lib/matcha-stepper/stepper.service';\nexport * from './lib/matcha-breakpoint-observable/breakpoint-observer.service';\n\n// -----------------------------------------------------------\n// DIRECTIVES\n// -----------------------------------------------------------\nexport * from './lib/matcha-tooltip/tooltip.directive';\nexport * from './lib/matcha-elevation/elevation.directive';\nexport * from './lib/matcha-ripple/ripple.directive';\nexport * from './lib/matcha-drop-list/directives/drag.directive';\nexport * from './lib/matcha-drop-list/directives/drag-handle.directive';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.directive';\nexport * from './lib/matcha-select/matcha-select.directive';\nexport * from './lib/matcha-stepper/next-step.diretive';\nexport * from './lib/matcha-stepper/prev-step.diretive';\nexport * from './lib/matcha-stepper/step-content.diretive';\n\n// -----------------------------------------------------------\n// PIPES\n// -----------------------------------------------------------\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MatchaDividerComponent","i1.MatchaButtonComponent","i1.MatchaIconComponent","i1.MatchaRippleDirective","i3.MatchaMaskCompatibleDirective","i1.MatchaStepperStateService","i2","i1.MatchaDropListService","i1.MatchaPanelComponent","i1.MatchaPaginatorIntl","i3.MatchaIconComponent","i2.MatchaButtonComponent","i1","i2.CopyButtonComponent","i2.MatchaDividerComponent","i1.MatchaOverlayService","i1.MatchaStepperContentComponent","i1.MatchaDragDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"matcha-components.mjs","sources":["../../../projects/matcha-components/src/lib/matcha-option/matcha-option-parent.interface.ts","../../../projects/matcha-components/src/lib/matcha-animations/animations.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-item/accordion-item.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-item/accordion-item.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion/accordion.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion/accordion.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-header/accordion-header.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-header/accordion-header.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-content/accordion-content.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-content/accordion-content.component.html","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component.html","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component.html","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload/lazyload.component.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload/lazyload.component.html","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload-data/lazyload-data.component.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload-data/lazyload-data.component.html","../../../projects/matcha-components/src/lib/matcha-button/button/button.component.ts","../../../projects/matcha-components/src/lib/matcha-button/button/button.component.html","../../../projects/matcha-components/src/lib/matcha-card/card/card.component.ts","../../../projects/matcha-components/src/lib/matcha-card/card/card.component.html","../../../projects/matcha-components/src/lib/matcha-divider/divider/divider.component.ts","../../../projects/matcha-components/src/lib/matcha-divider/divider/divider.component.html","../../../projects/matcha-components/src/lib/matcha-title/title/title.component.ts","../../../projects/matcha-components/src/lib/matcha-title/title/title.component.html","../../../projects/matcha-components/src/lib/matcha-drawer/drawer/drawer.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer/drawer.component.html","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-content/drawer-content.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-container/drawer-container.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-container/drawer-container.component.html","../../../projects/matcha-components/src/lib/matcha-icon/icon.component.ts","../../../projects/matcha-components/src/lib/matcha-icon/icon.component.html","../../../projects/matcha-components/src/lib/matcha-grid/grid.component.ts","../../../projects/matcha-components/src/lib/matcha-grid/grid.component.html","../../../projects/matcha-components/src/lib/matcha-masonry/masonry/masonry.component.ts","../../../projects/matcha-components/src/lib/matcha-masonry/masonry/masonry.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-content/modal-content.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-content/modal-content.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-header/modal-header.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-header/modal-header.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-footer/modal-footer.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-footer/modal-footer.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-options/modal-options.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-options/modal-options.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal/modal.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal/modal.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar/toolbar.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar/toolbar.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-button/toolbar-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-button/toolbar-button.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-content/toolbar-content.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-content/toolbar-content.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field/matcha-form-field.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field/matcha-form-field.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-label/matcha-label.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-label/matcha-label.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-error/matcha-error.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-error/matcha-error.component.html","../../../projects/matcha-components/src/lib/matcha-ripple/ripple.directive.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox/checkbox.component.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox/checkbox.component.html","../../../projects/matcha-components/src/lib/matcha-radio/radio/radio.component.ts","../../../projects/matcha-components/src/lib/matcha-radio/radio/radio.component.html","../../../projects/matcha-components/src/lib/matcha-spin/spin/spin.component.ts","../../../projects/matcha-components/src/lib/matcha-spin/spin/spin.component.html","../../../projects/matcha-components/src/lib/matcha-spinner/spinner/spinner.component.ts","../../../projects/matcha-components/src/lib/matcha-spinner/spinner/spinner.component.html","../../../projects/matcha-components/src/lib/matcha-hint-text/hint/hint-text.component.ts","../../../projects/matcha-components/src/lib/matcha-hint-text/hint/hint-text.component.html","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton/skeleton.component.ts","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton/skeleton.component.html","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle/slide-toggle.component.ts","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle/slide-toggle.component.html","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle/button-toggle.component.ts","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle/button-toggle.component.html","../../../projects/matcha-components/src/lib/matcha-tabs/tab-item/tab-item.component.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tab-item/tab-item.component.html","../../../projects/matcha-components/src/lib/matcha-tabs/tabs/tabs.component.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tabs/tabs.component.html","../../../projects/matcha-components/src/lib/matcha-date/date/matcha-date.component.ts","../../../projects/matcha-components/src/lib/matcha-date/date/matcha-date.component.html","../../../projects/matcha-components/src/lib/matcha-date-range/date-range/date-range.component.ts","../../../projects/matcha-components/src/lib/matcha-date-range/date-range/date-range.component.html","../../../projects/matcha-components/src/lib/matcha-time/time/time.component.ts","../../../projects/matcha-components/src/lib/matcha-time/time/time.component.html","../../../projects/matcha-components/src/lib/matcha-input-phone/all-countries.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.config.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask-applier.service.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.service.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask-compatible.directive.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.component.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.component.html","../../../projects/matcha-components/src/lib/matcha-stepper/step/step.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper.service.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper/stepper.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-content/stepper-content.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-controller/stepper-controller.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-controller/stepper-controller.component.html","../../../projects/matcha-components/src/lib/matcha-drop-list/services/drop-list.service.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/directives/drag.directive.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list/drop-list.component.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list/drop-list.component.html","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.component.ts","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.component.html","../../../projects/matcha-components/src/lib/matcha-avatar/avatar/avatar.component.ts","../../../projects/matcha-components/src/lib/matcha-avatar/avatar/avatar.component.html","../../../projects/matcha-components/src/lib/matcha-option/matcha-option.component.ts","../../../projects/matcha-components/src/lib/matcha-panel/matcha-panel.component.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.component.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.component.html","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.component.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.component.html","../../../projects/matcha-components/src/lib/matcha-paginator/paginator-intl.service.ts","../../../projects/matcha-components/src/lib/matcha-paginator/paginator/paginator.component.ts","../../../projects/matcha-components/src/lib/matcha-paginator/paginator/paginator.component.html","../../../projects/matcha-components/src/lib/matcha-highlight/copy-button/copy-button.component.ts","../../../projects/matcha-components/src/lib/matcha-highlight/copy-button/copy-button.component.html","../../../projects/matcha-components/src/lib/matcha-highlight/highlight.component.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider/slider.component.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider/slider.component.html","../../../projects/matcha-components/src/lib/matcha-chip/chip/chip.component.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip/chip.component.html","../../../projects/matcha-components/src/lib/matcha-chip/chip-list/chip-list.component.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip-list/chip-list.component.html","../../../projects/matcha-components/src/lib/matcha-tooltip/tooltip.directive.ts","../../../projects/matcha-components/src/lib/matcha-tooltip/tooltip.module.ts","../../../projects/matcha-components/src/lib/matcha-icon/icon.module.ts","../../../projects/matcha-components/src/lib/matcha-title/title.module.ts","../../../projects/matcha-components/src/lib/matcha-divider/divider.module.ts","../../../projects/matcha-components/src/lib/matcha-button/button.module.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion.module.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll.module.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload.module.ts","../../../projects/matcha-components/src/lib/matcha-elevation/elevation.directive.ts","../../../projects/matcha-components/src/lib/matcha-elevation/elevation.module.ts","../../../projects/matcha-components/src/lib/matcha-modal/overlay.service.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal.service.ts","../../../projects/matcha-components/src/lib/matcha-modal/matcha-modal.module.ts","../../../projects/matcha-components/src/lib/matcha-card/card.module.ts","../../../projects/matcha-components/src/lib/matcha-masonry/masonry.module.ts","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle.module.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar.module.ts","../../../projects/matcha-components/src/lib/matcha-grid/grid.module.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.pipe.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.module.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field.module.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.directive.ts","../../../projects/matcha-components/src/lib/matcha-option/matcha-option.module.ts","../../../projects/matcha-components/src/lib/matcha-panel/matcha-panel.module.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.module.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.directive.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.module.ts","../../../projects/matcha-components/src/lib/matcha-ripple/ripple.module.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox.module.ts","../../../projects/matcha-components/src/lib/matcha-hint-text/hint.module.ts","../../../projects/matcha-components/src/lib/matcha-overflow-draggable/matcha-overflow-draggable.component.ts","../../../projects/matcha-components/src/lib/matcha-overflow-draggable/matcha-overflow-draggable.component.html","../../../projects/matcha-components/src/lib/matcha-paginator/paginator.module.ts","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle.module.ts","../../../projects/matcha-components/src/lib/matcha-spin/spin.module.ts","../../../projects/matcha-components/src/lib/matcha-spinner/spinner.module.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tabs.module.ts","../../../projects/matcha-components/src/lib/matcha-date/matcha-date.module.ts","../../../projects/matcha-components/src/lib/matcha-date-range/date-range.module.ts","../../../projects/matcha-components/src/lib/matcha-time/time.module.ts","../../../projects/matcha-components/src/lib/matcha-stepper/prev-step.diretive.ts","../../../projects/matcha-components/src/lib/matcha-stepper/next-step.diretive.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper.module.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/directives/drag-handle.directive.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list.module.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.module.ts","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.module.ts","../../../projects/matcha-components/src/lib/matcha-radio/radio.module.ts","../../../projects/matcha-components/src/lib/matcha-avatar/avatar.module.ts","../../../projects/matcha-components/src/lib/matcha-breakpoint-observable/breakpoint-observer.service.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer.module.ts","../../../projects/matcha-components/src/lib/matcha-highlight/highlight.module.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider.module.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip.module.ts","../../../projects/matcha-components/src/lib/matcha-components.module.ts","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton.module.ts","../../../projects/matcha-components/src/lib/matcha-breakpoint-observable/breakpoint-observable.module.ts","../../../projects/matcha-components/src/lib/matcha-stepper/step-content.diretive.ts","../../../projects/matcha-components/src/public-api.ts","../../../projects/matcha-components/src/matcha-components.ts"],"sourcesContent":["/**\n * Interface que deve ser implementada por componentes que querem usar matcha-option como filho\n *\n * Permite que matcha-option seja usado em diferentes contextos:\n * - matcha-autocomplete\n * - matcha-select\n * - matcha-menu\n * - etc.\n */\nexport interface MatchaOptionParent {\n /**\n * Método chamado quando uma opção é selecionada\n * @param option - A instância do MatchaOptionComponent selecionado\n */\n selectOption(option: any): void; // usando any para evitar referência circular\n}\n\n/**\n * Token de injeção para MatchaOptionParent\n * Usado para injetar o componente pai no matcha-option\n */\nexport const MATCHA_OPTION_PARENT = Symbol('MatchaOptionParent');\n","import { sequence, trigger, animate, style, group, query, transition, animateChild, state, animation, useAnimation, stagger } from '@angular/animations';\n\nconst customAnimation = animation([\n style({\n opacity : '{{opacity}}',\n transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})'\n }),\n animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style('*'))\n], {\n params: {\n duration: '200ms',\n delay : '0ms',\n opacity : '0',\n scale : '1',\n x : '0',\n y : '0',\n z : '0'\n }\n});\n\nexport const createAnimations = [\n\n trigger('animate', [transition('void => *', [useAnimation(customAnimation)])]),\n\n trigger('animateStagger', [\n state('50', style('*')),\n state('100', style('*')),\n state('200', style('*')),\n\n transition('void => 50',\n query('@*',\n [\n stagger('50ms', [\n animateChild()\n ])\n ], {optional: true})),\n transition('void => 100',\n query('@*',\n [\n stagger('100ms', [\n animateChild()\n ])\n ], {optional: true})),\n transition('void => 200',\n query('@*',\n [\n stagger('200ms', [\n animateChild()\n ])\n ], {optional: true}))\n ]),\n\n trigger('fadeInOut', [\n state('0, void', style({\n opacity: 0\n })),\n state('1, *', style({\n opacity: 1\n })),\n transition('1 => 0', animate('300ms ease-out')),\n transition('0 => 1', animate('300ms ease-in')),\n transition('void <=> *', animate('300ms ease-in'))\n ]),\n\n trigger('slideInOut', [\n state('0', style({\n height: '0px'\n })),\n state('1', style({\n height: '*'\n })),\n transition('1 => 0', animate('300ms ease-out')),\n transition('0 => 1', animate('300ms ease-in'))\n ]),\n\n trigger('slideIn', [\n transition('void => left', [\n style({\n transform: 'translateX(100%)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(0)'\n })\n )\n ]\n ),\n transition('left => void', [\n style({\n transform: 'translateX(0)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(-100%)'\n })\n )\n ]\n ),\n transition('void => right', [\n style({\n transform: 'translateX(-100%)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(0)'\n })\n )\n ]\n ),\n transition('right => void', [\n style({\n transform: 'translateX(0)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(100%)'\n })\n )\n ]\n )\n ]),\n\n trigger('slideInLeft', [\n state('void', style({\n transform: 'translateX(-100%)',\n })),\n state('*', style({\n transform: 'translateX(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInRight', [\n state('void', style({\n transform: 'translateX(100%)',\n })),\n state('*', style({\n transform: 'translateX(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInTop', [\n state('void', style({\n transform: 'translateY(-100%)',\n })),\n state('*', style({\n transform: 'translateY(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInBottom', [\n state('void',\n style({\n transform: 'translateY(100%)',\n })),\n state('*', style({\n transform: 'translateY(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('expandCollapse', [\n state('void', style({\n height: '0px'\n })),\n state('*', style({\n height: '*'\n })),\n transition('void => *', animate('300ms ease-out')),\n transition('* => void', animate('300ms ease-in'))\n ]),\n\n // -----------------------------------------------------------------------------------------------------\n // @ Router animations\n // -----------------------------------------------------------------------------------------------------\n\n trigger('routerTransitionLeft', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateX(100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateX(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(-100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateX(100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionRight', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateX(-100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateX(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateX(-100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionUp', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateY(100%)',\n opacity : 0\n })\n ], {optional: true}),\n group([\n query('content > :leave', [\n style({\n transform: 'translateY(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(-100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateY(100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ]),\n\n trigger('routerTransitionDown', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateY(-100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateY(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateY(-100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionFade', [\n\n transition('* => *', group([\n\n query('content > :enter, content > :leave ', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n\n query('content > :enter', [\n style({\n opacity: 0\n })\n ], {optional: true}),\n query('content > :leave', [\n style({\n opacity: 1\n }),\n animate('300ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n opacity: 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({\n opacity: 0\n }),\n animate('300ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n opacity: 1\n }))\n ], {optional: true}),\n query('content > :enter', animateChild(), {optional: true}),\n query('content > :leave', animateChild(), {optional: true})\n ]))\n ])\n];\n","import { Component, EventEmitter, Input, Output, OnInit, HostBinding, OnChanges, SimpleChanges } from '@angular/core';\nimport { createAnimations } from '../../matcha-animations/animations';\n\n@Component({\n selector: 'matcha-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrl: './accordion-item.component.scss',\n standalone: false,\n animations: [...createAnimations]\n})\nexport class MatchaAccordionItemComponent implements OnInit, OnChanges {\n private _stretch: boolean = false;\n private _isOpen: boolean = false;\n\n @Input()\n set stretch(value: boolean | string) {\n this._stretch = value != null && `${value}` !== 'false';\n }\n get stretch(): boolean {\n return this._stretch;\n }\n @HostBinding('class.stretch') get stretchClass() {\n return this._stretch;\n }\n\n private _clickableHeader = true;\n @Input()\n set clickableHeader(value: boolean | string) {\n this._clickableHeader = value != null && `${value}` !== 'false';\n }\n get clickableHeader(): boolean {\n return this._clickableHeader;\n }\n\n @Input()\n set isOpen(value: boolean | string) {\n this._isOpen = value != null && `${value}` !== 'false';\n }\n get isOpen(): boolean {\n return this._isOpen;\n }\n @HostBinding('class.is-open') get isOpenClass() {\n return this._isOpen;\n }\n\n @Output() opened = new EventEmitter<boolean>();\n @Output() toggleRequested = new EventEmitter<void>();\n\n ngOnInit() {\n this.opened.emit(this.isOpen);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['isOpen']) {\n this.opened.emit(this.isOpen);\n }\n }\n\n toggleAccordion() {\n // Emite evento para o accordion pai controlar o estado\n this.toggleRequested.emit();\n }\n}\n","<div class=\"accordion-item flex-column overflow-hidden\">\n <div class=\"accordion-header d-flex\">\n <div class=\"d-flex accordion-header-wrapper\"\n [class.cursor-pointer]=\"clickableHeader\"\n (click)=\"clickableHeader ? toggleAccordion() : null\">\n <ng-content select=\"matcha-accordion-header\"></ng-content>\n </div>\n </div>\n <div class=\"accordion-content overflow-hidden\" [@expandCollapse]=\"isOpen ? '*' : 'void'\">\n <ng-content select=\"matcha-accordion-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, Output, EventEmitter, OnDestroy } from '@angular/core';\nimport { MatchaAccordionItemComponent } from '../accordion-item/accordion-item.component';\nimport { Subscription } from 'rxjs';\n\n\n@Component({\n selector: 'matcha-accordion',\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.scss',\n standalone: false\n})\nexport class MatchaAccordionComponent implements AfterContentInit, OnDestroy {\n private _multiple = false;\n @Input()\n set multiple(value: boolean | string) {\n // Converte 'false' (string) ou false (boolean) para false, e qualquer outro valor para true.\n this._multiple = value != null && `${value}` !== 'false';\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n @Output('openedChange') openedChange = new EventEmitter<boolean>();\n\n @ContentChildren(MatchaAccordionItemComponent, { descendants: true }) items!: QueryList<MatchaAccordionItemComponent>;\n private subscriptions: Subscription[] = [];\n\n ngAfterContentInit() {\n this.setupItems();\n\n // Escuta mudanças na lista de itens (para casos dinâmicos)\n this.items.changes.subscribe(() => {\n this.setupItems();\n });\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private setupItems() {\n // Limpa subscriptions anteriores\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions = [];\n\n this.items.forEach(item => {\n const toggleSub = item.toggleRequested.subscribe(() => {\n this.toggleItem(item);\n });\n this.subscriptions.push(toggleSub);\n\n const openedSub = item.opened.subscribe((isOpen: boolean) => {\n this.openedChange.emit(isOpen);\n });\n this.subscriptions.push(openedSub);\n });\n }\n\n toggleItem(selectedItem: MatchaAccordionItemComponent) {\n // Toggle o item selecionado\n selectedItem.isOpen = !selectedItem.isOpen;\n\n // Se não permite múltiplos itens abertos e o item foi aberto, fecha os demais\n if (!this.multiple && selectedItem.isOpen) {\n this.items.forEach(item => {\n if (item !== selectedItem) {\n item.isOpen = false;\n }\n });\n }\n }\n}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-accordion-header',\n templateUrl: './accordion-header.component.html',\n styleUrl: './accordion-header.component.scss',\n standalone: false\n})\nexport class MatchaAccordionHeaderComponent {\n\n}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-accordion-content',\n templateUrl: './accordion-content.component.html',\n styleUrl: './accordion-content.component.scss',\n standalone: false\n})\nexport class MatchaAccordionContentComponent {\n\n}\n","<ng-content></ng-content>\n","/*\nHOW TO USE ---------------------------------------------------------\nTEMPLATE:\n<!-- Elemento sentinela para detectar o scroll -->\n<option disabled style=\"height: 1px; padding: 0; margin: 0;\">\n <!-- Esse <div> não precisa ter conteúdo visual; ele apenas será observado -->\n <div infiniteScroll (scrolledToEnd)=\"onScrolledToEnd()\"></div>\n</option>\n*/\nimport { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\n\n\n@Component({\n selector: 'matcha-infinite-scroll',\n templateUrl: './matcha-infinite-scroll.component.html',\n styleUrl: './matcha-infinite-scroll.component.scss',\n standalone: false\n})\nexport class MatchaInfiniteScrollComponent implements OnInit, OnDestroy{\n// Evento que será disparado quando o elemento entrar na área visível\n@Output() scrolledToEnd = new EventEmitter<void>();\n\nprivate observer!: IntersectionObserver;\n\nconstructor(private element: ElementRef) {}\n\nngOnInit(): void {\n // Configura o observer para disparar quando 10% do elemento estiver visível\n const options = {\n root: null, // Usa a viewport\n rootMargin: '0px',\n threshold: 0.1\n };\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.scrolledToEnd.emit();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n}\n\nngOnDestroy(): void {\n this.observer.disconnect();\n}\n}\n","","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-infinite-scroll-data',\n templateUrl: './matcha-infinite-scroll-data.component.html',\n styleUrls: ['./matcha-infinite-scroll-data.component.scss'],\n styles: [`\n :host {\n height: 1px;\n opacity: 0;\n }\n `],\n standalone: false\n})\nexport class MatchaInfiniteScrollDataComponent implements OnInit, OnDestroy, OnChanges {\n\n /**\n * Função que carrega os dados com base no número da página.\n * Deve retornar um Observable com um array de itens.\n */\n @Input() loadData!: (page: number) => Observable<any[]>;\n\n /**\n * Lista inicial (opcional) para iniciar a agregação.\n */\n @Input() initialList: any[] = [];\n\n /**\n * Threshold para o Intersection Observer (padrão: 0.1 = 10% do elemento visível).\n */\n @Input() threshold = 0.1;\n\n /**\n * Chave para resetar a diretiva (para componentes como select).\n */\n @Input() resetKey: any;\n\n /**\n * Novo input para o autocomplete, onde será aplicado o debounce.\n */\n @Input() searchTerm: any;\n\n /**\n * Emite a lista acumulada de itens.\n */\n @Output() aggregatedData = new EventEmitter<any[]>();\n\n /**\n * Emite o item exato, quando a aggregatedData tiver um único item igual ao searchTerm.\n */\n @Output() exactMatch = new EventEmitter<any>();\n\n private aggregatedList: any[] = [];\n private currentPage = 0;\n private observer!: IntersectionObserver;\n\n // Subscription para as chamadas do loadData\n private dataSubscription = new Subscription();\n // Subscription exclusiva para o debounce do searchTerm\n private searchSubscription = new Subscription();\n // Subject para aplicar debounce no searchTerm\n private searchTermSubject: Subject<any> = new Subject();\n\n constructor(private element: ElementRef) { }\n\n ngOnInit(): void {\n this.initialize();\n\n // Configura o Intersection Observer para carregamento via scroll\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: this.threshold\n };\n\n this.observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.loadNextPage();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n\n // Inscreve para receber alterações do searchTerm com debounce\n this.searchSubscription = this.searchTermSubject.pipe(\n debounceTime(300)\n ).subscribe(() => {\n // Reseta e carrega a primeira página após o debounce\n this.resetData();\n this.loadNextPage();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['resetKey'] && !changes['resetKey'].firstChange) {\n this.resetData();\n }\n\n if (changes['searchTerm'] && !changes['searchTerm'].firstChange) {\n // Emite o novo valor para o Subject e aguarda o debounce\n this.searchTermSubject.next(changes['searchTerm'].currentValue);\n }\n }\n\n /**\n * Inicializa ou reinicializa a lista agregada e o contador de página.\n */\n private initialize(): void {\n this.aggregatedList = [...this.initialList];\n this.currentPage = 0;\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n\n /**\n * Reseta apenas as assinaturas e o estado dos dados (não a inscrição do searchTerm).\n */\n private resetData(): void {\n // Cancela as assinaturas das chamadas de loadData\n this.dataSubscription.unsubscribe();\n this.dataSubscription = new Subscription();\n\n // Re-inicializa a lista e o contador\n this.initialize();\n }\n\n /**\n * Carrega a próxima página de dados utilizando a função loadData.\n */\n private loadNextPage(): void {\n if (!this.loadData) {\n return;\n }\n this.currentPage++;\n const dataObservable = this.loadData(this.currentPage);\n const sub = dataObservable.subscribe(data => {\n if (data && data.length) {\n this.aggregatedList = [...this.aggregatedList, ...data];\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n });\n this.dataSubscription.add(sub);\n }\n\n /**\n * Verifica se a lista agregada possui exatamente um item e se esse item é igual ao searchTerm.\n * Se sim, emite o output exactMatch com esse item.\n */\n private checkExactMatch(): void {\n if (this.aggregatedList.length === 1 && this.aggregatedList[0] === this.searchTerm) {\n this.exactMatch.emit(this.aggregatedList[0]);\n }\n }\n\n ngOnDestroy(): void {\n this.observer.disconnect();\n this.dataSubscription.unsubscribe();\n this.searchSubscription.unsubscribe();\n }\n}\n","","/*\nHOW TO USE ---------------------------------------------------------\nTEMPLATE:\n<!-- Elemento sentinela para detectar o scroll -->\n<option disabled style=\"height: 1px; padding: 0; margin: 0;\">\n <!-- Esse <div> não precisa ter conteúdo visual; ele apenas será observado -->\n <div infiniteScroll (scrolledToEnd)=\"onScrolledToEnd()\"></div>\n</option>\n*/\nimport { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-lazyload',\n templateUrl: './lazyload.component.html',\n styleUrl: './lazyload.component.scss',\n standalone: false\n})\nexport class MatchaLazyloadComponent implements OnInit, OnDestroy{\n// Evento que será disparado quando o elemento entrar na área visível\n@Output() scrolledToEnd = new EventEmitter<void>();\n\nprivate observer!: IntersectionObserver;\n\nconstructor(private element: ElementRef) {}\n\nngOnInit(): void {\n // Configura o observer para disparar quando 10% do elemento estiver visível\n const options = {\n root: null, // Usa a viewport\n rootMargin: '0px',\n threshold: 0.1\n };\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.scrolledToEnd.emit();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n}\n\nngOnDestroy(): void {\n this.observer.disconnect();\n}\n}\n","<ng-content></ng-content>\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-lazyload-data',\n templateUrl: './lazyload-data.component.html',\n styleUrls: ['./lazyload-data.component.scss'],\n styles: [`\n :host {\n height: 1px;\n opacity: 0;\n }\n `],\n standalone: false\n})\nexport class MatchaLazyloadDataComponent implements OnInit, OnDestroy, OnChanges {\n\n /**\n * Função que carrega os dados com base no número da página.\n * Deve retornar um Observable com um array de itens.\n */\n @Input() loadData!: (page: number) => Observable<any[]>;\n\n /**\n * Lista inicial (opcional) para iniciar a agregação.\n */\n @Input() initialList: any[] = [];\n\n /**\n * Threshold para o Intersection Observer (padrão: 0.1 = 10% do elemento visível).\n */\n @Input() threshold = 0.1;\n\n /**\n * Root margin para o Intersection Observer (padrão: '0px').\n * Use valores como '100px' para acionar 100px antes do elemento aparecer.\n * Aceita valores como: '10px', '10px 20px', '10% 5% 0px 5%'\n */\n @Input() rootMargin = '0px';\n\n /**\n * Chave para resetar a diretiva (para componentes como select).\n */\n @Input() resetKey: any;\n\n /**\n * Novo input para o autocomplete, onde será aplicado o debounce.\n */\n @Input() searchTerm: any;\n\n /**\n * Emite a lista acumulada de itens.\n */\n @Output() aggregatedData = new EventEmitter<any[]>();\n\n /**\n * Emite o item exato, quando a aggregatedData tiver um único item igual ao searchTerm.\n */\n @Output() exactMatch = new EventEmitter<any>();\n\n private aggregatedList: any[] = [];\n private currentPage = 0;\n private observer!: IntersectionObserver;\n\n // Subscription para as chamadas do loadData\n private dataSubscription = new Subscription();\n // Subscription exclusiva para o debounce do searchTerm\n private searchSubscription = new Subscription();\n // Subject para aplicar debounce no searchTerm\n private searchTermSubject: Subject<any> = new Subject();\n\n constructor(private element: ElementRef) { }\n\n ngOnInit(): void {\n this.initialize();\n\n // Configura o Intersection Observer para carregamento via scroll\n const options = {\n root: null,\n rootMargin: this.rootMargin,\n threshold: this.threshold\n };\n\n this.observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.loadNextPage();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n\n // Inscreve para receber alterações do searchTerm com debounce\n this.searchSubscription = this.searchTermSubject.pipe(\n debounceTime(300)\n ).subscribe(() => {\n // Reseta e carrega a primeira página após o debounce\n this.resetData();\n this.loadNextPage();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['resetKey'] && !changes['resetKey'].firstChange) {\n this.resetData();\n }\n\n if (changes['searchTerm'] && !changes['searchTerm'].firstChange) {\n // Emite o novo valor para o Subject e aguarda o debounce\n this.searchTermSubject.next(changes['searchTerm'].currentValue);\n }\n }\n\n /**\n * Inicializa ou reinicializa a lista agregada e o contador de página.\n */\n private initialize(): void {\n this.aggregatedList = [...this.initialList];\n this.currentPage = 0;\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n\n /**\n * Reseta apenas as assinaturas e o estado dos dados (não a inscrição do searchTerm).\n */\n private resetData(): void {\n // Cancela as assinaturas das chamadas de loadData\n this.dataSubscription.unsubscribe();\n this.dataSubscription = new Subscription();\n\n // Re-inicializa a lista e o contador\n this.initialize();\n }\n\n /**\n * Carrega a próxima página de dados utilizando a função loadData.\n */\n private loadNextPage(): void {\n if (!this.loadData) {\n return;\n }\n this.currentPage++;\n const dataObservable = this.loadData(this.currentPage);\n const sub = dataObservable.subscribe(data => {\n if (data && data.length) {\n this.aggregatedList = [...this.aggregatedList, ...data];\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n });\n this.dataSubscription.add(sub);\n }\n\n /**\n * Verifica se a lista agregada possui exatamente um item e se esse item é igual ao searchTerm.\n * Se sim, emite o output exactMatch com esse item.\n */\n private checkExactMatch(): void {\n if (this.aggregatedList.length === 1 && this.aggregatedList[0] === this.searchTerm) {\n this.exactMatch.emit(this.aggregatedList[0]);\n }\n }\n\n ngOnDestroy(): void {\n this.observer.disconnect();\n this.dataSubscription.unsubscribe();\n this.searchSubscription.unsubscribe();\n }\n}\n","<ng-content></ng-content>\n","import { Component, ElementRef, HostBinding, Inject, Input, OnChanges, OnInit, Renderer2 } from '@angular/core';\n\n@Component({\n selector: '[matcha-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n standalone: false\n})\nexport class MatchaButtonComponent implements OnChanges, OnInit {\n @Input('size') size: string | null = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @Input('gap') gap: string | number | null = null;\n\n @Input('color') color: string | null = 'basic';\n\n @HostBinding('attr.color')\n get colorAttr(): string | null {\n return this.color;\n }\n\n private _basic = false;\n @Input() get basic() { return this._basic; }\n set basic(v: boolean | string) { this._basic = v === 'false' ? false : !!v; }\n\n private _outline = false;\n @Input() get outline() { return this._outline; }\n set outline(v: boolean | string) { this._outline = v === 'false' ? false : !!v;}\n\n private _alpha = false;\n @Input() get alpha() { return this._alpha; }\n set alpha(v: boolean | string) { this._alpha = v === 'false' ? false : !!v;}\n\n private _pill = false;\n @Input() get pill() { return this._pill; }\n set pill(v: boolean | string) { this._pill = v === 'false' ? false : !!v;}\n\n private _link = false;\n @Input() get link() { return this._link; }\n set link(v: boolean | string) { this._link = v === 'false' ? false : !!v;}\n\n private _icon = false;\n @Input() get icon() { return this._icon; }\n set icon(v: boolean | string) { this._icon = v === 'false' ? false : !!v;}\n\n\n\n constructor(@Inject(ElementRef) private _elementRef: ElementRef, @Inject(Renderer2) private _renderer: Renderer2) {}\n\n private _config: any = {\n sizeXs: 'tiny',\n sizeSm: 'small',\n sizeMd: 'medium',\n sizeLg: 'large',\n sizeXl: 'huge',\n size: 'medium',\n gap: null,\n basic: false,\n outline: false,\n pill: false,\n icon: false,\n link: false\n };\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button`);\n this.setConfig();\n this.updateDividerStyles();\n // Adicione o evento de clique apenas a elementos com a classe \"matcha-button\"\n const buttons = document.querySelectorAll('.matcha-button');\n buttons.forEach(button => {\n // mouse down event\n button.addEventListener('mousedown', this.addRippleEffect, false);\n });\n }\n\n ngOnChanges() {\n this.setConfig();\n this.updateDividerStyles();\n }\n\n private clearConfig() {\n //size\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-${this._config.size}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-xs-${this._config.sizeXs}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-sm-${this._config.sizeSm}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-md-${this._config.sizeMd}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-lg-${this._config.sizeLg}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-xl-${this._config.sizeXl}`);\n //gap\n if(this._config.gap) {\n this._renderer.removeClass(this._elementRef.nativeElement, `px-${this._config.gap}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `gap-${this._config.gap}`);\n }\n //basic\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-icon`);\n //outline\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-outline`);\n //pill\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-pill`);\n //icon\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-basic`);\n //link\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-link`);\n }\n\n private setConfig() {\n this.clearConfig();\n this.size ? this.setSize() : null;\n this.gap ? this.setGap() : null;\n (this.outline === true || this.outline === 'true') ? this.setOutline() : null;\n (this.pill === true || this.pill === 'true') ? this.setPill() : null;\n (this.link === true || this.link === 'true') ? this.setLink() : null;\n (this.basic === true || this.basic === 'true') ? this.setBasic() : null;\n (this.icon === true || this.icon === 'true') ? this.setIcon() : null;\n }\n\n private setSize() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-${this.size}`);\n this._config.size = this.size;\n if(this.sizeXs) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-xs-${this.sizeXs}`);\n this._config.sizeXs = this.sizeXs;\n }\n if(this.sizeSm) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-sm-${this.sizeSm}`);\n this._config.sizeSm = this.sizeSm;\n }\n if(this.sizeMd) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-md-${this.sizeMd}`);\n this._config.sizeMd = this.sizeMd;\n }\n if(this.sizeLg) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-lg-${this.sizeLg}`);\n this._config.sizeLg = this.sizeLg;\n }\n if(this.sizeXl) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-xl-${this.sizeXl}`);\n this._config.sizeXl = this.sizeXl;\n }\n }\n\n private setGap() {\n this._renderer.addClass(this._elementRef.nativeElement, `px-${this.gap}`);\n this._renderer.addClass(this._elementRef.nativeElement, `gap-${this.gap}`);\n this._config.gap = this.gap;\n }\n\n private setOutline() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-outline`);\n }\n\n private setPill() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-pill`);\n }\n\n private setLink() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-link`);\n }\n\n private setBasic() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-basic`);\n this._renderer.addClass(this._elementRef.nativeElement, `basic`);\n }\n\n private setIcon() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-icon`);\n }\n\n private updateDividerStyles() {\n // Busca todos os matcha-divider dentro do botão\n const dividers = this._elementRef.nativeElement.querySelectorAll('matcha-divider');\n\n if (dividers && dividers.length > 0) {\n dividers.forEach((divider: HTMLElement) => {\n // Busca as divs dentro do matcha-divider\n const innerDivs = divider.querySelectorAll('div');\n\n innerDivs.forEach((div: HTMLElement) => {\n // Remove a classe border-color-disabled\n if (div.classList.contains('border-color-disabled')) {\n this._renderer.removeClass(div, 'border-color-disabled');\n // Adiciona a classe opacity-03\n this._renderer.addClass(div, 'opacity-03');\n }\n });\n });\n }\n }\n\n private addRippleEffect(e: any) {\n var target = e.target;\n if (target.tagName.toLowerCase() !== 'button') return false;\n var rect = target.getBoundingClientRect();\n var ripple = target.querySelector('.ripple');\n if (!ripple) {\n ripple = document.createElement('span');\n ripple.className = `ripple`;\n ripple.style.height = ripple.style.width = target.offsetWidth + 'px';\n target.appendChild(ripple);\n }\n ripple.classList.remove('show');\n var top = e.pageY - rect.top - ripple.offsetHeight / 2 - window.scrollY;\n var left = e.pageX - rect.left - ripple.offsetWidth / 2 - window.scrollX;\n ripple.style.top = top + 'px';\n ripple.style.left = left + 'px';\n ripple.classList.add('show');\n return false;\n }\n\n ngOnDestroy() {\n const buttons = document.querySelectorAll('.matcha-button');\n buttons.forEach(button => {\n button.removeEventListener('click', this.addRippleEffect, false);\n });\n }\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Directive, HostBinding, Inject, InjectionToken, Input, Optional, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'matcha-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n standalone: false\n})\nexport class MatchaCardComponent {\n\n private _color = 'surface';\n @Input() get color() { return this._color; }\n set color(v: string | null) { this._color = v || 'surface';}\n\n @HostBinding('attr.color')\n get colorAttr(): string | null {\n return this.color;\n }\n\n @Input()\n blockquote: 'left' | 'right' | 'none' | null = 'none';\n\n @Input()\n blockquoteColor: string | null = null;\n\n @Input()\n class: string | null = '';\n\n // Aplique o mesmo padrão para alpha, tint e loading\n private _alpha = false;\n @Input() get alpha() { return this._alpha; }\n set alpha(v: boolean | string) {\n this._alpha = v !== 'false' && v !== false;\n }\n\n @HostBinding('attr.alpha')\n get alphaAttr(): string | null {\n return this.alpha ? 'true' : 'false';\n }\n\n private _tint = false;\n @Input() get tint() { return this._tint; }\n set tint(v: boolean | string) {\n this._tint = v !== 'false' && v !== false;\n }\n\n @HostBinding('attr.tint')\n get tintAttr(): string | null {\n return this.tint ? 'true' : 'false';\n }\n\n private _loading = false;\n @Input() get loading() { return this._loading; }\n set loading(v: boolean | string) {\n this._loading = v !== 'false' && v !== false;\n }\n\n @HostBinding('class')\n public get classes(): string {\n let backgroundColor = '';\n let blockquoteColor = '';\n let blockquotePosition = null;\n\n if (this.color === 'bg' || this.color === 'surface') {\n if (this.hasBlockquotePosition()) {\n blockquotePosition = `matcha-card-border-${this.blockquote}`;\n blockquoteColor = this.blockquoteColor ? `border-color-${this.blockquoteColor}` : '';\n } else {\n blockquotePosition = '';\n blockquoteColor = '';\n }\n\n } else {\n if (this.hasBlockquotePosition()) {\n blockquotePosition = `matcha-card-border-${this.blockquote}`;\n blockquoteColor = this.color ? `border-color-${this.blockquoteColor}` : '';\n } else {\n blockquotePosition = '';\n blockquoteColor = '';\n }\n }\n\n const activeClasses = `matcha-card ${blockquotePosition} ${blockquoteColor} ${backgroundColor} ${this.loading ? 'loading' : ''} ${this.class}`;\n return activeClasses;\n }\n\n public hasBlockquotePosition(): boolean {\n return this.blockquote === 'left' || this.blockquote === 'right';\n }\n\n\n}\n","<ng-content></ng-content>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n standalone: false\n})\nexport class MatchaDividerComponent {\n @Input('gap') gap: string | number | null = null;\n @Input('gap-sm') gapSm: string | number | null = null;\n @Input('gap-md') gapMd: string | number | null = null;\n @Input('gap-lg') gapLg: string | number | null = null;\n @Input('gap-xl') gapXl: string | number | null = null;\n\n\n private _direction = 'horizontal';\n @Input('direction')\n set direction(value: string) {\n this._direction = value;\n }\n get direction(): string {\n return this._direction;\n }\n\n @HostBinding('attr.direction')\n get directionAttr(): string {\n return this.direction;\n }\n\n public get classes(): string {\n const hasVertical = this.direction === 'vertical';\n const directionPrefix = hasVertical ? 'mx' : 'my';\n const gap = this.gap ? `${directionPrefix}-${this.gap}` : '';\n const gapSm = this.gapSm ? `${directionPrefix}-sm-${this.gapSm}` : '';\n const gapMd = this.gapMd ? `${directionPrefix}-md-${this.gapMd}` : '';\n const gapLg = this.gapLg ? `${directionPrefix}-lg-${this.gapLg}` : '';\n const gapXl = this.gapXl ? `${directionPrefix}-xl-${this.gapXl}` : '';\n let activeClasses = '';\n\n const verticalClasses = 'flex-row h-100-p bl-2 border-color-disabled';\n const horizontalClasses = 'flex-column w-100-p bt-2 border-color-disabled';\n\n activeClasses += hasVertical ? verticalClasses : horizontalClasses;\n activeClasses += gap ? ` ${gap}` : '';\n activeClasses += gapSm ? ` ${gapSm}` : '';\n activeClasses += gapMd ? ` ${gapMd}` : '';\n activeClasses += gapLg ? ` ${gapLg}` : '';\n activeClasses += gapXl ? ` ${gapXl}` : '';\n\n return activeClasses;\n }\n}\n","<div [class]=\"classes\"></div>\n","import { Component, EventEmitter, Input, Output, HostBinding } from '@angular/core';\n\nexport interface ILevelClasses {\n [key: number | string]: string;\n}\n\n// matcha-title <matcha-title color=\"fg\" size=\"1\" loading=\"false\" type=\"pill\" icon=\"icon\" (iconClick)=\"emitIconAction($event)\"></matcha-title>\n\n@Component({\n selector: 'matcha-title',\n templateUrl: './title.component.html',\n styleUrls: ['./title.component.scss'],\n standalone: false\n})\nexport class MatchaTitleComponent {\n @Input()\n color: null | string = null;\n\n @Input()\n size: number | string = 4;\n\n private _loading = false;\n @Input() get loading() { return this._loading; }\n set loading(v: boolean | string) { this._loading = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.loading')\n get loadingAttr(): string | null {\n return this.loading ? 'true' : 'false';\n }\n\n private _type: 'pill' | 'bullet' | 'icon' | 'none' = 'pill';\n @Input() get type() { return this._type; }\n set type(v: 'pill' | 'bullet' | 'icon' | 'none' | string) {\n this._type = (v as 'pill' | 'bullet' | 'icon' | 'none') || 'pill';\n }\n\n @HostBinding('attr.type')\n get typeAttr(): string {\n return this.type;\n }\n\n private _icon = '';\n @Input() get icon() { return this._icon; }\n set icon(v: string) { this._icon = v || ''; }\n\n @HostBinding('attr.icon')\n get iconAttr(): string | null {\n return this.icon || null;\n }\n\n @Output() iconClick = new EventEmitter<object>();\n\n\n public sizeClasses: ILevelClasses = {\n 1: 'fw-900 fs-12 lh-12',\n 2: 'fw-900 fs-14 lh-16',\n 3: 'fw-900 fs-16 lh-18',\n 4: 'fw-900 fs-20 lh-22',\n 5: 'fw-900 fs-32 lh-32',\n 6: 'fw-900 fs-40 lh-40',\n 7: 'fw-900 fs-40 lh-40',\n };\n\n public getTypes(): string {\n const color = this.color ? `background-${this.color} ` : 'background-fg';\n const icon = this.icon ? `i-matcha-${this.icon}` : '';\n return this.type === 'pill' ? `min-h-20 h-20 max-h-20 max-w-8 w-8 min-w-8 position-relative mr-8 radius-8 ${color}` :\n this.type === 'bullet' ? `min-h-8 h-8 max-h-8 max-w-8 w-8 min-w-8 position-relative mr-8 radius-8 ${this.color ? `background-${this.color}` : 'background-fg'}` :\n this.type === 'icon' ? `position-relative mr-8 radius-8 ${icon} ${this.color ? `color-${this.color}` : 'color-grey'}` :\n this.type === 'none' ? `d-none--force` : '';\n }\n\n public get signClasses(): string {\n const activeClasses = `d-flex ${this.getTypes()} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n public get textClasses(): string {\n const classes = `d-inline-block position-relative mr-8 radius-8`;\n const size = this.sizeClasses[this.size] ? this.sizeClasses[this.size] : '';\n const activeClasses = `${classes} ${size} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n public emitIconAction(): void {\n const data:object = { icon: this.icon };\n this.iconClick.emit(data);\n }\n\n public hasIconClickOutput(): boolean {\n return this.iconClick.observers.length > 0;\n }\n}\n","<!-- <matcha-title size=\"1\" type=\"bullet\"></matcha-title> -->\n\n<div class=\"d-flex flex-align-center m-0\">\n <ng-container *ngIf=\"loading\">\n <span [class]=\"signClasses\" [class.skeleton-animated-background]=\"loading\"></span>\n <span [class]=\"textClasses\" [class.skeleton-animated-background]=\"loading\" class=\"d-flex px-60\"> </span>\n </ng-container>\n\n <ng-container *ngIf=\"!loading\">\n <span [class]=\"signClasses\" [class.cursor-pointer]=\"hasIconClickOutput()\" (click)=\"emitIconAction()\"></span>\n <span [class]=\"textClasses\">\n <ng-content></ng-content>\n </span>\n </ng-container>\n</div>\n","import { Component, Input, Output, EventEmitter, HostBinding, ElementRef, OnInit, OnDestroy, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nexport type DrawerMode = 'over' | 'push' | 'side';\nexport type DrawerPosition = 'start' | 'end';\n\n@Component({\n selector: 'matcha-drawer',\n templateUrl: './drawer.component.html',\n styleUrls: ['./drawer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer',\n '[class.matcha-drawer-end]': 'position === \"end\"',\n '[class.matcha-drawer-over]': 'mode === \"over\"',\n '[class.matcha-drawer-push]': 'mode === \"push\"',\n '[class.matcha-drawer-side]': 'mode === \"side\"',\n '[class.matcha-drawer-opened]': 'opened',\n 'tabindex': '-1',\n }\n})\nexport class MatchaDrawerComponent implements OnInit, OnDestroy {\n\n // Propriedades principais\n @Input() position: DrawerPosition = 'start';\n\n // Mode com setter para detectar mudanças\n private _mode: DrawerMode = 'over';\n @Input()\n get mode(): DrawerMode {\n return this._mode;\n }\n set mode(value: DrawerMode) {\n if (this._mode !== value) {\n this._mode = value;\n this.modeChange.emit(value);\n this._cdr.markForCheck();\n }\n }\n\n @Input() disableClose: boolean = false;\n @Input() autoFocus: boolean = true;\n @Input() fixedInViewport: boolean = false;\n @Input() fixedTopGap: number = 0;\n @Input() fixedBottomGap: number = 0;\n\n // Largura do drawer\n @Input() width: string = '256px';\n\n @HostBinding('style.width')\n get drawerWidth(): string {\n // Garante que sempre retorne um valor válido\n return this.width || '256px';\n }\n\n // Estado de aberto/fechado\n private _opened: boolean = false;\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n set opened(value: boolean) {\n this.toggle(value);\n }\n\n // Eventos\n @Output() openedChange = new EventEmitter<boolean>();\n @Output() openedStart = new EventEmitter<void>();\n @Output() closedStart = new EventEmitter<void>();\n @Output() modeChange = new EventEmitter<DrawerMode>();\n\n // Subject para debounce de animações\n private _animationSubject = new Subject<boolean>();\n private _animating = false;\n\n constructor(\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef\n ) {\n this._setupAnimationDebounce();\n }\n\n ngOnInit() {\n // Inicialização se necessário\n }\n\n ngOnDestroy() {\n this._animationSubject.complete();\n }\n\n private _setupAnimationDebounce() {\n this._animationSubject.pipe(\n debounceTime(50)\n ).subscribe(() => {\n this._animating = false;\n this._cdr.markForCheck();\n });\n }\n\n /**\n * Toggle o estado do drawer\n */\n toggle(isOpen: boolean = !this._opened): Promise<void> {\n return new Promise((resolve) => {\n if (this._opened === isOpen || this._animating) {\n resolve();\n return;\n }\n\n this._animating = true;\n const wasOpened = this._opened;\n this._opened = isOpen;\n\n if (isOpen) {\n this.openedStart.emit();\n } else {\n this.closedStart.emit();\n }\n\n // Emite a mudança\n this.openedChange.emit(this._opened);\n this._cdr.markForCheck();\n\n // Aguarda a animação\n this._animationSubject.next(true);\n\n setTimeout(() => {\n if (this.autoFocus && isOpen) {\n this._elementRef.nativeElement.focus();\n }\n resolve();\n }, 300);\n });\n }\n\n /**\n * Abre o drawer\n */\n open(): Promise<void> {\n return this.toggle(true);\n }\n\n /**\n * Fecha o drawer\n */\n close(): Promise<void> {\n return this.toggle(false);\n }\n\n /**\n * Getter para saber se está animando\n */\n get animating(): boolean {\n return this._animating;\n }\n\n /**\n * Getter para a largura/altura do drawer\n */\n @HostBinding('style.visibility')\n get visibility(): string {\n return this.opened || this._animating ? 'visible' : 'hidden';\n }\n}\n","<div class=\"matcha-drawer-inner-container\">\n <ng-content></ng-content>\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ElementRef\n} from '@angular/core';\n\n@Component({\n selector: 'matcha-drawer-content',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer-content',\n }\n})\nexport class MatchaDrawerContentComponent {\n constructor(public _elementRef: ElementRef<HTMLElement>) {}\n}\n","import {\n Component,\n ContentChild,\n ContentChildren,\n QueryList,\n AfterContentInit,\n OnDestroy,\n ChangeDetectorRef,\n ViewEncapsulation,\n HostBinding,\n HostListener\n} from '@angular/core';\nimport { MatchaDrawerComponent } from '../drawer/drawer.component';\nimport { MatchaDrawerContentComponent } from '../drawer-content/drawer-content.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil, debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-drawer-container',\n templateUrl: './drawer-container.component.html',\n styleUrls: ['./drawer-container.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer-container',\n '[class.matcha-drawer-container-explicit-backdrop]': '_backdropOverride',\n }\n})\nexport class MatchaDrawerContainerComponent implements AfterContentInit, OnDestroy {\n\n @ContentChildren(MatchaDrawerComponent) _drawers!: QueryList<MatchaDrawerComponent>;\n @ContentChild(MatchaDrawerContentComponent) _content!: MatchaDrawerContentComponent;\n\n @HostBinding('class.matcha-drawer-container-has-open')\n get hasOpenDrawer(): boolean {\n return this._drawers && this._drawers.some(drawer => drawer.opened);\n }\n\n /** Backdrop override */\n _backdropOverride: boolean | null = null;\n\n private _destroyed = new Subject<void>();\n private _doCheck = new Subject<void>();\n\n constructor(private _cdr: ChangeDetectorRef) {\n // Debounce para otimizar detecção de mudanças\n this._doCheck.pipe(\n debounceTime(10),\n takeUntil(this._destroyed)\n ).subscribe(() => {\n this._validateDrawers();\n this._updateContentMargins();\n });\n }\n\n ngAfterContentInit() {\n // Escuta mudanças nos drawers\n this._drawers.changes\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._validateDrawers();\n this._updateContentMargins();\n this._subscribeToDrawerChanges();\n });\n\n // Inscreve nos eventos dos drawers\n this._subscribeToDrawerChanges();\n\n this._updateContentMargins();\n }\n\n /**\n * Inscreve nos eventos de cada drawer\n */\n private _subscribeToDrawerChanges() {\n this._drawers.forEach(drawer => {\n // Escuta mudanças no estado opened\n drawer.openedChange\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._updateContentMargins();\n this._cdr.markForCheck();\n });\n\n // Escuta mudanças no modo do drawer\n drawer.modeChange\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._updateContentMargins();\n this._cdr.markForCheck();\n });\n });\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._doCheck.complete();\n }\n\n /**\n * Fecha todos os drawers que não têm disableClose\n */\n @HostListener('document:keydown.escape')\n onEscape() {\n if (this._drawers) {\n this._drawers.forEach(drawer => {\n if (drawer.opened && !drawer.disableClose && drawer.mode === 'over') {\n drawer.close();\n }\n });\n }\n }\n\n /**\n * Valida que não há múltiplos drawers na mesma posição\n */\n private _validateDrawers() {\n // Implementação simplificada - apenas avisa no console\n if (this._drawers && this._drawers.length > 2) {\n console.warn('Matcha Drawer: Mais de 2 drawers detectados. Use no máximo 2 (start e end).');\n }\n }\n\n /**\n * Atualiza as margens do conteúdo baseado nos drawers abertos\n */\n private _updateContentMargins() {\n if (!this._content || !this._drawers) {\n return;\n }\n\n let left = 0;\n let right = 0;\n\n this._drawers.forEach(drawer => {\n // Só aplica margem para side e push quando o drawer está aberto\n if (drawer.opened && (drawer.mode === 'side' || drawer.mode === 'push')) {\n const width = this._getDrawerWidth(drawer);\n\n if (drawer.position === 'start') {\n left = width;\n } else {\n right = width;\n }\n }\n });\n\n // Aplica as margens no content\n this._setContentMargins(left, right);\n }\n\n /**\n * Obtém a largura do drawer de forma segura\n */\n private _getDrawerWidth(drawer: MatchaDrawerComponent): number {\n // Primeiro tenta usar a propriedade width do componente\n if (drawer.width) {\n const widthValue = parseInt(drawer.width, 10);\n if (!isNaN(widthValue) && widthValue > 0) {\n return widthValue;\n }\n }\n\n const element = (drawer as any)._elementRef?.nativeElement;\n\n if (!element) {\n return 256; // Default 256px\n }\n\n // Tenta obter a largura do CSS primeiro (mais confiável)\n const computedStyle = window.getComputedStyle(element);\n const cssWidth = parseInt(computedStyle.width, 10);\n\n // Se a largura computada é válida e não é absurda, usa ela\n if (cssWidth && cssWidth > 0 && cssWidth < 1000) {\n return cssWidth;\n }\n\n // Fallback para offsetWidth, mas valida o valor\n const offsetWidth = element.offsetWidth;\n if (offsetWidth > 0 && offsetWidth < 1000) {\n return offsetWidth;\n }\n\n // Se tudo falhar, retorna o padrão\n return 256;\n }\n\n /**\n * Define as margens do conteúdo\n */\n private _setContentMargins(left: number, right: number) {\n if (this._content) {\n const contentElement = (this._content as any)._elementRef?.nativeElement;\n if (contentElement) {\n // Valida os valores antes de aplicar\n const validLeft = Math.max(0, Math.min(left, 600)); // Max 600px\n const validRight = Math.max(0, Math.min(right, 600)); // Max 600px\n\n contentElement.style.marginLeft = `${validLeft}px`;\n contentElement.style.marginRight = `${validRight}px`;\n }\n }\n }\n\n /**\n * Retorna se há um backdrop visível\n */\n get _hasBackdrop(): boolean {\n if (this._backdropOverride !== null) {\n return this._backdropOverride;\n }\n\n return this._drawers && this._drawers.some(drawer =>\n drawer.opened && drawer.mode === 'over'\n );\n }\n\n /**\n * Fecha o drawer quando o backdrop é clicado\n */\n _onBackdropClick() {\n if (this._drawers) {\n this._drawers.forEach(drawer => {\n if (drawer.opened && !drawer.disableClose && drawer.mode === 'over') {\n drawer.close();\n }\n });\n }\n }\n}\n","<div class=\"matcha-drawer-backdrop\"\n *ngIf=\"_hasBackdrop\"\n (click)=\"_onBackdropClick()\">\n</div>\n\n<ng-content select=\"matcha-drawer\"></ng-content>\n\n<div class=\"matcha-drawer-content-container\">\n <ng-content select=\"matcha-drawer-content\"></ng-content>\n</div>\n","import { Component, Directive, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n standalone: false\n})\nexport class MatchaIconComponent {\n @Input()\n name: string | undefined | null = '';\n\n @Input()\n size: string | undefined | null = '';\n\n @Input()\n color: string | undefined | null = '';\n\n @Input()\n class: string | undefined | null = '';\n\n @Input()\n loading: boolean | string = false;\n\n public get classes(): string {\n const icon = this.name ? `i-matcha-${this.name}` : '';\n const size = this.size ? `i-size-${this.size}` : '';\n const color = `color-${this.color}`;\n const loading = this.loading == true ? 'loading' : '';\n\n const activeClasses = `${icon} ${color} ${size} ${loading} ${this.class}`;\n return activeClasses;\n }\n}\n","<span [class]=\"classes\">\n <ng-content></ng-content>\n</span>\n","import { Component, ElementRef, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n standalone: false\n})\nexport class MatchaGridComponent {\n @Input()\n breakpoint: string = '';\n\n @Input()\n col: string = '';\n\n @Input()\n gap: string = '';\n\n @Input()\n class: string = '';\n\n @Input()\n span: string = '';\n\n @Input()\n rowspan: string = '';\n\n @Input()\n colspan: string = '';\n\n @Input()\n direction: string = '';\n\n @Input()\n loading: boolean | string = false;\n\n private getStringSplited(inputValue: string): string[] {\n const stringWithoutSpaces = inputValue.replace(/\\s+/g, '');\n return stringWithoutSpaces.split(',');\n }\n\n private getGridClasses(breakpoint: string, col: string): string {\n const breakpoints = this.getStringSplited(breakpoint);\n const columns = this.getStringSplited(col);\n let breakpointClasses = '';\n for (let i = 0; i < breakpoints.length; i++) {\n if (breakpoints[i] === '' || breakpoints[i] === 'xs') {\n breakpointClasses += `grid-${columns[i]} `;\n }\n if (breakpoints[i] === 'sm' && columns[i] !== undefined) {\n breakpointClasses += `grid-sm-${columns[i]} `;\n }\n if (breakpoints[i] === 'md' && columns[i] !== undefined) {\n breakpointClasses += `grid-md-${columns[i]} `;\n }\n if (breakpoints[i] === 'lg' && columns[i] !== undefined) {\n breakpointClasses += `grid-lg-${columns[i]} `;\n }\n if (breakpoints[i] === 'xl' && columns[i] !== undefined) {\n breakpointClasses += `grid-xl-${columns[i]} `;\n }\n }\n return breakpointClasses;\n }\n\n public setColspanClasses(span: string, breakpoint: string): void {\n if (span) {\n const spanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('colspan-'));\n spanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n this.renderer.addClass(this.el.nativeElement, `colspan${breakpoint ? '-' + breakpoint : '-sm'}-${span}`);\n }\n }\n\n public setRowspanClasses(span: string, breakpoint: string): void {\n if (span) {\n const spanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('rowspan-'));\n spanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n this.renderer.addClass(this.el.nativeElement, `rowspan${breakpoint ? '-' + breakpoint : '-sm'}-${span}`);\n }\n }\n\n // public setRowspanClasses(rowspan: string, breakpoint: string): void {\n // const elementsWithRowspanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('rowspan-'));\n // elementsWithRowspanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n // //função que executa a adição de classe para cada breakpoint\n // const breakpoints = this.getStringSplited(breakpoint);\n // const prefix: string = ' rowspan';\n // const rows = this.getStringSplited(rowspan);\n // let rowspanClasses = '';\n // for (let i = 0; i < rows.length; i++) {\n // rowspanClasses = prefix + rows[i];\n // }\n // this.renderer.addClass(this.el.nativeElement, `${rowspanClasses}`);\n // }\n\n public get classes(): string {\n this.class = 'teste';\n const breakpoints = this.getGridClasses(this.breakpoint, this.col);\n const activeClasses = `grid-1 ${breakpoints} gap-${this.gap} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n this.setColspanClasses(this.colspan, this.breakpoint);\n this.setRowspanClasses(this.rowspan, this.breakpoint);\n }\n\n ngOnChanges() {\n this.setColspanClasses(this.colspan, this.breakpoint);\n this.setRowspanClasses(this.rowspan, this.breakpoint);\n }\n}\n","<div [class]=\"classes\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input, AfterViewInit, ElementRef, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-masonry',\n templateUrl: './masonry.component.html',\n styleUrls: ['./masonry.component.scss'],\n standalone: false\n})\nexport class MatchaMasonryComponent implements AfterViewInit, OnDestroy {\n @Input('col') colSize: string | number | null = null;\n @Input('col-sm') smColSize: string | number | null = null;\n @Input('col-md') mdColSize: string | number | null = null;\n @Input('col-lg') lgColSize: string | number | null = null;\n @Input('col-xl') xlColSize: string | number | null = null;\n @Input('gap') gap: string | number | null = null;\n @Input('gap-sm') gapSm: string | number | null = null;\n @Input('gap-md') gapMd: string | number | null = null;\n @Input('gap-lg') gapLg: string | number | null = null;\n @Input('gap-xl') gapXl: string | number | null = null;\n\n private destroy$ = new Subject<void>();\n private resizeObserver?: ResizeObserver;\n private originalItems: HTMLElement[] = [];\n private isDistributing = false;\n\n constructor(\n private elementRef: ElementRef,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngAfterViewInit(): void {\n // Delay para garantir que o conteúdo foi projetado\n setTimeout(() => {\n this.captureOriginalItems();\n this.distributeItems();\n this.setupResizeObserver();\n }, 50);\n\n // Observar mudanças de tamanho da janela\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(200),\n takeUntil(this.destroy$)\n )\n .subscribe(() => this.distributeItems());\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n private captureOriginalItems(): void {\n const contentWrapper = this.elementRef.nativeElement.querySelector('.masonry-content-wrapper');\n if (!contentWrapper) return;\n\n // Capturar todos os filhos diretos (elementos projetados via ng-content)\n this.originalItems = Array.from(contentWrapper.children) as HTMLElement[];\n }\n\n private setupResizeObserver(): void {\n this.resizeObserver = new ResizeObserver(() => {\n if (!this.isDistributing) {\n this.distributeItems();\n }\n });\n\n // Observar os itens originais\n this.originalItems.forEach(item => {\n this.resizeObserver?.observe(item);\n });\n }\n\n private distributeItems(): void {\n if (this.isDistributing || this.originalItems.length === 0) return;\n\n this.isDistributing = true;\n\n const columnCount = this.getCurrentColumnCount();\n console.log('🔵 Masonry Debug - Column count:', columnCount);\n\n if (columnCount <= 0) {\n this.isDistributing = false;\n return;\n }\n\n const columnsContainer = this.elementRef.nativeElement.querySelector('.masonry-columns');\n if (!columnsContainer) {\n console.error('❌ Masonry Debug - .masonry-columns not found!');\n this.isDistributing = false;\n return;\n }\n\n console.log('🔵 Masonry Debug - Container width:', columnsContainer.offsetWidth);\n\n // Limpar colunas existentes\n columnsContainer.innerHTML = '';\n\n // Criar divs de coluna\n const columnDivs: HTMLElement[] = [];\n const columnHeights: number[] = [];\n\n for (let i = 0; i < columnCount; i++) {\n const columnDiv = document.createElement('div');\n columnDiv.className = 'masonry-column';\n columnsContainer.appendChild(columnDiv);\n columnDivs.push(columnDiv);\n columnHeights.push(0);\n }\n\n console.log('🔵 Masonry Debug - Created columns:', columnCount);\n console.log('🔵 Masonry Debug - Items to distribute:', this.originalItems.length);\n\n // Distribuir itens MOVENDO os elementos reais (não clonando)\n this.originalItems.forEach((item, index) => {\n // Encontrar coluna com menor altura\n const minHeightIndex = columnHeights.indexOf(Math.min(...columnHeights));\n\n console.log(`🔵 Item ${index + 1} -> Column ${minHeightIndex + 1} (height: ${item.offsetHeight}px)`);\n\n // MOVER o elemento real para a coluna (preserva todos os bindings do Angular)\n const gapValue = this.getGapValue();\n if (gapValue > 0) {\n item.style.marginBottom = `${gapValue}px`;\n }\n\n // appendChild move o nó (não clona)\n columnDivs[minHeightIndex].appendChild(item);\n\n // Atualizar altura da coluna\n columnHeights[minHeightIndex] += item.offsetHeight + gapValue;\n });\n\n console.log('🔵 Masonry Debug - Final column heights:', columnHeights);\n\n // Log da largura de cada coluna criada\n columnDivs.forEach((col, i) => {\n console.log(`🔵 Column ${i + 1} width:`, col.offsetWidth, 'px');\n });\n\n this.isDistributing = false;\n }\n\n private getCurrentColumnCount(): number {\n const width = window.innerWidth;\n\n // Breakpoints do Material/Angular\n if (width >= 1920 && this.xlColSize) return Number(this.xlColSize);\n if (width >= 1280 && this.lgColSize) return Number(this.lgColSize);\n if (width >= 960 && this.mdColSize) return Number(this.mdColSize);\n if (width >= 600 && this.smColSize) return Number(this.smColSize);\n if (this.colSize) return Number(this.colSize);\n\n return 1; // Fallback para 1 coluna\n }\n\n public getGapValue(): number {\n const gapStr = this.gap?.toString() || '0';\n return parseInt(gapStr, 10);\n }\n}\n","<div class=\"masonry-wrapper\">\n <!-- Container com conteúdo original (oculto) -->\n <div class=\"masonry-content-wrapper\">\n <ng-content></ng-content>\n </div>\n\n <!-- Container onde as colunas serão renderizadas -->\n <div class=\"masonry-columns\" [style.gap.px]=\"getGapValue()\"></div>\n</div>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-content',\n templateUrl: './modal-content.component.html',\n styleUrls: ['./modal-content.component.scss'],\n standalone: false\n})\nexport class MatchaModalContentComponent {\n\n}\n","\n<div class=\"py-24 pt-0 overflow-auto\" style=\"max-height: calc(100vh - 300px);\n\">\n <div class=\"matcha-card-flat matcha-background-transparent p-0 flex-column--force\">\n <div class=\"flex-column matcha-card-flat matcha-background-transparent px-24 py-0\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-header',\n templateUrl: './modal-header.component.html',\n styleUrls: ['./modal-header.component.scss'],\n standalone: false\n})\nexport class MatchaModalHeaderComponent {\n\n}\n","<!-- [@animate]=\"{ value: '*', params: { delay: '100ms' } }\" -->\n<!-- MATCHA CHECK -->\n<div class=\"matcha-section pt-16 px-16 pt-md-24 px-md-24\">\n <div class=\"d-flex flex-space-between mb-16 mb-md-24\">\n <!-- Remoção do flex-wrap para que o conteúdo seja exibido em uma única linha -->\n <div class=\"flex-space-between flex-align-center\">\n <ng-content></ng-content>\n </div>\n <div class=\"flex-row flex-end gap-8\">\n <ng-content select=\"matcha-modal-options\"></ng-content>\n </div>\n </div>\n <matcha-divider></matcha-divider>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-footer',\n templateUrl: './modal-footer.component.html',\n styleUrls: ['./modal-footer.component.scss'],\n standalone: false\n})\nexport class MatchaModalFooterComponent {\n\n @Input('')\n buttonType: number | string = 0;\n\n ngAfterViewInit() {\n const modalFooter = document.querySelectorAll('matcha-modal-footer');\n modalFooter.forEach(footer => {\n const buttons = footer.querySelectorAll('.matcha-button');\n\n if (buttons.length === 1) {\n buttons.forEach(button => {\n button.classList.add('w-100-p');\n });\n }\n if (buttons.length > 1) {\n buttons.forEach(button => {\n button.classList.add('max-w-sm-256');\n button.classList.add('w-100-p');\n });\n }\n });\n }\n}\n","<div class=\"matcha-section pb-16 px-16 pb-md-24 px-md-24\">\n <matcha-divider></matcha-divider>\n <div class=\"flex-column flex-sm-row w-100-p flex-space-between gap-16\">\n <div class=\"flex-column flex-sm-row w-100-p flex-space-between mt-16 mt-md-24 gap-16\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-options',\n templateUrl: './modal-options.component.html',\n styleUrl: './modal-options.component.scss',\n standalone: false\n})\nexport class MatchaModalOptionsComponent {\n\n}\n","<div class=\"flex-row gap-8\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal',\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss',\n standalone: false\n})\nexport class MatchaModalComponent {\n\n @Input('size') size: string | null = 'large';\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @Input()\n class: string = '';\n\n @Input()\n hasBackdrop: boolean = true;\n\n @Input()\n backdropClass: string = '';\n\n @HostBinding('attr.size')\n get sizeAttr(): string | null {\n return this.size;\n }\n\n @HostBinding('attr.size-xs')\n get sizeAttrXs(): string | null {\n return this.sizeXs;\n }\n\n @HostBinding('arrt.size-sm')\n get sizeAttrSm(): string | null {\n return this.sizeSm;\n }\n\n @HostBinding('attr.size-md')\n get sizeAttrMd(): string | null {\n return this.sizeMd;\n }\n\n @HostBinding('attr.size-lg')\n get sizeAttrLg(): string | null {\n return this.sizeLg;\n }\n\n @HostBinding('attr.size-xl')\n get sizeAttrXl(): string | null {\n return this.sizeXl;\n }\n\n @HostBinding('class')\n public get classes(): string {\n const activeClasses = `matcha-modal flex-column elevation-8 ${this.class}`;\n return activeClasses;\n }\n\n constructor(\n ) {}\n\n}\n","<div class=\"background-surface elevation-z-4 flex-column matcha-modal radius-8\">\n <ng-content></ng-content>\n</div>","import { Component, HostListener, OnInit, OnDestroy, Input } from '@angular/core';\n\n\n@Component({\n selector: 'matcha-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarComponent implements OnInit, OnDestroy{\n\n @Input() elevation: number = 1;\n\n public isMobileScreen = false;\n\n get elevationClass(): string {\n return `elevation-z-${this.elevation}`;\n }\n \n private readonly mobileBreakpoint = 1024;\n private resizeTimeout: any;\n\n ngOnInit(): void {\n this.checkScreenWidth();\n }\n\n @HostListener('window:resize', [])\n onResize(): void {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.checkScreenWidth();\n }, 20);\n }\n\n private checkScreenWidth(): void {\n this.isMobileScreen = window.innerWidth < this.mobileBreakpoint;\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.resizeTimeout);\n }\n}\n\n","<!-- HOW TO USE:\n<matcha-toolbar>\n <matcha-title type=\"icon\" icon=\"settings-out\" (iconClick)=\"FUNÇÃO-AO-CLICAR-NO-ICONE-AQUI\">\n {{'FINANCIAL.CATEGORY.TITLE' | translate}}\n </matcha-title>\n <search-form toolbar-form-field (searchText)=\"searchText($event)\"></search-form>\n <matcha-toolbar-button icon=\"home-out\" (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-button>\n <matcha-toolbar-content>\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-content>\n <matcha-toolbar-main-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-main-button>\n QUALQUER OUTRA FUNCIONALIDADE AQUI\n</matcha-toolbar>\n-->\n<ng-template #toolbarMainButton>\n <ng-content select=\"matcha-toolbar-main-button\"></ng-content>\n</ng-template>\n\n<ng-template #toolbarCustomButton>\n <ng-content select=\"matcha-toolbar-custom-button\"></ng-content>\n</ng-template>\n<!-- CONTENT HEADER -->\n<div class=\"flex-column background-surface radius-8\" [ngClass]=\"elevationClass\">\n <div class=\"flex-column flex-md-row flex-wrap p-16 flex-align-center flex-space-between h-auto min-h-72 flex-wrap gap-8\">\n <div class=\"w-100-p--force w-md-auto--force flex-space-between flex-wrap gap-8\">\n <div class=\"min-h-32 flex-center-center\">\n <ng-content select=\"matcha-title\"></ng-content>\n </div>\n <ng-container *ngIf=\"isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n <div class=\"w-100-p--force w-md-auto--force flex-row flex-end gap-8\">\n <!-- ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <ng-content select=\"search-form\"></ng-content>\n <!-- /ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <div class=\"flex-row gap-8\">\n <ng-content select=\"matcha-toolbar-button\"></ng-content>\n <ng-content select=\"matcha-toolbar-content\"></ng-content>\n <ng-content></ng-content>\n <ng-container *ngIf=\"!isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n<!-- / CONTENT HEADER -->\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-button',\n templateUrl: './toolbar-button.component.html',\n styleUrls: ['./toolbar-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarButtonComponent{\n @Input('icon') icon: string = '';\n @Output() buttonClick = new EventEmitter();\n\n public get classes(): string {\n const activeClasses = `i-matcha-${this.icon}`;\n return activeClasses;\n }\n\n emitButtonClick() {\n this.buttonClick.emit();\n }\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\" toolbar-button-tooltip=\"TOOLTIP-AQUI\">\n TEXTO DO BOTÃO AQUI\n</matcha-toolbar-button>\n-->\n<button matcha-button outline=\"true\" size=\"small\" color=\"grey\" icon=\"true\" (click)=\"emitButtonClick()\">\n <span [class]=\"classes\"></span>\n</button>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-content',\n templateUrl: './toolbar-content.component.html',\n styleUrls: ['./toolbar-content.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarContentComponent{}\n","<!-- HOW TO USE:\n<matcha-toolbar-content>\n OUTROS CONTEUDOS CUSTOMIZADOS NA TOOLBAR\n</matcha-toolbar-content>\n-->\n<div class=\"d-flex flex-wrap gap-8\">\n <ng-content></ng-content>\n</div>\n","import { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-main-button',\n templateUrl: './toolbar-main-button.component.html',\n styleUrls: ['./toolbar-main-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarMainButtonComponent {\n @Output() buttonClick = new EventEmitter();\n\n emitButtonClick() {\n this.buttonClick.emit();\n }\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-main-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n</matcha-toolbar-main-button>\n-->\n<button matcha-button size=\"tiny\" size-md=\"small\" color=\"accent\" (click)=\"emitButtonClick()\">\n <span class=\"i-matcha-action_plus i-size-sm ml--4\"></span>\n <span class=\"ml-8 fs-14\">\n <ng-content></ng-content>\n </span>\n</button>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-custom-button',\n templateUrl: './toolbar-custom-button.component.html',\n styleUrls: ['./toolbar-custom-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarCustomButtonComponent {\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-custom-button>\n Botão customizado aqui\n</matcha-toolbar-custom-button>\n-->\n<ng-content></ng-content>\n","import { Component, ContentChild, Input, AfterViewInit, ElementRef } from '@angular/core';\nimport { FormControlName } from '@angular/forms';\n\n@Component({\n selector: 'matcha-form-field',\n standalone: false,\n templateUrl: './matcha-form-field.component.html',\n styleUrl: './matcha-form-field.component.scss',\n})\nexport class MatchaFormFieldComponent implements AfterViewInit {\n @Input() color: 'red' | 'pink' | 'purple' | 'deep-purple' | 'indigo' | 'blue' | 'light-blue' | 'cyan' | 'teal' | 'green' | 'light-green' | 'lime' | 'yellow' | 'amber' | 'orange' | 'deep-orange' | 'primary' | 'accent' | 'warn' | 'brown' | 'grey' | 'blue-grey' | 'primary' | 'accent' | 'warn' = 'grey';\n\n @Input('size') size: string | null | undefined | 'tiny' | 'small' | 'medium' | 'large' | 'huge' = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @ContentChild(FormControlName) controlDir?: FormControlName;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit(): void {\n this.generateDataCy();\n }\n\n private generateDataCy(): void {\n // Busca o matcha-label dentro do form-field\n const labelElement = this.elementRef.nativeElement.querySelector('matcha-label');\n const inputElement = this.elementRef.nativeElement.querySelector('input, textarea, select');\n\n if (labelElement && inputElement) {\n const labelText = labelElement.textContent?.trim();\n if (labelText) {\n const dataCyValue = this.convertToKebabCase(labelText);\n inputElement.setAttribute('data-cy', `matcha-form-field-${dataCyValue}`);\n }\n }\n }\n\n private convertToKebabCase(text: string): string {\n return text\n .toLowerCase()\n .replace(/\\s+/g, '-') // Substitui espaços por hífens\n .replace(/[^\\w\\-]/g, '') // Remove caracteres especiais\n .replace(/\\-\\-+/g, '-') // Remove hífens duplos\n .replace(/^-+|-+$/g, ''); // Remove hífens do início e fim\n }\n\n get control() {\n return this.controlDir?.control;\n }\n\n get showError(): boolean {\n return !!this.control?.invalid && !!this.control?.touched;\n }\n}\n","<div class=\"flex-column\">\n <div class=\"matcha-form-field position-relative w-100-p min-h-40 flex-align-center\" #inputSelector>\n <div class=\"flex-row position-absolute w-100-p min-h-40 h-100-p\">\n <div class=\"matcha-form-field-border-start bl-2 bt-2 bb-2 radius-left-8 min-w-8 border-color-{{color}}\"></div>\n <div class=\"matcha-form-field-border-middle bb-2 w-auto border-color-{{color}}\">\n <ng-content select=\"matcha-label\"></ng-content>\n </div>\n <div class=\"matcha-form-field-border-end br-2 bt-2 bb-2 radius-right-8 w-100-p border-color-{{color}}\"></div>\n </div>\n <div class=\"flex-row position-relative py-8 px-12 gap-8 w-100-p\">\n <ng-content></ng-content>\n </div>\n </div>\n <ng-container *ngIf=\"showError\">\n <ng-content select=\"matcha-error\"></ng-content>\n </ng-container>\n <ng-content select=\"matcha-autocomplete\"></ng-content>\n</div>\n<ng-content select=\"matcha-hint-text\"></ng-content>\n","import { Component, Input, AfterViewInit, ElementRef, ChangeDetectorRef } from '@angular/core';\n\n@Component({\n selector: 'matcha-label',\n standalone: false,\n templateUrl: './matcha-label.component.html',\n styleUrl: './matcha-label.component.scss',\n})\nexport class MatchaLabelComponent implements AfterViewInit {\n @Input() color: 'red' | 'pink' | 'purple' | 'deep-purple' | 'indigo' | 'blue' | 'light-blue' | 'cyan' | 'teal' | 'green' | 'light-green' | 'lime' | 'yellow' | 'amber' | 'orange' | 'deep-orange' | 'primary' | 'accent' | 'warn' | 'brown' | 'grey' | 'blue-grey' | 'primary' | 'accent' | 'warn' = 'blue-grey';\n\n public isRequired: boolean = false;\n\n constructor(private elementRef: ElementRef, private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n // Usar setTimeout para evitar ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.checkIfRequired();\n this.cdr.detectChanges();\n });\n }\n\n private checkIfRequired(): void {\n // Busca o form-field pai\n const formField = this.elementRef.nativeElement.closest('matcha-form-field');\n if (formField) {\n // Busca por elementos nativos e componentes customizados com required\n const inputElement = formField.querySelector(\n 'input[required], textarea[required], select[required], ' +\n 'matcha-select[required], matcha-autocomplete[required], matcha-date[required]'\n );\n this.isRequired = !!inputElement;\n }\n }\n}\n","<label\n class=\"d-flex d-flex-align-center position-relative text-nowrap px-4 fs-12 lh-18 fw-700 color-{{color}}\"\n style=\"transform: translateY(-8px);\">\n <ng-content></ng-content>\n <span *ngIf=\"isRequired\"> *</span>\n <!-- <span class=\"pl-4 fs-10 fw-400 lh-16 matcha-color-placeholder\">(Opcional)</span> -->\n</label>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-error',\n standalone: false,\n templateUrl: './matcha-error.component.html',\n styleUrl: './matcha-error.component.scss',\n})\nexport class MatchaErrorComponent {}\n","<p class=\"w-100-p color-red fs-12 lh-16 flex-row flex-align-center gap-4 m-0 py-4\">\n <matcha-icon name=\"action_sign_warning-out\" size=\"sm\"></matcha-icon>\n <ng-content></ng-content>\n</p>\n","import { Directive, ElementRef, HostListener, Input, OnDestroy } from '@angular/core';\n\n@Directive({\n selector: '[matchaRipple]',\n standalone: false\n})\nexport class MatchaRippleDirective implements OnDestroy {\n @Input() rippleColor: string = 'rgba(0, 0, 0, 0.5)'; // Cor padrão do efeito\n private ripples: HTMLElement[] = [];\n\n constructor(private el: ElementRef) {\n // Garantir que o elemento tenha position relative\n this.el.nativeElement.style.position = 'relative';\n this.el.nativeElement.style.overflow = 'hidden';\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent): void {\n const target = this.el.nativeElement;\n const rect = target.getBoundingClientRect();\n\n const ripple = document.createElement('span');\n ripple.className = 'ripple';\n\n // Definir o tamanho do ripple baseado no maior lado do elemento\n const size = Math.max(target.offsetWidth, target.offsetHeight);\n ripple.style.height = ripple.style.width = size * 2 + 'px';\n\n // Aplicar estilo básico ao ripple\n ripple.style.backgroundColor = this.rippleColor;\n ripple.style.position = 'absolute';\n ripple.style.borderRadius = '50%';\n ripple.style.opacity = '0.5';\n ripple.style.transform = 'scale(0)';\n ripple.style.transition = 'transform 0.6s, opacity 0.6s';\n ripple.style.pointerEvents = 'none';\n\n const top = event.pageY - rect.top - size + window.scrollY;\n const left = event.pageX - rect.left - size + window.scrollX;\n\n ripple.style.top = top + 'px';\n ripple.style.left = left + 'px';\n\n target.appendChild(ripple);\n this.ripples.push(ripple);\n\n // Inicia a animação no próximo frame\n requestAnimationFrame(() => {\n ripple.style.transform = 'scale(2)';\n ripple.style.opacity = '0';\n });\n\n // Remove o ripple após a animação\n setTimeout(() => {\n if (ripple && ripple.parentElement) {\n ripple.parentElement.removeChild(ripple);\n this.ripples = this.ripples.filter(r => r !== ripple);\n }\n }, 600);\n }\n\n ngOnDestroy() {\n // Limpa todos os ripples quando o componente é destruído\n this.ripples.forEach(ripple => {\n if (ripple && ripple.parentElement) {\n ripple.parentElement.removeChild(ripple);\n }\n });\n this.ripples = [];\n }\n}","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaCheckboxComponent),\n multi: true\n }\n ]\n})\nexport class MatchaCheckboxComponent implements ControlValueAccessor {\n @Input() color: string = 'accent';\n @Input() indeterminate: boolean = false;\n\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean | string) {\n // Converte 'false' (string) ou false (boolean) para false, e qualquer outro valor para true.\n this._disabled = value != null && `${value}` !== 'false';\n }\n\n private _checked = false;\n @Input()\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean | string) {\n // Converte string para boolean: 'false' (string) ou false (boolean) para false, qualquer outro valor para true\n const booleanValue = value != null && `${value}` !== 'false';\n if (booleanValue !== this._checked) {\n this._checked = booleanValue;\n this.onChange(this._checked);\n }\n }\n\n @Output() checkedChange = new EventEmitter<{ checked: boolean }>();\n @Output() change = new EventEmitter<Event>();\n\n // ControlValueAccessor methods\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(value: boolean): void {\n this._checked = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) return;\n\n const input = event.target as HTMLInputElement;\n this.checked = input.checked;\n this.onTouched();\n\n const eventData = { checked: this.checked };\n this.checkedChange.emit(eventData);\n this.change.emit(event);\n }\n}\n","<label\n class=\"matcha-checkbox flex-align-center\"\n [class.matcha-checkbox-disabled]=\"disabled\">\n <div\n class=\"matcha-checkbox-container w-40 h-40 max-w-40 max-h-40 min-w-40 min-h-40 flex-center-center radius-full cursor-pointer\"\n matchaRipple>\n <input\n type=\"checkbox\"\n class=\"matcha-checkbox-input\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [indeterminate]=\"indeterminate\"\n (change)=\"onInputChange($event)\">\n </div>\n\n <span class=\"matcha-checkbox-label fw-500 fs-16 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaRadioComponent),\n multi: true\n }\n ]\n})\nexport class MatchaRadioComponent implements ControlValueAccessor {\n @Input() color: string = 'accent';\n @Input() value: any = null;\n @Input() name: string = '';\n\n private _disabled = false;\n @Input()\n set disabled(value: boolean | string) {\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input()\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean) {\n if (value !== this._checked) {\n this._checked = value;\n const outVal = this.value !== undefined ? this.value : this._checked;\n this.onChange(outVal);\n }\n }\n\n private _checked: boolean = false;\n private _modelValue: any = null;\n\n @Output() checkedChange = new EventEmitter<{ checked: boolean }>();\n @Output() change = new EventEmitter<Event>();\n\n // ControlValueAccessor methods\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(value: any): void {\n this._modelValue = value;\n this._checked = this.value !== undefined ? this.value === value : !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) return;\n\n this.checked = true;\n this.onTouched();\n\n // Emitir o valor correto para o ControlValueAccessor\n const outVal = this.value !== undefined ? this.value : this.checked;\n this.onChange(outVal);\n\n const eventData = { checked: this.checked };\n this.checkedChange.emit(eventData);\n this.change.emit(event);\n }\n}\n","<label\n class=\"matcha-radio flex-align-center\"\n [class.matcha-radio-disabled]=\"disabled\">\n <div\n class=\"matcha-radio-container w-40 h-40 max-w-40 max-h-40 min-w-40 min-h-40 flex-center-center radius-full cursor-pointer\"\n matchaRipple>\n <input\n type=\"radio\"\n class=\"matcha-radio-input\"\n [attr.name]=\"name\"\n [value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onInputChange($event)\">\n </div>\n\n <span class=\"matcha-radio-label fw-500 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>","import { Component, ElementRef, Inject, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-spin',\n standalone: false,\n templateUrl: './spin.component.html',\n styleUrl: './spin.component.scss'\n})\nexport class MatchaSpinComponent {\n private _progress: string | number = 0;\n \n @Input()\n set progress(value: string | number) {\n this._progress = Number(value);\n }\n get progress(): string | number {\n return this._progress;\n }\n\n @Input() color: string = 'accent';\n @Input('size') size: string | null = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n readonly strokeWidth: number = 5;\n\n constructor(\n @Inject(ElementRef) private _elementRef: ElementRef,\n @Inject(Renderer2) private _renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, 'matcha-spin');\n this.setSize();\n }\n\n private setSize() {\n const sizes = ['tiny', 'small', 'medium', 'large', 'huge'];\n sizes.forEach(size => {\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-spin-${size}`);\n });\n\n if (this.size) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-spin-${this.size}`);\n }\n }\n\n get diameter(): number {\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n return rect.width;\n }\n\n get radius(): number {\n return (this.diameter - this.strokeWidth) / 2;\n }\n\n get circumference(): number {\n return 2 * Math.PI * this.radius;\n }\n\n get dashOffset(): number {\n const progress = Math.min(Math.max(Number(this.progress), 0), 100);\n return this.circumference - (progress / 100) * this.circumference;\n }\n\n}\n","<div\n class=\"matcha-spin\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"progress\"\n>\n <svg [attr.viewBox]=\"'0 0 ' + diameter + ' ' + diameter\">\n <circle\n class=\"spin-placeholder\"\n [attr.cx]=\"diameter / 2\"\n [attr.cy]=\"diameter / 2\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n />\n <circle\n class=\"spin-progress\"\n [attr.cx]=\"diameter / 2\"\n [attr.cy]=\"diameter / 2\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.stroke]=\"color\"\n [attr.stroke-dasharray]=\"circumference\"\n [attr.stroke-dashoffset]=\"progress ? dashOffset : null\"\n />\n </svg>\n</div>\n","import { Component, ElementRef, HostBinding, Inject, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-spinner',\n standalone: false,\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss']\n})\nexport class MatchaSpinnerComponent {\n private _progressValue: number = 0;\n @Input()\n set progress(value: string | number) {\n this._progressValue = Number(value);\n }\n get progress(): string | number {\n return this._progressValue;\n }\n\n @HostBinding('attr.progress') get _progress() { return this.progress; }\n\n\n @Input() color: string = 'accent';\n\n @HostBinding('attr.color') get _color() { return this.color; }\n\n @Input('size') size: string | null = null;\n\n @HostBinding('attr.size')\n get hostSize(): string | null {\n return this.size;\n }\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n // Valores fixos baseados no hard coded que funciona\n readonly diameter = 66;\n readonly center = 33;\n readonly radius = 30;\n readonly strokeWidth = 5;\n\n constructor(\n @Inject(ElementRef) private _elementRef: ElementRef,\n @Inject(Renderer2) private _renderer: Renderer2\n ) { }\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, 'matcha-spinner');\n this.setSize();\n }\n\n private setSize() {\n const sizes = ['tiny', 'small', 'medium', 'large', 'huge'];\n sizes.forEach(size => {\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-spinner-${size}`);\n });\n\n if (this.size) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-spinner-${this.size}`);\n }\n }\n\n get circumference(): number {\n return 2 * Math.PI * this.radius;\n }\n\n get dashOffset(): number {\n const progress = Math.min(Math.max(Number(this.progress), 0), 100);\n return this.circumference - (progress / 100) * this.circumference;\n }\n}\n","<div\n class=\"matcha-spinner\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"progress\"\n>\n <svg [attr.viewBox]=\"'0 0 ' + diameter + ' ' + diameter\" class=\"spinner\">\n <circle\n class=\"spinner-placeholder\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n stroke-linecap=\"round\"\n />\n <circle\n class=\"spinner-progress path\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.stroke]=\"color\"\n [attr.stroke-dasharray]=\"circumference\"\n [attr.stroke-dashoffset]=\"dashOffset\"\n stroke-linecap=\"round\"\n />\n </svg>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-hint-text',\n standalone: false,\n templateUrl: './hint-text.component.html',\n styleUrl: './hint-text.component.scss'\n})\nexport class MatchaHintTextComponent {\n @Input('type') type: string = 'error';\n @Input('size') size: string = 'tiny';\n\n get iconName(): string {\n switch (this.type) {\n case 'warning': return 'action_sign_warning-out';\n case 'info': return 'info-out';\n case 'success': return 'action_done';\n default: return 'action_sign_warning-out';\n }\n }\n\n get iconColor(): string {\n switch (this.type) {\n case 'warning': return 'yellow';\n case 'info': return 'blue';\n case 'success': return 'green';\n default: return 'red';\n }\n }\n\n}\n","<div class=\"d-flex flex-align-center gap-4\">\n <matcha-icon color=\"{{ iconColor }}\" name=\"{{ iconName }}\"> </matcha-icon>\n <span class=\"text\"><ng-content></ng-content></span>\n</div>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-skeleton',\n templateUrl: './skeleton.component.html',\n styleUrls: ['./skeleton.component.scss'],\n standalone: false\n})\nexport class MatchaSkeletonComponent {\n\n @Input('amount') @HostBinding('attr.amount') public amount: number | string = 3;\n @Input('grid') @HostBinding('attr.grid') public grid: number | string = 3;\n @Input('height') @HostBinding('attr.height') public height: number | string = 100;\n @Input('model') @HostBinding('attr.model') public model: 'profile'| 'table' | 'empty' | string | null = 'empty';\n @Input('gap') @HostBinding('attr.gap') public gap: number | string = 16;\n\n // Getters privados para conversão sem modificar os inputs\n private get amountNumber(): number {\n return typeof this.amount === 'string' ? parseInt(this.amount, 10) : this.amount;\n }\n\n private get gridNumber(): number {\n return typeof this.grid === 'string' ? parseInt(this.grid, 10) : this.grid;\n }\n\n public get classes(): string {\n // Usa os valores convertidos sem modificar os inputs\n const amountValue = this.amountNumber;\n const gridValue = this.gridNumber;\n\n let classes = `gap-${this.gap} `;\n amountValue > 1 ? classes += `grid-sm-${gridValue - 1} ` : classes;\n amountValue > 2 ? classes += `grid-md-${gridValue} ` : classes;\n return classes;\n }\n\n public get heightClass(): string {\n return `h-${this.height}`;\n }\n\n public get amountArray(): number[] {\n const amountValue = this.amountNumber;\n return Array(amountValue).fill(0).map((_, index) => index);\n }\n}\n","<ng-content></ng-content>\n<!-- CARD SKELETON -->\n<div [class]=\"classes\" *ngIf=\"model !== 'table'\">\n <div class=\"skeleton-animated-background flex-column--force p-0 radius-8 user-select-none overflow-hidden\" *ngFor=\"let i of amountArray\">\n\n <ng-container *ngIf=\"model === 'profile'\"><span class=\"h8 title p-16 m-0\"> <span class=\"radius-full background-surface-alpha h-48 w-48\"></span> </span></ng-container>\n\n <div [class]=\"'h-'+ height + ' flex-column--force p-16'\"></div>\n\n <ng-container *ngIf=\"model === 'profile'\">\n <div class=\"flex-column--force\">\n <div class=\"flex-column--force p-16 gap-16\">\n <div class=\"w-100-p h-16 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p h-16 background-surface-alpha radius-full\"></div>\n </div>\n </div>\n </ng-container>\n\n </div>\n</div>\n<!-- CARD SKELETON -->\n\n<!-- TABLE SKELETON -->\n<div class=\"skeleton-animated-background w-100-p mr-16 flex-column--force p-0 radius-8 user-select-none\" *ngIf=\"model === 'table'\">\n\n <div class=\"flex-column--force h-64 background-surface-alpha\">\n <ng-container> </ng-container>\n </div>\n\n <ng-container *ngFor=\"let i of amountArray\">\n <div class=\"grid-4 h-80 px-16 gap-16 flex-align-center--force\">\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"min-h-48 min-w-48 h-48 w-48 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n </div>\n\n <div class=\"grid-4 h-80 px-16 gap-16 flex-align-center--force background-bg-alpha\">\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"min-h-48 min-w-48 h-48 w-48 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-30-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n </div>\n\n </ng-container>\n\n</div>\n<!-- TABLE SKELETON -->\n","import { Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy, ElementRef, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSlideToggleComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatchaSlideToggleComponent implements ControlValueAccessor, OnChanges, AfterViewInit {\n @Input() color: string = 'accent'; \n\n private _checked: boolean = false;\n @Input()\n set checked(value: boolean | string) {\n const newCheckedState = value === '' ? true : !!value;\n if (newCheckedState !== this._checked) {\n this._checked = newCheckedState;\n }\n }\n get checked(): boolean {\n return this._checked;\n }\n\n private _disabled: boolean = false;\n @Input()\n set disabled(value: boolean | string) {\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Output() change = new EventEmitter<{ checked: boolean }>();\n\n onChange: (value: boolean) => void = (_: boolean) => {};\n onTouched: () => void = () => {};\n\n writeValue(value: any): void {\n this.checked = !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled']) {\n if (this.disabled) {\n this.elementRef.nativeElement.setAttribute('disabled', '');\n } else {\n this.elementRef.nativeElement.removeAttribute('disabled');\n }\n }\n }\n\n ngAfterViewInit(): void {\n \n if (this.disabled) {\n this.elementRef.nativeElement.setAttribute('disabled', '');\n }\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n const inputElement = event.target as HTMLInputElement;\n const newCheckedState = inputElement.checked;\n\n this._checked = newCheckedState;\n this.onChange(newCheckedState);\n this.onTouched();\n this.change.emit({ checked: newCheckedState });\n }\n}\n","<label\n class=\"matcha-slide-toggle-wrapper flex-align-center\"\n [class.matcha-slide-toggle-disabled]=\"disabled\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onInputChange($event)\"\n />\n\n <span class=\"matcha-slide-toggle-label ml-8 fw-500 fs-16 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>\n","import {\n AfterContentInit, Component, ContentChildren, HostBinding,\n Input, QueryList, ElementRef\n} from '@angular/core';\nimport { MatchaButtonComponent } from '../../matcha-button/button/button.component';\n\n@Component({\n selector: 'matcha-button-toggle',\n templateUrl: './button-toggle.component.html',\n styleUrl: './button-toggle.component.scss',\n standalone: false\n})\nexport class MatchaButtonToggleComponent implements AfterContentInit {\n\n private _multiple = false;\n @Input() get multiple() { return this._multiple; }\n set multiple(v: boolean | string) { this._multiple = v === 'false' ? false : !!v; }\n\n private _disabled = false;\n @Input() get disabled() { return this._disabled; }\n set disabled(v: boolean | string) { this._disabled = v === 'false' ? false : !!v; }\n @HostBinding('attr.disabled') get isDisabled() { return this.disabled || null; }\n\n private _required = false;\n @Input() get required() { return this._required; }\n set required(v: boolean | string) { this._required = v === 'false' ? false : !!v; }\n\n @Input() inactiveColor = 'primary';\n\n @Input() inactiveType: string = 'solid';\n\n private _gap = 16;\n @Input() set gap(v: string | number) { const n = +v; this._gap = isNaN(n) ? 16 : n; }\n get gapClass() { return `gap-${this._gap}`; }\n\n get gap(): number {\n return this._gap;\n }\n\n @ContentChildren(MatchaButtonComponent)\n buttons!: QueryList<MatchaButtonComponent>;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterContentInit(): void {\n const buttons = this.elementRef.nativeElement.querySelectorAll('button[matcha-button]');\n buttons.forEach((button: Element, index: number) => {\n const isActive = button.hasAttribute('active');\n this.setButtonState(button as HTMLElement, isActive);\n\n button.addEventListener('click', () => this.onButtonSelected(button as HTMLElement));\n });\n }\n\n private setButtonState(button: HTMLElement, isActive: boolean): void {\n if (isActive) {\n button.setAttribute('active', '');\n } else {\n button.removeAttribute('active');\n }\n }\n\n private onButtonSelected(selectedButton: HTMLElement): void {\n const buttons = this.elementRef.nativeElement.querySelectorAll('button[matcha-button]');\n const activeButtons = Array.from(buttons).filter((button: unknown) =>\n (button as Element).hasAttribute('active')\n );\n\n if (this.required && activeButtons.length === 1 && activeButtons[0] === selectedButton) {\n return;\n }\n\n if (this.multiple) {\n const isActive = selectedButton.hasAttribute('active');\n this.setButtonState(selectedButton, !isActive);\n return;\n }\n\n if (selectedButton.hasAttribute('active')) {\n this.setButtonState(selectedButton, false);\n } else {\n buttons.forEach((button: Element) => {\n this.setButtonState(button as HTMLElement, button === selectedButton);\n });\n }\n }\n}\n","<div\n class=\"button-group d-flex\"\n [ngClass]=\"gapClass\"\n [class.flex-wrap]=\"gap !== 0\"\n role=\"group\"\n>\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-tab',\n templateUrl: './tab-item.component.html',\n standalone: false,\n})\nexport class MatchaTabItemComponent {\n @Input() title: string = '';\n @Input() icon: string = '';\n \n private _active: boolean = false;\n @Input() set active(value: boolean | string) {\n this._active = value === '' || value === true || value === 'true';\n }\n get active(): boolean {\n return this._active;\n }\n}\n","<ng-content *ngIf=\"active\"></ng-content>\n","import { Component, ContentChildren, AfterContentInit, QueryList, Input, Output, EventEmitter, HostListener, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatchaTabItemComponent } from '../tab-item/tab-item.component';\nimport { createAnimations } from '../../matcha-animations/animations';\n\nexport interface TabChangeEvent {\n index: number;\n tab?: MatchaTabItemComponent;\n}\n\n@Component({\n selector: 'matcha-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n animations: [...createAnimations],\n standalone: false,\n})\nexport class MatchaTabsComponent implements AfterContentInit, OnChanges {\n @ContentChildren(MatchaTabItemComponent) tabs!: QueryList<MatchaTabItemComponent>;\n\n @Input() selectedIndex: number = 0;\n @Output() selectedIndexChange = new EventEmitter<number>();\n @Output() selectedTabChange = new EventEmitter<TabChangeEvent>();\n\n @Input()\n get activeTabIndex(): number {\n return this.selectedIndex;\n }\n set activeTabIndex(value: number) {\n this.selectedIndex = value;\n }\n\n @Output() tabSelected = new EventEmitter<number>();\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['selectedIndex'] && !changes['selectedIndex'].firstChange) {\n this.selectTabByIndex(this.selectedIndex);\n }\n }\n\n ngAfterContentInit() {\n this.tabs.changes.subscribe(() => {\n this.handleTabsChange();\n });\n\n this.handleTabsChange();\n }\n\n private handleTabsChange() {\n const activeTabs = this.tabs.filter(tab => tab.active);\n if (activeTabs.length === 0 && this.tabs.first) {\n this.selectTabByIndex(this.selectedIndex);\n }\n }\n\n selectTab(tab: MatchaTabItemComponent) {\n if (tab.active) return;\n\n const tabsArray = this.tabs.toArray();\n tabsArray.forEach(t => t.active = false);\n tab.active = true;\n const index = tabsArray.indexOf(tab);\n\n this.selectedIndex = index;\n\n this.selectedIndexChange.emit(index);\n this.selectedTabChange.emit({ index, tab });\n this.tabSelected.emit(index);\n }\n\n selectTabByIndex(index: number) {\n if (index >= 0 && index < this.tabs.length) {\n const tab = this.tabs.toArray()[index];\n this.selectTab(tab);\n }\n }\n\n @HostListener('keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n const tabsArray = this.tabs.toArray();\n const currentIndex = tabsArray.findIndex(tab => tab.active);\n\n if (event.key === 'ArrowRight') {\n const nextIndex = (currentIndex + 1) % tabsArray.length;\n this.selectTabByIndex(nextIndex);\n } else if (event.key === 'ArrowLeft') {\n const prevIndex = (currentIndex - 1 + tabsArray.length) % tabsArray.length;\n this.selectTabByIndex(prevIndex);\n } else if (event.key === 'Home') {\n this.selectTabByIndex(0);\n } else if (event.key === 'End') {\n this.selectTabByIndex(tabsArray.length - 1);\n }\n }\n}\n","<div class=\"flex-column gap-24 w-100-p\">\n <nav class=\"button-group overflow-auto w-100-p flex-row gap-8 list-style-none pl-0 pb-4\" role=\"tablist\">\n <button *ngFor=\"let tab of tabs; let i = index\" (click)=\"selectTabByIndex(i)\"\n [attr.aria-selected]=\"tab.active\"\n [attr.aria-controls]=\"'tab-content-' + i\"\n [ngClass]=\"{'active': tab.active}\"\n class=\"\n border-color-{{tab.active?'accent':'surface'}} background-surface\n cursor-pointer w-100-p min-w-128 b-2 radius-8 p-8 flex-column flex-align-center gap-4 flex-space-between\"\n role=\"tab\"\n tabindex=\"{{tab.active ? 0 : -1}}\">\n <matcha-icon [name]=\"tab.icon\" color=\"accent\" size=\"md\"></matcha-icon>\n <span class=\"color-fg fw-900 fs-14 lh-16 line-clamp-2\">\n {{ tab.title }}\n </span>\n </button>\n </nav>\n\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, forwardRef, ViewEncapsulation, ViewChild, ElementRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-date',\n templateUrl: './matcha-date.component.html',\n styleUrls: ['./matcha-date.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaDateComponent),\n multi: true\n }\n ]\n})\nexport class MatchaDateComponent implements ControlValueAccessor {\n @Input() placeholder: string = '__/__/____';\n @Input() min: string = '';\n @Input() max: string = '';\n @Input() disabled: boolean = false;\n @Input() showNativePicker: boolean = true; // Mostrar botão para abrir datepicker nativo\n\n @ViewChild('textInput') textInput!: ElementRef<HTMLInputElement>;\n @ViewChild('nativeDateInput') nativeDateInput!: ElementRef<HTMLInputElement>;\n\n value: string = '';\n displayValue: string = '';\n isDisabled: boolean = false;\n\n // ControlValueAccessor methods\n private onChange = (value: any) => {};\n private onTouched = () => {};\n\n writeValue(value: any): void {\n if (value) {\n // Se o valor vem como YYYY-MM-DD (do FormControl)\n if (this.isValidDateFormat(value, 'YYYY-MM-DD')) {\n this.value = value;\n this.displayValue = this.formatDateForDisplay(value);\n // Sincronizar com input nativo\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = value;\n }\n // Atualizar o input de texto\n if (this.textInput?.nativeElement) {\n setTimeout(() => {\n if (this.textInput?.nativeElement) {\n this.textInput.nativeElement.value = this.displayValue;\n }\n }, 0);\n }\n } else if (this.isValidDateFormat(value, 'DD/MM/YYYY')) {\n // Se o valor já vem mascarado\n this.displayValue = value;\n const yyyyMMdd = this.convertToYYYYMMDD(value);\n this.value = yyyyMMdd;\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = yyyyMMdd;\n }\n if (this.textInput?.nativeElement) {\n setTimeout(() => {\n if (this.textInput?.nativeElement) {\n this.textInput.nativeElement.value = this.displayValue;\n }\n }, 0);\n }\n } else {\n this.value = value;\n this.displayValue = value || '';\n }\n } else {\n this.value = '';\n this.displayValue = '';\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = '';\n }\n if (this.textInput?.nativeElement) {\n this.textInput.nativeElement.value = '';\n }\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n let inputValue = input.value;\n\n // Aplicar máscara DD/MM/YYYY manualmente (permite zeros)\n inputValue = this.applyDateMask(inputValue);\n\n // Atualizar o valor do input se a máscara foi aplicada\n if (input.value !== inputValue) {\n input.value = inputValue;\n }\n\n this.displayValue = inputValue;\n\n // Apenas converter para YYYY-MM-DD se a data estiver completa e válida\n if (inputValue && inputValue.length === 10 && this.isValidDateFormat(inputValue, 'DD/MM/YYYY')) {\n const yyyyMMdd = this.convertToYYYYMMDD(inputValue);\n if (this.isValidDate(yyyyMMdd)) {\n this.value = yyyyMMdd;\n this.onChange(yyyyMMdd);\n // Sincronizar com input nativo\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = yyyyMMdd;\n }\n } else {\n // Data inválida (ex: 31/02/2024) - não limpar, apenas não converter\n this.onChange(null);\n }\n } else if (!inputValue || inputValue.length === 0) {\n // Campo vazio\n this.value = '';\n this.onChange(null);\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = '';\n }\n } else {\n // Data incompleta - emitir null para indicar que ainda não está completa\n this.onChange(null);\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n // Permitir Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X, Backspace, Delete, Tab, Arrow keys\n const allowedKeys = ['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Home', 'End'];\n const isCtrl = event.ctrlKey || event.metaKey;\n const isAllowedCtrl = isCtrl && ['a', 'c', 'v', 'x'].includes(event.key.toLowerCase());\n\n if (allowedKeys.includes(event.key) || isAllowedCtrl) {\n return; // Permitir\n }\n\n // Permitir apenas números e barras\n if (!/[0-9\\/]/.test(event.key)) {\n event.preventDefault();\n }\n }\n\n private applyDateMask(value: string): string {\n // Remove tudo que não é número\n const numbers = value.replace(/\\D/g, '');\n\n // Limita a 8 dígitos (DDMMYYYY)\n const limitedNumbers = numbers.slice(0, 8);\n\n // Aplica máscara DD/MM/YYYY\n if (limitedNumbers.length <= 2) {\n return limitedNumbers;\n } else if (limitedNumbers.length <= 4) {\n return `${limitedNumbers.slice(0, 2)}/${limitedNumbers.slice(2)}`;\n } else {\n return `${limitedNumbers.slice(0, 2)}/${limitedNumbers.slice(2, 4)}/${limitedNumbers.slice(4, 8)}`;\n }\n }\n\n onNativeDateChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n\n if (value) {\n this.value = value;\n this.displayValue = this.formatDateForDisplay(value);\n // Sincronizar com input de texto\n if (this.textInput?.nativeElement) {\n this.textInput.nativeElement.value = this.displayValue;\n }\n this.onChange(value);\n } else {\n this.value = '';\n this.displayValue = '';\n if (this.textInput?.nativeElement) {\n this.textInput.nativeElement.value = '';\n }\n this.onChange(null);\n }\n }\n\n onBlur(): void {\n this.onTouched();\n\n // Obter o valor atual do input\n const currentInputValue = this.textInput?.nativeElement?.value || this.displayValue;\n\n // Se já temos um valor válido e a data digitada é a mesma, não fazer nada\n if (this.value && currentInputValue && currentInputValue.length === 10) {\n const yyyyMMdd = this.convertToYYYYMMDD(currentInputValue);\n if (this.value === yyyyMMdd) {\n return;\n }\n }\n\n // Apenas tentar converter se a data estiver completa\n // Não limpar nada - deixa o matcha-error mostrar erros de validação\n if (currentInputValue && currentInputValue.length === 10) {\n if (this.isValidDateFormat(currentInputValue, 'DD/MM/YYYY')) {\n const yyyyMMdd = this.convertToYYYYMMDD(currentInputValue);\n if (this.isValidDate(yyyyMMdd)) {\n // Data válida, atualizar valores\n this.value = yyyyMMdd;\n this.displayValue = currentInputValue;\n this.onChange(yyyyMMdd);\n // Sincronizar com input nativo\n if (this.nativeDateInput?.nativeElement) {\n this.nativeDateInput.nativeElement.value = yyyyMMdd;\n }\n } else {\n // Data inválida - não limpar, apenas não converter\n // O matcha-error vai mostrar o erro\n this.onChange(null);\n }\n } else {\n // Formato inválido - não limpar, apenas não converter\n this.onChange(null);\n }\n } else if (currentInputValue && currentInputValue.length > 0) {\n // Data incompleta - manter o que foi digitado\n this.displayValue = currentInputValue;\n this.onChange(null);\n } else {\n // Campo vazio\n this.displayValue = '';\n this.value = '';\n this.onChange(null);\n }\n }\n\n openNativeDatePicker(): void {\n if (this.nativeDateInput?.nativeElement && !this.disabled && !this.isDisabled) {\n // Verificar se showPicker está disponível (suporte moderno)\n if (typeof this.nativeDateInput.nativeElement.showPicker === 'function') {\n this.nativeDateInput.nativeElement.showPicker();\n } else {\n // Fallback: focar no input nativo\n this.nativeDateInput.nativeElement.focus();\n this.nativeDateInput.nativeElement.click();\n }\n }\n }\n\n private isValidDateFormat(date: string, format: 'DD/MM/YYYY' | 'YYYY-MM-DD'): boolean {\n if (format === 'DD/MM/YYYY') {\n return /^\\d{2}\\/\\d{2}\\/\\d{4}$/.test(date);\n } else {\n return /^\\d{4}-\\d{2}-\\d{2}$/.test(date);\n }\n }\n\n private isValidDate(dateString: string): boolean {\n if (!this.isValidDateFormat(dateString, 'YYYY-MM-DD')) {\n return false;\n }\n\n // Usar Date constructor com componentes separados para evitar problemas de fuso horário\n const [year, month, day] = dateString.split('-').map(Number);\n\n // Criar data usando componentes locais (não UTC)\n const date = new Date(year, month - 1, day);\n\n // Verificar se a data é válida e corresponde ao que foi digitado\n // Isso evita que 31/02/2024 seja aceito (seria convertido para 03/03/2024)\n return date.getFullYear() === year &&\n date.getMonth() + 1 === month &&\n date.getDate() === day;\n }\n\n private convertToYYYYMMDD(ddMMyyyy: string): string {\n const [day, month, year] = ddMMyyyy.split('/');\n return `${year}-${month}-${day}`;\n }\n\n private formatDateForDisplay(yyyyMMdd: string): string {\n const [year, month, day] = yyyyMMdd.split('-');\n return `${day}/${month}/${year}`;\n }\n}\n\n","<div class=\"matcha-date-container\">\n <input\n #textInput\n type=\"text\"\n class=\"matcha-date-input\"\n [value]=\"displayValue\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled || isDisabled\"\n maxlength=\"10\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeyDown($event)\"\n />\n\n <!-- Input nativo de data (hidden) para usar o datepicker nativo -->\n <input\n #nativeDateInput\n type=\"date\"\n class=\"matcha-date-native-input\"\n [value]=\"value\"\n [min]=\"min\"\n [max]=\"max\"\n [disabled]=\"disabled || isDisabled\"\n (change)=\"onNativeDateChange($event)\"\n tabindex=\"-1\"\n />\n\n <!-- Botão para abrir datepicker nativo (opcional) -->\n <button\n *ngIf=\"showNativePicker && !disabled && !isDisabled\"\n type=\"button\"\n class=\"matcha-date-picker-button mr--12\"\n (click)=\"openNativeDatePicker()\"\n [disabled]=\"disabled || isDisabled\"\n aria-label=\"Abrir seletor de data\"\n tabindex=\"0\"\n >\n <span class=\"i-matcha-calendar color-grey\"></span>\n </button>\n</div>\n\n","import { AfterContentInit, Component, ContentChildren, OnDestroy, QueryList } from '@angular/core';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n standalone: false\n})\nexport class MatchaDateRangeComponent implements AfterContentInit, OnDestroy {\n @ContentChildren(NgControl, { descendants: true }) controls!: QueryList<NgControl>;\n\n private startDateControl: AbstractControl | null = null;\n private endDateControl: AbstractControl | null = null;\n private subscription = new Subscription();\n\n ngAfterContentInit(): void {\n // Pega os controles projetados no template\n const controlsArray = this.controls.toArray();\n if (controlsArray.length >= 2) {\n this.startDateControl = controlsArray[0].control;\n this.endDateControl = controlsArray[1].control;\n\n // Adiciona validação nos dois campos\n if (this.startDateControl && this.endDateControl) {\n this.subscription.add(\n this.startDateControl.valueChanges.subscribe(() => this.validateDateRange())\n );\n this.subscription.add(\n this.endDateControl.valueChanges.subscribe(() => this.validateDateRange())\n );\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /**\n * Validação de formato de data e intervalo: data inicial não pode ser posterior à data final\n */\n private validateDateRange(): void {\n if (!this.startDateControl || !this.endDateControl) return;\n\n const startValue = this.startDateControl.value;\n const endValue = this.endDateControl.value;\n\n // Se ambos os campos estão vazios, não valida\n if (!startValue && !endValue) {\n this.clearDateRangeErrors();\n return;\n }\n\n // Se apenas um campo está preenchido, limpa erros de intervalo\n if (!startValue || !endValue) {\n this.clearDateRangeErrors();\n return;\n }\n\n // Validação de formato de data (YYYY-MM-DD)\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n if (!dateRegex.test(startValue)) {\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['invalidDateFormat']: true\n });\n return;\n }\n\n if (!dateRegex.test(endValue)) {\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['invalidDateFormat']: true\n });\n return;\n }\n\n const startDate = new Date(startValue);\n const endDate = new Date(endValue);\n\n // Verifica se as datas são válidas\n if (isNaN(startDate.getTime())) {\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['invalidDate']: true\n });\n return;\n }\n\n if (isNaN(endDate.getTime())) {\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['invalidDate']: true\n });\n return;\n }\n\n // Validação principal: data inicial não pode ser posterior à data final\n if (startDate > endDate) {\n // Adiciona erros específicos quando a data inicial é posterior à final\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['startAfterEnd']: true\n });\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['endBeforeStart']: true\n });\n } else {\n // Remove apenas nossos erros específicos se o intervalo está correto\n this.clearDateRangeErrors();\n }\n }\n\n /**\n * Limpa apenas os erros relacionados ao intervalo de datas\n */\n private clearDateRangeErrors(): void {\n if (this.startDateControl) {\n this.removeSpecificError(this.startDateControl, 'invalidDateFormat');\n this.removeSpecificError(this.startDateControl, 'invalidDate');\n this.removeSpecificError(this.startDateControl, 'startAfterEnd');\n }\n if (this.endDateControl) {\n this.removeSpecificError(this.endDateControl, 'invalidDateFormat');\n this.removeSpecificError(this.endDateControl, 'invalidDate');\n this.removeSpecificError(this.endDateControl, 'endBeforeStart');\n }\n }\n\n /**\n * Remove um erro específico sem afetar outros erros\n */\n private removeSpecificError(control: AbstractControl, errorName: string): void {\n const errors = { ...control.errors };\n if (errors) {\n delete errors[errorName];\n control.setErrors(Object.keys(errors).length ? errors : null);\n }\n }\n}\n","<div class=\"matcha-date-range-container\">\n <ng-content></ng-content>\n</div>\n","import { AfterContentInit, Component, ContentChildren, Input, OnDestroy, QueryList } from '@angular/core';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-time',\n templateUrl: './time.component.html',\n styleUrls: ['./time.component.scss'],\n standalone: false\n})\nexport class MatchaTimeComponent implements AfterContentInit, OnDestroy {\n @ContentChildren(NgControl, { descendants: true }) controls!: QueryList<NgControl>;\n \n // Adiciona inputs para integração com campos de data\n @Input() startDateControlName?: string;\n @Input() endDateControlName?: string;\n \n // Opção para desabilitar a validação quando dias são diferentes\n @Input() allowCrossDays: boolean = false;\n\n private startTimeControl: AbstractControl | null = null;\n private endTimeControl: AbstractControl | null = null;\n private startDateControl: AbstractControl | null = null;\n private endDateControl: AbstractControl | null = null;\n private subscription = new Subscription();\n\n ngAfterContentInit(): void {\n // Pega os controles projetados no template\n const controlsArray = this.controls.toArray();\n if (controlsArray.length >= 2) {\n this.startTimeControl = controlsArray[0].control;\n this.endTimeControl = controlsArray[1].control;\n \n // Tenta encontrar os controles de data no form parent\n if (this.startTimeControl && this.endTimeControl && \n this.startDateControlName && this.endDateControlName) {\n const formGroup = this.startTimeControl.parent;\n if (formGroup) {\n this.startDateControl = formGroup.get(this.startDateControlName);\n this.endDateControl = formGroup.get(this.endDateControlName);\n }\n }\n\n // Adiciona validação para os campos de tempo\n if (this.startTimeControl && this.endTimeControl) {\n this.subscription.add(\n this.startTimeControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n this.subscription.add(\n this.endTimeControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n }\n \n // Adiciona validação para os campos de data, se existirem\n if (this.startDateControl && this.endDateControl) {\n this.subscription.add(\n this.startDateControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n this.subscription.add(\n this.endDateControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /**\n * Validação de intervalo de tempo que pode cruzar dias\n */\n private validateTimeRange(): void {\n if (!this.startTimeControl || !this.endTimeControl) return;\n if (!this.startTimeControl.value || !this.endTimeControl.value) return;\n\n let startDateTime: Date;\n let endDateTime: Date;\n \n // Se temos controles de data, usamos as datas fornecidas\n if (this.startDateControl?.value && this.endDateControl?.value) {\n const startDate = this.startDateControl.value;\n const endDate = this.endDateControl.value;\n \n startDateTime = new Date(`${startDate}T${this.startTimeControl.value}`);\n endDateTime = new Date(`${endDate}T${this.endTimeControl.value}`);\n \n // Comparação de data + hora\n if (startDateTime > endDateTime) {\n this.setValidationErrors();\n } else {\n this.clearValidationErrors();\n }\n } \n // Sem controles de data, ou se allowCrossDays=true, não validamos cruzamento de dias\n else if (this.allowCrossDays) {\n // Nesse caso, assumimos que o intervalo é válido mesmo se hora final < hora inicial\n this.clearValidationErrors();\n } \n // Caso tradicional: mesmo dia, validação simples de hora\n else {\n const today = new Date().toISOString().split('T')[0];\n startDateTime = new Date(`${today}T${this.startTimeControl.value}`);\n endDateTime = new Date(`${today}T${this.endTimeControl.value}`);\n \n if (startDateTime > endDateTime) {\n this.setValidationErrors();\n } else {\n this.clearValidationErrors();\n }\n }\n }\n \n /**\n * Define erros de validação nos controles\n */\n private setValidationErrors(): void {\n this.startTimeControl?.setErrors({ ['startAfterEnd']: true });\n this.endTimeControl?.setErrors({ ['endBeforeStart']: true });\n }\n \n /**\n * Remove erros específicos de validação\n */\n private clearValidationErrors(): void {\n this.removeSpecificError(this.startTimeControl, 'startAfterEnd');\n this.removeSpecificError(this.endTimeControl, 'endBeforeStart');\n }\n\n /**\n * Remove um erro específico sem afetar outros erros\n */\n private removeSpecificError(control: AbstractControl | null, errorName: string): void {\n if (!control) return;\n const errors = { ...control.errors };\n if (errors) {\n delete errors[errorName];\n control.setErrors(Object.keys(errors).length ? errors : null);\n }\n }\n}\n","<div class=\"d-flex gap-16\">\n <ng-content></ng-content>\n</div>\n","// Array of country objects for the flag dropdown.\n\n// Here is the criteria for the plugin to support a given country/territory\n// - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n// - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n// - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n// - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n\n// Each country array has the following information:\n// [\n// Country name,\n// iso2 code,\n// International dial code,\n// Order (if >1 country with same dial code),\n// Area codes\n// ]\nvar allCountries = [\n [\n \"Afghanistan (افغانستان)\",\n \"af\",\n \"93\"\n ],\n [\n \"Albania (Shqipëri)\",\n \"al\",\n \"355\"\n ],\n [\n \"Algeria (الجزائر)\",\n \"dz\",\n \"213\"\n ],\n [\n \"American Samoa\",\n \"as\",\n \"1\",\n 5,\n [\"684\"]\n ],\n [\n \"Andorra\",\n \"ad\",\n \"376\"\n ],\n [\n \"Angola\",\n \"ao\",\n \"244\"\n ],\n [\n \"Anguilla\",\n \"ai\",\n \"1\",\n 6,\n [\"264\"]\n ],\n [\n \"Antigua and Barbuda\",\n \"ag\",\n \"1\",\n 7,\n [\"268\"]\n ],\n [\n \"Argentina\",\n \"ar\",\n \"54\",\n ],\n [\n \"Armenia (Հայաստան)\",\n \"am\",\n \"374\"\n ],\n [\n \"Aruba\",\n \"aw\",\n \"297\"\n ],\n [\n \"Australia\",\n \"au\",\n \"61\",\n 0\n ],\n [\n \"Austria (Österreich)\",\n \"at\",\n \"43\"\n ],\n [\n \"Azerbaijan (Azərbaycan)\",\n \"az\",\n \"994\"\n ],\n [\n \"Bahamas\",\n \"bs\",\n \"1\",\n 8,\n [\"242\"]\n ],\n [\n \"Bahrain (البحرين)\",\n \"bh\",\n \"973\"\n ],\n [\n \"Bangladesh (বাংলাদেশ)\",\n \"bd\",\n \"880\"\n ],\n [\n \"Barbados\",\n \"bb\",\n \"1\",\n 9,\n [\"246\"]\n ],\n [\n \"Belarus (Беларусь)\",\n \"by\",\n \"375\"\n ],\n [\n \"Belgium (België)\",\n \"be\",\n \"32\"\n ],\n [\n \"Belize\",\n \"bz\",\n \"501\"\n ],\n [\n \"Benin (Bénin)\",\n \"bj\",\n \"229\"\n ],\n [\n \"Bermuda\",\n \"bm\",\n \"1\",\n 10,\n [\"441\"]\n ],\n [\n \"Bhutan (འབྲུག)\",\n \"bt\",\n \"975\"\n ],\n [\n \"Bolivia\",\n \"bo\",\n \"591\"\n ],\n [\n \"Bosnia and Herzegovina (Босна и Херцеговина)\",\n \"ba\",\n \"387\"\n ],\n [\n \"Botswana\",\n \"bw\",\n \"267\"\n ],\n [\n \"Brazil (Brasil)\",\n \"br\",\n \"55\"\n ],\n [\n \"British Indian Ocean Territory\",\n \"io\",\n \"246\"\n ],\n [\n \"British Virgin Islands\",\n \"vg\",\n \"1\",\n 11,\n [\"284\"]\n ],\n [\n \"Brunei\",\n \"bn\",\n \"673\"\n ],\n [\n \"Bulgaria (България)\",\n \"bg\",\n \"359\"\n ],\n [\n \"Burkina Faso\",\n \"bf\",\n \"226\"\n ],\n [\n \"Burundi (Uburundi)\",\n \"bi\",\n \"257\"\n ],\n [\n \"Cambodia (កម្ពុជា)\",\n \"kh\",\n \"855\"\n ],\n [\n \"Cameroon (Cameroun)\",\n \"cm\",\n \"237\"\n ],\n [\n \"Canada\",\n \"ca\",\n \"1\",\n 1,\n [\"204\", \"226\", \"236\", \"249\", \"250\", \"289\", \"306\", \"343\", \"365\", \"387\", \"403\", \"416\", \"418\", \"431\", \"437\", \"438\", \"450\", \"506\", \"514\", \"519\", \"548\", \"579\", \"581\", \"587\", \"604\", \"613\", \"639\", \"647\", \"672\", \"705\", \"709\", \"742\", \"778\", \"780\", \"782\", \"807\", \"819\", \"825\", \"867\", \"873\", \"902\", \"905\"]\n ],\n [\n \"Cape Verde (Kabu Verdi)\",\n \"cv\",\n \"238\"\n ],\n [\n \"Caribbean Netherlands\",\n \"bq\",\n \"599\",\n 1,\n [\"3\", \"4\", \"7\"]\n ],\n [\n \"Cayman Islands\",\n \"ky\",\n \"1\",\n 12,\n [\"345\"]\n ],\n [\n \"Central African Republic (République centrafricaine)\",\n \"cf\",\n \"236\"\n ],\n [\n \"Chad (Tchad)\",\n \"td\",\n \"235\"\n ],\n [\n \"Chile\",\n \"cl\",\n \"56\"\n ],\n [\n \"China (中国)\",\n \"cn\",\n \"86\"\n ],\n [\n \"Christmas Island\",\n \"cx\",\n \"61\",\n 2\n ],\n [\n \"Cocos (Keeling) Islands\",\n \"cc\",\n \"61\",\n 1\n ],\n [\n \"Colombia\",\n \"co\",\n \"57\"\n ],\n [\n \"Comoros (جزر القمر)\",\n \"km\",\n \"269\"\n ],\n [\n \"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\",\n \"cd\",\n \"243\"\n ],\n [\n \"Congo (Republic) (Congo-Brazzaville)\",\n \"cg\",\n \"242\"\n ],\n [\n \"Cook Islands\",\n \"ck\",\n \"682\"\n ],\n [\n \"Costa Rica\",\n \"cr\",\n \"506\"\n ],\n [\n \"Côte d’Ivoire\",\n \"ci\",\n \"225\"\n ],\n [\n \"Croatia (Hrvatska)\",\n \"hr\",\n \"385\"\n ],\n [\n \"Cuba\",\n \"cu\",\n \"53\"\n ],\n [\n \"Curaçao\",\n \"cw\",\n \"599\",\n 0\n ],\n [\n \"Cyprus (Κύπρος)\",\n \"cy\",\n \"357\"\n ],\n [\n \"Czech Republic (Česká republika)\",\n \"cz\",\n \"420\"\n ],\n [\n \"Denmark (Danmark)\",\n \"dk\",\n \"45\"\n ],\n [\n \"Djibouti\",\n \"dj\",\n \"253\"\n ],\n [\n \"Dominica\",\n \"dm\",\n \"1\",\n 13,\n [\"767\"]\n ],\n [\n \"Dominican Republic (República Dominicana)\",\n \"do\",\n \"1\",\n 2,\n [\"809\", \"829\", \"849\"]\n ],\n [\n \"Ecuador\",\n \"ec\",\n \"593\"\n ],\n [\n \"Egypt (مصر)\",\n \"eg\",\n \"20\"\n ],\n [\n \"El Salvador\",\n \"sv\",\n \"503\"\n ],\n [\n \"Equatorial Guinea (Guinea Ecuatorial)\",\n \"gq\",\n \"240\"\n ],\n [\n \"Eritrea\",\n \"er\",\n \"291\"\n ],\n [\n \"Estonia (Eesti)\",\n \"ee\",\n \"372\"\n ],\n [\n \"Ethiopia\",\n \"et\",\n \"251\"\n ],\n [\n \"Falkland Islands (Islas Malvinas)\",\n \"fk\",\n \"500\"\n ],\n [\n \"Faroe Islands (Føroyar)\",\n \"fo\",\n \"298\"\n ],\n [\n \"Fiji\",\n \"fj\",\n \"679\"\n ],\n [\n \"Finland (Suomi)\",\n \"fi\",\n \"358\",\n 0\n ],\n [\n \"France\",\n \"fr\",\n \"33\"\n ],\n [\n \"French Guiana (Guyane française)\",\n \"gf\",\n \"594\"\n ],\n [\n \"French Polynesia (Polynésie française)\",\n \"pf\",\n \"689\"\n ],\n [\n \"Gabon\",\n \"ga\",\n \"241\"\n ],\n [\n \"Gambia\",\n \"gm\",\n \"220\"\n ],\n [\n \"Georgia (საქართველო)\",\n \"ge\",\n \"995\"\n ],\n [\n \"Germany (Deutschland)\",\n \"de\",\n \"49\"\n ],\n [\n \"Ghana (Gaana)\",\n \"gh\",\n \"233\"\n ],\n [\n \"Gibraltar\",\n \"gi\",\n \"350\"\n ],\n [\n \"Greece (Ελλάδα)\",\n \"gr\",\n \"30\"\n ],\n [\n \"Greenland (Kalaallit Nunaat)\",\n \"gl\",\n \"299\"\n ],\n [\n \"Grenada\",\n \"gd\",\n \"1\",\n 14,\n [\"473\"]\n ],\n [\n \"Guadeloupe\",\n \"gp\",\n \"590\",\n 0\n ],\n [\n \"Guam\",\n \"gu\",\n \"1\",\n 15,\n [\"671\"]\n ],\n [\n \"Guatemala\",\n \"gt\",\n \"502\"\n ],\n [\n \"Guernsey\",\n \"gg\",\n \"44\",\n 1,\n [\"1481\", \"7781\", \"7839\", \"7911\"]\n ],\n [\n \"Guinea (Guinée)\",\n \"gn\",\n \"224\"\n ],\n [\n \"Guinea-Bissau (Guiné Bissau)\",\n \"gw\",\n \"245\"\n ],\n [\n \"Guyana\",\n \"gy\",\n \"592\"\n ],\n [\n \"Haiti\",\n \"ht\",\n \"509\"\n ],\n [\n \"Honduras\",\n \"hn\",\n \"504\"\n ],\n [\n \"Hong Kong (香港)\",\n \"hk\",\n \"852\"\n ],\n [\n \"Hungary (Magyarország)\",\n \"hu\",\n \"36\"\n ],\n [\n \"Iceland (Ísland)\",\n \"is\",\n \"354\"\n ],\n [\n \"India (भारत)\",\n \"in\",\n \"91\"\n ],\n [\n \"Indonesia\",\n \"id\",\n \"62\"\n ],\n [\n \"Iran (ایران)\",\n \"ir\",\n \"98\"\n ],\n [\n \"Iraq (العراق)\",\n \"iq\",\n \"964\"\n ],\n [\n \"Ireland\",\n \"ie\",\n \"353\"\n ],\n [\n \"Isle of Man\",\n \"im\",\n \"44\",\n 2,\n [\"1624\", \"74576\", \"7524\", \"7924\", \"7624\"]\n ],\n [\n \"Israel (ישראל)\",\n \"il\",\n \"972\"\n ],\n [\n \"Italy (Italia)\",\n \"it\",\n \"39\",\n 0\n ],\n [\n \"Jamaica\",\n \"jm\",\n \"1\",\n 4,\n [\"876\", \"658\"]\n ],\n [\n \"Japan (日本)\",\n \"jp\",\n \"81\"\n ],\n [\n \"Jersey\",\n \"je\",\n \"44\",\n 3,\n [\"1534\", \"7509\", \"7700\", \"7797\", \"7829\", \"7937\"]\n ],\n [\n \"Jordan (الأردن)\",\n \"jo\",\n \"962\"\n ],\n [\n \"Kazakhstan (Казахстан)\",\n \"kz\",\n \"7\",\n 1,\n [\"33\", \"7\"]\n ],\n [\n \"Kenya\",\n \"ke\",\n \"254\"\n ],\n [\n \"Kiribati\",\n \"ki\",\n \"686\"\n ],\n [\n \"Kosovo\",\n \"xk\",\n \"383\"\n ],\n [\n \"Kuwait (الكويت)\",\n \"kw\",\n \"965\"\n ],\n [\n \"Kyrgyzstan (Кыргызстан)\",\n \"kg\",\n \"996\"\n ],\n [\n \"Laos (ລາວ)\",\n \"la\",\n \"856\"\n ],\n [\n \"Latvia (Latvija)\",\n \"lv\",\n \"371\"\n ],\n [\n \"Lebanon (لبنان)\",\n \"lb\",\n \"961\"\n ],\n [\n \"Lesotho\",\n \"ls\",\n \"266\"\n ],\n [\n \"Liberia\",\n \"lr\",\n \"231\"\n ],\n [\n \"Libya (ليبيا)\",\n \"ly\",\n \"218\"\n ],\n [\n \"Liechtenstein\",\n \"li\",\n \"423\"\n ],\n [\n \"Lithuania (Lietuva)\",\n \"lt\",\n \"370\"\n ],\n [\n \"Luxembourg\",\n \"lu\",\n \"352\"\n ],\n [\n \"Macau (澳門)\",\n \"mo\",\n \"853\"\n ],\n [\n \"Macedonia (FYROM) (Македонија)\",\n \"mk\",\n \"389\"\n ],\n [\n \"Madagascar (Madagasikara)\",\n \"mg\",\n \"261\"\n ],\n [\n \"Malawi\",\n \"mw\",\n \"265\"\n ],\n [\n \"Malaysia\",\n \"my\",\n \"60\"\n ],\n [\n \"Maldives\",\n \"mv\",\n \"960\"\n ],\n [\n \"Mali\",\n \"ml\",\n \"223\"\n ],\n [\n \"Malta\",\n \"mt\",\n \"356\"\n ],\n [\n \"Marshall Islands\",\n \"mh\",\n \"692\"\n ],\n [\n \"Martinique\",\n \"mq\",\n \"596\"\n ],\n [\n \"Mauritania (موريتانيا)\",\n \"mr\",\n \"222\"\n ],\n [\n \"Mauritius (Moris)\",\n \"mu\",\n \"230\"\n ],\n [\n \"Mayotte\",\n \"yt\",\n \"262\",\n 1,\n [\"269\", \"639\"]\n ],\n [\n \"Mexico (México)\",\n \"mx\",\n \"52\"\n ],\n [\n \"Micronesia\",\n \"fm\",\n \"691\"\n ],\n [\n \"Moldova (Republica Moldova)\",\n \"md\",\n \"373\"\n ],\n [\n \"Monaco\",\n \"mc\",\n \"377\"\n ],\n [\n \"Mongolia (Монгол)\",\n \"mn\",\n \"976\"\n ],\n [\n \"Montenegro (Crna Gora)\",\n \"me\",\n \"382\"\n ],\n [\n \"Montserrat\",\n \"ms\",\n \"1\",\n 16,\n [\"664\"]\n ],\n [\n \"Morocco (المغرب)\",\n \"ma\",\n \"212\",\n 0\n ],\n [\n \"Mozambique (Moçambique)\",\n \"mz\",\n \"258\"\n ],\n [\n \"Myanmar (Burma) (မြန်မာ)\",\n \"mm\",\n \"95\"\n ],\n [\n \"Namibia (Namibië)\",\n \"na\",\n \"264\"\n ],\n [\n \"Nauru\",\n \"nr\",\n \"674\"\n ],\n [\n \"Nepal (नेपाल)\",\n \"np\",\n \"977\"\n ],\n [\n \"Netherlands (Nederland)\",\n \"nl\",\n \"31\"\n ],\n [\n \"New Caledonia (Nouvelle-Calédonie)\",\n \"nc\",\n \"687\"\n ],\n [\n \"New Zealand\",\n \"nz\",\n \"64\"\n ],\n [\n \"Nicaragua\",\n \"ni\",\n \"505\"\n ],\n [\n \"Niger (Nijar)\",\n \"ne\",\n \"227\"\n ],\n [\n \"Nigeria\",\n \"ng\",\n \"234\"\n ],\n [\n \"Niue\",\n \"nu\",\n \"683\"\n ],\n [\n \"Norfolk Island\",\n \"nf\",\n \"672\"\n ],\n [\n \"North Korea (조선 민주주의 인민 공화국)\",\n \"kp\",\n \"850\"\n ],\n [\n \"Northern Mariana Islands\",\n \"mp\",\n \"1\",\n 17,\n [\"670\"]\n ],\n [\n \"Norway (Norge)\",\n \"no\",\n \"47\",\n 0\n ],\n [\n \"Oman (عُمان)\",\n \"om\",\n \"968\"\n ],\n [\n \"Pakistan (پاکستان)\",\n \"pk\",\n \"92\"\n ],\n [\n \"Palau\",\n \"pw\",\n \"680\"\n ],\n [\n \"Palestine (فلسطين)\",\n \"ps\",\n \"970\"\n ],\n [\n \"Panama (Panamá)\",\n \"pa\",\n \"507\"\n ],\n [\n \"Papua New Guinea\",\n \"pg\",\n \"675\"\n ],\n [\n \"Paraguay\",\n \"py\",\n \"595\"\n ],\n [\n \"Peru (Perú)\",\n \"pe\",\n \"51\"\n ],\n [\n \"Philippines\",\n \"ph\",\n \"63\"\n ],\n [\n \"Poland (Polska)\",\n \"pl\",\n \"48\"\n ],\n [\n \"Portugal\",\n \"pt\",\n \"351\"\n ],\n [\n \"Puerto Rico\",\n \"pr\",\n \"1\",\n 3,\n [\"787\", \"939\"]\n ],\n [\n \"Qatar (قطر)\",\n \"qa\",\n \"974\"\n ],\n [\n \"Réunion (La Réunion)\",\n \"re\",\n \"262\",\n 0\n ],\n [\n \"Romania (România)\",\n \"ro\",\n \"40\"\n ],\n [\n \"Russia (Россия)\",\n \"ru\",\n \"7\",\n 0\n ],\n [\n \"Rwanda\",\n \"rw\",\n \"250\"\n ],\n [\n \"Saint Barthélemy\",\n \"bl\",\n \"590\",\n 1\n ],\n [\n \"Saint Helena\",\n \"sh\",\n \"290\"\n ],\n [\n \"Saint Kitts and Nevis\",\n \"kn\",\n \"1\",\n 18,\n [\"869\"]\n ],\n [\n \"Saint Lucia\",\n \"lc\",\n \"1\",\n 19,\n [\"758\"]\n ],\n [\n \"Saint Martin (Saint-Martin (partie française))\",\n \"mf\",\n \"590\",\n 2\n ],\n [\n \"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\",\n \"pm\",\n \"508\"\n ],\n [\n \"Saint Vincent and the Grenadines\",\n \"vc\",\n \"1\",\n 20,\n [\"784\"]\n ],\n [\n \"Samoa\",\n \"ws\",\n \"685\"\n ],\n [\n \"San Marino\",\n \"sm\",\n \"378\"\n ],\n [\n \"São Tomé and Príncipe (São Tomé e Príncipe)\",\n \"st\",\n \"239\"\n ],\n [\n \"Saudi Arabia (المملكة العربية السعودية)\",\n \"sa\",\n \"966\"\n ],\n [\n \"Senegal (Sénégal)\",\n \"sn\",\n \"221\"\n ],\n [\n \"Serbia (Србија)\",\n \"rs\",\n \"381\"\n ],\n [\n \"Seychelles\",\n \"sc\",\n \"248\"\n ],\n [\n \"Sierra Leone\",\n \"sl\",\n \"232\"\n ],\n [\n \"Singapore\",\n \"sg\",\n \"65\"\n ],\n [\n \"Sint Maarten\",\n \"sx\",\n \"1\",\n 21,\n [\"721\"]\n ],\n [\n \"Slovakia (Slovensko)\",\n \"sk\",\n \"421\"\n ],\n [\n \"Slovenia (Slovenija)\",\n \"si\",\n \"386\"\n ],\n [\n \"Solomon Islands\",\n \"sb\",\n \"677\"\n ],\n [\n \"Somalia (Soomaaliya)\",\n \"so\",\n \"252\"\n ],\n [\n \"South Africa\",\n \"za\",\n \"27\"\n ],\n [\n \"South Korea (대한민국)\",\n \"kr\",\n \"82\"\n ],\n [\n \"South Sudan (جنوب السودان)\",\n \"ss\",\n \"211\"\n ],\n [\n \"Spain (España)\",\n \"es\",\n \"34\"\n ],\n [\n \"Sri Lanka (ශ්රී ලංකාව)\",\n \"lk\",\n \"94\"\n ],\n [\n \"Sudan (السودان)\",\n \"sd\",\n \"249\"\n ],\n [\n \"Suriname\",\n \"sr\",\n \"597\"\n ],\n [\n \"Svalbard and Jan Mayen\",\n \"sj\",\n \"47\",\n 1,\n [\"79\"]\n ],\n [\n \"Swaziland\",\n \"sz\",\n \"268\"\n ],\n [\n \"Sweden (Sverige)\",\n \"se\",\n \"46\"\n ],\n [\n \"Switzerland (Schweiz)\",\n \"ch\",\n \"41\"\n ],\n [\n \"Syria (سوريا)\",\n \"sy\",\n \"963\"\n ],\n [\n \"Taiwan (台灣)\",\n \"tw\",\n \"886\"\n ],\n [\n \"Tajikistan\",\n \"tj\",\n \"992\"\n ],\n [\n \"Tanzania\",\n \"tz\",\n \"255\"\n ],\n [\n \"Thailand (ไทย)\",\n \"th\",\n \"66\"\n ],\n [\n \"Timor-Leste\",\n \"tl\",\n \"670\"\n ],\n [\n \"Togo\",\n \"tg\",\n \"228\"\n ],\n [\n \"Tokelau\",\n \"tk\",\n \"690\"\n ],\n [\n \"Tonga\",\n \"to\",\n \"676\"\n ],\n [\n \"Trinidad and Tobago\",\n \"tt\",\n \"1\",\n 22,\n [\"868\"]\n ],\n [\n \"Tunisia (تونس)\",\n \"tn\",\n \"216\"\n ],\n [\n \"Turkey (Türkiye)\",\n \"tr\",\n \"90\"\n ],\n [\n \"Turkmenistan\",\n \"tm\",\n \"993\"\n ],\n [\n \"Turks and Caicos Islands\",\n \"tc\",\n \"1\",\n 23,\n [\"649\"]\n ],\n [\n \"Tuvalu\",\n \"tv\",\n \"688\"\n ],\n [\n \"U.S. Virgin Islands\",\n \"vi\",\n \"1\",\n 24,\n [\"340\"]\n ],\n [\n \"Uganda\",\n \"ug\",\n \"256\"\n ],\n [\n \"Ukraine (Україна)\",\n \"ua\",\n \"380\"\n ],\n [\n \"United Arab Emirates (الإمارات العربية المتحدة)\",\n \"ae\",\n \"971\"\n ],\n [\n \"United Kingdom\",\n \"gb\",\n \"44\",\n 0\n ],\n [\n \"United States\",\n \"us\",\n \"1\",\n 0\n ],\n [\n \"Uruguay\",\n \"uy\",\n \"598\"\n ],\n [\n \"Uzbekistan (Oʻzbekiston)\",\n \"uz\",\n \"998\"\n ],\n [\n \"Vanuatu\",\n \"vu\",\n \"678\"\n ],\n [\n \"Vatican City (Città del Vaticano)\",\n \"va\",\n \"39\",\n 1,\n [\"06698\"]\n ],\n [\n \"Venezuela\",\n \"ve\",\n \"58\"\n ],\n [\n \"Vietnam (Việt Nam)\",\n \"vn\",\n \"84\"\n ],\n [\n \"Wallis and Futuna (Wallis-et-Futuna)\",\n \"wf\",\n \"681\"\n ],\n [\n \"Western Sahara (الصحراء الغربية)\",\n \"eh\",\n \"212\",\n 1,\n [\"5288\", \"5289\"]\n ],\n [\n \"Yemen (اليمن)\",\n \"ye\",\n \"967\"\n ],\n [\n \"Zambia\",\n \"zm\",\n \"260\"\n ],\n [\n \"Zimbabwe\",\n \"zw\",\n \"263\"\n ],\n [\n \"Åland Islands\",\n \"ax\",\n \"358\",\n 1,\n [\"18\"]\n ]\n];\n\n// loop over all of the countries above, restructuring the data to be objects with named keys\n\nexport function getCountryISO2() {\n let countries: { name: string; iso2: string; dialCode: string; priority: number; areaCodes: string[] | null, mask: string | string[] }[] = [];\n for (var i = 0; i < allCountries.length; i++) {\n var c = allCountries[i];\n // Garante que o array tenha pelo menos 3 elementos\n const safeCountry: [string, string, string, number?, string[]?] = [\n c[0] as string,\n c[1] as string,\n c[2] as string,\n c[3] as number || 0,\n c[4] as string[] || null\n ];\n countries[i] = {\n name: c[0] as string,\n iso2: c[1] as string,\n dialCode: c[2] as string,\n priority: c[3] as number || 0,\n areaCodes: c[4] as string[] || null,\n mask: applyPhoneMask(safeCountry)\n };\n }\n return countries;\n}\n\nfunction applyPhoneMask(country: [string, string, string, number?, string[]?]) {\n const countryCode = country[2];\n const areaCodes = country[4] || [countryCode];\n const masks = areaCodes.map((areaCode: string) => {\n\n if (countryCode === \"1\") {\n // North American Numbering Plan (NANP)\n return `000 000 0000`;\n } else if (countryCode === \"44\" && areaCode.length === 4) {\n // UK\n return `000 0000 0000`;\n } else if (countryCode === \"55\") {\n // Brazil\n return `00 0000 0000`;\n } else {\n // General international format\n return `000 0000 0000`;\n }\n });\n return masks;\n}\n\n\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\nexport type InputTransformFn = (value: unknown) => string | number;\n\nexport type OutputTransformFn = (value: string | number | undefined | null) => unknown;\n\nexport type MatchaMaskConfig = {\n suffix: string;\n prefix: string;\n thousandSeparator: string;\n decimalMarker: '.' | ',' | ['.', ','];\n clearIfNotMatch: boolean;\n showMaskTyped: boolean;\n placeHolderCharacter: string;\n shownMaskExpression: string;\n specialCharacters: string[] | readonly string[];\n dropSpecialCharacters: boolean | string[] | readonly string[];\n hiddenInput: boolean;\n validation: boolean;\n instantPrefix: boolean;\n separatorLimit: string;\n apm: boolean;\n allowNegativeNumbers: boolean;\n leadZeroDateTime: boolean;\n leadZero: boolean;\n triggerOnMaskChange: boolean;\n keepCharacterPositions: boolean;\n currencyMode: boolean; // Modo moeda: dígitos entram pela direita (1 → 0,01, 12 → 0,12, 123 → 1,23)\n inputTransformFn: InputTransformFn;\n outputTransformFn: OutputTransformFn;\n maskFilled: EventEmitter<void>;\n patterns: Record<\n string,\n {\n pattern: RegExp;\n optional?: boolean;\n symbol?: string;\n }\n >;\n};\n\nexport type MatchaMaskOptions = Partial<MatchaMaskConfig>;\nexport const MATCHA_MASK_CONFIG = new InjectionToken<MatchaMaskConfig>('matcha-mask config');\nexport const NEW_CONFIG = new InjectionToken<MatchaMaskConfig>('new matcha-mask config');\nexport const INITIAL_CONFIG = new InjectionToken<MatchaMaskConfig>('initial matcha-mask config');\n\nexport const initialConfig: MatchaMaskConfig = {\n suffix: '',\n prefix: '',\n thousandSeparator: ' ',\n decimalMarker: ['.', ','],\n clearIfNotMatch: false,\n showMaskTyped: false,\n instantPrefix: false,\n placeHolderCharacter: '_',\n dropSpecialCharacters: true,\n hiddenInput: false,\n shownMaskExpression: '',\n separatorLimit: '',\n allowNegativeNumbers: false,\n validation: true,\n specialCharacters: ['-', '/', '(', ')', '.', ':', ' ', '+', ',', '@', '[', ']', '\"', \"'\"],\n leadZeroDateTime: false,\n apm: false,\n leadZero: false,\n keepCharacterPositions: false,\n triggerOnMaskChange: false,\n currencyMode: false,\n inputTransformFn: (value: unknown) => value as string | number,\n outputTransformFn: (value: string | number | undefined | null) => value,\n maskFilled: new EventEmitter<void>(),\n patterns: {\n '0': {\n pattern: new RegExp('\\\\d'),\n },\n '9': {\n pattern: new RegExp('\\\\d'),\n optional: true,\n },\n X: {\n pattern: new RegExp('\\\\d'),\n symbol: '*',\n },\n A: {\n pattern: new RegExp('[a-zA-Z0-9]'),\n },\n S: {\n pattern: new RegExp('[a-zA-Z]'),\n },\n U: {\n pattern: new RegExp('[A-Z]'),\n },\n L: {\n pattern: new RegExp('[a-z]'),\n },\n d: {\n pattern: new RegExp('\\\\d'),\n },\n m: {\n pattern: new RegExp('\\\\d'),\n },\n M: {\n pattern: new RegExp('\\\\d'),\n },\n H: {\n pattern: new RegExp('\\\\d'),\n },\n h: {\n pattern: new RegExp('\\\\d'),\n },\n s: {\n pattern: new RegExp('\\\\d'),\n },\n },\n};\n\nexport const timeMasks: string[] = [\n MaskExpression.HOURS_MINUTES_SECONDS,\n MaskExpression.HOURS_MINUTES,\n MaskExpression.MINUTES_SECONDS,\n];\n\nexport const withoutValidation: string[] = [\n MaskExpression.PERCENT,\n MaskExpression.HOURS_HOUR,\n MaskExpression.SECONDS,\n MaskExpression.MINUTES,\n MaskExpression.SEPARATOR,\n MaskExpression.DAYS_MONTHS_YEARS,\n MaskExpression.DAYS_MONTHS,\n MaskExpression.DAYS,\n MaskExpression.MONTHS,\n];\n","import { inject, Injectable } from '@angular/core';\nimport { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Injectable()\nexport class MatchaMaskApplierService {\n protected _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n public dropSpecialCharacters: MatchaMaskConfig['dropSpecialCharacters'] =\n this._config.dropSpecialCharacters;\n\n public hiddenInput: MatchaMaskConfig['hiddenInput'] = this._config.hiddenInput;\n\n public clearIfNotMatch: MatchaMaskConfig['clearIfNotMatch'] = this._config.clearIfNotMatch;\n\n public specialCharacters: MatchaMaskConfig['specialCharacters'] = this._config.specialCharacters;\n\n public patterns: MatchaMaskConfig['patterns'] = this._config.patterns;\n\n public prefix: MatchaMaskConfig['prefix'] = this._config.prefix || '';\n\n public suffix: MatchaMaskConfig['suffix'] = this._config.suffix || '';\n\n public thousandSeparator: MatchaMaskConfig['thousandSeparator'] = this._config.thousandSeparator || '';\n\n public decimalMarker: MatchaMaskConfig['decimalMarker'] = this._config.decimalMarker || '';\n\n public customPattern!: MatchaMaskConfig['patterns'];\n\n public showMaskTyped: MatchaMaskConfig['showMaskTyped'] = this._config.showMaskTyped;\n\n public placeHolderCharacter: MatchaMaskConfig['placeHolderCharacter'] =\n this._config.placeHolderCharacter;\n\n public validation: MatchaMaskConfig['validation'] = this._config.validation;\n\n public separatorLimit: MatchaMaskConfig['separatorLimit'] = this._config.separatorLimit;\n\n public allowNegativeNumbers: MatchaMaskConfig['allowNegativeNumbers'] =\n this._config.allowNegativeNumbers;\n\n public leadZeroDateTime: MatchaMaskConfig['leadZeroDateTime'] = this._config.leadZeroDateTime;\n\n public leadZero: MatchaMaskConfig['leadZero'] = this._config.leadZero;\n\n public apm: MatchaMaskConfig['apm'] = this._config.apm;\n\n public inputTransformFn: MatchaMaskConfig['inputTransformFn'] | null =\n this._config.inputTransformFn;\n\n public outputTransformFn: MatchaMaskConfig['outputTransformFn'] | null =\n this._config.outputTransformFn;\n\n public keepCharacterPositions: MatchaMaskConfig['keepCharacterPositions'] =\n this._config.keepCharacterPositions;\n\n public instantPrefix: MatchaMaskConfig['instantPrefix'] = this._config.instantPrefix;\n\n public triggerOnMaskChange: MatchaMaskConfig['triggerOnMaskChange'] =\n this._config.triggerOnMaskChange;\n\n public currencyMode: MatchaMaskConfig['currencyMode'] = this._config.currencyMode;\n\n private _shift = new Set<number>();\n\n public plusOnePosition = false;\n\n public maskExpression = '';\n\n public actualValue = '';\n\n public showKeepCharacterExp = '';\n\n public shownMaskExpression: MatchaMaskConfig['shownMaskExpression'] =\n this._config.shownMaskExpression;\n\n public deletedSpecialCharacter = false;\n\n public ipError?: boolean;\n\n public cpfCnpjError?: boolean;\n\n public applyMask(\n inputValue: string | object | boolean | null | undefined,\n maskExpression: string,\n position = 0,\n justPasted = false,\n backspaced = false,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): string {\n if (!maskExpression || typeof inputValue !== 'string') {\n return MaskExpression.EMPTY_STRING;\n }\n let cursor = 0;\n let result = '';\n let multi = false;\n let backspaceShift = false;\n let shift = 1;\n let stepBack = false;\n let processedValue = inputValue;\n let processedPosition = position;\n\n if (processedValue.slice(0, this.prefix.length) === this.prefix) {\n processedValue = processedValue.slice(this.prefix.length, processedValue.length);\n }\n if (!!this.suffix && processedValue.length > 0) {\n processedValue = this.checkAndRemoveSuffix(processedValue);\n }\n if (processedValue === '(' && this.prefix) {\n processedValue = '';\n }\n const inputArray: string[] = processedValue.toString().split(MaskExpression.EMPTY_STRING);\n if (\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS\n ) {\n result += processedValue.slice(cursor, cursor + 1);\n }\n if (maskExpression === MaskExpression.IP) {\n const valuesIP = processedValue.split(MaskExpression.DOT);\n this.ipError = this._validIP(valuesIP);\n\n // eslint-disable-next-line no-param-reassign\n maskExpression = '099.099.099.099';\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < processedValue.length; i++) {\n if (processedValue[i]?.match('\\\\d')) {\n arr.push(processedValue[i] ?? MaskExpression.EMPTY_STRING);\n }\n }\n if (maskExpression === MaskExpression.CPF_CNPJ) {\n this.cpfCnpjError = arr.length !== 11 && arr.length !== 14;\n if (arr.length > 11) {\n // eslint-disable-next-line no-param-reassign\n maskExpression = '00.000.000/0000-00';\n } else {\n // eslint-disable-next-line no-param-reassign\n maskExpression = '000.000.000-00';\n }\n }\n if (maskExpression.startsWith(MaskExpression.PERCENT)) {\n if (\n processedValue.match('[a-z]|[A-Z]') ||\n // eslint-disable-next-line no-useless-escape\n (processedValue.match(/[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,\\/.]/) && !backspaced)\n ) {\n processedValue = this._stripToDecimal(processedValue);\n const precision: number = this.getPrecision(maskExpression);\n\n processedValue = this.checkInputPrecision(\n processedValue,\n precision,\n this.decimalMarker\n );\n }\n const decimalMarker =\n typeof this.decimalMarker === 'string' ? this.decimalMarker : MaskExpression.DOT;\n if (\n processedValue.indexOf(decimalMarker) > 0 &&\n !this.percentage(processedValue.substring(0, processedValue.indexOf(decimalMarker)))\n ) {\n let base: string = processedValue.substring(\n 0,\n processedValue.indexOf(decimalMarker) - 1\n );\n if (\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS &&\n !backspaced\n ) {\n base = processedValue.substring(0, processedValue.indexOf(decimalMarker));\n }\n\n processedValue = `${base}${processedValue.substring(\n processedValue.indexOf(decimalMarker),\n processedValue.length\n )}`;\n }\n let value = '';\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS\n ? (value = `${MaskExpression.MINUS}${processedValue.slice(cursor + 1, cursor + processedValue.length)}`)\n : (value = processedValue);\n if (this.percentage(value)) {\n result = this._splitPercentZero(processedValue);\n } else {\n result = this._splitPercentZero(\n processedValue.substring(0, processedValue.length - 1)\n );\n }\n } else if (maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n if (\n processedValue.match('[wа-яА-Я]') ||\n processedValue.match('[ЁёА-я]') ||\n processedValue.match('[a-z]|[A-Z]') ||\n processedValue.match(/[-@#!$%\\\\^&*()_£¬'+|~=`{}\\]:\";<>.?/]/) ||\n processedValue.match('[^A-Za-z0-9,]')\n ) {\n processedValue = this._stripToDecimal(processedValue);\n }\n\n const precision: number = this.getPrecision(maskExpression);\n let decimalMarker = this.decimalMarker;\n\n if (Array.isArray(this.decimalMarker)) {\n if (\n this.actualValue.includes(this.decimalMarker[0]) ||\n this.actualValue.includes(this.decimalMarker[1])\n ) {\n decimalMarker = this.actualValue.includes(this.decimalMarker[0])\n ? this.decimalMarker[0]\n : this.decimalMarker[1];\n } else {\n decimalMarker = this.decimalMarker.find(\n (dm) => dm !== this.thousandSeparator\n ) as '.' | ',';\n }\n }\n\n // Modo moeda: dígitos entram pela direita (ex: 1 → 0,01, 12 → 0,12, 123 → 1,23)\n // IMPORTANTE: Detectar se devemos aplicar currencyMode\n // - NÃO aplicar se estamos em writeValue (valor vindo do backend/programático)\n // - Aplicar apenas durante digitação do usuário (onInput)\n const actualDecimalMarker = typeof decimalMarker === 'string' ? decimalMarker : ',';\n const hasDecimalMarker = processedValue.includes(actualDecimalMarker);\n\n let shouldApplyCurrencyMode = false;\n\n // NUNCA aplicar currencyMode quando writingValue = true (writeValue do backend)\n if (this.currencyMode && precision > 0 && !(this as any).writingValue) {\n if (!hasDecimalMarker) {\n // Sem vírgula: aplicar currencyMode (digitação começando)\n shouldApplyCurrencyMode = true;\n } else {\n // Com vírgula: verificar se é digitação em andamento ou valor do backend\n const parts = processedValue.split(actualDecimalMarker);\n const decimalPart = parts[1] || '';\n\n // Se a parte decimal tem mais dígitos que a precisão, é digitação em andamento\n // Se tem menos, veio do backend (ex: \"10,5\" com precisão 2)\n shouldApplyCurrencyMode = decimalPart.length > precision;\n }\n }\n\n if (shouldApplyCurrencyMode) {\n // Extrair apenas dígitos e sinal negativo\n const hasMinus = processedValue.startsWith(MaskExpression.MINUS) ||\n (this.allowNegativeNumbers && processedValue.includes(MaskExpression.MINUS));\n const digitsOnly = processedValue.replace(/[^\\d]/g, '');\n\n if (digitsOnly.length === 0) {\n result = MaskExpression.EMPTY_STRING;\n } else {\n // Remover zeros à esquerda desnecessários\n const cleanDigits = digitsOnly.replace(/^0+/, '') || '0';\n\n let formattedValue: string;\n if (cleanDigits.length <= precision) {\n // Menos ou igual dígitos que a precisão: 0,XX\n const paddedDecimal = cleanDigits.padStart(precision, '0');\n formattedValue = '0' + (decimalMarker as string) + paddedDecimal;\n } else {\n // Mais dígitos que a precisão: separar inteiro e decimal\n const integerPart = cleanDigits.slice(0, -precision);\n const decimalPart = cleanDigits.slice(-precision);\n\n // Aplicar separador de milhares na parte inteira\n let formattedInteger = integerPart;\n const rgx = /(\\d+)(\\d{3})/;\n while (this.thousandSeparator && rgx.test(formattedInteger)) {\n formattedInteger = formattedInteger.replace(rgx, '$1' + this.thousandSeparator + '$2');\n }\n\n formattedValue = formattedInteger + (decimalMarker as string) + decimalPart;\n }\n\n result = (hasMinus ? MaskExpression.MINUS : '') + formattedValue;\n }\n\n // Mover o cursor para o final\n cb(result.length, result.length);\n\n // Pular toda a lógica de formatação normal e ir direto para o retorno\n // O result já está formatado corretamente para exibição\n // O formControlResult (no service) vai processar e remover prefixo/sufixo\n let res = `${this.prefix}${result}${this.suffix}`;\n if (result.length === 0) {\n res = this.instantPrefix ? `${this.prefix}${result}` : `${result}`;\n }\n return res;\n }\n\n if (backspaced) {\n const { decimalMarkerIndex, nonZeroIndex } = this._findFirstNonZeroAndDecimalIndex(\n processedValue,\n decimalMarker as '.' | ','\n );\n const zeroIndexMinus = processedValue[0] === MaskExpression.MINUS;\n const zeroIndexNumberZero = processedValue[0] === MaskExpression.NUMBER_ZERO;\n const zeroIndexDecimalMarker = processedValue[0] === decimalMarker;\n const firstIndexDecimalMarker = processedValue[1] === decimalMarker;\n\n if (\n (zeroIndexDecimalMarker && !nonZeroIndex) ||\n (zeroIndexMinus && firstIndexDecimalMarker && !nonZeroIndex) ||\n (zeroIndexNumberZero && !decimalMarkerIndex && !nonZeroIndex)\n ) {\n processedValue = MaskExpression.NUMBER_ZERO;\n }\n\n if (\n decimalMarkerIndex &&\n nonZeroIndex &&\n zeroIndexMinus &&\n processedPosition === 1\n ) {\n if (decimalMarkerIndex < nonZeroIndex || decimalMarkerIndex > nonZeroIndex) {\n processedValue = MaskExpression.MINUS + processedValue.slice(nonZeroIndex);\n }\n }\n\n if (!decimalMarkerIndex && nonZeroIndex && processedValue.length > nonZeroIndex) {\n processedValue = zeroIndexMinus\n ? MaskExpression.MINUS + processedValue.slice(nonZeroIndex)\n : processedValue.slice(nonZeroIndex);\n }\n\n if (decimalMarkerIndex && nonZeroIndex && processedPosition === 0) {\n if (decimalMarkerIndex < nonZeroIndex) {\n processedValue = processedValue.slice(decimalMarkerIndex - 1);\n }\n if (decimalMarkerIndex > nonZeroIndex) {\n processedValue = processedValue.slice(nonZeroIndex);\n }\n }\n }\n\n if (precision === 0) {\n processedValue = this.allowNegativeNumbers\n ? processedValue.length > 2 &&\n processedValue[0] === MaskExpression.MINUS &&\n processedValue[1] === MaskExpression.NUMBER_ZERO &&\n processedValue[2] !== this.thousandSeparator &&\n processedValue[2] !== MaskExpression.COMMA &&\n processedValue[2] !== MaskExpression.DOT\n ? '-' + processedValue.slice(2, processedValue.length)\n : processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue.length > 1 &&\n processedValue[1] !== this.thousandSeparator &&\n processedValue[1] !== MaskExpression.COMMA &&\n processedValue[1] !== MaskExpression.DOT\n ? processedValue.slice(1, processedValue.length)\n : processedValue\n : processedValue.length > 1 &&\n processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue[1] !== this.thousandSeparator &&\n processedValue[1] !== MaskExpression.COMMA &&\n processedValue[1] !== MaskExpression.DOT\n ? processedValue.slice(1, processedValue.length)\n : processedValue;\n } else {\n if (\n processedValue[0] === decimalMarker &&\n processedValue.length > 1 &&\n !backspaced\n ) {\n processedValue =\n MaskExpression.NUMBER_ZERO +\n processedValue.slice(0, processedValue.length + 1);\n this.plusOnePosition = true;\n }\n if (\n processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue[1] !== decimalMarker &&\n processedValue[1] !== this.thousandSeparator &&\n !backspaced\n ) {\n processedValue =\n processedValue.length > 1\n ? processedValue.slice(0, 1) +\n decimalMarker +\n processedValue.slice(1, processedValue.length + 1)\n : processedValue;\n this.plusOnePosition = true;\n }\n if (\n this.allowNegativeNumbers &&\n !backspaced &&\n processedValue[0] === MaskExpression.MINUS &&\n (processedValue[1] === decimalMarker ||\n processedValue[1] === MaskExpression.NUMBER_ZERO)\n ) {\n processedValue =\n processedValue[1] === decimalMarker && processedValue.length > 2\n ? processedValue.slice(0, 1) +\n MaskExpression.NUMBER_ZERO +\n processedValue.slice(1, processedValue.length)\n : processedValue[1] === MaskExpression.NUMBER_ZERO &&\n processedValue.length > 2 &&\n processedValue[2] !== decimalMarker\n ? processedValue.slice(0, 2) +\n decimalMarker +\n processedValue.slice(2, processedValue.length)\n : processedValue;\n this.plusOnePosition = true;\n }\n }\n\n // TODO: we had different rexexps here for the different cases... but tests dont seam to bother - check this\n // separator: no COMMA, dot-sep: no SPACE, COMMA OK, comma-sep: no SPACE, COMMA OK\n\n const thousandSeparatorCharEscaped: string = this._charToRegExpExpression(\n this.thousandSeparator\n );\n let invalidChars: string = '@#!$%^&*()_+|~=`{}\\\\[\\\\]:\\\\s,\\\\.\";<>?\\\\/'.replace(\n thousandSeparatorCharEscaped,\n ''\n );\n //.replace(decimalMarkerEscaped, '');\n if (Array.isArray(this.decimalMarker)) {\n for (const marker of this.decimalMarker) {\n invalidChars = invalidChars.replace(\n this._charToRegExpExpression(marker),\n MaskExpression.EMPTY_STRING\n );\n }\n } else {\n invalidChars = invalidChars.replace(\n this._charToRegExpExpression(this.decimalMarker),\n ''\n );\n }\n\n const invalidCharRegexp = new RegExp('[' + invalidChars + ']');\n if (processedValue.match(invalidCharRegexp)) {\n processedValue = processedValue.substring(0, processedValue.length - 1);\n }\n\n processedValue = this.checkInputPrecision(\n processedValue,\n precision,\n this.decimalMarker\n );\n const strForSep: string = processedValue.replace(\n new RegExp(thousandSeparatorCharEscaped, 'g'),\n ''\n );\n\n result = this._formatWithSeparators(\n strForSep,\n this.thousandSeparator,\n this.decimalMarker,\n precision\n );\n\n const commaShift: number =\n result.indexOf(MaskExpression.COMMA) - processedValue.indexOf(MaskExpression.COMMA);\n const shiftStep: number = result.length - processedValue.length;\n const backspacedDecimalMarkerWithSeparatorLimit =\n backspaced && result.length < inputValue.length && this.separatorLimit;\n\n if (\n (result[processedPosition - 1] === this.thousandSeparator ||\n result[processedPosition - this.prefix.length]) &&\n this.prefix &&\n backspaced\n ) {\n processedPosition = processedPosition - 1;\n } else if (\n (shiftStep > 0 && result[processedPosition] !== this.thousandSeparator) ||\n backspacedDecimalMarkerWithSeparatorLimit\n ) {\n backspaceShift = true;\n let _shift = 0;\n do {\n this._shift.add(processedPosition + _shift);\n _shift++;\n } while (_shift < shiftStep);\n } else if (\n result[processedPosition - 1] === this.thousandSeparator ||\n shiftStep === -4 ||\n shiftStep === -3 ||\n result[processedPosition] === this.thousandSeparator\n ) {\n this._shift.clear();\n this._shift.add(processedPosition - 1);\n } else if (\n (commaShift !== 0 &&\n processedPosition > 0 &&\n !(\n result.indexOf(MaskExpression.COMMA) >= processedPosition &&\n processedPosition > 3\n )) ||\n (!(\n result.indexOf(MaskExpression.DOT) >= processedPosition && processedPosition > 3\n ) &&\n shiftStep <= 0)\n ) {\n this._shift.clear();\n backspaceShift = true;\n shift = shiftStep;\n\n processedPosition += shiftStep;\n this._shift.add(processedPosition);\n } else {\n this._shift.clear();\n }\n } else {\n for (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let i = 0, inputSymbol: string = inputArray[0]!;\n i < inputArray.length;\n i++, inputSymbol = inputArray[i] ?? MaskExpression.EMPTY_STRING\n ) {\n if (cursor === maskExpression.length) {\n break;\n }\n\n const symbolStarInPattern: boolean = MaskExpression.SYMBOL_STAR in this.patterns;\n if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) &&\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION\n ) {\n result += inputSymbol;\n cursor += 2;\n } else if (\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n multi &&\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n result += inputSymbol;\n cursor += 3;\n multi = false;\n } else if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) &&\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n !symbolStarInPattern\n ) {\n result += inputSymbol;\n multi = true;\n } else if (\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION &&\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n result += inputSymbol;\n cursor += 3;\n } else if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n if (maskExpression[cursor] === MaskExpression.HOURS) {\n if (this.apm ? Number(inputSymbol) > 9 : Number(inputSymbol) > 2) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n if (maskExpression[cursor] === MaskExpression.HOUR) {\n if (\n this.apm\n ? (result.length === 1 && Number(result) > 1) ||\n (result === '1' && Number(inputSymbol) > 2) ||\n (processedValue.slice(cursor - 1, cursor).length === 1 &&\n Number(processedValue.slice(cursor - 1, cursor)) > 2) ||\n (processedValue.slice(cursor - 1, cursor) === '1' &&\n Number(inputSymbol) > 2)\n : (result === '2' && Number(inputSymbol) > 3) ||\n ((result.slice(cursor - 2, cursor) === '2' ||\n result.slice(cursor - 3, cursor) === '2' ||\n result.slice(cursor - 4, cursor) === '2' ||\n result.slice(cursor - 1, cursor) === '2') &&\n Number(inputSymbol) > 3 &&\n cursor > 10)\n ) {\n processedPosition = processedPosition + 1;\n cursor += 1;\n i--;\n continue;\n }\n }\n if (\n maskExpression[cursor] === MaskExpression.MINUTE ||\n maskExpression[cursor] === MaskExpression.SECOND\n ) {\n if (Number(inputSymbol) > 5) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n const daysCount = 31;\n const inputValueCursor = processedValue[cursor] as string;\n const inputValueCursorPlusOne = processedValue[cursor + 1] as string;\n const inputValueCursorPlusTwo = processedValue[cursor + 2] as string;\n const inputValueCursorMinusOne = processedValue[cursor - 1] as string;\n const inputValueCursorMinusTwo = processedValue[cursor - 2] as string;\n const inputValueSliceMinusThreeMinusOne = processedValue.slice(\n cursor - 3,\n cursor - 1\n );\n const inputValueSliceMinusOnePlusOne = processedValue.slice(\n cursor - 1,\n cursor + 1\n );\n const inputValueSliceCursorPlusTwo = processedValue.slice(cursor, cursor + 2);\n const inputValueSliceMinusTwoCursor = processedValue.slice(cursor - 2, cursor);\n if (maskExpression[cursor] === MaskExpression.DAY) {\n const maskStartWithMonth =\n maskExpression.slice(0, 2) === MaskExpression.MONTHS;\n const startWithMonthInput: boolean =\n maskExpression.slice(0, 2) === MaskExpression.MONTHS &&\n this.specialCharacters.includes(inputValueCursorMinusTwo);\n if (\n (Number(inputSymbol) > 3 && this.leadZeroDateTime) ||\n (!maskStartWithMonth &&\n (Number(inputValueSliceCursorPlusTwo) > daysCount ||\n Number(inputValueSliceMinusOnePlusOne) > daysCount ||\n this.specialCharacters.includes(inputValueCursorPlusOne))) ||\n (startWithMonthInput\n ? Number(inputValueSliceMinusOnePlusOne) > daysCount ||\n (!this.specialCharacters.includes(inputValueCursor) &&\n this.specialCharacters.includes(inputValueCursorPlusTwo)) ||\n this.specialCharacters.includes(inputValueCursor)\n : Number(inputValueSliceCursorPlusTwo) > daysCount ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n !backspaced))\n ) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n if (maskExpression[cursor] === MaskExpression.MONTH) {\n const monthsCount = 12;\n // mask without day\n const withoutDays: boolean =\n cursor === 0 &&\n (Number(inputSymbol) > 2 ||\n Number(inputValueSliceCursorPlusTwo) > monthsCount ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n !backspaced));\n // day<10 && month<12 for input\n const specialChart = maskExpression.slice(cursor + 2, cursor + 3);\n const day1monthInput: boolean =\n inputValueSliceMinusThreeMinusOne.includes(specialChart) &&\n maskExpression.includes('d0') &&\n ((this.specialCharacters.includes(inputValueCursorMinusTwo) &&\n Number(inputValueSliceMinusOnePlusOne) > monthsCount &&\n !this.specialCharacters.includes(inputValueCursor)) ||\n this.specialCharacters.includes(inputValueCursor));\n // month<12 && day<10 for input\n const day2monthInput: boolean =\n Number(inputValueSliceMinusThreeMinusOne) <= daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n this.specialCharacters.includes(inputValueCursorMinusOne) &&\n (Number(inputValueSliceCursorPlusTwo) > monthsCount ||\n this.specialCharacters.includes(inputValueCursorPlusOne));\n // cursor === 5 && without days\n const day2monthInputDot: boolean =\n (Number(inputValueSliceCursorPlusTwo) > monthsCount && cursor === 5) ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n cursor === 5);\n // // day<10 && month<12 for paste whole data\n const day1monthPaste: boolean =\n Number(inputValueSliceMinusThreeMinusOne) > daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n !this.specialCharacters.includes(\n inputValueSliceMinusTwoCursor as string\n ) &&\n Number(inputValueSliceMinusTwoCursor) > monthsCount &&\n maskExpression.includes('d0');\n // 10<day<31 && month<12 for paste whole data\n const day2monthPaste: boolean =\n Number(inputValueSliceMinusThreeMinusOne) <= daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n !this.specialCharacters.includes(inputValueCursorMinusOne) &&\n Number(inputValueSliceMinusOnePlusOne) > monthsCount;\n if (\n (Number(inputSymbol) > 1 && this.leadZeroDateTime) ||\n withoutDays ||\n day1monthInput ||\n day2monthPaste ||\n day1monthPaste ||\n day2monthInput ||\n (day2monthInputDot && !this.leadZeroDateTime)\n ) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n result += inputSymbol;\n cursor++;\n } else if (\n this.specialCharacters.includes(inputSymbol) &&\n maskExpression[cursor] === inputSymbol\n ) {\n result += inputSymbol;\n cursor++;\n } else if (\n this.specialCharacters.indexOf(\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) !== -1\n ) {\n result += maskExpression[cursor];\n cursor++;\n this._shiftStep(cursor);\n i--;\n } else if (\n maskExpression[cursor] === MaskExpression.NUMBER_NINE &&\n this.showMaskTyped\n ) {\n this._shiftStep(cursor);\n } else if (\n this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING] &&\n this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING]?.optional\n ) {\n if (\n !!inputArray[cursor] &&\n maskExpression !== '099.099.099.099' &&\n maskExpression !== '000.000.000-00' &&\n maskExpression !== '00.000.000/0000-00' &&\n !maskExpression.match(/^9+\\.0+$/) &&\n !this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING]\n ?.optional\n ) {\n result += inputArray[cursor];\n }\n if (\n maskExpression.includes(\n MaskExpression.NUMBER_NINE + MaskExpression.SYMBOL_STAR\n ) &&\n maskExpression.includes(\n MaskExpression.NUMBER_ZERO + MaskExpression.SYMBOL_STAR\n )\n ) {\n cursor++;\n }\n\n cursor++;\n i--;\n } else if (\n this.maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n this._findSpecialChar(\n this.maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n ) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (\n this.maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION &&\n this._findSpecialChar(\n this.maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n ) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (\n this.showMaskTyped &&\n this.specialCharacters.indexOf(inputSymbol) < 0 &&\n inputSymbol !== this.placeHolderCharacter &&\n this.placeHolderCharacter.length === 1\n ) {\n stepBack = true;\n }\n }\n }\n if (\n result[processedPosition - 1] &&\n result.length + 1 === maskExpression.length &&\n this.specialCharacters.indexOf(\n maskExpression[maskExpression.length - 1] ?? MaskExpression.EMPTY_STRING\n ) !== -1\n ) {\n result += maskExpression[maskExpression.length - 1];\n }\n let newPosition: number = processedPosition + 1;\n\n while (this._shift.has(newPosition)) {\n shift++;\n newPosition++;\n }\n\n let actualShift: number =\n justPasted && !maskExpression.startsWith(MaskExpression.SEPARATOR)\n ? cursor\n : this._shift.has(processedPosition)\n ? shift\n : 0;\n if (stepBack) {\n actualShift--;\n }\n\n cb(actualShift, backspaceShift);\n if (shift < 0) {\n this._shift.clear();\n }\n let onlySpecial = false;\n if (backspaced) {\n onlySpecial = inputArray.every((char) => this.specialCharacters.includes(char));\n }\n\n let res = `${this.prefix}${onlySpecial ? MaskExpression.EMPTY_STRING : result}${\n this.showMaskTyped ? '' : this.suffix\n }`;\n\n if (result.length === 0) {\n res = this.instantPrefix ? `${this.prefix}${result}` : `${result}`;\n }\n\n const isSpecialCharacterMaskFirstSymbol =\n processedValue.length === 1 &&\n this.specialCharacters.includes(maskExpression[0] as string) &&\n processedValue !== maskExpression[0];\n\n if (\n !this._checkSymbolMask(processedValue, maskExpression[1] as string) &&\n isSpecialCharacterMaskFirstSymbol\n ) {\n return '';\n }\n\n if (result.includes(MaskExpression.MINUS) && this.prefix && this.allowNegativeNumbers) {\n if (backspaced && result === MaskExpression.MINUS) {\n return '';\n }\n res = `${MaskExpression.MINUS}${this.prefix}${result\n .split(MaskExpression.MINUS)\n .join(MaskExpression.EMPTY_STRING)}${this.suffix}`;\n }\n return res;\n }\n\n public _findDropSpecialChar(inputSymbol: string): undefined | string {\n if (Array.isArray(this.dropSpecialCharacters)) {\n return this.dropSpecialCharacters.find((val: string) => val === inputSymbol);\n }\n return this._findSpecialChar(inputSymbol);\n }\n\n public _findSpecialChar(inputSymbol: string): undefined | string {\n return this.specialCharacters.find((val: string) => val === inputSymbol);\n }\n\n public _checkSymbolMask(inputSymbol: string, maskSymbol: string): boolean {\n this.patterns = this.customPattern ? this.customPattern : this.patterns;\n return (\n (this.patterns?.[maskSymbol]?.pattern &&\n this.patterns?.[maskSymbol]?.pattern.test(inputSymbol)) ??\n false\n );\n }\n\n private _formatWithSeparators = (\n str: string,\n thousandSeparatorChar: string,\n decimalChars: string | string[],\n precision: number\n ) => {\n let x: string[] = [];\n let decimalChar = '';\n\n if (Array.isArray(decimalChars)) {\n const regExp = new RegExp(\n decimalChars.map((v) => ('[\\\\^$.|?*+()'.indexOf(v) >= 0 ? `\\\\${v}` : v)).join('|')\n );\n x = str.split(regExp);\n decimalChar = str.match(regExp)?.[0] ?? MaskExpression.EMPTY_STRING;\n } else {\n x = str.split(decimalChars);\n decimalChar = decimalChars;\n }\n const decimals: string =\n x.length > 1 ? `${decimalChar}${x[1]}` : MaskExpression.EMPTY_STRING;\n let res: string = x[0] ?? MaskExpression.EMPTY_STRING;\n const separatorLimit: string = this.separatorLimit.replace(\n /\\s/g,\n MaskExpression.EMPTY_STRING\n );\n if (separatorLimit && +separatorLimit) {\n if (res[0] === MaskExpression.MINUS) {\n res = `-${res.slice(1, res.length).slice(0, separatorLimit.length)}`;\n } else {\n res = res.slice(0, separatorLimit.length);\n }\n }\n const rgx = /(\\d+)(\\d{3})/;\n\n while (thousandSeparatorChar && rgx.test(res)) {\n res = res.replace(rgx, '$1' + thousandSeparatorChar + '$2');\n }\n\n if (typeof precision === 'undefined') {\n return res + decimals;\n } else if (precision === 0) {\n return res;\n }\n return res + decimals.substring(0, precision + 1);\n };\n\n private percentage = (str: string): boolean => {\n const sanitizedStr = str.replace(',', '.');\n const value = Number(\n this.allowNegativeNumbers && str.includes(MaskExpression.MINUS)\n ? sanitizedStr.slice(1, str.length)\n : sanitizedStr\n );\n\n return !isNaN(value) && value >= 0 && value <= 100;\n };\n\n public getPrecision = (maskExpression: string): number => {\n const x: string[] = maskExpression.split(MaskExpression.DOT);\n if (x.length > 1) {\n return Number(x[x.length - 1]);\n }\n\n return Infinity;\n };\n\n private checkAndRemoveSuffix = (inputValue: string): string => {\n for (let i = this.suffix?.length - 1; i >= 0; i--) {\n const substr = this.suffix.substring(i, this.suffix?.length);\n if (\n inputValue.includes(substr) &&\n i !== this.suffix?.length - 1 &&\n (i - 1 < 0 ||\n !inputValue.includes(this.suffix.substring(i - 1, this.suffix?.length)))\n ) {\n return inputValue.replace(substr, MaskExpression.EMPTY_STRING);\n }\n }\n return inputValue;\n };\n\n private checkInputPrecision = (\n inputValue: string,\n precision: number,\n decimalMarker: MatchaMaskConfig['decimalMarker']\n ): string => {\n let processedInputValue = inputValue;\n let processedDecimalMarker = decimalMarker;\n\n if (precision < Infinity) {\n // TODO need think about decimalMarker\n if (Array.isArray(processedDecimalMarker)) {\n const marker = processedDecimalMarker.find((dm) => dm !== this.thousandSeparator);\n\n processedDecimalMarker = marker ? marker : processedDecimalMarker[0];\n }\n const precisionRegEx = new RegExp(\n this._charToRegExpExpression(processedDecimalMarker) + `\\\\d{${precision}}.*$`\n );\n const precisionMatch: RegExpMatchArray | null =\n processedInputValue.match(precisionRegEx);\n const precisionMatchLength: number = (precisionMatch && precisionMatch[0]?.length) ?? 0;\n if (precisionMatchLength - 1 > precision) {\n const diff = precisionMatchLength - 1 - precision;\n\n processedInputValue = processedInputValue.substring(\n 0,\n processedInputValue.length - diff\n );\n }\n if (\n precision === 0 &&\n this._compareOrIncludes(\n processedInputValue[processedInputValue.length - 1],\n processedDecimalMarker,\n this.thousandSeparator\n )\n ) {\n processedInputValue = processedInputValue.substring(\n 0,\n processedInputValue.length - 1\n );\n }\n }\n return processedInputValue;\n };\n\n private _stripToDecimal(str: string): string {\n return str\n .split(MaskExpression.EMPTY_STRING)\n .filter((i: string, idx: number) => {\n const isDecimalMarker =\n typeof this.decimalMarker === 'string'\n ? i === this.decimalMarker\n : // TODO (inepipenko) use utility type\n this.decimalMarker.includes(\n i as MaskExpression.COMMA | MaskExpression.DOT\n );\n return (\n i.match('^-?\\\\d') ||\n i === this.thousandSeparator ||\n isDecimalMarker ||\n (i === MaskExpression.MINUS && idx === 0 && this.allowNegativeNumbers)\n );\n })\n .join(MaskExpression.EMPTY_STRING);\n }\n\n private _charToRegExpExpression(char: string): string {\n // if (Array.isArray(char)) {\n // \treturn char.map((v) => ('[\\\\^$.|?*+()'.indexOf(v) >= 0 ? `\\\\${v}` : v)).join('|');\n // }\n if (char) {\n const charsToEscape = '[\\\\^$.|?*+()';\n return char === ' ' ? '\\\\s' : charsToEscape.indexOf(char) >= 0 ? `\\\\${char}` : char;\n }\n return char;\n }\n\n private _shiftStep(cursor: number) {\n this._shift.add(cursor + this.prefix.length || 0);\n }\n\n protected _compareOrIncludes<T>(value: T, comparedValue: T | T[], excludedValue: T): boolean {\n return Array.isArray(comparedValue)\n ? comparedValue.filter((v) => v !== excludedValue).includes(value)\n : value === comparedValue;\n }\n\n private _validIP(valuesIP: string[]): boolean {\n return !(\n valuesIP.length === 4 &&\n !valuesIP.some((value: string, index: number) => {\n if (valuesIP.length !== index + 1) {\n return value === MaskExpression.EMPTY_STRING || Number(value) > 255;\n }\n return value === MaskExpression.EMPTY_STRING || Number(value.substring(0, 3)) > 255;\n })\n );\n }\n\n private _splitPercentZero(value: string): string {\n if (value === MaskExpression.MINUS && this.allowNegativeNumbers) {\n return value;\n }\n const decimalIndex =\n typeof this.decimalMarker === 'string'\n ? value.indexOf(this.decimalMarker)\n : value.indexOf(MaskExpression.DOT);\n const emptyOrMinus =\n this.allowNegativeNumbers && value.includes(MaskExpression.MINUS) ? '-' : '';\n if (decimalIndex === -1) {\n const parsedValue = parseInt(emptyOrMinus ? value.slice(1, value.length) : value, 10);\n return isNaN(parsedValue)\n ? MaskExpression.EMPTY_STRING\n : `${emptyOrMinus}${parsedValue}`;\n } else {\n const integerPart = parseInt(value.replace('-', '').substring(0, decimalIndex), 10);\n const decimalPart = value.substring(decimalIndex + 1);\n const integerString = isNaN(integerPart) ? '' : integerPart.toString();\n\n const decimal =\n typeof this.decimalMarker === 'string' ? this.decimalMarker : MaskExpression.DOT;\n\n return integerString === MaskExpression.EMPTY_STRING\n ? MaskExpression.EMPTY_STRING\n : `${emptyOrMinus}${integerString}${decimal}${decimalPart}`;\n }\n }\n\n private _findFirstNonZeroAndDecimalIndex(inputString: string, decimalMarker: '.' | ',') {\n let decimalMarkerIndex: number | null = null;\n let nonZeroIndex: number | null = null;\n\n for (let i = 0; i < inputString.length; i++) {\n const char = inputString[i];\n\n if (char === decimalMarker && decimalMarkerIndex === null) {\n decimalMarkerIndex = i;\n }\n\n if (char && char >= '1' && char <= '9' && nonZeroIndex === null) {\n nonZeroIndex = i;\n }\n\n if (decimalMarkerIndex !== null && nonZeroIndex !== null) {\n break;\n }\n }\n\n return {\n decimalMarkerIndex,\n nonZeroIndex,\n };\n }\n}\n","import { ElementRef, inject, Injectable, Renderer2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n\nimport type { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MatchaMaskApplierService } from './matcha-mask-applier.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n// console.log('🎯 MATCHA-MASK VERSION: v107 - FIX DECIMAL DISPLAY & BACKSPACE LOOP - ' + new Date().toISOString());\n\n@Injectable()\nexport class MatchaMaskService extends MatchaMaskApplierService {\n public isNumberValue = false;\n public maskIsShown = '';\n public selStart: number | null = null;\n public selEnd: number | null = null;\n public maskChanged = false;\n public maskExpressionArray: string[] = [];\n public previousValue = '';\n public currentValue = '';\n /**\n * Whether we are currently in writeValue function, in this case when applying the mask we don't want to trigger onChange function,\n * since writeValue should be a one way only process of writing the DOM value based on the Angular model value.\n */\n public writingValue = false;\n\n private _emitValue = false;\n private _start!: number;\n private _end!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (_: any) => {};\n\n public readonly _elementRef = inject(ElementRef, { optional: true });\n\n private readonly document = inject(DOCUMENT);\n\n protected override _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n private readonly _renderer = inject(Renderer2, { optional: true });\n\n /**\n * Applies the mask to the input value.\n * @param inputValue The input value to be masked.\n * @param maskExpression The mask expression to apply.\n * @param position The position in the input value.\n * @param justPasted Whether the value was just pasted.\n * @param backspaced Whether the value was backspaced.\n * @param cb Callback function.\n * @returns The masked value.\n */\n public override applyMask(\n inputValue: string | object | boolean | null | undefined,\n maskExpression: string,\n position = 0,\n justPasted = false,\n backspaced = false,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): string {\n // Armazenar maskExpression como propriedade da classe para uso posterior\n this.maskExpression = maskExpression;\n\n // Converter automaticamente número, boolean ou object para string (retrocompatível)\n // Isso previne o erro \"indexOf is not a function\" quando números são passados\n let processedInputValue: string;\n if (inputValue === null || inputValue === undefined) {\n processedInputValue = '';\n } else if (typeof inputValue === 'number') {\n processedInputValue = String(inputValue);\n } else if (typeof inputValue === 'boolean') {\n processedInputValue = inputValue ? 'true' : 'false';\n } else if (typeof inputValue === 'object') {\n // Para objetos, tentar converter para string (JSON.stringify ou toString)\n try {\n processedInputValue = JSON.stringify(inputValue);\n } catch {\n processedInputValue = String(inputValue);\n }\n } else {\n processedInputValue = String(inputValue);\n }\n\n // If no mask expression, return the input value or the actual value\n if (!maskExpression) {\n return processedInputValue !== this.actualValue ? this.actualValue : processedInputValue;\n }\n\n // Show mask in input if required\n this.maskIsShown = this.showMaskTyped\n ? this.showMaskInInput()\n : MaskExpression.EMPTY_STRING;\n\n // Handle specific mask expressions\n if (this.maskExpression === MaskExpression.IP && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(processedInputValue || MaskExpression.HASH);\n }\n if (this.maskExpression === MaskExpression.CPF_CNPJ && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(processedInputValue || MaskExpression.HASH);\n }\n\n // Handle empty input value with mask typed\n if (!processedInputValue && this.showMaskTyped) {\n this.formControlResult(this.prefix);\n return `${this.prefix}${this.maskIsShown}${this.suffix}`;\n }\n\n const getSymbol: string =\n !!processedInputValue && typeof this.selStart === 'number'\n ? (processedInputValue[this.selStart] ?? MaskExpression.EMPTY_STRING)\n : MaskExpression.EMPTY_STRING;\n let newInputValue = '';\n let newPosition = position;\n\n // Handle hidden input or input with asterisk symbol\n if (\n (this.hiddenInput ||\n (processedInputValue && processedInputValue.indexOf(MaskExpression.SYMBOL_STAR) >= 0)) &&\n !this.writingValue\n ) {\n let actualResult: string[] =\n processedInputValue && processedInputValue.length === 1\n ? processedInputValue.split(MaskExpression.EMPTY_STRING)\n : this.actualValue.split(MaskExpression.EMPTY_STRING);\n\n // Handle backspace\n if (backspaced) {\n actualResult = actualResult\n .slice(0, position)\n .concat(actualResult.slice(position + 1));\n }\n\n // Remove mask if showMaskTyped is true\n if (this.showMaskTyped) {\n // eslint-disable-next-line no-param-reassign\n processedInputValue = this.removeMask(processedInputValue);\n actualResult = this.removeMask(actualResult.join('')).split(\n MaskExpression.EMPTY_STRING\n );\n }\n\n // Handle selection start and end\n if (typeof this.selStart === 'object' && typeof this.selEnd === 'object') {\n this.selStart = Number(this.selStart);\n this.selEnd = Number(this.selEnd);\n } else {\n if (processedInputValue !== MaskExpression.EMPTY_STRING && actualResult.length) {\n if (typeof this.selStart === 'number' && typeof this.selEnd === 'number') {\n if (processedInputValue.length > actualResult.length) {\n actualResult.splice(this.selStart, 0, getSymbol);\n } else if (processedInputValue.length < actualResult.length) {\n if (actualResult.length - processedInputValue.length === 1) {\n if (backspaced) {\n actualResult.splice(this.selStart - 1, 1);\n } else {\n actualResult.splice(processedInputValue.length - 1, 1);\n }\n } else {\n actualResult.splice(this.selStart, this.selEnd - this.selStart);\n }\n }\n }\n } else {\n actualResult = [];\n }\n }\n\n // Remove mask if showMaskTyped is true and hiddenInput is false\n if (this.showMaskTyped && !this.hiddenInput) {\n newInputValue = this.removeMask(processedInputValue);\n }\n\n // Handle actual value length\n if (this.actualValue.length) {\n if (actualResult.length < processedInputValue.length) {\n newInputValue = this.shiftTypedSymbols(\n actualResult.join(MaskExpression.EMPTY_STRING)\n );\n } else if (actualResult.length === processedInputValue.length) {\n newInputValue = actualResult.join(MaskExpression.EMPTY_STRING);\n } else {\n newInputValue = processedInputValue;\n }\n } else {\n newInputValue = processedInputValue;\n }\n }\n\n // Handle just pasted input\n if (justPasted && (this.hiddenInput || !this.hiddenInput)) {\n newInputValue = processedInputValue;\n }\n\n // Handle backspace with special characters\n if (\n backspaced &&\n this.specialCharacters.indexOf(\n this.maskExpression[newPosition] ?? MaskExpression.EMPTY_STRING\n ) !== -1 &&\n this.showMaskTyped &&\n !this.prefix\n ) {\n newInputValue = this.currentValue;\n }\n\n // Handle deleted special character\n if (this.deletedSpecialCharacter && newPosition) {\n if (\n this.specialCharacters.includes(\n this.actualValue.slice(newPosition, newPosition + 1)\n )\n ) {\n newPosition = newPosition + 1;\n } else if (\n maskExpression.slice(newPosition - 1, newPosition + 1) !== MaskExpression.MONTHS\n ) {\n newPosition = newPosition - 2;\n }\n\n this.deletedSpecialCharacter = false;\n }\n\n // Remove mask if showMaskTyped is true and placeHolderCharacter length is 1\n if (\n this.showMaskTyped &&\n this.placeHolderCharacter.length === 1 &&\n !this.leadZeroDateTime\n ) {\n newInputValue = this.removeMask(newInputValue);\n }\n\n // Handle mask changed\n if (this.maskChanged) {\n newInputValue = processedInputValue;\n } else {\n newInputValue =\n Boolean(newInputValue) && newInputValue.length ? newInputValue : processedInputValue;\n }\n\n // Handle showMaskTyped and keepCharacterPositions\n if (\n this.showMaskTyped &&\n this.keepCharacterPositions &&\n this.actualValue &&\n !justPasted &&\n !this.writingValue\n ) {\n const value = this.dropSpecialCharacters\n ? this.removeMask(this.actualValue)\n : this.actualValue;\n this.formControlResult(value);\n return this.actualValue\n ? this.actualValue\n : `${this.prefix}${this.maskIsShown}${this.suffix}`;\n }\n\n // Apply the mask using the parent class method\n const result: string = super.applyMask(\n newInputValue,\n maskExpression,\n newPosition,\n justPasted,\n backspaced,\n cb\n );\n\n this.actualValue = this.getActualValue(result);\n\n // handle some separator implications:\n // a.) adjust decimalMarker default (. -> ,) if thousandSeparator is a dot\n if (\n this.thousandSeparator === MaskExpression.DOT &&\n this.decimalMarker === MaskExpression.DOT\n ) {\n this.decimalMarker = MaskExpression.COMMA;\n }\n // b) remove ONLY decimal marker from list of special characters to mask\n // The thousandSeparator should REMAIN in the list to be removed from the final value\n if (\n this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n this.dropSpecialCharacters === true\n ) {\n this.specialCharacters = this.specialCharacters.filter(\n (item: string) =>\n !this._compareOrIncludes(item, this.decimalMarker, null) // Only remove decimalMarker, keep thousandSeparator\n );\n }\n // c) set isNumberValue to true for separator masks to ensure proper number conversion\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n this.isNumberValue = true;\n }\n\n // Update previous and current values\n if (result || result === '') {\n this.previousValue = this.currentValue;\n this.currentValue = result;\n\n this._emitValue =\n this.previousValue !== this.currentValue ||\n (newInputValue !== this.currentValue && this.writingValue) ||\n (this.previousValue === this.currentValue && justPasted);\n }\n\n // Propagate the input value back to the Angular model\n // eslint-disable-next-line no-unused-expressions,@typescript-eslint/no-unused-expressions\n this._emitValue ? this.formControlResult(result) : '';\n\n // Handle hidden input and showMaskTyped\n if (!this.showMaskTyped || (this.showMaskTyped && this.hiddenInput)) {\n if (this.hiddenInput) {\n return `${this.hideInput(result, this.maskExpression)}${this.maskIsShown.slice(result.length)}`;\n }\n return result;\n }\n\n const resLen: number = result.length;\n const prefNmask = `${this.prefix}${this.maskIsShown}${this.suffix}`;\n\n // Handle specific mask expressions\n if (this.maskExpression.includes(MaskExpression.HOURS)) {\n const countSkipedSymbol = this._numberSkipedSymbols(result);\n return `${result}${prefNmask.slice(resLen + countSkipedSymbol)}`;\n } else if (\n this.maskExpression === MaskExpression.IP ||\n this.maskExpression === MaskExpression.CPF_CNPJ\n ) {\n return `${result}${prefNmask}`;\n }\n\n return `${result}${prefNmask.slice(resLen)}`;\n }\n\n // get the number of characters that were shifted\n private _numberSkipedSymbols(value: string): number {\n const regex = /(^|\\D)(\\d\\D)/g;\n let match = regex.exec(value);\n let countSkipedSymbol = 0;\n while (match != null) {\n countSkipedSymbol += 1;\n match = regex.exec(value);\n }\n return countSkipedSymbol;\n }\n\n public applyValueChanges(\n position: number,\n justPasted: boolean,\n backspaced: boolean,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): void {\n const formElement = this._elementRef?.nativeElement;\n if (!formElement) {\n return;\n }\n\n formElement.value = this.applyMask(\n formElement.value,\n this.maskExpression,\n position,\n justPasted,\n backspaced,\n cb\n );\n if (formElement === this._getActiveElement()) {\n return;\n }\n this.clearIfNotMatchFn();\n }\n\n public hideInput(inputValue: string, maskExpression: string): string {\n return inputValue\n .split(MaskExpression.EMPTY_STRING)\n .map((curr: string, index: number) => {\n if (\n this.patterns &&\n this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING] &&\n this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING]?.symbol\n ) {\n return this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING]\n ?.symbol;\n }\n return curr;\n })\n .join(MaskExpression.EMPTY_STRING);\n }\n\n // this function is not necessary, it checks result against maskExpression\n public getActualValue(res: string): string {\n const compare: string[] = res\n .split(MaskExpression.EMPTY_STRING)\n .filter((symbol: string, i: number) => {\n const maskChar = this.maskExpression[i] ?? MaskExpression.EMPTY_STRING;\n return (\n this._checkSymbolMask(symbol, maskChar) ||\n (this.specialCharacters.includes(maskChar) && symbol === maskChar)\n );\n });\n if (compare.join(MaskExpression.EMPTY_STRING) === res) {\n return compare.join(MaskExpression.EMPTY_STRING);\n }\n return res;\n }\n\n public shiftTypedSymbols(inputValue: string): string {\n let symbolToReplace = '';\n const newInputValue: (string | undefined)[] =\n (inputValue &&\n inputValue\n .split(MaskExpression.EMPTY_STRING)\n .map((currSymbol: string, index: number) => {\n if (\n this.specialCharacters.includes(\n inputValue[index + 1] ?? MaskExpression.EMPTY_STRING\n ) &&\n inputValue[index + 1] !== this.maskExpression[index + 1]\n ) {\n symbolToReplace = currSymbol;\n return inputValue[index + 1];\n }\n if (symbolToReplace.length) {\n const replaceSymbol: string = symbolToReplace;\n symbolToReplace = MaskExpression.EMPTY_STRING;\n return replaceSymbol;\n }\n return currSymbol;\n })) ||\n [];\n return newInputValue.join(MaskExpression.EMPTY_STRING);\n }\n\n /**\n * Convert number value to string\n * 3.1415 -> '3.1415'\n * 1e-7 -> '0.0000001'\n */\n public numberToString(value: number | string): string {\n if (\n (!value && value !== 0) ||\n (this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n (this.leadZero || !this.dropSpecialCharacters)) ||\n (this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n this.separatorLimit.length > 14 &&\n String(value).length > 14)\n ) {\n return String(value);\n }\n return Number(value)\n .toLocaleString('fullwide', {\n useGrouping: false,\n maximumFractionDigits: 20,\n })\n .replace(`/${MaskExpression.MINUS}/`, MaskExpression.MINUS);\n }\n\n public showMaskInInput(inputVal?: string): string {\n if (this.showMaskTyped && !!this.shownMaskExpression) {\n if (this.maskExpression.length !== this.shownMaskExpression.length) {\n throw new Error('Mask expression must match mask placeholder length');\n } else {\n return this.shownMaskExpression;\n }\n } else if (this.showMaskTyped) {\n if (inputVal) {\n if (this.maskExpression === MaskExpression.IP) {\n return this._checkForIp(inputVal);\n }\n if (this.maskExpression === MaskExpression.CPF_CNPJ) {\n return this._checkForCpfCnpj(inputVal);\n }\n }\n if (this.placeHolderCharacter.length === this.maskExpression.length) {\n return this.placeHolderCharacter;\n }\n return this.maskExpression.replace(/\\w/g, this.placeHolderCharacter);\n }\n return '';\n }\n\n public clearIfNotMatchFn(): void {\n const formElement = this._elementRef?.nativeElement;\n if (!formElement) {\n return;\n }\n if (\n this.clearIfNotMatch &&\n this.prefix.length + this.maskExpression.length + this.suffix.length !==\n formElement.value.replace(this.placeHolderCharacter, MaskExpression.EMPTY_STRING)\n .length\n ) {\n this.formElementProperty = ['value', MaskExpression.EMPTY_STRING];\n this.applyMask('', this.maskExpression);\n }\n }\n\n public set formElementProperty([name, value]: [string, string | boolean]) {\n if (!this._renderer || !this._elementRef) {\n return;\n }\n //[TODO]: andriikamaldinov1 find better solution\n Promise.resolve().then(() =>\n this._renderer?.setProperty(this._elementRef?.nativeElement, name, value)\n );\n }\n\n public checkDropSpecialCharAmount(mask: string): number {\n const chars: string[] = mask\n .split(MaskExpression.EMPTY_STRING)\n .filter((item: string) => this._findDropSpecialChar(item));\n return chars.length;\n }\n\n public removeMask(inputValue: string): string {\n return this._removeMask(\n this._removeSuffix(this._removePrefix(inputValue)),\n this.specialCharacters.concat('_').concat(this.placeHolderCharacter)\n );\n }\n\n private _checkForIp(inputVal: string): string {\n if (inputVal === MaskExpression.HASH) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inputVal.length; i++) {\n const value = inputVal[i] ?? MaskExpression.EMPTY_STRING;\n if (!value) {\n continue;\n }\n if (value.match('\\\\d')) {\n arr.push(value);\n }\n }\n if (arr.length <= 3) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 3 && arr.length <= 6) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 6 && arr.length <= 9) {\n return this.placeHolderCharacter;\n }\n if (arr.length > 9 && arr.length <= 12) {\n return '';\n }\n return '';\n }\n\n private _checkForCpfCnpj(inputVal: string): string {\n const cpf =\n `${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\n const cnpj =\n `${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `/${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\n\n if (inputVal === MaskExpression.HASH) {\n return cpf;\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inputVal.length; i++) {\n const value = inputVal[i] ?? MaskExpression.EMPTY_STRING;\n if (!value) {\n continue;\n }\n if (value.match('\\\\d')) {\n arr.push(value);\n }\n }\n if (arr.length <= 3) {\n return cpf.slice(arr.length, cpf.length);\n }\n if (arr.length > 3 && arr.length <= 6) {\n return cpf.slice(arr.length + 1, cpf.length);\n }\n if (arr.length > 6 && arr.length <= 9) {\n return cpf.slice(arr.length + 2, cpf.length);\n }\n if (arr.length > 9 && arr.length < 11) {\n return cpf.slice(arr.length + 3, cpf.length);\n }\n if (arr.length === 11) {\n return '';\n }\n if (arr.length === 12) {\n if (inputVal.length === 17) {\n return cnpj.slice(16, cnpj.length);\n }\n return cnpj.slice(15, cnpj.length);\n }\n if (arr.length > 12 && arr.length <= 14) {\n return cnpj.slice(arr.length + 4, cnpj.length);\n }\n return '';\n }\n\n /**\n * Recursively determine the current active element by navigating the Shadow DOM until the Active Element is found.\n */\n private _getActiveElement(document: DocumentOrShadowRoot = this.document): Element | null {\n const shadowRootEl = document?.activeElement?.shadowRoot;\n if (!shadowRootEl?.activeElement) {\n return document.activeElement;\n } else {\n return this._getActiveElement(shadowRootEl);\n }\n }\n\n /**\n * Propogates the input value back to the Angular model by triggering the onChange function. It won't do this if writingValue\n * is true. If that is true it means we are currently in the writeValue function, which is supposed to only update the actual\n * DOM element based on the Angular model value. It should be a one way process, i.e. writeValue should not be modifying the Angular\n * model value too. Therefore, we don't trigger onChange in this scenario.\n * @param inputValue the current form input value\n */\n private formControlResult(inputValue: string): void {\n const outputTransformFn = this.outputTransformFn\n ? this.outputTransformFn\n : (v: unknown) => v;\n this.writingValue = false;\n this.maskChanged = false;\n\n // Para máscaras de separador (currency), fazer conversão direta para número\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR) && this.dropSpecialCharacters) {\n // Remover prefixo e sufixo\n let cleanValue = inputValue;\n if (this.prefix) {\n cleanValue = cleanValue.replace(this.prefix, '');\n }\n if (this.suffix) {\n cleanValue = cleanValue.replace(this.suffix, '');\n }\n\n // Remover separador de milhares\n if (this.thousandSeparator) {\n cleanValue = cleanValue.split(this.thousandSeparator).join('');\n }\n\n // Converter decimal marker para ponto\n const markers = Array.isArray(this.decimalMarker)\n ? this.decimalMarker\n : [this.decimalMarker];\n for (const marker of markers) {\n if (marker && marker !== '.') {\n cleanValue = cleanValue.replace(marker, '.');\n }\n }\n\n // Converter para número\n const numValue = parseFloat(cleanValue);\n const finalValue = isNaN(numValue) ? 0 : numValue;\n\n this.onChange(outputTransformFn(finalValue));\n return;\n }\n\n // Para máscaras de separador, garantir que isNumberValue é true\n // Isso assegura a conversão correta para número\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n this.isNumberValue = true;\n }\n\n if (Array.isArray(this.dropSpecialCharacters)) {\n this.onChange(\n outputTransformFn(\n this._toNumber(\n this._checkSymbols(\n this._removeMask(\n this._removeSuffix(this._removePrefix(inputValue)),\n this.dropSpecialCharacters\n )\n )\n )\n )\n );\n } else if (\n this.dropSpecialCharacters ||\n (!this.dropSpecialCharacters && this.prefix === inputValue)\n ) {\n this.onChange(\n outputTransformFn(\n this._toNumber(\n this._checkSymbols(this._removeSuffix(this._removePrefix(inputValue)))\n )\n )\n );\n } else {\n this.onChange(outputTransformFn(this._toNumber(inputValue)));\n }\n }\n\n private _toNumber(value: string | number | undefined | null) {\n if (!this.isNumberValue || value === MaskExpression.EMPTY_STRING) {\n return value;\n }\n if (\n this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n (this.leadZero || !this.dropSpecialCharacters)\n ) {\n return value;\n }\n\n if (String(value).length > 14 && this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n return String(value);\n }\n\n const num = Number(value);\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR) && Number.isNaN(num)) {\n const val = String(value).replace(',', '.');\n return Number(val);\n }\n\n return Number.isNaN(num) ? value : num;\n }\n\n private _removeMask(value: string, specialCharactersForRemove: string[]): string {\n if (\n this.maskExpression.startsWith(MaskExpression.PERCENT) &&\n value.includes(MaskExpression.DOT)\n ) {\n return value;\n }\n\n return value\n ? value.replace(\n this._regExpForRemove(specialCharactersForRemove),\n MaskExpression.EMPTY_STRING\n )\n : value;\n }\n\n private _removePrefix(value: string): string {\n if (!this.prefix) {\n return value;\n }\n return value ? value.replace(this.prefix, MaskExpression.EMPTY_STRING) : value;\n }\n\n private _removeSuffix(value: string): string {\n if (!this.suffix) {\n return value;\n }\n return value ? value.replace(this.suffix, MaskExpression.EMPTY_STRING) : value;\n }\n\n private _retrieveSeparatorValue(result: string): string {\n let specialCharacters = Array.isArray(this.dropSpecialCharacters)\n ? this.specialCharacters.filter((v) => {\n return (this.dropSpecialCharacters as string[]).includes(v);\n })\n : [...this.specialCharacters]; // Criar cópia para não modificar o original\n\n if (\n !this.deletedSpecialCharacter &&\n this._checkPatternForSpace() &&\n result.includes(MaskExpression.WHITE_SPACE) &&\n this.maskExpression.includes(MaskExpression.SYMBOL_STAR)\n ) {\n specialCharacters = specialCharacters.filter(\n (char) => char !== MaskExpression.WHITE_SPACE\n );\n }\n\n // Para máscaras de separador, NÃO remover o decimalMarker - ele será convertido para ponto depois\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n specialCharacters = specialCharacters.filter(\n (char) => !this._compareOrIncludes(char, this.decimalMarker, null)\n );\n }\n\n return this._removeMask(result, specialCharacters as string[]);\n }\n\n private _regExpForRemove(specialCharactersForRemove: string[]): RegExp {\n return new RegExp(\n specialCharactersForRemove.map((item: string) => `\\\\${item}`).join('|'),\n 'gi'\n );\n }\n\n private _replaceDecimalMarkerToDot(value: string): string {\n const markers = Array.isArray(this.decimalMarker)\n ? this.decimalMarker\n : [this.decimalMarker];\n\n return value.replace(this._regExpForRemove(markers), MaskExpression.DOT);\n }\n\n public _checkSymbols(result: string): string | number | undefined | null {\n let processedResult = result;\n\n if (processedResult === MaskExpression.EMPTY_STRING) {\n return processedResult;\n }\n\n if (\n this.maskExpression.startsWith(MaskExpression.PERCENT) &&\n this.decimalMarker === MaskExpression.COMMA\n ) {\n processedResult = processedResult.replace(MaskExpression.COMMA, MaskExpression.DOT);\n }\n\n // Para máscaras de separador (currency), processar de forma especial\n // Remover separador de milhares e converter decimal marker para ponto\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n let cleanValue = processedResult;\n\n // Remover separador de milhares\n if (this.thousandSeparator) {\n cleanValue = cleanValue.split(this.thousandSeparator).join('');\n }\n\n // Converter decimal marker para ponto\n const markers = Array.isArray(this.decimalMarker)\n ? this.decimalMarker\n : [this.decimalMarker];\n for (const marker of markers) {\n if (marker && marker !== '.') {\n cleanValue = cleanValue.replace(marker, '.');\n }\n }\n\n return cleanValue;\n }\n\n const separatorPrecision: number | null = this._retrieveSeparatorPrecision(\n this.maskExpression\n );\n\n const separatorValue: string =\n this.specialCharacters.length === 0\n ? this._retrieveSeparatorValue(processedResult)\n : this._replaceDecimalMarkerToDot(this._retrieveSeparatorValue(processedResult));\n\n if (!this.isNumberValue) {\n return separatorValue;\n }\n if (separatorPrecision) {\n if (processedResult === this.decimalMarker) {\n return null;\n }\n if (separatorValue.length > 14) {\n return String(separatorValue);\n }\n return this._checkPrecision(this.maskExpression, separatorValue);\n } else {\n return separatorValue;\n }\n }\n\n private _checkPatternForSpace(): boolean {\n for (const key in this.patterns) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.patterns[key] && this.patterns[key]?.hasOwnProperty('pattern')) {\n const patternString = this.patterns[key]?.pattern.toString();\n const pattern = this.patterns[key]?.pattern;\n if (\n (patternString?.includes(MaskExpression.WHITE_SPACE) as boolean) &&\n pattern?.test(this.maskExpression)\n ) {\n return true;\n }\n }\n }\n return false;\n }\n // TODO should think about helpers or separting decimal precision to own property\n private _retrieveSeparatorPrecision(maskExpretion: string): number | null {\n const matcher: RegExpMatchArray | null = maskExpretion.match(\n new RegExp(`^separator\\\\.([^d]*)`)\n );\n return matcher ? Number(matcher[1]) : null;\n }\n\n public _checkPrecision(separatorExpression: string, separatorValue: string): number | string {\n const separatorPrecision = this.getPrecision(separatorExpression);\n let value = separatorValue;\n\n if (\n separatorExpression.indexOf('2') > 0 ||\n (this.leadZero && Number(separatorPrecision) > 0)\n ) {\n if (this.decimalMarker === MaskExpression.COMMA && this.leadZero) {\n value = value.replace(',', '.');\n }\n return this.leadZero\n ? Number(value).toFixed(Number(separatorPrecision))\n : Number(value).toFixed(2);\n }\n return this.numberToString(value);\n }\n\n public _repeatPatternSymbols(maskExp: string): string {\n return (\n (maskExp.match(/{[0-9]+}/) &&\n maskExp\n .split(MaskExpression.EMPTY_STRING)\n .reduce((accum: string, currVal: string, index: number): string => {\n this._start =\n currVal === MaskExpression.CURLY_BRACKETS_LEFT ? index : this._start;\n if (currVal !== MaskExpression.CURLY_BRACKETS_RIGHT) {\n return this._findSpecialChar(currVal) ? accum + currVal : accum;\n }\n this._end = index;\n const repeatNumber = Number(maskExp.slice(this._start + 1, this._end));\n const replaceWith: string = new Array(repeatNumber + 1).join(\n maskExp[this._start - 1]\n );\n if (\n maskExp.slice(0, this._start).length > 1 &&\n maskExp.includes(MaskExpression.LETTER_S)\n ) {\n const symbols = maskExp.slice(0, this._start - 1);\n return symbols.includes(MaskExpression.CURLY_BRACKETS_LEFT)\n ? accum + replaceWith\n : symbols + accum + replaceWith;\n } else {\n return accum + replaceWith;\n }\n }, '')) ||\n maskExp\n );\n }\n\n public currentLocaleDecimalMarker(): string {\n return (1.1).toLocaleString().substring(1, 2);\n }\n}\n","import { OnChanges, SimpleChanges, Input, Output, EventEmitter, HostListener, Directive, forwardRef, inject, HostBinding, ElementRef } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ControlValueAccessor,\n FormControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CustomKeyboardEvent } from './custom-keyboard-event';\nimport { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG, timeMasks, withoutValidation } from './matcha-mask.config';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Directive({\n selector: 'input[matchaMask], textarea[matchaMask]',\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaMaskCompatibleDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatchaMaskCompatibleDirective),\n multi: true,\n },\n MatchaMaskService,\n ],\n exportAs: 'matchaMask',\n})\nexport class MatchaMaskCompatibleDirective implements ControlValueAccessor, OnChanges, Validator {\n private _mask: string | undefined | null = '';\n @Input('matchaMask')\n get mask(): string | undefined | null { return this._mask; }\n set mask(v: string | undefined | null) { this._mask = v; }\n\n @HostBinding('attr.data-matcha-mask')\n get maskAttr(): string | null {\n return this._mask ?? null;\n }\n\n @Input() specialCharacters: MatchaMaskConfig['specialCharacters'] = [];\n @Input() patterns: MatchaMaskConfig['patterns'] = {};\n\n private _prefix: MatchaMaskConfig['prefix'] = '';\n @Input()\n get prefix(): MatchaMaskConfig['prefix'] { return this._prefix; }\n set prefix(v: MatchaMaskConfig['prefix']) { this._prefix = v; }\n\n @HostBinding('attr.data-prefix')\n get prefixAttr(): string | null {\n return this._prefix || null;\n }\n\n private _suffix: MatchaMaskConfig['suffix'] = '';\n @Input()\n get suffix(): MatchaMaskConfig['suffix'] { return this._suffix; }\n set suffix(v: MatchaMaskConfig['suffix']) { this._suffix = v; }\n\n @HostBinding('attr.data-suffix')\n get suffixAttr(): string | null {\n return this._suffix || null;\n }\n\n @Input() thousandSeparator: MatchaMaskConfig['thousandSeparator'] = ' ';\n @Input() decimalMarker: MatchaMaskConfig['decimalMarker'] = '.';\n\n private _dropSpecialCharacters: MatchaMaskConfig['dropSpecialCharacters'] | null = null;\n @Input()\n set dropSpecialCharacters(value: MatchaMaskConfig['dropSpecialCharacters'] | string | null) {\n // Converter string \"true\" ou \"false\" para boolean (retrocompatível)\n if (value === 'true' || value === true) {\n this._dropSpecialCharacters = true;\n } else if (value === 'false' || value === false) {\n this._dropSpecialCharacters = false;\n } else if (Array.isArray(value) || value === null) {\n this._dropSpecialCharacters = value;\n } else {\n // Para qualquer outro valor string, tratar como false\n this._dropSpecialCharacters = false;\n }\n }\n get dropSpecialCharacters(): MatchaMaskConfig['dropSpecialCharacters'] | null {\n return this._dropSpecialCharacters;\n }\n // Helper function para converter string para boolean (retrocompatível)\n private convertToBoolean(value: boolean | string | null | undefined): boolean | null {\n if (value === null || value === undefined) {\n return null;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n return value.toLowerCase() === 'true';\n }\n return false;\n }\n\n private _hiddenInput: boolean | null = null;\n @Input()\n set hiddenInput(value: boolean | string | null) {\n this._hiddenInput = this.convertToBoolean(value);\n }\n get hiddenInput(): boolean | null {\n return this._hiddenInput;\n }\n\n private _showMaskTyped: boolean | null = null;\n @Input()\n set showMaskTyped(value: boolean | string | null) {\n this._showMaskTyped = this.convertToBoolean(value);\n }\n get showMaskTyped(): boolean | null {\n return this._showMaskTyped;\n }\n\n @Input() placeHolderCharacter: MatchaMaskConfig['placeHolderCharacter'] | null = null;\n @Input() shownMaskExpression: MatchaMaskConfig['shownMaskExpression'] | null = null;\n\n private _clearIfNotMatch: boolean | null = null;\n @Input()\n set clearIfNotMatch(value: boolean | string | null) {\n this._clearIfNotMatch = this.convertToBoolean(value);\n }\n get clearIfNotMatch(): boolean | null {\n return this._clearIfNotMatch;\n }\n\n private _validation: boolean | null = null;\n @Input()\n set validation(value: boolean | string | null) {\n this._validation = this.convertToBoolean(value);\n }\n get validation(): boolean | null {\n return this._validation;\n }\n @Input() separatorLimit: MatchaMaskConfig['separatorLimit'] | null = '';\n\n private _allowNegativeNumbers: boolean | null = null;\n @Input()\n set allowNegativeNumbers(value: boolean | string | null) {\n this._allowNegativeNumbers = this.convertToBoolean(value);\n }\n get allowNegativeNumbers(): boolean | null {\n return this._allowNegativeNumbers;\n }\n\n private _leadZeroDateTime: boolean | null = null;\n @Input()\n set leadZeroDateTime(value: boolean | string | null) {\n this._leadZeroDateTime = this.convertToBoolean(value);\n }\n get leadZeroDateTime(): boolean | null {\n return this._leadZeroDateTime;\n }\n\n private _leadZero: boolean | null = null;\n @Input()\n set leadZero(value: boolean | string | null) {\n this._leadZero = this.convertToBoolean(value);\n }\n get leadZero(): boolean | null {\n return this._leadZero;\n }\n\n private _triggerOnMaskChange: boolean | null = null;\n @Input()\n set triggerOnMaskChange(value: boolean | string | null) {\n this._triggerOnMaskChange = this.convertToBoolean(value);\n }\n get triggerOnMaskChange(): boolean | null {\n return this._triggerOnMaskChange;\n }\n\n private _apm: boolean | null = null;\n @Input()\n set apm(value: boolean | string | null) {\n this._apm = this.convertToBoolean(value);\n }\n get apm(): boolean | null {\n return this._apm;\n }\n\n @Input() inputTransformFn: MatchaMaskConfig['inputTransformFn'] | null = null;\n @Input() outputTransformFn: MatchaMaskConfig['outputTransformFn'] | null = null;\n\n private _keepCharacterPositions: boolean | null = null;\n @Input()\n set keepCharacterPositions(value: boolean | string | null) {\n this._keepCharacterPositions = this.convertToBoolean(value);\n }\n get keepCharacterPositions(): boolean | null {\n return this._keepCharacterPositions;\n }\n\n private _instantPrefix: boolean | null = null;\n @Input()\n set instantPrefix(value: boolean | string | null) {\n this._instantPrefix = this.convertToBoolean(value);\n }\n get instantPrefix(): boolean | null {\n return this._instantPrefix;\n }\n\n private _currencyMode: boolean | null = null;\n @Input()\n set currencyMode(value: boolean | string | null) {\n this._currencyMode = this.convertToBoolean(value);\n }\n get currencyMode(): boolean | null {\n return this._currencyMode;\n }\n\n @Output() maskFilled = new EventEmitter<void>();\n\n private _maskValue = '';\n private _inputValue = '';\n private _position: number | null = null;\n private _code = '';\n private _maskExpressionArray: string[] = [];\n private _justPasted = false;\n private _isFocused = false;\n /**For IME composition event */\n private _isComposing = false;\n\n public _maskService = inject(MatchaMaskService, { self: true });\n\n private readonly document = inject(DOCUMENT);\n\n private readonly elementRef = inject(ElementRef);\n\n protected _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (_: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouch = () => {};\n\n public ngOnChanges(changes: SimpleChanges): void {\n const {\n mask,\n specialCharacters,\n patterns,\n prefix,\n suffix,\n thousandSeparator,\n decimalMarker,\n dropSpecialCharacters,\n hiddenInput,\n showMaskTyped,\n placeHolderCharacter,\n shownMaskExpression,\n clearIfNotMatch,\n validation,\n separatorLimit,\n allowNegativeNumbers,\n leadZeroDateTime,\n leadZero,\n triggerOnMaskChange,\n apm,\n inputTransformFn,\n outputTransformFn,\n keepCharacterPositions,\n instantPrefix,\n currencyMode,\n } = changes;\n\n if (mask) {\n this._mask = mask.currentValue ?? '';\n this._maskValue = this._mask ?? '';\n this._maskExpressionArray = this._maskValue.split('');\n }\n\n if (specialCharacters) {\n this._maskService.specialCharacters = specialCharacters.currentValue ?? [];\n }\n\n if (patterns) {\n this._maskService.patterns = patterns.currentValue ?? {};\n }\n\n if (prefix) {\n this._prefix = prefix.currentValue ?? '';\n this._maskService.prefix = this._prefix ?? '';\n }\n\n if (suffix) {\n this._suffix = suffix.currentValue ?? '';\n this._maskService.suffix = this._suffix ?? '';\n }\n\n if (thousandSeparator) {\n this._maskService.thousandSeparator = thousandSeparator.currentValue ?? ' ';\n }\n\n if (decimalMarker) {\n this._maskService.decimalMarker = decimalMarker.currentValue ?? '.';\n }\n\n if (dropSpecialCharacters) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.dropSpecialCharacters;\n if (value !== null) {\n this._maskService.dropSpecialCharacters = value;\n }\n }\n\n if (hiddenInput) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.hiddenInput;\n if (value !== null) {\n this._maskService.hiddenInput = value;\n }\n }\n\n if (showMaskTyped) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.showMaskTyped;\n if (value !== null) {\n this._maskService.showMaskTyped = value;\n }\n }\n\n if (placeHolderCharacter) {\n this._maskService.placeHolderCharacter = placeHolderCharacter.currentValue;\n }\n\n if (shownMaskExpression) {\n this._maskService.shownMaskExpression = shownMaskExpression.currentValue;\n }\n\n if (clearIfNotMatch) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.clearIfNotMatch;\n if (value !== null) {\n this._maskService.clearIfNotMatch = value;\n }\n }\n\n if (validation) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.validation;\n if (value !== null) {\n this._maskService.validation = value;\n }\n }\n\n if (separatorLimit) {\n this._maskService.separatorLimit = separatorLimit.currentValue ?? '';\n }\n\n if (allowNegativeNumbers) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.allowNegativeNumbers;\n if (value !== null) {\n this._maskService.allowNegativeNumbers = value;\n }\n }\n\n if (leadZeroDateTime) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.leadZeroDateTime;\n if (value !== null) {\n this._maskService.leadZeroDateTime = value;\n }\n }\n\n if (leadZero) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.leadZero;\n if (value !== null) {\n this._maskService.leadZero = value;\n }\n }\n\n if (triggerOnMaskChange) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.triggerOnMaskChange;\n if (value !== null) {\n this._maskService.triggerOnMaskChange = value;\n }\n }\n\n if (apm) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.apm;\n if (value !== null) {\n this._maskService.apm = value;\n }\n }\n\n if (inputTransformFn) {\n this._maskService.inputTransformFn = inputTransformFn.currentValue;\n }\n\n if (outputTransformFn) {\n this._maskService.outputTransformFn = outputTransformFn.currentValue;\n }\n\n if (keepCharacterPositions) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.keepCharacterPositions;\n if (value !== null) {\n this._maskService.keepCharacterPositions = value;\n }\n }\n\n if (instantPrefix) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.instantPrefix;\n if (value !== null) {\n this._maskService.instantPrefix = value;\n }\n }\n\n if (currencyMode) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.currencyMode;\n if (value !== null) {\n this._maskService.currencyMode = value;\n }\n }\n }\n\n @HostListener('paste', ['$event'])\n public onPaste(): void {\n this._justPasted = true;\n }\n\n @HostListener('focus', ['$event'])\n public onFocus(event: FocusEvent): void {\n this._isFocused = true;\n // Implementar lógica de foco se necessário\n }\n\n @HostListener('ngModelChange', ['$event'])\n public onModelChange(value: string | number): void {\n // Ignorar se estamos no meio de uma operação de escrita\n if (this._maskService.writingValue) {\n return;\n }\n\n // Se o valor é um número, significa que veio do formControlResult (já processado)\n // Não precisamos reprocessar para evitar loop infinito\n if (typeof value === 'number') {\n return;\n }\n\n // Converter para string\n const stringValue = value || '';\n this._inputValue = stringValue;\n\n // Para máscaras, não chamar applyMask aqui pois isso criaria um loop\n // O onInput já cuida de aplicar a máscara durante a digitação\n // O writeValue cuida de formatar valores vindos do backend\n if (!this._mask || this._mask.trim() === '') {\n this._maskService.onChange(stringValue);\n }\n }\n\n @HostListener('input', ['$event'])\n public onInput(event: KeyboardEvent): void {\n if (this._isComposing) {\n return;\n }\n const target = event.target as HTMLInputElement;\n const value = target.value;\n\n // Se o usuário está tentando limpar o campo (apenas prefixo/sufixo restante), permitir vazio\n const prefix = this._maskService.prefix || '';\n const suffix = this._maskService.suffix || '';\n const valueWithoutPrefixSuffix = value.replace(prefix, '').replace(suffix, '').trim();\n\n // Se ficou vazio ou apenas com separadores/zeros, permitir limpar completamente\n const onlySymbols = /^[^\\d]*$/.test(valueWithoutPrefixSuffix) ||\n /^0+[,.]?0*$/.test(valueWithoutPrefixSuffix);\n\n if (valueWithoutPrefixSuffix === '' || onlySymbols) {\n target.value = '';\n this._maskService.onChange('');\n return;\n }\n\n // Aplicar máscara se definida\n if (this._mask && this._mask.trim() !== '') {\n const maskedValue = this._maskService.applyMask(value, this._mask);\n if (maskedValue !== value) {\n target.value = maskedValue;\n }\n // NÃO chamar onChange aqui - o formControlResult no applyMask já cuida disso\n // com o valor limpo (sem prefixo, sem separadores, convertido para número)\n } else {\n this._maskService.onChange(value);\n }\n }\n\n @HostListener('compositionstart', ['$event'])\n public onCompositionStart(event: CompositionEvent): void {\n this._isComposing = true;\n }\n\n @HostListener('compositionend', ['$event'])\n public onCompositionEnd(event: CompositionEvent): void {\n this._isComposing = false;\n const target = event.target as HTMLInputElement;\n const value = target.value;\n this._maskService.onChange(value);\n }\n\n @HostListener('blur', ['$event'])\n public onBlur(event: FocusEvent): void {\n this._isFocused = false;\n this.onTouch();\n }\n\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n // Implementar lógica de clique se necessário\n }\n\n @HostListener('keydown', ['$event'])\n public onKeyDown(event: KeyboardEvent): void {\n // Implementar lógica de teclado se necessário\n }\n\n public writeValue(value: string | number | null | undefined): void {\n // Se já estamos escrevendo, não processar novamente (prevenir loop infinito)\n if (this._maskService.writingValue) {\n return;\n }\n\n this._maskService.writingValue = true;\n\n // Converter automaticamente número para string (retrocompatível)\n // Isso previne o erro \"indexOf is not a function\" quando números são passados\n let inputValue: string;\n if (value === null || value === undefined) {\n inputValue = '';\n } else if (typeof value === 'number') {\n // Para máscaras de separador, formatar o número com casas decimais\n if (this._mask && this._mask.trim().startsWith('separator.')) {\n const precision = parseInt(this._mask.split('.')[1], 10) || 2;\n inputValue = value.toFixed(precision).replace('.', ',');\n } else {\n inputValue = value.toString();\n }\n } else {\n inputValue = String(value);\n }\n\n // Para máscaras de separador, converter ponto para vírgula antes de processar\n // Isso permite que valores do backend (ex: 10.5) sejam formatados corretamente\n if (this._mask && this._mask.trim().startsWith('separator.') && inputValue.includes('.')) {\n const decimalMarker = this._maskService.decimalMarker;\n const actualDecimalMarker = decimalMarker === ',' ||\n (Array.isArray(decimalMarker) && decimalMarker.includes(',')) ? ',' : '.';\n\n if (actualDecimalMarker === ',') {\n // Converter ponto para vírgula para que applyMask processe corretamente\n inputValue = inputValue.replace('.', ',');\n }\n }\n\n this._inputValue = inputValue;\n\n // Aplicar máscara se definida\n if (this._mask && this._mask.trim() !== '') {\n const maskedValue = this._maskService.applyMask(inputValue, this._mask);\n\n // Atualizar o valor do elemento HTML diretamente usando ElementRef\n if (this.elementRef && this.elementRef.nativeElement) {\n this.elementRef.nativeElement.value = maskedValue;\n }\n }\n\n this._maskService.writingValue = false;\n }\n\n public registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n this._maskService.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n // Implementar lógica de desabilitar se necessário\n }\n\n public validate(control: FormControl): ValidationErrors | null {\n // Implementar validação se necessário\n return null;\n }\n}\n","/**\n * Componente MatchaInputPhone\n * \n * Componente Angular para entrada de telefone internacional com seleção de país, máscara dinâmica e exibição de bandeira.\n * \n * Funcionalidades:\n * - Seleção de país com dropdown e bandeira.\n * - Máscara dinâmica de acordo com o país e DDD digitado.\n * - Suporte a diferentes formatos de telefone (fixo/celular) para o Brasil.\n * - Emissão de evento ao alterar o valor do telefone.\n * - Inicialização automática pelo valor informado ou pelo idioma do navegador.\n * \n * Inputs:\n * - fallbackMask: string - Máscara padrão caso não seja encontrada uma específica.\n * - label: string - Rótulo do campo (padrão: 'Telefone').\n * - value: string - Valor inicial do telefone (com ou sem DDI).\n * \n * Outputs:\n * - onChange: EventEmitter<string> - Emite o valor do telefone completo (com DDI) ao alterar.\n * \n * ViewChild:\n * - inputSelector: ElementRef - Referência ao container do input (usado para fechar o dropdown).\n * - phoneRef: ElementRef - Referência ao input do telefone.\n * \n * Métodos principais:\n * - ngOnInit: Inicializa o componente pelo valor ou idioma.\n * - ngOnChanges: Atualiza o valor ao receber novo input externo.\n * - initCountryPhone: Inicializa país e máscara pelo valor do telefone.\n * - selectMaskForDialCode: Seleciona a máscara conforme país e DDD.\n * - selectCountry: Troca o país selecionado e atualiza máscara.\n * - onInput: Atualiza máscara e emite evento ao digitar.\n * - toggleDropdown: Abre/fecha o dropdown de países.\n */\nimport { \n Component, \n Renderer2, \n OnChanges, \n OnDestroy, \n OnInit, \n SimpleChanges, \n ViewChild, \n ElementRef, \n Input, \n Output, \n EventEmitter, \n ChangeDetectorRef, \n} from '@angular/core';\nimport { getCountryISO2 } from './all-countries';\n\n@Component({\n selector: 'matcha-input-phone',\n templateUrl: './input-phone.component.html',\n standalone: false\n})\nexport class MatchaInputPhoneComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('inputSelector') inputSelector!: ElementRef;\n @ViewChild('phoneRef') phoneRef!: ElementRef;\n @Input('fallbackMask') fallbackMask: string = '00 0000 0000'; \n @Input('value') value?: string; \n @Output() onChange: EventEmitter<string> = new EventEmitter<string>();\n\n public typeMask: string = ''; \n public labelHover: string = 'su';\n public allCountries: any[] = getCountryISO2();\n public isOpen: boolean = false;\n public selectedCountry: any;\n public inputValueModel: string = '';\n private clickListener: (() => void) | null = null;\n public isInitialized: boolean = false;\n constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef) {\n \n }\n\n ngOnInit() {\n this.value ? this.initCountryPhone(this.value) : this.initCountrylanguageNavigator();\n this.cdr.detectChanges();\n this.isInitialized = true;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] && !changes['value'].firstChange) {\n \n this.value = changes['value'].currentValue;\n if (!this.value) {\n this.inputValueModel = this.value ?? '';\n return;\n }\n this.initCountryPhone(this.value);\n this.cdr.detectChanges();\n }\n }\n\n initCountryPhone(phone: string) {\n \n if (!phone.startsWith('+')) {\n \n this.setCountryAndInputValue('br', phone);\n return;\n }\n\n \n const phoneWithoutPlus = phone.replace('+', '');\n const countryDialCode = this.selectedCountry?.dialCode;\n \n if (phoneWithoutPlus.startsWith(countryDialCode)) {\n \n this.setCountryAndInputValue(this.selectedCountry.iso2, phoneWithoutPlus.replace(countryDialCode, ''));\n \n this.inputValueModel = phoneWithoutPlus.replace(countryDialCode, '');\n \n } else {\n \n this.matchCountryAndSetInputValue(phoneWithoutPlus);\n }\n }\n\n private setCountryAndInputValue(iso2: string, phone: string) {\n \n this.selectedCountry = this.allCountries.find((country) => country.iso2 === iso2);\n \n this.inputValueModel = phone.startsWith('0') ? phone.slice(1) : phone;\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000', this.inputValueModel);\n }\n\n private matchCountryAndSetInputValue(phoneWithoutPlus: string) {\n \n const matchingCountry = this.getMatchingCountry(phoneWithoutPlus);\n\n \n if (matchingCountry.length === 1) {\n \n this.setCountryAndInputValue(matchingCountry[0].iso2, phoneWithoutPlus.replace(matchingCountry[0].dialCode, ''));\n } else {\n \n this.matchAreaCodeAndSetInputValue(phoneWithoutPlus, matchingCountry);\n }\n }\n\n private getMatchingCountry(phoneWithoutPlus: string) {\n \n return this.allCountries.filter((country) => {\n const dialCode = country.dialCode;\n return phoneWithoutPlus.startsWith(dialCode);\n });\n }\n\n private matchAreaCodeAndSetInputValue(phoneWithoutPlus: string, matchingCountry: any[]) {\n \n const phoneWithoutDialCode = phoneWithoutPlus.replace(matchingCountry[0].dialCode, '');\n \n const filterAreaCode = phoneWithoutDialCode.substring(0, 3);\n\n \n const matchingAreaCode = matchingCountry.filter((country) => {\n if (country.areaCodes) {\n return country.areaCodes.includes(filterAreaCode);\n }\n });\n\n \n if (matchingAreaCode.length === 1) {\n \n this.setCountryAndInputValue(matchingAreaCode[0].iso2, phoneWithoutDialCode);\n } else {\n \n const defaultCountry = matchingCountry.find((country) => country.priority === 0);\n this.setCountryAndInputValue(defaultCountry.iso2, phoneWithoutDialCode);\n }\n }\n\n selectMaskForDialCode(inputDigits: string, targetValuePhone?: string) {\n const previousMask = this.typeMask;\n const maskArray = this.selectedCountry?.mask;\n const maskIndex = this.selectedCountry?.areaCodes\n ? this.selectedCountry.areaCodes.findIndex((code: string) => inputDigits === code)\n : -1;\n\n if (this.selectedCountry?.iso2 === 'br' && (targetValuePhone && targetValuePhone.length > 2)) {\n const eventInput = targetValuePhone.substring(2)\n if (eventInput && eventInput[0] === '9') {\n this.typeMask = \"00 0 0000 0000\";\n this.cdr.detectChanges();\n return;\n }\n }\n\n if (Array.isArray(maskArray)) {\n if (maskIndex !== -1 && maskArray[maskIndex]) {\n this.typeMask = maskArray[maskIndex];\n } else if (maskArray[0]) {\n this.typeMask = maskArray[0];\n } else {\n this.typeMask = this.fallbackMask;\n }\n } else {\n this.typeMask = this.fallbackMask;\n }\n\n \n if (previousMask !== this.typeMask) this.inputValueModel = '';\n this.cdr.detectChanges();\n}\n\n initCountrylanguageNavigator() {\n \n let lang = navigator.language;\n if (lang.includes('-')) {\n const langParts = lang.split('-');\n lang = langParts[1];\n }\n\n \n this.selectedCountry = this.allCountries.find((country) => country.iso2 === lang.toLocaleLowerCase());\n\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000');\n }\n\n public selectCountry(country: any): void {\n this.selectedCountry = country;\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000');\n this.isOpen = false;\n \n this.onChange.emit('+' + this.selectedCountry.dialCode + this.inputValueModel);\n\n this.removeClickListener();\n this.cdr.detectChanges();\n }\n\n toggleDropdown(): void {\n this.isOpen = !this.isOpen;\n \n this.clickListener = this.renderer.listen('window', 'click', (event: Event) => {\n if (this.isOpen && !this.inputSelector.nativeElement.contains(event.target)) {\n this.isOpen = false;\n this.removeClickListener();\n }\n });\n this.cdr.detectChanges();\n }\n\n private removeClickListener() {\n \n if (this.clickListener) {\n this.clickListener();\n this.clickListener = null;\n }\n }\n\n onInput(event: any): void {\n this.phoneRef.nativeElement.value = event.target.value.replace(/[^\\d\\s]/g, '');\n let targetValuePhone = event.target.value.replace(/\\D/g, '');\n \n this.onChange.emit('+' + this.selectedCountry.dialCode + this.inputValueModel);\n\n const inputDigits = targetValuePhone.substring(0, 3);\n if (inputDigits) {\n this.selectMaskForDialCode(inputDigits, targetValuePhone);\n }\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n \n this.removeClickListener();\n }\n\n}\n","\n<div class=\"flex-row position-relative px-16 gap-8\" #inputSelector>\n <div class=\"min-h-24 radius-8 cursor-pointer d-flex gap-8 flex-align-center fs-16\" (click)=\"toggleDropdown()\">\n <div class=\"d-flex-row flex-align-center\">\n <img alt=\"\" [src]=\"'https://flagcdn.com/16x12/'+ selectedCountry?.iso2?.toLowerCase() + '.png'\"\n height=\"16\">\n </div>\n <span class=\"w-16 fs-16\"\n [ngClass]=\"isOpen ? 'i-matcha-action_arrow_up': 'i-matcha-action_arrow_down'\"></span>\n\n </div>\n <input *ngIf=\"isInitialized\" #phoneRef type=\"text\" placeholder=\"{{ typeMask }}\"\n [(ngModel)]=\"inputValueModel\"\n pattern=\"[0-9]*\" (keyup)=\"onInput($event)\" [matchaMask]=\"typeMask\">\n\n <ng-container *ngIf=\"isOpen\">\n <div class=\"position-absolute z-index-10\">\n <div class=\"grid-1 gap-16 radius-8 z-index-10 p-8 w-300 position-absolute background-surface elevation-z-1\"\n style=\"top: calc(100% + 10px); overflow: hidden; height: 300px; overflow-y: auto;\">\n\n <label *ngFor=\"let country of allCountries; let i = index\"\n class=\"fs-16 lh-18 cursor-pointer d-flex-align-center p-8 ts-300-l\"\n [ngClass]=\"labelHover === i+'bg' ? 'background-bg' : 'background-surface'\"\n (mouseover)=\"labelHover = i+'bg'\" (mouseout)=\"labelHover = i+'su'\"\n (click)=\"selectCountry(country)\">\n <img alt=\"\" class=\"mr-8\"\n [src]=\"'https://flagcdn.com/16x12/'+ country?.iso2?.toLowerCase() + '.png'\" height=\"16\">\n {{country.name}}\n </label>\n </div>\n </div>\n </ng-container>\n</div>\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'matcha-step',\n template: `<ng-template><ng-content></ng-content></ng-template>`,\n standalone: false\n})\nexport class StepComponent {\n @Input('title') step: any;\n @ViewChild(TemplateRef, { static: true }) template!: TemplateRef<any>;\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class MatchaStepperStateService {\n private steps: any[] = [];\n private _steps$ = new BehaviorSubject<any[]>([]);\n steps$ = this._steps$.asObservable();\n\n private _activeStep$ = new BehaviorSubject<number>(0);\n activeStep$ = this._activeStep$.asObservable();\n\n private pendingActiveStep: number | null = null;\n\n setSteps(steps: any[]) {\n this.steps = steps;\n this._steps$.next(steps);\n\n // Se havia um índice pendente, aplica agora\n if (this.pendingActiveStep !== null) {\n this.setActiveStep(this.pendingActiveStep);\n this.pendingActiveStep = null;\n }\n }\n\n setActiveStep(index: number) {\n if (this.steps.length === 0) {\n // Steps ainda não definidos, guarda para depois\n this.pendingActiveStep = index;\n return;\n }\n if (index >= 0 && index < this.steps.length) {\n this._activeStep$.next(index);\n }\n }\n\n nextStep() {\n const current = this._activeStep$.value;\n if (current < this.steps.length - 1) {\n this._activeStep$.next(current + 1);\n }\n }\n\n prevStep() {\n const current = this._activeStep$.value;\n if (current > 0) {\n this._activeStep$.next(current - 1);\n }\n }\n}","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper', \n template: `<ng-content></ng-content>`, \n providers: [MatchaStepperStateService],\n standalone: false\n})\nexport class MatchaStepperComponent {\n @Input() active: number = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['active'] && typeof changes['active'].currentValue === 'number') {\n this.stepperState.setActiveStep(this.active);\n }\n }\n}","import { Component, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\nimport { StepComponent } from '../step/step.component';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper-content',\n template: `\n <ng-container *ngIf=\"stepsArray.length\">\n <ng-container *ngTemplateOutlet=\"stepsArray[activeStep]?.template || null\"></ng-container>\n </ng-container>\n `,\n standalone: false\n})\nexport class MatchaStepperContentComponent implements AfterContentInit {\n @ContentChildren(StepComponent) steps!: QueryList<StepComponent>;\n stepsArray: StepComponent[] = [];\n activeStep = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngAfterContentInit() {\n this.stepsArray = this.steps.toArray().sort((a, b) => {\n const stepA = a.step !== undefined && a.step !== null && a.step !== '' ? Number(a.step) : a.step;\n const stepB = b.step !== undefined && b.step !== null && b.step !== '' ? Number(b.step) : b.step;\n return stepA - stepB;\n });\n this.stepperState.setSteps(this.stepsArray.map(s => s.step));\n this.stepperState.activeStep$.subscribe(step => this.activeStep = step);\n }\n\n nextStep() {\n this.stepperState.nextStep();\n }\n\n prevStep() {\n this.stepperState.prevStep();\n }\n}","import { Component, Input, OnInit } from '@angular/core';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper-controller', \n templateUrl: './stepper-controller.component.html',\n providers: [],\n standalone: false\n})\nexport class MatchaStepperControllerComponent implements OnInit {\n @Input() disableNext!: boolean;\n steps: string[] = [];\n activeStep = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngOnInit() {\n this.stepperState.steps$.subscribe((steps: any[]) => this.steps = steps);\n this.stepperState.activeStep$.subscribe(step => this.activeStep = step);\n }\n\n goToStep(index: number) {\n if(this.disableNext && this.activeStep < index) return;\n this.stepperState.setActiveStep(index);\n }\n}\n","<div class=\"flex-column flex-align-end gap-16\">\n <span class=\"fw-900 fs-12 lh-12\">{{steps[activeStep]}}</span>\n <div class=\"d-flex align-center gap-8\">\n <ng-container *ngFor=\"let step of steps; let i = index\">\n <div (click)=\"goToStep(i)\" class=\"cursor-pointer w-32 h-8 radius-8\" [class.background-accent]=\"i <= activeStep\" [class.background-disabled]=\"i > activeStep\"></div> \n </ng-container>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MatchaDropListService {\n private dropZones = new Map<HTMLElement, any>();\n\n registerDropZone(element: HTMLElement, component: any) {\n this.dropZones.set(element, component);\n }\n\n unregisterDropZone(element: HTMLElement) {\n this.dropZones.delete(element);\n }\n\n findDropZone(element: Element | null): any {\n while (element) {\n if (this.dropZones.has(element as HTMLElement)) {\n return this.dropZones.get(element as HTMLElement);\n }\n element = element.parentElement;\n }\n return null;\n }\n\n getAllDropZones(): any[] {\n return Array.from(this.dropZones.values());\n }\n}\n","import { Directive, ElementRef, Input, OnInit, OnDestroy, Renderer2, HostBinding, NgZone } from '@angular/core';\nimport { MatchaDropListService } from '../services/drop-list.service';\n\n@Directive({\n selector: '[matchaDrag]',\n standalone:false\n})\nexport class MatchaDragDirective implements OnInit, OnDestroy {\n @Input() matchaDragData: any;\n @Input() matchaDragDisabled: boolean = false;\n\n @HostBinding('class.matcha-drag-item') get dragItemClass() {\n return true;\n }\n\n @HostBinding('class.matcha-drag-disabled') get dragDisabledClass() {\n return this.matchaDragDisabled;\n }\n\n private listeners: (() => void)[] = [];\n private isDragging = false;\n private dragHandle?: HTMLElement;\n private dropList?: any;\n\n // Touch/Mobile support\n private touchStartPosition = { x: 0, y: 0 };\n private touchCurrentPosition = { x: 0, y: 0 };\n private touchDragThreshold = 10; // pixels\n private isTouchDragging = false;\n private dragPreview?: HTMLElement;\n private touchIdentifier?: number;\n\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private ngZone: NgZone,\n private dropListService: MatchaDropListService\n ) {}\n\n ngOnInit() {\n this.setupDragEvents();\n }\n\n ngOnDestroy() {\n this.cleanupListeners();\n this.cleanupTouchDrag();\n }\n\n setDropList(dropList: any) {\n this.dropList = dropList;\n }\n\n setDragHandle(handle: HTMLElement) {\n this.dragHandle = handle;\n this.setupDragEvents(); // Re-setup when handle is set\n }\n\n private setupDragEvents() {\n if (this.matchaDragDisabled) return;\n\n this.cleanupListeners();\n\n const element = this.elementRef.nativeElement;\n const dragSource = this.dragHandle || element;\n\n // Configurar draggable para desktop\n if (this.dragHandle) {\n this.renderer.setAttribute(element, 'draggable', 'false');\n this.renderer.setAttribute(this.dragHandle, 'draggable', 'true');\n } else {\n this.renderer.setAttribute(element, 'draggable', 'true');\n }\n\n // Configurar touch-action para mobile\n this.renderer.setStyle(dragSource, 'touch-action', 'none');\n this.renderer.setStyle(dragSource, 'user-select', 'none');\n this.renderer.setStyle(dragSource, '-webkit-user-select', 'none');\n\n this.ngZone.runOutsideAngular(() => {\n // Desktop drag events\n this.listeners.push(\n this.renderer.listen(dragSource, 'dragstart', (event: DragEvent) => {\n if (this.matchaDragDisabled) return;\n this.onDragStart(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'dragend', () => {\n this.onDragEnd();\n })\n );\n\n this.listeners.push(\n this.renderer.listen(element, 'dragover', (event: DragEvent) => {\n event.preventDefault();\n })\n );\n\n // Mobile/Touch events\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchstart', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchStart(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchmove', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchMove(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchend', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchEnd(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchcancel', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchCancel(event);\n })\n );\n });\n }\n\n // Desktop drag methods\n private onDragStart(event: DragEvent) {\n this.isDragging = true;\n this.renderer.addClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n const dataTransfer = event.dataTransfer;\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n dataTransfer.setData('text/plain', '');\n this.createDragImage(dataTransfer, this.elementRef.nativeElement, event);\n }\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragStart(this, event);\n });\n }\n }\n\n private onDragEnd() {\n this.isDragging = false;\n this.renderer.removeClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragEnd();\n });\n }\n }\n\n // Touch/Mobile drag methods\n private onTouchStart(event: TouchEvent) {\n const touch = event.touches[0];\n if (!touch) return;\n\n this.touchIdentifier = touch.identifier;\n this.touchStartPosition = { x: touch.clientX, y: touch.clientY };\n this.touchCurrentPosition = { x: touch.clientX, y: touch.clientY };\n this.isTouchDragging = false;\n\n // Prevenir scroll enquanto toca\n event.preventDefault();\n }\n\n private onTouchMove(event: TouchEvent) {\n if (this.touchIdentifier === undefined) return;\n\n const touch = this.findTouch(event.touches, this.touchIdentifier);\n if (!touch) return;\n\n this.touchCurrentPosition = { x: touch.clientX, y: touch.clientY };\n\n const deltaX = Math.abs(touch.clientX - this.touchStartPosition.x);\n const deltaY = Math.abs(touch.clientY - this.touchStartPosition.y);\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n if (!this.isTouchDragging && distance > this.touchDragThreshold) {\n // Iniciar drag\n this.isTouchDragging = true;\n this.startTouchDrag(touch);\n }\n\n if (this.isTouchDragging) {\n this.updateTouchDrag(touch);\n event.preventDefault();\n }\n }\n\n private onTouchEnd(event: TouchEvent) {\n if (this.touchIdentifier === undefined) return;\n\n const touch = this.findTouch(event.changedTouches, this.touchIdentifier);\n if (!touch) return;\n\n if (this.isTouchDragging) {\n this.endTouchDrag(touch);\n }\n\n this.resetTouchState();\n }\n\n private onTouchCancel(event: TouchEvent) {\n if (this.isTouchDragging) {\n this.cancelTouchDrag();\n }\n this.resetTouchState();\n }\n\n private startTouchDrag(touch: Touch) {\n this.isDragging = true;\n this.renderer.addClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n // Criar preview visual do drag\n this.createTouchDragPreview();\n\n if (this.dropList) {\n this.ngZone.run(() => {\n // Simular DragEvent para compatibilidade\n const fakeEvent = this.createFakeDragEvent('dragstart', touch);\n this.dropList.onDragStart(this, fakeEvent);\n });\n }\n }\n\n private updateTouchDrag(touch: Touch) {\n if (this.dragPreview) {\n // Atualizar posição do preview\n this.renderer.setStyle(this.dragPreview, 'left', `${touch.clientX - 50}px`);\n this.renderer.setStyle(this.dragPreview, 'top', `${touch.clientY - 25}px`);\n }\n\n // Verificar drop zones\n this.checkDropZones(touch);\n }\n\n private endTouchDrag(touch: Touch) {\n // Encontrar elemento sob o touch\n const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY);\n const dropZone = this.findDropZone(elementBelow);\n\n if (dropZone && this.dropList) {\n this.ngZone.run(() => {\n // Simular drop event\n const fakeEvent = this.createFakeDragEvent('drop', touch);\n dropZone.handleTouchDrop(fakeEvent, this);\n });\n }\n\n this.cleanupTouchDrag();\n }\n\n private cancelTouchDrag() {\n this.cleanupTouchDrag();\n }\n\n private createTouchDragPreview() {\n const element = this.elementRef.nativeElement;\n const rect = element.getBoundingClientRect();\n\n // Criar clone do elemento para preview\n this.dragPreview = element.cloneNode(true) as HTMLElement;\n\n // Estilizar preview\n this.renderer.setStyle(this.dragPreview, 'position', 'fixed');\n this.renderer.setStyle(this.dragPreview, 'z-index', '9999');\n this.renderer.setStyle(this.dragPreview, 'pointer-events', 'none');\n this.renderer.setStyle(this.dragPreview, 'width', `${rect.width}px`);\n this.renderer.setStyle(this.dragPreview, 'height', `${rect.height}px`);\n this.renderer.setStyle(this.dragPreview, 'opacity', '0.8');\n this.renderer.setStyle(this.dragPreview, 'transform', 'rotate(5deg)');\n this.renderer.setStyle(this.dragPreview, 'box-shadow', '0 8px 25px rgba(0,0,0,0.3)');\n\n // Adicionar ao DOM\n document.body.appendChild(this.dragPreview);\n }\n\n private checkDropZones(touch: Touch) {\n const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY);\n const dropZone = this.findDropZone(elementBelow);\n\n // Notificar drop zones sobre o drag over\n if (dropZone && this.dropList) {\n this.ngZone.run(() => {\n const fakeEvent = this.createFakeDragEvent('dragover', touch);\n dropZone.handleTouchDragOver(fakeEvent);\n });\n }\n }\n\n private findDropZone(element: Element | null): any {\n return this.dropListService.findDropZone(element);\n }\n\n private findAngularComponent(element: Element): any {\n // Método mantido para compatibilidade, mas agora usa o serviço\n return this.dropListService.findDropZone(element);\n }\n\n private createFakeDragEvent(type: string, touch: Touch): any {\n return {\n type,\n clientX: touch.clientX,\n clientY: touch.clientY,\n preventDefault: () => {},\n dataTransfer: {\n effectAllowed: 'move',\n dropEffect: 'move',\n setData: () => {},\n getData: () => '',\n setDragImage: () => {}\n }\n };\n }\n\n private findTouch(touches: TouchList, identifier: number): Touch | null {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === identifier) {\n return touches[i];\n }\n }\n return null;\n }\n\n private resetTouchState() {\n this.touchIdentifier = undefined;\n this.isTouchDragging = false;\n this.isDragging = false;\n this.renderer.removeClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragEnd();\n });\n }\n }\n\n private cleanupTouchDrag() {\n if (this.dragPreview) {\n document.body.removeChild(this.dragPreview);\n this.dragPreview = undefined;\n }\n }\n\n private createDragImage(dataTransfer: DataTransfer, element: HTMLElement, event: DragEvent) {\n try {\n const rect = element.getBoundingClientRect();\n const offsetX = event.clientX - rect.left;\n const offsetY = event.clientY - rect.top;\n dataTransfer.setDragImage(element, offsetX, offsetY);\n } catch (error) {\n console.warn('Erro ao configurar drag image:', error);\n }\n }\n\n private cleanupListeners() {\n this.listeners.forEach(cleanup => cleanup());\n this.listeners = [];\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n ContentChildren,\n QueryList,\n AfterContentInit,\n HostBinding\n} from '@angular/core';\nimport { MatchaDragDirective } from '../directives/drag.directive';\nimport { MatchaDropListService } from '../services/drop-list.service';\n\nexport interface MatchaDropListDroppedEvent<T = any> {\n previousIndex: number;\n currentIndex: number;\n item: T;\n container: MatchaDropListComponent;\n previousContainer?: MatchaDropListComponent;\n data: T[];\n}\n\nexport interface MatchaDropListConnectedToEvent<T = any> {\n sourceData: T[];\n targetData: T[];\n item: T;\n previousIndex: number;\n currentIndex: number;\n}\n\n@Component({\n selector: 'matcha-drop-list',\n templateUrl: './drop-list.component.html',\n standalone:false\n})\nexport class MatchaDropListComponent<T = any> implements OnInit, OnDestroy, AfterContentInit {\n @Input() matchaDropListData: T[] = [];\n @Input() matchaDropListDisabled: boolean = false;\n @Input() matchaDropListConnectedTo: MatchaDropListComponent[] = [];\n @Input() matchaDropListSortingDisabled: boolean = false;\n @Input() matchaDropListAcceptPredicate?: (item: any, sourceContainer: MatchaDropListComponent, targetContainer: MatchaDropListComponent) => boolean;\n\n @Output() matchaDropListDropped = new EventEmitter<MatchaDropListDroppedEvent<T>>();\n\n @ContentChildren(MatchaDragDirective) dragItems!: QueryList<MatchaDragDirective>;\n\n @HostBinding('class.matcha-drop-list') get dropListClass() {\n return true;\n }\n\n // Estado do drag\n private currentDragItem?: MatchaDragDirective;\n private dragStartIndex: number = -1;\n private sourceContainer?: MatchaDropListComponent;\n\n // Estado visual\n public isReceivingDrag = false;\n public showDropIndicator = false;\n public dropIndicatorPosition = 0;\n public canAcceptDrop = true; // Controla se pode aceitar o drop atual\n private calculatedDropIndex = 0; // Armazenar o índice calculado durante o dragover\n\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private dropListService: MatchaDropListService\n ) {}\n\n ngOnInit() {\n this.setupDropZone();\n // Registrar este drop zone no serviço\n this.dropListService.registerDropZone(this.elementRef.nativeElement, this);\n }\n\n ngAfterContentInit() {\n // Configurar referência do drop list para cada item drag\n this.dragItems.forEach(dragItem => {\n dragItem.setDropList(this);\n });\n\n // Monitorar mudanças nos itens drag\n this.dragItems.changes.subscribe(() => {\n this.dragItems.forEach(dragItem => {\n dragItem.setDropList(this);\n });\n });\n }\n\n ngOnDestroy() {\n // Desregistrar do serviço\n this.dropListService.unregisterDropZone(this.elementRef.nativeElement);\n // Cleanup automático via renderer\n }\n\n private setupDropZone() {\n const element = this.elementRef.nativeElement;\n\n this.renderer.listen(element, 'dragover', (event: DragEvent) => {\n event.preventDefault();\n\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n\n // Verificar se pode aceitar o drop\n this.canAcceptDrop = this.canAcceptCurrentDrop();\n\n if (this.canAcceptDrop) {\n event.dataTransfer!.dropEffect = 'move';\n // Mostrar linha indicadora\n this.updateDropIndicator(event);\n } else {\n event.dataTransfer!.dropEffect = 'none';\n this.showDropIndicator = false;\n }\n });\n\n this.renderer.listen(element, 'dragenter', (event: DragEvent) => {\n event.preventDefault();\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n });\n\n this.renderer.listen(element, 'dragleave', (event: DragEvent) => {\n const rect = element.getBoundingClientRect();\n const x = event.clientX;\n const y = event.clientY;\n\n // Verificar se realmente saiu do container\n if (x < rect.left || x > rect.right || y < rect.top || y > rect.bottom) {\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n }\n });\n\n this.renderer.listen(element, 'drop', (event: DragEvent) => {\n event.preventDefault();\n this.handleDrop(event);\n });\n }\n\n private updateDropIndicator(event: DragEvent) {\n if (!this.currentDragItem) return;\n\n const containerRect = this.elementRef.nativeElement.getBoundingClientRect();\n const y = event.clientY - containerRect.top;\n\n const dragItemElements = this.dragItems.toArray().map(item => item.elementRef.nativeElement);\n\n let indicatorY = 0;\n let dropIndex = 0;\n let found = false;\n\n for (let i = 0; i < dragItemElements.length; i++) {\n const itemRect = dragItemElements[i].getBoundingClientRect();\n const itemY = itemRect.top - containerRect.top;\n const itemHeight = itemRect.height;\n const itemCenter = itemY + itemHeight / 2;\n\n if (y < itemCenter) {\n indicatorY = itemY;\n dropIndex = i;\n found = true;\n break;\n }\n }\n\n if (!found && dragItemElements.length > 0) {\n // Posicionar no final da lista\n const lastItem = dragItemElements[dragItemElements.length - 1];\n const lastRect = lastItem.getBoundingClientRect();\n indicatorY = lastRect.bottom - containerRect.top;\n dropIndex = dragItemElements.length;\n }\n\n // Armazenar tanto a posição visual quanto o índice calculado\n this.dropIndicatorPosition = indicatorY;\n this.calculatedDropIndex = dropIndex;\n this.showDropIndicator = true;\n }\n\n // Métodos chamados pelo directive\n onDragStart(dragItem: MatchaDragDirective, event: DragEvent) {\n if (this.matchaDropListDisabled) return;\n\n this.currentDragItem = dragItem;\n this.sourceContainer = this;\n this.dragStartIndex = this.getDragItemIndex(dragItem);\n\n // Notificar containers conectados\n this.matchaDropListConnectedTo.forEach(container => {\n container.notifyDragStart(dragItem, this);\n });\n }\n\n onDragEnd() {\n this.currentDragItem = undefined;\n this.sourceContainer = undefined;\n this.dragStartIndex = -1;\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n this.calculatedDropIndex = 0;\n\n // Notificar containers conectados\n this.matchaDropListConnectedTo.forEach(container => {\n container.notifyDragEnd();\n });\n }\n\n private handleDrop(event: DragEvent) {\n if (!this.currentDragItem || this.matchaDropListDisabled) return;\n\n // Verificar se pode aceitar o drop\n if (!this.canAcceptCurrentDrop()) {\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n return;\n }\n\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n\n // Usar o índice já calculado durante o dragover ao invés de recalcular\n const dropIndex = this.calculatedDropIndex;\n\n if (this.sourceContainer === this) {\n // Drop na mesma lista - reordenar\n if (!this.matchaDropListSortingDisabled && dropIndex !== this.dragStartIndex) {\n this.reorderItems(this.dragStartIndex, dropIndex);\n }\n } else if (this.sourceContainer) {\n // Drop entre listas - transferir\n this.transferItem(this.currentDragItem, this.sourceContainer, this, dropIndex);\n }\n }\n\n private reorderItems(fromIndex: number, toIndex: number) {\n const newData = [...this.matchaDropListData];\n const item = newData[fromIndex];\n\n // Remover item da posição original\n newData.splice(fromIndex, 1);\n\n // Calcular nova posição\n const insertIndex = toIndex > fromIndex ? toIndex - 1 : toIndex;\n\n // Inserir na nova posição\n newData.splice(insertIndex, 0, item);\n\n this.matchaDropListData = newData;\n\n // Emitir evento\n this.matchaDropListDropped.emit({\n previousIndex: fromIndex,\n currentIndex: insertIndex,\n item,\n container: this,\n data: this.matchaDropListData\n });\n }\n\n private transferItem(dragItem: MatchaDragDirective, sourceContainer: MatchaDropListComponent, targetContainer: MatchaDropListComponent, targetIndex: number) {\n const item = dragItem.matchaDragData;\n const sourceIndex = sourceContainer.dragStartIndex;\n\n // Remover do container origem\n const sourceData = [...sourceContainer.matchaDropListData];\n sourceData.splice(sourceIndex, 1);\n sourceContainer.matchaDropListData = sourceData;\n\n // Adicionar ao container destino\n const targetData = [...targetContainer.matchaDropListData];\n targetData.splice(targetIndex, 0, item);\n targetContainer.matchaDropListData = targetData;\n\n // Emitir eventos\n targetContainer.matchaDropListDropped.emit({\n previousIndex: sourceIndex,\n currentIndex: targetIndex,\n item,\n container: targetContainer,\n previousContainer: sourceContainer,\n data: targetContainer.matchaDropListData\n });\n\n sourceContainer.matchaDropListDropped.emit({\n previousIndex: sourceIndex,\n currentIndex: -1,\n item,\n container: sourceContainer,\n data: sourceContainer.matchaDropListData\n });\n }\n\n private getDragItemIndex(dragItem: MatchaDragDirective): number {\n return this.dragItems.toArray().indexOf(dragItem);\n }\n\n // Métodos para comunicação entre containers conectados\n notifyDragStart(dragItem: MatchaDragDirective, sourceContainer: MatchaDropListComponent) {\n this.currentDragItem = dragItem;\n this.sourceContainer = sourceContainer;\n this.dragStartIndex = sourceContainer.getDragItemIndex(dragItem);\n }\n\n notifyDragEnd() {\n this.currentDragItem = undefined;\n this.sourceContainer = undefined;\n this.dragStartIndex = -1;\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n this.calculatedDropIndex = 0;\n }\n\n private canAcceptCurrentDrop(): boolean {\n if (!this.currentDragItem || !this.sourceContainer) {\n return false;\n }\n\n if (this.matchaDropListAcceptPredicate) {\n const sourceContainer = this.sourceContainer;\n const targetContainer = this;\n const item = this.currentDragItem.matchaDragData;\n return this.matchaDropListAcceptPredicate(item, sourceContainer, targetContainer);\n }\n return true;\n }\n\n // Métodos para suporte touch/mobile\n handleTouchDragOver(event: any) {\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n\n // Verificar se pode aceitar o drop\n this.canAcceptDrop = this.canAcceptCurrentDrop();\n\n if (this.canAcceptDrop) {\n // Mostrar linha indicadora\n this.updateDropIndicator(event);\n } else {\n this.showDropIndicator = false;\n }\n }\n\n handleTouchDrop(event: any, dragItem: any) {\n if (!this.currentDragItem || this.matchaDropListDisabled) return;\n\n // Verificar se pode aceitar o drop\n if (!this.canAcceptCurrentDrop()) {\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n return;\n }\n\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n\n // Usar o índice já calculado durante o dragover\n const dropIndex = this.calculatedDropIndex;\n\n if (this.sourceContainer === this) {\n // Drop na mesma lista - reordenar\n if (!this.matchaDropListSortingDisabled && dropIndex !== this.dragStartIndex) {\n this.reorderItems(this.dragStartIndex, dropIndex);\n }\n } else if (this.sourceContainer) {\n // Drop entre listas - transferir\n this.transferItem(this.currentDragItem, this.sourceContainer, this, dropIndex);\n }\n }\n}\n","<div class=\"matcha-drop-list-container\"\n [class.matcha-drop-list-receiving]=\"isReceivingDrag\"\n [class.matcha-drop-list-disabled]=\"matchaDropListDisabled\"\n [class.matcha-drop-list-can-accept]=\"isReceivingDrag && canAcceptDrop\"\n [class.matcha-drop-list-cannot-accept]=\"isReceivingDrag && !canAcceptDrop\">\n <ng-content></ng-content>\n\n <!-- Linha indicadora de drop -->\n <div class=\"matcha-drop-indicator\"\n [class.active]=\"showDropIndicator && canAcceptDrop\"\n [style.top.px]=\"dropIndicatorPosition\">\n </div>\n\n <!-- Placeholder para lista vazia -->\n <div *ngIf=\"isReceivingDrag && dragItems.length === 0\"\n class=\"matcha-drop-list-placeholder\">\n <div class=\"matcha-drop-list-empty-placeholder\"\n [class.can-accept]=\"canAcceptDrop\"\n [class.cannot-accept]=\"!canAcceptDrop\">\n <span [class.i-matcha-action_sign_success]=\"canAcceptDrop\"\n [class.i-matcha-action_sign_error]=\"!canAcceptDrop\"\n [class.color-green]=\"canAcceptDrop\"\n [class.color-red]=\"!canAcceptDrop\"\n class=\"i-size-lg\"></span>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-page-layout',\n templateUrl: './page-layout.component.html',\n styleUrls: ['./page-layout.component.scss'],\n standalone: false,\n})\nexport class MatchaPageLayoutComponent {\n\n}\n","<div class=\"page-layout carded fullwidth\">\n <!-- TOP BACKGROUND -->\n <div class=\"top-bg\"></div>\n <!--/ TOP BACKGROUND -->\n\n <!-- CENTER -->\n <div class=\"center pt-24 gap-16\">\n <!-- CONTENT CARD -->\n <div class=\"content-card flatten flex-column h-100-p\">\n <!-- CONTENT -->\n <div class=\"content flex-column h-100-p\">\n <div class=\"content-card card-flat flex-column h-100-p background-bg border-radius-0 pb-16\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n standalone: false\n})\nexport class MatchaAvatarComponent {\n @Input() src: string = '';\n @Input() name: string = '';\n \n @Input() size: 'tiny' | 'small' | 'medium' | 'large' | 'huge' = 'medium';\n @Input() color: string = 'blue'; \n\n private _disabled = false;\n @Input()\n set disabled(value: boolean | string) {\n\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n public get initials(): string {\n if (!this.name.trim()) {\n return '';\n }\n\n const words = this.name.trim().split(/\\s+/);\n \n if (this.size === 'tiny') {\n return words[0].charAt(0).toUpperCase();\n }\n\n if (words.length >= 2) {\n\n return (words[0].charAt(0) + words[1].charAt(0)).toUpperCase();\n } else if (words.length === 1 && words[0].length >= 2) {\n\n return words[0].substring(0, 2).toUpperCase();\n } else {\n\n return words[0].charAt(0).toUpperCase();\n }\n }\n\n public get hasImage(): boolean {\n return !!(this.src && this.src.trim() !== '');\n }\n\n public get hasName(): boolean {\n return !!(this.name && this.name.trim() !== '');\n }\n\n public get showDefaultIcon(): boolean {\n return !this.hasImage && !this.hasName;\n }\n\n public get sizeClass(): string {\n return `matcha-avatar-${this.size}`;\n }\n\n public get avatarClasses(): string {\n let classes = `matcha-avatar radius-full ${this.sizeClass}`;\n \n if (!this.showDefaultIcon) {\n classes += ' ' + this.color;\n }\n \n if (this.disabled) {\n classes += ' color-disabled';\n }\n \n return classes;\n }\n}\n","<span [class]=\"avatarClasses\">\n <!-- Imagem do usuário -->\n <img \n *ngIf=\"hasImage\" \n [src]=\"src\" \n [alt]=\"name || 'Avatar'\"\n class=\"matcha-avatar-image\">\n \n <!-- Iniciais do nome -->\n <span \n *ngIf=\"!hasImage && hasName\" \n class=\"matcha-avatar-initials\">\n {{ initials }}\n </span>\n \n\n <svg \n *ngIf=\"showDefaultIcon\"\n class=\"matcha-avatar-icon\"\n viewBox=\"0 0 56 56\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\">\n <path \n fill-rule=\"evenodd\" \n clip-rule=\"evenodd\" \n d=\"M28 0C12.544 0 0 12.544 0 28C0 43.456 12.544 56 28 56C43.456 56 56 43.456 56 28C56 12.544 43.456 0 28 0ZM28.0022 8.4C32.6502 8.4 36.4022 12.152 36.4022 16.8C36.4022 21.448 32.6502 25.2 28.0022 25.2C23.3542 25.2 19.6022 21.448 19.6022 16.8C19.6022 12.152 23.3542 8.4 28.0022 8.4ZM28.0022 48.1601C21.0022 48.1601 14.8142 44.5761 11.2022 39.1441C11.2862 33.5721 22.4022 30.5201 28.0022 30.5201C33.5742 30.5201 44.7182 33.5721 44.8022 39.1441C41.1902 44.5761 35.0022 48.1601 28.0022 48.1601Z\" \n fill=\"currentColor\"/>\n </svg>\n </span>","import { Component, Input, HostBinding, HostListener, Optional, ElementRef, Output, EventEmitter, Inject } from '@angular/core';\nimport { MatchaOptionParent, MATCHA_OPTION_PARENT } from './matcha-option-parent.interface';\n\n@Component({\n selector: 'matcha-option',\n template: `<ng-content></ng-content>`,\n host: {\n class: 'matcha-option',\n role: 'option',\n tabindex: '0'\n },\n standalone: false,\n})\nexport class MatchaOptionComponent {\n @Input() value: any;\n @Input() disabled = false;\n @HostBinding('attr.aria-selected') selected = false;\n\n // ✅ EventEmitters para uso standalone\n @Output() optionClick = new EventEmitter<any>();\n @Output() optionSelect = new EventEmitter<MatchaOptionComponent>();\n\n constructor(\n @Optional() @Inject(MATCHA_OPTION_PARENT) private parent: MatchaOptionParent | null,\n private elRef: ElementRef\n ) {}\n\n @HostListener('click')\n onClick() {\n if (this.disabled) return;\n\n console.log('MatchaOption: Clique na opção', {\n value: this.value,\n parent: this.parent,\n disabled: this.disabled\n });\n\n // ✅ Notifica o pai (se houver) - qualquer componente que implemente MatchaOptionParent\n if (this.parent) {\n console.log('MatchaOption: Usando parent.selectOption');\n this.parent.selectOption(this);\n } else {\n console.log('MatchaOption: Usando fallback findParentAndSelect');\n // Fallback: busca o pai via DOM\n this.findParentAndSelect();\n }\n\n // ✅ Emite eventos para uso standalone\n this.optionClick.emit(this.value);\n this.optionSelect.emit(this);\n }\n\n private findParentAndSelect() {\n // Busca o elemento pai matcha-autocomplete ou matcha-select\n const autocompleteEl = this.elRef.nativeElement.closest('matcha-autocomplete');\n const selectEl = this.elRef.nativeElement.closest('matcha-select');\n\n if (autocompleteEl) {\n console.log('MatchaOption: Encontrou autocomplete element', autocompleteEl);\n // Dispara um evento customizado que o autocomplete pode escutar\n const event = new CustomEvent('matcha-option-selected', {\n detail: { option: this, value: this.value },\n bubbles: true\n });\n autocompleteEl.dispatchEvent(event);\n console.log('MatchaOption: Evento customizado disparado', event);\n } else if (selectEl) {\n console.log('MatchaOption: Encontrou select element', selectEl);\n // Dispara um evento customizado que o select pode escutar\n const event = new CustomEvent('matcha-option-selected', {\n detail: { option: this, value: this.value },\n bubbles: true\n });\n selectEl.dispatchEvent(event);\n console.log('MatchaOption: Evento customizado disparado para select', event);\n } else {\n console.log('MatchaOption: Não encontrou elemento pai (autocomplete ou select)');\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n ev.preventDefault();\n this.onClick();\n }\n }\n\n // Getter para acessar o elemento nativo (usado para scroll)\n get nativeElement(): HTMLElement {\n return this.elRef.nativeElement;\n }\n\n // Método público para obter o texto interno da opção\n getTextContent(): string {\n return this.elRef.nativeElement.textContent?.trim() || '';\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ViewChild,\n TemplateRef,\n OnDestroy,\n OnInit,\n OnChanges,\n ChangeDetectorRef,\n AfterViewInit\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { max, takeUntil } from 'rxjs/operators';\n\nexport interface PanelPosition {\n top: number;\n left: number;\n width: number;\n maxHeight?: number;\n}\n\nexport type PanelPlacement = 'bottom' | 'top' | 'auto';\n\n@Component({\n selector: 'matcha-panel',\n template: `\n <div class=\"matcha-panel-container\" style=\"position: relative;\">\n <ng-container *ngIf=\"open\">\n <!-- Painel -->\n <div\n #panel\n class=\"matcha-panel\"\n [class.matcha-panel-top]=\"placement === 'top'\"\n [class.matcha-panel-bottom]=\"placement === 'bottom'\"\n [ngStyle]=\"panelStyle\"\n role=\"listbox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-hidden]=\"!open\">\n <ng-content></ng-content>\n </div>\n </ng-container>\n </div>\n `,\n standalone: false\n})\nexport class MatchaPanelComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n @Input() placement: PanelPlacement = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n @Input() offset = 4; // Espaçamento entre trigger e painel\n @Input() triggerElement?: HTMLElement;\n @Input() open = false;\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n\n @ViewChild('panel', { static: false }) panelRef?: ElementRef<HTMLElement>;\n panelStyle: { [key: string]: any } = {};\n private destroy$ = new Subject<void>();\n private scrollListener?: () => void;\n private resizeListener?: () => void;\n\n constructor(\n private elRef: ElementRef,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngOnInit() {\n // Inicialização básica\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.cleanupListeners();\n }\n\n /**\n * Anexa o painel a um elemento trigger\n */\n attachTo(trigger: HTMLElement) {\n this.triggerElement = trigger;\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada antes de calcular posição\n if (this.triggerElement && this.open) {\n this.cdr.detectChanges();\n this.updatePosition();\n }\n }\n\n /**\n * Lifecycle hook para detectar mudanças no triggerElement\n */\n ngOnChanges() {\n // Só logar quando há mudanças significativas\n if (this.triggerElement && this.open) {\n console.log('MatchaPanel: ngOnChanges - painel aberto, atualizando posição');\n // Usar detectChanges para forçar a detecção de mudanças\n this.cdr.detectChanges();\n this.updatePosition();\n }\n }\n\n /**\n * Abre o painel\n */\n openPanel() {\n if (!this.triggerElement) {\n console.log('MatchaPanel: triggerElement não encontrado');\n return;\n }\n\n // Força a detecção de mudanças antes de atualizar a posição\n this.cdr.detectChanges();\n this.updatePosition();\n this.setupListeners();\n this.opened.emit();\n }\n\n /**\n * Fecha o painel\n */\n closePanel() {\n console.log('MatchaPanel: Fechando painel', {\n open: this.open,\n triggerElement: this.triggerElement,\n stackTrace: new Error().stack\n });\n this.cleanupListeners();\n this.closed.emit();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n }\n\n /**\n * Alterna o estado do painel\n */\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n /**\n * Atualiza a posição do painel (simplificado para absolute)\n */\n updatePosition() {\n if (!this.triggerElement) {\n console.log('MatchaPanel: updatePosition - triggerElement não encontrado');\n return;\n }\n const position = this.calculatePosition();\n this.panelStyle = {\n // top: `${position.top}px`,\n // left: `${position.left}px`,\n // minWidth: `${position.width}px`,\n top: 0,\n left: 0,\n width: '100%',\n maxHeight: `${position.maxHeight || this.maxHeight}px`,\n zIndex: 1\n };\n }\n\n /**\n * Calcula a posição ideal do painel (simplificado para absolute)\n */\n private calculatePosition(): PanelPosition {\n if (!this.triggerElement) {\n return { top: 0, left: 0, width: this.minWidth };\n }\n\n const rect = this.triggerElement.getBoundingClientRect();\n const containerRect = this.triggerElement.offsetParent?.getBoundingClientRect() || { top: 0, left: 0 };\n\n let top: number;\n let left: number;\n let width = Math.max(rect.width, this.minWidth);\n let maxHeight = this.maxHeight;\n\n // Calcular posição horizontal (relativa ao container)\n left = rect.left - containerRect.left;\n\n // Calcular posição vertical (relativa ao container)\n if (this.placement === 'top') {\n // Posicionar acima\n top = rect.top - containerRect.top - this.maxHeight - this.offset;\n } else {\n // Posicionar abaixo (padrão)\n top = rect.bottom - containerRect.top + this.offset;\n }\n\n return { top, left, width, maxHeight };\n }\n\n /**\n * Configura listeners para scroll e resize\n */\n private setupListeners() {\n // Com position absolute, não precisamos de listeners de scroll/resize\n console.log('MatchaPanel: setupListeners - position absolute, sem listeners necessários');\n }\n\n /**\n * Remove listeners\n */\n private cleanupListeners() {\n if (this.scrollListener) {\n window.removeEventListener('scroll', this.scrollListener);\n this.scrollListener = undefined;\n }\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n this.resizeListener = undefined;\n }\n }\n\n}\n\n","import {\n Component, ContentChildren, QueryList, ElementRef,\n AfterContentInit, Renderer2, ViewEncapsulation, ChangeDetectorRef,\n Input, Output, EventEmitter, ViewChild, AfterViewInit\n} from '@angular/core';\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\nimport { MatchaOptionParent } from '../matcha-option/matcha-option-parent.interface';\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\n\n@Component({\n selector: 'matcha-autocomplete',\n templateUrl: './matcha-autocomplete.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class MatchaAutocompleteComponent implements AfterContentInit, AfterViewInit, MatchaOptionParent {\n @ContentChildren(MatchaOptionComponent, { descendants: true }) options!: QueryList<MatchaOptionComponent>;\n @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\n\n // Armazenar o valor selecionado independente da QueryList\n private selectedValue: any = undefined;\n\n // Configurações do painel\n @Input() placement: 'bottom' | 'top' | 'auto' = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n\n // Funcionalidades avançadas\n @Input() autoSelectOnBlur: boolean = false;\n @Input() displayWith: ((value: any) => string | null) | null = null;\n @Input() displayProperty: string = 'name';\n @Input() showClearButton: boolean = false;\n @Input() clearButtonIcon: string = 'action_close';\n @Input() clearButtonAriaLabel: string = 'Limpar seleção';\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n @Output() cleared = new EventEmitter<void>();\n @Output() autoSelected = new EventEmitter<any>();\n\n open = false;\n triggerElement?: HTMLElement;\n private activeIndex = -1;\n\n constructor(\n public elRef: ElementRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterContentInit() {\n // quando options mudarem, resetamos estado relevante\n this.options.changes.subscribe(() => {\n if (this.open) {\n this.resetActive();\n this.cdr.detectChanges();\n }\n });\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada\n this.cdr.detectChanges();\n\n // Escuta eventos customizados das opções\n this.elRef.nativeElement.addEventListener('matcha-option-selected', (event: any) => {\n console.log('MatchaAutocomplete: Evento matcha-option-selected recebido', event.detail);\n const { option, value } = event.detail;\n this.selectOption(option);\n });\n\n // Escuta evento para fechar este painel quando outro for aberto\n this.elRef.nativeElement.addEventListener('matcha-autocomplete-close', () => {\n if (this.open) {\n console.log('MatchaAutocomplete: Fechando painel por evento de outro autocomplete');\n this.closePanel();\n }\n });\n }\n\n attachTo(input: HTMLElement) {\n this.triggerElement = input;\n }\n\n private closeOtherPanels() {\n // Buscar todos os outros autocompletes na página e fechá-los\n const allAutocompletes = document.querySelectorAll('matcha-autocomplete');\n allAutocompletes.forEach(autocompleteEl => {\n if (autocompleteEl !== this.elRef.nativeElement) {\n // Disparar evento para fechar outros painéis\n const closeEvent = new CustomEvent('matcha-autocomplete-close', {\n bubbles: true\n });\n autocompleteEl.dispatchEvent(closeEvent);\n }\n });\n }\n\n private notifyDirectiveOfSelection(data: { value: any; displayText?: string }) {\n // Disparar evento customizado para notificar a diretiva sobre a seleção\n const selectionEvent = new CustomEvent('matcha-autocomplete-selection', {\n detail: data,\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(selectionEvent);\n console.log('MatchaAutocomplete: Evento de seleção disparado', data);\n }\n\n openPanel() {\n if (!this.triggerElement) {\n console.log('MatchaAutocomplete: triggerElement não encontrado');\n return;\n }\n\n console.log('MatchaAutocomplete: Abrindo painel', {\n triggerElement: this.triggerElement,\n panel: this.panel,\n open: this.open\n });\n\n // Fechar outros painéis abertos antes de abrir este\n this.closeOtherPanels();\n\n this.open = true;\n this.cdr.detectChanges(); // Força detecção de mudanças\n\n this.panel.attachTo(this.triggerElement);\n this.panel.openPanel();\n this.resetActive();\n this.opened.emit();\n }\n\n closePanel() {\n console.log('MatchaAutocomplete: Fechando painel', {\n open: this.open,\n stackTrace: new Error().stack\n });\n this.open = false;\n this.activeIndex = -1;\n this.updateSelectedStates();\n this.panel.closePanel();\n this.closed.emit();\n }\n\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n\n resetActive() {\n this.activeIndex = -1;\n this.updateSelectedStates();\n }\n\n private updateSelectedStates() {\n const items = this.options.toArray();\n items.forEach((opt, i) => opt.selected = i === this.activeIndex);\n }\n\n highlightNext() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex + 1) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n highlightPrevious() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex - 1 + length) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n private scrollToActive() {\n const opts = this.options.toArray();\n if (this.activeIndex < 0 || this.activeIndex >= opts.length) return;\n const host = opts[this.activeIndex].nativeElement;\n if (host && host.scrollIntoView) {\n host.scrollIntoView({ block: 'nearest' });\n }\n }\n\n selectActive() {\n if (this.activeIndex < 0) return;\n const opt = this.options.toArray()[this.activeIndex];\n if (opt?.disabled) return;\n this.selectOption(opt);\n }\n\n // chamado por matcha-option quando clicado\n selectOption(option: MatchaOptionComponent) {\n console.log('MatchaAutocomplete: Opção selecionada', {\n option,\n value: option.value,\n selected: option.selected,\n optionsLength: this.options.length,\n allOptions: this.options.toArray()\n });\n\n // Armazenar o valor selecionado\n this.selectedValue = option.value;\n\n // Marcar a opção como selecionada diretamente\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n console.log('MatchaAutocomplete: Após marcar seleção', {\n selectedOption: option,\n selected: option.selected,\n selectedValue: this.selectedValue,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n // Notificar a diretiva sobre a seleção antes de fechar o painel\n // Passar tanto o valor quanto o texto de exibição\n const displayText = this.getDisplayValue(option.value);\n this.notifyDirectiveOfSelection({\n value: option.value,\n displayText: displayText\n });\n\n // Fechamos painel automaticamente\n console.log('MatchaAutocomplete: Fechando painel após seleção');\n this.closePanel();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n\n // indireto: a directive pode ler o value via getSelectedValue()\n }\n\n getSelectedValue() {\n // Usar o valor armazenado se disponível, senão buscar na QueryList\n const value = this.selectedValue !== undefined ? this.selectedValue : this.options.find(o => o.selected)?.value;\n\n console.log('MatchaAutocomplete: getSelectedValue chamado', {\n selectedValue: this.selectedValue,\n value,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n return value;\n }\n\n hasSelection(): boolean {\n return this.selectedValue !== undefined && this.selectedValue !== null;\n }\n\n clearSelection(): void {\n this.selectedValue = undefined;\n\n // Limpar seleção visual das opções\n this.options.forEach(opt => {\n opt.selected = false;\n });\n\n // Notificar diretiva para limpar input\n const clearEvent = new CustomEvent('matcha-autocomplete-clear', {\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(clearEvent);\n\n // Emitir evento de limpeza\n this.cleared.emit();\n }\n\n /**\n * Obtém o texto de exibição de um valor\n * Usa displayWith se fornecido, senão displayProperty, senão retorna o valor como string\n */\n getDisplayValue(value: any): string {\n if (value == null) return '';\n\n if (this.displayWith) {\n return this.displayWith(value) || '';\n }\n\n if (typeof value === 'object' && this.displayProperty) {\n return value[this.displayProperty] || '';\n }\n\n return String(value);\n }\n\n /**\n * Busca uma opção que corresponda ao texto digitado\n * Compara usando displayWith ou displayProperty\n */\n findOptionByText(text: string): MatchaOptionComponent | null {\n if (!text || text.trim() === '') return null;\n\n const searchText = text.toLowerCase().trim();\n const options = this.options.toArray();\n\n for (const option of options) {\n if (option.disabled) continue;\n\n const displayText = this.getDisplayValue(option.value).toLowerCase().trim();\n\n if (displayText === searchText) {\n return option;\n }\n }\n\n return null;\n }\n}\n\n","<matcha-panel\n #panel\n [open]=\"open\"\n [placement]=\"placement\"\n [maxHeight]=\"maxHeight\"\n [minWidth]=\"minWidth\"\n [triggerElement]=\"triggerElement\"\n (opened)=\"opened.emit()\"\n (closed)=\"closed.emit()\">\n <div class=\"matcha-panel-content flex-column\">\n <ng-content></ng-content>\n </div>\n</matcha-panel>\n","import {\n Component, ContentChildren, QueryList, ElementRef,\n AfterContentInit, Renderer2, ViewEncapsulation, ChangeDetectorRef,\n Input, Output, EventEmitter, ViewChild, AfterViewInit, forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\nimport { MatchaOptionParent } from '../matcha-option/matcha-option-parent.interface';\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\n\n@Component({\n selector: 'matcha-select',\n templateUrl: './matcha-select.component.html',\n styleUrls: ['./matcha-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSelectComponent),\n multi: true\n }\n ]\n})\nexport class MatchaSelectComponent implements AfterContentInit, AfterViewInit, MatchaOptionParent, ControlValueAccessor {\n @ContentChildren(MatchaOptionComponent, { descendants: true }) options!: QueryList<MatchaOptionComponent>;\n @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\n\n // Armazenar o valor selecionado independente da QueryList\n selectedValue: any = undefined;\n selectedLabel: string = '';\n\n // Configurações do painel\n @Input() placement: 'bottom' | 'top' | 'auto' = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n @Input() placeholder = 'Selecione uma opção';\n @Input() disabled = false;\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n @Output() selectionChange = new EventEmitter<any>();\n\n open = false;\n triggerElement?: HTMLElement;\n private activeIndex = -1;\n\n // ControlValueAccessor properties\n private onChange = (value: any) => {};\n private onTouched = () => {};\n isDisabled = false;\n\n constructor(\n public elRef: ElementRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterContentInit() {\n // quando options mudarem, resetamos estado relevante\n this.options.changes.subscribe(() => {\n if (this.open) {\n this.resetActive();\n this.cdr.detectChanges();\n }\n });\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada\n this.cdr.detectChanges();\n\n // Configurar o trigger element\n this.triggerElement = this.elRef.nativeElement.querySelector('.matcha-select-trigger');\n if (this.triggerElement && this.panel) {\n this.panel.attachTo(this.triggerElement);\n }\n\n // Adicionar event listeners para navegação por teclado\n this.setupKeyboardNavigation();\n\n // Escuta eventos customizados das opções\n this.elRef.nativeElement.addEventListener('matcha-option-selected', (event: any) => {\n const { option, value } = event.detail;\n this.selectOption(option);\n });\n\n // Escuta evento para fechar este painel quando outro for aberto\n this.elRef.nativeElement.addEventListener('matcha-select-close', () => {\n if (this.open) {\n this.closePanel();\n }\n });\n\n // Escuta click outside para fechar o painel\n document.addEventListener('click', (event: MouseEvent) => {\n const target = event.target as Node;\n const isInsideSelect = this.elRef.nativeElement.contains(target);\n\n if (!isInsideSelect && this.open) {\n this.closePanel();\n }\n });\n }\n\n private setupKeyboardNavigation() {\n if (!this.triggerElement) return;\n\n this.triggerElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (this.disabled || this.isDisabled) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.handleArrowDown();\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.handleArrowUp();\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.handleEnterOrSpace();\n break;\n case 'Escape':\n event.preventDefault();\n this.handleEscape();\n break;\n case 'Tab':\n // Permitir navegação normal com Tab\n break;\n default:\n // Para outras teclas, não fazer nada\n break;\n }\n });\n }\n\n private handleArrowDown() {\n if (!this.open) {\n // Se o painel estiver fechado, selecionar a próxima opção diretamente\n this.selectNextOption();\n } else {\n // Se o painel estiver aberto, navegar para a próxima opção\n this.highlightNext();\n }\n }\n\n private handleArrowUp() {\n if (!this.open) {\n // Se o painel estiver fechado, selecionar a opção anterior diretamente\n this.selectPreviousOption();\n } else {\n // Se o painel estiver aberto, navegar para a opção anterior\n this.highlightPrevious();\n }\n }\n\n private handleEnterOrSpace() {\n if (this.open) {\n // Se o painel estiver aberto, selecionar a opção ativa\n this.selectActive();\n } else {\n // Se o painel estiver fechado, abrir\n this.openPanel();\n }\n }\n\n private handleEscape() {\n if (this.open) {\n this.closePanel();\n }\n }\n\n private closeOtherPanels() {\n // Buscar todos os outros selects na página e fechá-los\n const allSelects = document.querySelectorAll('matcha-select');\n allSelects.forEach(selectEl => {\n if (selectEl !== this.elRef.nativeElement) {\n // Disparar evento para fechar outros painéis\n const closeEvent = new CustomEvent('matcha-select-close', {\n bubbles: true\n });\n selectEl.dispatchEvent(closeEvent);\n }\n });\n }\n\n private notifyDirectiveOfSelection(value: any) {\n // Disparar evento customizado para notificar a diretiva sobre a seleção\n const selectionEvent = new CustomEvent('matcha-select-selection', {\n detail: { value },\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(selectionEvent);\n }\n\n onTriggerClick() {\n if (this.disabled || this.isDisabled) return;\n this.togglePanel();\n }\n\n openPanel() {\n if (this.disabled || this.isDisabled) {\n return;\n }\n\n // Garantir que o triggerElement está configurado\n if (!this.triggerElement) {\n this.triggerElement = this.elRef.nativeElement.querySelector('.matcha-select-trigger');\n }\n\n if (!this.triggerElement) {\n return;\n }\n\n // Fechar outros painéis abertos antes de abrir este\n this.closeOtherPanels();\n\n this.open = true;\n this.cdr.detectChanges(); // Força detecção de mudanças\n\n this.panel.attachTo(this.triggerElement);\n this.panel.openPanel();\n\n // Configurar o activeIndex baseado no valor selecionado\n this.setActiveIndexFromSelectedValue();\n this.updateSelectedStates();\n\n this.opened.emit();\n }\n\n closePanel() {\n this.open = false;\n this.activeIndex = -1;\n this.updateSelectedStates();\n this.panel.closePanel();\n this.closed.emit();\n\n // Marcar como touched quando o painel fecha (importante para validação)\n this.onTouched();\n }\n\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n resetActive() {\n this.activeIndex = -1;\n this.updateSelectedStates();\n }\n\n private setActiveIndexFromSelectedValue() {\n if (this.selectedValue !== undefined) {\n const options = this.options.toArray();\n const selectedIndex = options.findIndex(opt => opt.value === this.selectedValue);\n this.activeIndex = selectedIndex >= 0 ? selectedIndex : 0;\n } else {\n this.activeIndex = 0;\n }\n }\n\n private selectNextOption() {\n const options = this.options.toArray();\n if (!options.length) return;\n\n let currentIndex = -1;\n if (this.selectedValue !== undefined) {\n currentIndex = options.findIndex(opt => opt.value === this.selectedValue);\n }\n\n // Se não há seleção atual ou é a última opção, selecionar a primeira\n const nextIndex = currentIndex < 0 || currentIndex >= options.length - 1 ? 0 : currentIndex + 1;\n this.selectOptionByIndex(nextIndex);\n }\n\n private selectPreviousOption() {\n const options = this.options.toArray();\n if (!options.length) return;\n\n let currentIndex = -1;\n if (this.selectedValue !== undefined) {\n currentIndex = options.findIndex(opt => opt.value === this.selectedValue);\n }\n\n // Se não há seleção atual ou é a primeira opção, selecionar a última\n const prevIndex = currentIndex <= 0 ? options.length - 1 : currentIndex - 1;\n this.selectOptionByIndex(prevIndex);\n }\n\n private selectOptionByIndex(index: number) {\n const options = this.options.toArray();\n if (index < 0 || index >= options.length) return;\n\n const option = options[index];\n if (option.disabled) return;\n\n // Atualizar o valor selecionado\n this.selectedValue = option.value;\n // Armazenar o label (texto interno) da opção selecionada\n this.selectedLabel = option.getTextContent();\n\n // Marcar a opção como selecionada\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n // Notificar a diretiva sobre a seleção\n this.notifyDirectiveOfSelection(option.value);\n\n // Emitir evento de mudança de seleção\n this.selectionChange.emit(option.value);\n\n // Notificar o Angular Forms sobre a mudança\n this.onChange(option.value);\n this.onTouched();\n\n // Forçar detecção de mudanças\n this.cdr.detectChanges();\n }\n\n private updateSelectedStates() {\n const items = this.options.toArray();\n items.forEach((opt, i) => opt.selected = i === this.activeIndex);\n }\n\n highlightNext() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex + 1) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n highlightPrevious() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex - 1 + length) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n private scrollToActive() {\n const opts = this.options.toArray();\n if (this.activeIndex < 0 || this.activeIndex >= opts.length) return;\n const host = opts[this.activeIndex].nativeElement;\n if (host && host.scrollIntoView) {\n host.scrollIntoView({ block: 'nearest' });\n }\n }\n\n selectActive() {\n if (this.activeIndex < 0) return;\n const opt = this.options.toArray()[this.activeIndex];\n if (opt?.disabled) return;\n this.selectOption(opt);\n }\n\n // chamado por matcha-option quando clicado\n selectOption(option: MatchaOptionComponent) {\n // Armazenar o valor selecionado\n this.selectedValue = option.value;\n // Armazenar o label (texto interno) da opção selecionada\n this.selectedLabel = option.getTextContent();\n\n // Marcar a opção como selecionada diretamente\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n // Notificar a diretiva sobre a seleção antes de fechar o painel\n this.notifyDirectiveOfSelection(option.value);\n\n // Emitir evento de mudança de seleção\n this.selectionChange.emit(option.value);\n\n // Notificar o Angular Forms sobre a mudança\n this.onChange(option.value);\n this.onTouched();\n\n // Fechamos painel automaticamente\n this.closePanel();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n }\n\n getSelectedValue() {\n // Usar o valor armazenado se disponível, senão buscar na QueryList\n const value = this.selectedValue !== undefined ? this.selectedValue : this.options.find(o => o.selected)?.value;\n return value;\n }\n\n getSelectedLabel(): string {\n // Retorna o label armazenado ou placeholder\n return this.selectedLabel || '';\n }\n\n // Método para definir valor programaticamente\n setValue(value: any) {\n this.selectedValue = value;\n this.cdr.detectChanges();\n }\n\n // Método para limpar seleção\n clearSelection() {\n this.selectedValue = undefined;\n this.selectedLabel = '';\n this.options.forEach(o => o.selected = false);\n this.cdr.detectChanges();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any): void {\n this.selectedValue = value;\n // Atualizar o label quando o valor é definido programaticamente\n if (value !== undefined && value !== null) {\n const selectedOption = this.options?.find(o => o.value === value);\n if (selectedOption) {\n this.selectedLabel = selectedOption.getTextContent();\n }\n } else {\n this.selectedLabel = '';\n }\n this.cdr.detectChanges();\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n this.cdr.detectChanges();\n }\n}\n","<div class=\"matcha-select-container\" [class.matcha-select-disabled]=\"disabled || isDisabled\">\n <div\n class=\"matcha-select-trigger\"\n [class.matcha-select-open]=\"open\"\n [class.matcha-select-disabled]=\"disabled || isDisabled\"\n (click)=\"onTriggerClick()\"\n [attr.tabindex]=\"(disabled || isDisabled) ? -1 : 0\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-disabled]=\"disabled || isDisabled\">\n\n <span class=\"matcha-select-value\" [class.matcha-select-placeholder]=\"!selectedValue\">\n {{ getSelectedLabel() || placeholder }}\n </span>\n\n <span class=\"matcha-select-arrow\" [class.matcha-select-arrow-open]=\"open\">\n <span class=\"i-matcha-action_arrow_down\"></span>\n </span>\n </div>\n\n <matcha-panel\n #panel\n [placement]=\"placement\"\n [maxHeight]=\"maxHeight\"\n [minWidth]=\"minWidth\"\n [open]=\"open\">\n <ng-content></ng-content>\n </matcha-panel>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * Service to internationalize the paginator component.\n * Based on Angular Material's MatPaginatorIntl\n */\n@Injectable({ providedIn: 'root' })\nexport class MatchaPaginatorIntl {\n /** Stream to emit from when labels are changed. Used by the paginator to update the labels. */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the page size selector. */\n itemsPerPageLabel: string = 'Itens por página:';\n\n /** A label for the button that increments the current page. */\n nextPageLabel: string = 'Próxima página';\n\n /** A label for the button that decrements the current page. */\n previousPageLabel: string = 'Página anterior';\n\n /** A label for the button that moves to the first page. */\n firstPageLabel: string = 'Primeira página';\n\n /** A label for the button that moves to the last page. */\n lastPageLabel: string = 'Última página';\n\n /**\n * A label for the range of items within the current page and the length of the whole list.\n */\n getRangeLabel: (page: number, pageSize: number, length: number) => string =\n (page: number, pageSize: number, length: number) => {\n if (length === 0) {\n return `0 de 0`;\n }\n const amountPages = Math.ceil(length / pageSize);\n return `Página ${page + 1} de ${amountPages}`;\n };\n\n /**\n * A label for the range display (e.g., \"Exibindo 1 a 10 de 100 registros\")\n */\n getRangeDisplayLabel: (start: number, end: number, length: number) => string =\n (start: number, end: number, length: number) => {\n if (length === 0) {\n return 'Exibindo 0 de 0 registros';\n }\n return `Exibindo ${start} a ${end} de ${length} registros`;\n };\n\n /**\n * A label for filtered results (e.g., \"(filtrados de 500 no total)\")\n */\n getFilteredLabel: (totalLength: number) => string =\n (totalLength: number) => {\n return `(filtrados de ${totalLength} no total)`;\n };\n}\n","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PageEvent } from './page-event.interface';\nimport { MatchaPaginatorIntl } from '../paginator-intl.service';\n\n@Component({\n selector: 'matcha-paginator',\n templateUrl: './paginator.component.html',\n styleUrl: './paginator.component.scss',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatchaPaginatorComponent implements OnDestroy {\n @Input() public pageIndex: number = 0;\n @Input() public length: number = 0;\n @Input() public pageSize: number = 50;\n @Input() public pageSizeOptions: number[] = [];\n \n /** Color theme for active page button. Defaults to 'accent' */\n @Input() public color: string = 'accent';\n\n /** Show total records information. Defaults to false */\n @Input() public showTotal: boolean = false;\n\n /** Filtered length for displaying filtered records count. Optional */\n @Input() public filteredLength?: number;\n\n @Output() public page = new EventEmitter<PageEvent>();\n\n private _intlChanges: Subscription;\n\n constructor(\n public _intl: MatchaPaginatorIntl,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n this._intlChanges = _intl.changes.subscribe(() => {\n // Trigger change detection when labels change\n this._changeDetectorRef.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._intlChanges.unsubscribe();\n }\n\n public get currentPage(): number {\n return this.pageIndex + 1;\n }\n\n public get totalPages(): number {\n if (this.pageSize === 0) return 0;\n return Math.ceil(this.length / this.pageSize);\n }\n\n public get hasPreviousPage(): boolean {\n return this.pageIndex > 0;\n }\n\n public get hasNextPage(): boolean {\n return this.pageIndex < this.totalPages - 1;\n }\n\n public get displayPages(): (number | string)[] {\n const current = this.currentPage;\n const total = this.totalPages;\n const pages: (number | string)[] = [];\n\n if (total <= 1) {\n if (total === 1) {\n pages.push(1);\n }\n return pages;\n }\n\n // Se tiver até 5 páginas, mostra todas\n if (total <= 5) {\n for (let i = 1; i <= total; i++) {\n pages.push(i);\n }\n } else {\n // Janela deslizante: sempre mostra 3 páginas com a atual no meio\n // Exemplo: < 1 2 3 ... 999 > -> usuário clica no 3 -> < 2 3 4 ... 999 >\n \n if (current <= 2) {\n // Início: mostra [1, 2, 3, ..., total]\n pages.push(1, 2, 3, '...', total);\n } else if (current >= total - 1) {\n // Final: mostra [1, ..., total-2, total-1, total]\n pages.push(1, '...', total - 2, total - 1, total);\n } else {\n // Meio: mostra [1, ..., current-1, current, current+1, ..., total]\n pages.push(1, '...', current - 1, current, current + 1, '...', total);\n }\n }\n\n return pages;\n }\n\n public trackByPage(index: number, item: number | string): number | string {\n return item;\n }\n\n /** Check if item is a number (for template use only) */\n public isNumber(value: any): boolean {\n return typeof value === 'number';\n }\n\n /** Navigate to previous page */\n public previousPage(): void {\n if (this.hasPreviousPage) {\n this.changePage(this.pageIndex - 1);\n }\n }\n\n /** Navigate to next page */\n public nextPage(): void {\n if (this.hasNextPage) {\n this.changePage(this.pageIndex + 1);\n }\n }\n\n /** Navigate to specific page */\n public goToPage(page: number | string): void {\n if (typeof page === 'number' && page >= 1 && page <= this.totalPages) {\n this.changePage(page - 1);\n }\n }\n \n\n /** Handle page size change */\n public onPageSizeChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n const newPageSize = parseInt(target.value, 10);\n \n if (newPageSize !== this.pageSize) {\n this.changePage(0, newPageSize);\n }\n }\n\n private changePage(pageIndex: number, pageSize?: number): void {\n const previousPageIndex = this.pageIndex;\n \n const event: PageEvent = {\n pageIndex,\n previousPageIndex,\n pageSize: pageSize || this.pageSize,\n length: this.length\n };\n\n this.page.emit(event);\n }\n\n /** Get the range of items being displayed */\n public get rangeStart(): number {\n if (this.length === 0) return 0;\n return (this.pageIndex * this.pageSize) + 1;\n }\n\n public get rangeEnd(): number {\n if (this.length === 0) return 0;\n const end = (this.pageIndex + 1) * this.pageSize;\n return Math.min(end, this.length);\n }\n\n /** Check if there are filtered results */\n public get hasFilteredResults(): boolean {\n return this.filteredLength !== undefined && this.filteredLength !== this.length;\n }\n\n /** Get range label for display */\n public getRangeLabel(): string {\n return this._intl.getRangeDisplayLabel(this.rangeStart, this.rangeEnd, this.length);\n }\n\n /** Get filtered label for display */\n public getFilteredLabel(): string {\n if (this.hasFilteredResults && this.filteredLength !== undefined) {\n return this._intl.getFilteredLabel(this.filteredLength);\n }\n return '';\n }\n}","<div class=\"matcha-paginator flex-row flex-align-center gap-20\">\n <!-- Total records information -->\n <div class=\"paginator-total-info\" *ngIf=\"showTotal\">\n <div class=\"total-range\">{{ getRangeLabel() }}</div>\n <div class=\"total-filtered\" *ngIf=\"hasFilteredResults\">{{ getFilteredLabel() }}</div>\n </div>\n\n <!-- Items per page selector -->\n <div class=\"flex-row flex-align-center gap-8\" *ngIf=\"pageSizeOptions && pageSizeOptions.length > 0\">\n <span class=\"text-sm color-placeholder\">{{ _intl.itemsPerPageLabel }}</span>\n <div class=\"page-size-selector\">\n <select \n class=\"page-size-select radius-8\" \n [value]=\"pageSize\" \n (change)=\"onPageSizeChange($event)\">\n <option *ngFor=\"let option of pageSizeOptions\" [value]=\"option\">\n {{ option }}\n </option>\n </select>\n <div class=\"select-icon\">\n <matcha-icon name=\"action_arrow_down\" size=\"sm\" color=\"fg\"></matcha-icon>\n </div>\n </div>\n </div>\n \n <!-- Page navigation -->\n <div class=\"flex-row flex-align-center gap-8\">\n <!-- Previous page button -->\n <button \n class=\"nav-button\" \n [disabled]=\"!hasPreviousPage\"\n (click)=\"previousPage()\"\n [attr.aria-label]=\"_intl.previousPageLabel\">\n <matcha-icon name=\"action_arrow_left\" size=\"md\"></matcha-icon>\n </button>\n \n <!-- Page numbers -->\n <div class=\"flex-row flex-align-center gap-4\">\n <ng-container *ngFor=\"let page of displayPages; trackBy: trackByPage\">\n <button \n *ngIf=\"isNumber(page); else ellipsis\"\n class=\"page-button\"\n [class.active]=\"page === currentPage\"\n [class.radius-full]=\"page === currentPage\"\n [ngClass]=\"page === currentPage ? color : ''\"\n (click)=\"goToPage(page)\"\n [attr.aria-label]=\"'Ir para página ' + page\">\n {{ page }}\n </button>\n <ng-template #ellipsis>\n <span class=\"ellipsis\">{{ page }}</span>\n </ng-template>\n </ng-container>\n </div>\n \n <!-- Next page button -->\n <button \n class=\"nav-button\" \n [disabled]=\"!hasNextPage\"\n (click)=\"nextPage()\"\n [attr.aria-label]=\"_intl.nextPageLabel\">\n <matcha-icon name=\"action_arrow_right\" size=\"md\"></matcha-icon>\n </button>\n </div>\n </div>","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'matcha-copy-button',\n templateUrl: './copy-button.component.html',\n styleUrls: ['./copy-button.component.scss'],\n standalone: false\n})\nexport class CopyButtonComponent {\n\n @Input() type: string = 'Código';\n @Input() size: 'tiny' | 'small' | 'medium' | 'large' = 'tiny';\n @Input() icon: string = 'copy-out';\n @Input() position: 'absolute' | 'relative' = 'absolute';\n @Input() customClass: string = '';\n\n @Output() copied = new EventEmitter<{text: string, type: string}>();\n\n // Propriedade para controlar o ícone do botão\n currentIcon: string = this.icon;\n isCopied: boolean = false;\n\n // Método para copiar código para a área de transferência\n async copyToClipboard() {\n // Busca o componente matcha-highlight pai\n const highlightComponent = this.elementRef.nativeElement.closest('matcha-highlight');\n\n // Primeiro tenta encontrar textarea (para casos onde ainda não foi processado)\n let textarea = highlightComponent?.querySelector('textarea');\n let textToCopy = '';\n\n if (textarea) {\n // Se encontrou textarea, usa o valor dela\n textToCopy = textarea.value;\n } else {\n // Se não encontrou textarea, procura pelo código destacado\n const codeElement = highlightComponent?.querySelector('code.highlight');\n if (codeElement) {\n textToCopy = codeElement.textContent || codeElement.innerText || '';\n } else {\n console.warn('Nenhum conteúdo encontrado para copiar');\n return;\n }\n }\n\n if (!textToCopy.trim()) {\n console.warn('Conteúdo vazio para copiar');\n return;\n }\n\n try {\n await navigator.clipboard.writeText(textToCopy);\n console.log(`Código ${this.type} copiado para a área de transferência!`);\n this.copied.emit({ text: textToCopy, type: this.type });\n\n // Feedback visual temporário\n this.showCopyFeedback();\n } catch (err) {\n console.error('Erro ao copiar código:', err);\n // Fallback para navegadores mais antigos\n this.fallbackCopyToClipboard(textToCopy);\n }\n }\n\n // Fallback para navegadores que não suportam clipboard API\n private fallbackCopyToClipboard(textToCopy: string) {\n // Cria um textarea temporário para usar o método antigo\n const tempTextarea = document.createElement('textarea');\n tempTextarea.value = textToCopy;\n tempTextarea.style.position = 'fixed';\n tempTextarea.style.left = '-999999px';\n tempTextarea.style.top = '-999999px';\n document.body.appendChild(tempTextarea);\n\n tempTextarea.focus();\n tempTextarea.select();\n tempTextarea.setSelectionRange(0, 99999); // Para mobile\n\n try {\n document.execCommand('copy');\n console.log('Código copiado para a área de transferência!');\n this.copied.emit({ text: textToCopy, type: this.type });\n this.showCopyFeedback();\n } catch (err) {\n console.error('Erro ao copiar código:', err);\n } finally {\n document.body.removeChild(tempTextarea);\n }\n }\n\n // Feedback visual quando copiado\n private showCopyFeedback() {\n const button = this.elementRef.nativeElement.querySelector('button');\n if (button) {\n const originalText = button.title;\n button.title = 'Copiado!';\n\n // Muda o ícone para checked\n this.isCopied = true;\n this.currentIcon = 'action_done';\n\n setTimeout(() => {\n button.title = originalText;\n button.style.transform = '';\n\n // Volta para o ícone original após 2 segundos\n setTimeout(() => {\n this.isCopied = false;\n this.currentIcon = this.icon;\n }, 3000);\n }, 1000);\n }\n }\n\n // Método para obter as classes CSS do botão\n getButtonClasses(): string {\n let classes = `position-${this.position} top-8 right-8 m-8 z-index-10`;\n\n if (this.customClass) {\n classes += ` ${this.customClass}`;\n }\n\n return classes;\n }\n\n constructor(private elementRef: ElementRef) {}\n}\n","<button\n matcha-button\n [size]=\"size\"\n pill=\"true\"\n icon=\"true\"\n [class]=\"getButtonClasses()\"\n (click)=\"copyToClipboard()\"\n [title]=\"'Copiar código ' + type\">\n <matcha-icon [name]=\"currentIcon\" [size]=\"size === 'tiny' ? 'small' : size\"></matcha-icon>\n</button>\n\n\n","import { Component, ContentChild, ElementRef, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n// Prism.js é carregado no módulo highlight.module.ts\n\n@Component({\n selector : 'matcha-highlight',\n template : `\n <matcha-copy-button [type]=\"lang\" class=\"copy-button\"></matcha-copy-button>\n <div class=\"matcha-highlight-container\">\n <div class=\"highlight-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n standalone: false\n})\nexport class MatchaHighlightComponent implements OnInit, OnDestroy\n{\n // Source\n @ContentChild('source', {static: true})\n source!: ElementRef;\n\n // Lang\n @Input('lang')\n lang!: string;\n\n // Path\n @Input('path')\n path!: string;\n\n // Theme\n @Input('theme') theme: string = '';\n @HostBinding('attr.theme') get themeAttr(): string { return this.theme; }\n\n // Private\n private _unsubscribeAll: Subject<any>;\n\n /**\n * Constructor\n *\n * @param {ElementRef} _elementRef\n * @param {HttpClient} _httpClient\n */\n constructor(\n private _elementRef: ElementRef,\n private _httpClient: HttpClient\n )\n {\n // Set the private defaults\n this._unsubscribeAll = new Subject();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n ngOnInit(): void\n {\n // Debug: Verificar se Prism está carregado\n const Prism = (window as any).Prism;\n console.log('Prism loaded:', typeof Prism !== 'undefined');\n if (typeof Prism !== 'undefined') {\n console.log('Prism languages:', Object.keys(Prism.languages));\n }\n\n // Aplicar tema\n // this.applyTheme();\n\n // If there is no language defined, return...\n if ( !this.lang )\n {\n return;\n }\n\n // If the path is defined...\n if ( this.path )\n {\n // Get the source\n this._httpClient.get(this.path, {responseType: 'text'})\n .pipe(takeUntil(this._unsubscribeAll))\n .subscribe((response) => {\n\n // Highlight it\n this.highlight(response);\n });\n }\n\n // If the path is not defined and the source element exists...\n if ( !this.path && this.source )\n {\n // Highlight it\n this.highlight(this.source.nativeElement.value);\n }\n }\n\n /**\n * On destroy\n */\n ngOnDestroy(): void\n {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Apply theme to the component\n */\n // applyTheme(): void\n // {\n // const element = this._elementRef.nativeElement;\n\n // // Remove existing theme classes\n // element.classList.remove('theme-matcha', 'theme-default', 'theme-dark', 'theme-coy', 'theme-funky', 'theme-okaidia', 'theme-solarizedlight', 'theme-tomorrow', 'theme-twilight');\n\n // // Add new theme class\n // element.classList.add(`theme-${this.theme}`);\n // }\n\n /**\n * Carrega o PrismJS dinamicamente\n */\n private async loadPrismJS(): Promise<void> {\n return new Promise((resolve, reject) => {\n // Verifica se já está carregado\n if (typeof (window as any).Prism !== 'undefined') {\n resolve();\n return;\n }\n\n // Carrega o PrismJS principal\n const script = document.createElement('script');\n script.src = '/assets/prismjs/prism.js';\n script.onload = () => {\n // Carrega os componentes de linguagem\n this.loadPrismComponent('/assets/prismjs/components/prism-javascript.js');\n this.loadPrismComponent('/assets/prismjs/components/prism-css.js');\n this.loadPrismComponent('/assets/prismjs/components/prism-markup.js');\n\n console.log('PrismJS carregado com sucesso');\n resolve();\n };\n script.onerror = () => {\n console.error('Erro ao carregar PrismJS');\n reject(new Error('Erro ao carregar PrismJS'));\n };\n document.head.appendChild(script);\n });\n }\n\n /**\n * Carrega um componente do PrismJS\n */\n private loadPrismComponent(src: string): void {\n const script = document.createElement('script');\n script.src = src;\n document.head.appendChild(script);\n }\n\n /**\n * Highlight the given source code\n *\n * @param sourceCode\n */\n async highlight(sourceCode: string): Promise<void>\n {\n // Carrega o PrismJS dinamicamente se não estiver disponível\n if (typeof (window as any).Prism === 'undefined') {\n await this.loadPrismJS();\n }\n\n const Prism = (window as any).Prism;\n\n console.log('Highlighting code:', sourceCode.substring(0, 50) + '...');\n console.log('Language:', this.lang);\n console.log('Prism available:', typeof Prism !== 'undefined');\n\n // Check if Prism is available\n if (typeof Prism === 'undefined') {\n console.error('Prism.js is not loaded');\n this._elementRef.nativeElement.innerHTML = '<pre><code>' + sourceCode + '</code></pre>';\n return;\n }\n\n // Check if the language is supported\n if (!Prism.languages[this.lang]) {\n console.error(`Language \"${this.lang}\" is not supported by Prism.js`);\n console.log('Available languages:', Object.keys(Prism.languages));\n this._elementRef.nativeElement.innerHTML = '<pre><code>' + sourceCode + '</code></pre>';\n return;\n }\n\n // Split the source into lines\n const sourceLines = sourceCode.split('\\n');\n\n\n // Verificar se o array não está vazio\n if (sourceLines.length === 0) {\n console.warn('Source code is empty');\n this._elementRef.nativeElement.innerHTML = '<pre><code></code></pre>';\n return;\n }\n // Remove the first and the last line of the source\n // code if they are blank lines. This way, the html\n // can be formatted properly while using matcha-highlight\n // component\n if (sourceLines.length > 0 && sourceLines[0] && !sourceLines[0].trim())\n {\n sourceLines.shift();\n }\n\n if (sourceLines.length > 0 && sourceLines[sourceLines.length - 1] && !sourceLines[sourceLines.length - 1].trim())\n {\n sourceLines.pop();\n }\n\n // Find the first non-whitespace char index in\n\n // Verificar novamente se o array não está vazio após remoções\n if (sourceLines.length === 0) {\n console.warn('Source code is empty after trimming');\n this._elementRef.nativeElement.innerHTML = '<pre><code></code></pre>';\n return;\n }\n // the first line of the source code\n const indexOfFirstChar = sourceLines[0].search(/\\S|$/);\n\n // Generate the trimmed source\n let source = '';\n\n // Iterate through all the lines\n sourceLines.forEach((line: string, index: number) => {\n\n // Trim the beginning white space depending on the index\n // and concat the source code\n source = source + line.substr(indexOfFirstChar, line.length);\n\n // If it's not the last line...\n if ( index !== sourceLines.length - 1 )\n {\n // Add a line break at the end\n source = source + '\\n';\n }\n });\n\n console.log('Processed source:', source.substring(0, 50) + '...');\n\n // Generate the highlighted code\n const highlightedCode = Prism.highlight(source, Prism.languages[this.lang], this.lang);\n\n console.log('Highlighted result:', highlightedCode.substring(0, 100) + '...');\n\n // Replace the innerHTML of the highlight-content div with the highlighted code\n const highlightContent = this._elementRef.nativeElement.querySelector('.highlight-content');\n if (highlightContent) {\n highlightContent.innerHTML =\n '<pre><code class=\"highlight language-' + this.lang + '\">' + highlightedCode + '</code></pre>';\n } else {\n // Fallback: if highlight-content doesn't exist, use the old method\n this._elementRef.nativeElement.innerHTML =\n '<pre><code class=\"highlight language-' + this.lang + '\">' + highlightedCode + '</code></pre>';\n }\n }\n}\n","// projects/matcha-components/src/lib/matcha-slider/slider/slider.component.ts\n\nimport { Component, Input, Output, EventEmitter, forwardRef, OnInit, OnDestroy, ElementRef, ViewChild, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nexport interface SliderOptions {\n floor?: number;\n ceil?: number;\n step?: number;\n disabled?: boolean;\n pushRange?: boolean;\n noSwitching?: boolean;\n minRange?: number;\n maxRange?: number;\n animate?: boolean;\n draggableRange?: boolean;\n draggableRangeOnly?: boolean;\n showSelectionBar?: boolean;\n showSelectionBarEnd?: boolean;\n showSelectionBarFromValue?: number;\n showSelectionBarToValue?: number;\n selectionBarGradient?: {\n from: string;\n to: string;\n };\n getPointerColor?: (value: number) => string;\n getSelectionBarColor?: (value: number) => string;\n hidePointerLabels?: boolean;\n hideLimitLabels?: boolean;\n keyboardSupport?: boolean;\n scale?: number;\n enforceRange?: boolean;\n enforceStep?: boolean;\n noCommaStyle?: boolean;\n bindIndexForPushRange?: boolean;\n combineLabels?: boolean;\n format?: (value: number) => string;\n combinePossible?: boolean;\n includeTicksScale?: boolean;\n logScale?: boolean;\n customValueToPosition?: (val: number, minVal: number, maxVal: number) => number;\n customPositionToValue?: (percent: number, minVal: number, maxVal: number) => number;\n translate?: (value: number, sliderId: string, label: string) => string;\n}\n\n@Component({\n selector: 'matcha-slider',\n templateUrl: './slider.component.html',\n styleUrl: './slider.component.scss',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSliderComponent),\n multi: true\n }\n ]\n})\nexport class MatchaSliderComponent implements ControlValueAccessor, OnInit, OnDestroy {\n\n\n@Input() value: number = 0;\n\nprivate _highValue: number = 0;\n@Input() set highValue(val: number) {\n this._highValue = val;\n if (val !== null && val !== undefined && val !== 0) {\n this.isRangeInternal = true;\n }\n}\nget highValue(): number {\n return this._highValue;\n}\n\n @Input() options: SliderOptions = {};\n @Input() color: string = 'accent';\n @Input() disabled: boolean | string = false;\n \n @Output() valueChange = new EventEmitter<number>();\n @Output() highValueChange = new EventEmitter<number>();\n @Output() userChange = new EventEmitter<number>();\n @Output() userChangeEnd = new EventEmitter<number>();\n\n @ViewChild('sliderElement', { static: false }) sliderElement?: ElementRef;\n\n private destroy$ = new Subject<void>();\n private isDragging = false;\n private draggingPointer: 'low' | 'high' | null = null;\n private lastUpdateTime = 0;\n private animationFrameId: number | null = null;\n private isRangeInternal = false;\n\n private readonly defaultOptions: SliderOptions = {\n floor: 0,\n ceil: 100,\n step: 1,\n disabled: false,\n pushRange: false,\n noSwitching: false,\n minRange: 0,\n maxRange: 0,\n animate: true,\n draggableRange: false,\n draggableRangeOnly: false,\n showSelectionBar: true,\n showSelectionBarEnd: false,\n showSelectionBarFromValue: 0,\n showSelectionBarToValue: 0,\n hidePointerLabels: false,\n hideLimitLabels: false,\n keyboardSupport: true,\n scale: 1,\n enforceRange: false,\n enforceStep: false,\n noCommaStyle: false,\n bindIndexForPushRange: false,\n combineLabels: false,\n format: (value: number) => value.toString(),\n combinePossible: false,\n includeTicksScale: false,\n logScale: false,\n translate: (value: number) => value.toString()\n };\n\n private onChange = (value: any) => {};\n private onTouched = () => {};\n\n private boundOnMouseMove = this.onMouseMove.bind(this);\n private boundOnMouseUp = this.onMouseUp.bind(this);\n\n constructor(private cdr: ChangeDetectorRef, private elementRef: ElementRef) {}\n\n public get mergedOptions(): SliderOptions {\n return { ...this.defaultOptions, ...this.options };\n }\n\n public get isRange(): boolean {\n return this.isRangeInternal;\n }\n\n public get percentage(): number {\n return this.valueToPercentage(this.value);\n }\n\n public get highPercentage(): number {\n return this.valueToPercentage(this.highValue);\n }\n\n public get selectionBarStyle(): any {\n if (this.isRange) {\n const left = Math.min(this.percentage, this.highPercentage);\n const width = Math.abs(this.highPercentage - this.percentage);\n return {\n left: `${left}%`,\n width: `${width}%`\n };\n } else {\n return {\n left: '0%',\n width: `${this.percentage}%`\n };\n }\n }\n\n public get isAtMaxValue(): boolean {\n const ceil = this.mergedOptions.ceil || 100;\n if (this.isRange) {\n return this.highValue >= ceil;\n } else {\n return this.value >= ceil;\n }\n }\n\n public get isAtMinValue(): boolean {\n const floor = this.mergedOptions.floor || 0;\n if (this.isRange) {\n return this.value <= floor || this.highValue <= floor;\n } else {\n return this.value <= floor;\n }\n }\n\n public get isDisabled(): boolean {\n if (typeof this.disabled === 'string') {\n const stringDisabled = this.disabled === '' || (this.disabled !== 'false');\n return stringDisabled || Boolean(this.mergedOptions.disabled);\n }\n return Boolean(this.disabled) || Boolean(this.mergedOptions.disabled);\n }\n\n public ngOnInit(): void {\n this.initializeValues();\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.cleanupEventListeners();\n this.cancelAnimationFrame();\n }\n\n private initializeValues(): void {\n if (this.isRange && this._highValue === 0) {\n this.highValue = this.mergedOptions.ceil!;\n }\n }\n private valueToPercentage(value: number): number {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n return ((value - floor) / (ceil - floor)) * 100;\n }\n\n private percentageToValue(percentage: number): number {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const value = (percentage / 100) * (ceil - floor) + floor;\n return this.snapToStep(value);\n }\n\n private snapToStep(value: number): number {\n const step = this.mergedOptions.step || 1;\n return Math.round(value / step) * step;\n }\n\n public onPointerMouseDown(event: MouseEvent, isHighValue: boolean = false): void {\n if (this.isDisabled) return;\n \n event.preventDefault();\n event.stopPropagation();\n \n this.isDragging = true;\n this.draggingPointer = isHighValue ? 'high' : 'low';\n \n this.addVisualFeedback();\n this.addEventListeners();\n }\n\n public onTrackMouseDown(event: MouseEvent): void {\n if (this.isDisabled) return;\n \n const sliderElement = this.elementRef.nativeElement.querySelector('.matcha-slider');\n if (!sliderElement) return;\n \n const rect = sliderElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n this.handleRangeTrackClick(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n private addEventListeners(): void {\n document.addEventListener('mousemove', this.boundOnMouseMove);\n document.addEventListener('mouseup', this.boundOnMouseUp);\n document.addEventListener('mouseleave', this.boundOnMouseUp);\n }\n\n private cleanupEventListeners(): void {\n document.removeEventListener('mousemove', this.boundOnMouseMove);\n document.removeEventListener('mouseup', this.boundOnMouseUp);\n document.removeEventListener('mouseleave', this.boundOnMouseUp);\n }\n\n private onMouseMove(event: MouseEvent): void {\n if (!this.isDragging || !this.draggingPointer) return;\n \n const now = Date.now();\n if (now - this.lastUpdateTime < 16) return;\n this.lastUpdateTime = now;\n \n this.cancelAnimationFrame();\n this.animationFrameId = requestAnimationFrame(() => {\n this.updateSliderPosition(event);\n });\n }\n\n private updateSliderPosition(event: MouseEvent): void {\n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n if (this.draggingPointer === 'low') {\n this.updateLowValue(newValue);\n } else {\n this.updateHighValue(newValue);\n }\n } else {\n this.updateSingleValue(newValue);\n }\n \n this.cdr.detectChanges();\n }\n\n private onMouseUp(): void {\n if (this.isDragging) {\n this.isDragging = false;\n this.draggingPointer = null;\n \n this.removeVisualFeedback();\n this.userChangeEnd.emit(this.value);\n this.onChange(this.isRange ? [this.value, this.highValue] : this.value);\n this.onTouched();\n }\n \n this.cleanupEventListeners();\n this.cancelAnimationFrame();\n }\n\n public onPointerClick(event: MouseEvent, isHighValue: boolean = false): void {\n if (this.isDragging) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n \n if (this.isDisabled) return;\n \n event.stopPropagation();\n \n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n if (isHighValue) {\n this.updateHighValue(newValue);\n } else {\n this.updateLowValue(newValue);\n }\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n public onTrackClick(event: MouseEvent): void {\n if (this.isDisabled) return;\n \n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n this.updateRangeValues(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n private calculateValueFromPosition(clientX: number, rect: DOMRect): number {\n const clickX = clientX - rect.left;\n const percentage = Math.max(0, Math.min(100, (clickX / rect.width) * 100));\n return this.percentageToValue(percentage);\n }\n\n private handleRangeTrackClick(newValue: number): void {\n const lowDistance = Math.abs(newValue - this.value);\n const highDistance = Math.abs(newValue - this.highValue);\n \n this.draggingPointer = lowDistance <= highDistance ? 'low' : 'high';\n \n if (this.draggingPointer === 'low') {\n this.updateLowValue(newValue);\n } else {\n this.updateHighValue(newValue);\n }\n }\n\n private addVisualFeedback(): void {\n if (this.sliderElement) {\n this.sliderElement.nativeElement.classList.add('dragging');\n }\n }\n\n private removeVisualFeedback(): void {\n if (this.sliderElement) {\n this.sliderElement.nativeElement.classList.remove('dragging');\n }\n }\n\n private cancelAnimationFrame(): void {\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n }\n\n private updateSingleValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (clampedValue !== this.value) {\n this.value = clampedValue;\n this.valueChange.emit(this.value);\n this.userChange.emit(this.value);\n this.onChange(this.value);\n this.cdr.markForCheck();\n }\n }\n\n private updateRangeValues(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n const lowDistance = Math.abs(clampedValue - this.value);\n const highDistance = Math.abs(clampedValue - this.highValue);\n \n if (lowDistance < highDistance) {\n this.updateLowValue(clampedValue);\n } else {\n this.updateHighValue(clampedValue);\n }\n }\n\n private updateLowValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const minRange = this.mergedOptions.minRange || 0;\n const maxRange = this.mergedOptions.maxRange || 0;\n \n let clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (maxRange > 0) {\n clampedValue = Math.min(clampedValue, this.highValue - maxRange);\n }\n \n if (minRange > 0) {\n clampedValue = Math.max(clampedValue, this.highValue - minRange);\n }\n \n if (this.mergedOptions.noSwitching) {\n clampedValue = Math.min(clampedValue, this.highValue);\n }\n \n if (clampedValue !== this.value) {\n this.value = clampedValue;\n this.valueChange.emit(this.value);\n this.userChange.emit(this.value);\n this.onChange([this.value, this.highValue]);\n this.cdr.markForCheck();\n }\n }\n\n private updateHighValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const minRange = this.mergedOptions.minRange || 0;\n const maxRange = this.mergedOptions.maxRange || 0;\n \n let clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (maxRange > 0) {\n clampedValue = Math.min(clampedValue, this.value + maxRange);\n }\n \n if (minRange > 0) {\n clampedValue = Math.max(clampedValue, this.value + minRange);\n }\n \n if (this.mergedOptions.noSwitching) {\n clampedValue = Math.max(clampedValue, this.value);\n }\n \n if (clampedValue !== this.highValue) {\n this.highValue = clampedValue;\n this.highValueChange.emit(this.highValue);\n this.userChange.emit(this.highValue);\n this.onChange([this.value, this.highValue]);\n this.cdr.markForCheck();\n }\n }\n\n public onKeyDown(event: KeyboardEvent): void {\n if (this.isDisabled || !this.mergedOptions.keyboardSupport) return;\n \n const step = this.mergedOptions.step || 1;\n let newValue = this.value;\n \n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault();\n newValue = this.value + step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault();\n newValue = this.value - step;\n break;\n case 'Home':\n event.preventDefault();\n newValue = this.mergedOptions.floor || 0;\n break;\n case 'End':\n event.preventDefault();\n newValue = this.mergedOptions.ceil || 100;\n break;\n case 'PageUp':\n event.preventDefault();\n newValue = this.value + (step * 10);\n break;\n case 'PageDown':\n event.preventDefault();\n newValue = this.value - (step * 10);\n break;\n default:\n return;\n }\n \n if (this.isRange) {\n this.updateRangeValues(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n\n\npublic writeValue(value: any): void {\n if (Array.isArray(value)) {\n this.isRangeInternal = true;\n this.value = value[0] || 0;\n this.highValue = value[1] ?? (this.mergedOptions.ceil || 100);\n } else if (typeof value === 'number') {\n this.isRangeInternal = false;\n this.value = value;\n }\n this.cdr.markForCheck();\n}\n\n public registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n public getPointerStyle(isHighValue: boolean = false): any {\n const percentage = isHighValue ? this.highPercentage : this.percentage;\n return {\n left: `${percentage}%`\n };\n }\n\n public formatValue(value: number): string {\n return this.mergedOptions.format ? this.mergedOptions.format(value) : value.toString();\n }\n}","<!-- projects/matcha-components/src/lib/matcha-slider/slider/slider.component.html -->\n\n<div class=\"matcha-slider\" [class.disabled]=\"isDisabled\" [class.range]=\"isRange\"\n [attr.data-color]=\"color\" #sliderElement>\n\n <div class=\"limit-labels\" *ngIf=\"!mergedOptions.hideLimitLabels\">\n <span class=\"floor-label\" [style.visibility]=\"isAtMinValue ? 'hidden' : 'visible'\">\n {{ formatValue(mergedOptions.floor || 0) }}\n </span>\n \n <span class=\"ceil-label\" [style.visibility]=\"isAtMaxValue ? 'hidden' : 'visible'\">\n {{ formatValue(mergedOptions.ceil || 100) }}\n </span>\n </div>\n \n <div class=\"slider-track\" (mousedown)=\"onTrackMouseDown($event)\" (click)=\"onTrackClick($event)\">\n\n <div class=\"selection-bar\" [style]=\"selectionBarStyle\" *ngIf=\"mergedOptions.showSelectionBar\">\n </div>\n\n <div class=\"pointer low-pointer\" [style]=\"getPointerStyle(false)\"\n [attr.tabindex]=\"isDisabled ? -1 : 0\"\n (mousedown)=\"onPointerMouseDown($event, false)\" (click)=\"onPointerClick($event, false)\"\n (keydown)=\"onKeyDown($event)\" role=\"slider\" [attr.aria-valuemin]=\"mergedOptions.floor\"\n [attr.aria-valuemax]=\"mergedOptions.ceil\" [attr.aria-valuenow]=\"value\"\n [attr.aria-disabled]=\"isDisabled\">\n\n <div class=\"pointer-label\" *ngIf=\"!mergedOptions.hidePointerLabels\">\n {{ formatValue(value) }}\n </div>\n </div>\n\n <div class=\"pointer high-pointer\" [style]=\"getPointerStyle(true)\"\n [attr.tabindex]=\"isDisabled ? -1 : 0\" (mousedown)=\"onPointerMouseDown($event, true)\"\n (click)=\"onPointerClick($event, true)\" (keydown)=\"onKeyDown($event)\" role=\"slider\"\n [attr.aria-valuemin]=\"mergedOptions.floor\" [attr.aria-valuemax]=\"mergedOptions.ceil\"\n [attr.aria-valuenow]=\"highValue\" [attr.aria-disabled]=\"isDisabled\" *ngIf=\"isRange\">\n\n <div class=\"pointer-label\" *ngIf=\"!mergedOptions.hidePointerLabels\">\n {{ formatValue(highValue) }}\n </div>\n </div>\n </div>\n\n</div>","import { Component, Input, Output, EventEmitter, ElementRef, HostBinding, HostListener, AfterViewInit, ContentChildren, QueryList, OnInit } from '@angular/core';\n\n@Component({\n selector: 'matcha-chip',\n standalone: false,\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss']\n})\nexport class MatchaChipComponent implements OnInit, AfterViewInit {\n @HostBinding('class')\n get hostClasses(): string {\n return 'matcha-chip radius-full d-flex align-items-center gap-8 px-14 py-10 h-20';\n }\n /** Cor do chip (primary, accent, warn) */\n @Input() color: 'primary' | 'accent' | 'warn' | string = 'default';\n \n /** Se o chip está selecionado */\n @Input() \n get selected(): boolean {\n return this._selected;\n }\n set selected(value: boolean) {\n this._selected = value;\n this.selectedChange.emit(this._selected);\n }\n private _selected = false;\n\n /** Se o chip pode ser selecionado */\n @Input() selectable: boolean = false;\n\n /** Se o chip pode ser removido */\n @Input() removable: boolean = false;\n\n /** Se o chip está desabilitado */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled = false;\n\n /** Valor associado ao chip */\n @Input() value: any = null;\n\n /** Evento emitido quando o chip é selecionado */\n @Output() selectedChange = new EventEmitter<boolean>();\n\n /** Evento emitido quando o botão de remover é clicado */\n @Output() removed = new EventEmitter<MatchaChipComponent>();\n\n /** Evento emitido quando o chip é destruído */\n @Output() destroyed = new EventEmitter<MatchaChipComponent>();\n\n \n\n constructor(public _elementRef: ElementRef) {}\n\n ngOnInit() {\n // Aplica as classes CSS diretamente no elemento\n const element = this._elementRef.nativeElement;\n element.classList.add('matcha-chip', 'radius-full', 'd-flex', 'align-items-center', 'gap-8', 'px-14', 'py-10', 'h-20');\n }\n\n ngAfterViewInit() {\n this._setupChipRemoveDirective();\n }\n\n private _setupChipRemoveDirective() {\n // Usa event delegation para capturar cliques em elementos com matchaChipRemove\n this._elementRef.nativeElement.addEventListener('click', (event: Event) => {\n const target = event.target as Element;\n \n // Verifica se o elemento clicado tem o atributo matchaChipRemove\n // ou se é um elemento filho de um elemento com matchaChipRemove\n const removeElement = target.closest('[matchaChipRemove]');\n \n if (removeElement) {\n event.stopPropagation();\n event.preventDefault();\n if (this.removable && !this.disabled) {\n this.remove();\n }\n }\n });\n }\n\n hasCustomRemoveIcon(): boolean {\n return this._elementRef.nativeElement.querySelector('[matchaChipRemove]') !== null;\n }\n\n /** Manipula o clique no chip */\n @HostListener('click', ['$event'])\n _handleClick(event: Event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n if (this.selectable) {\n this.toggleSelected();\n }\n }\n\n /** Manipula o evento de teclado */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent) {\n if (this.disabled) {\n return;\n }\n\n switch (event.key) {\n case 'Delete':\n case 'Backspace':\n if (this.removable) {\n this.remove();\n event.preventDefault();\n }\n break;\n case ' ':\n case 'Enter':\n if (this.selectable) {\n this.toggleSelected();\n event.preventDefault();\n }\n break;\n }\n }\n\n /** Alterna o estado de seleção do chip */\n toggleSelected(): void {\n if (this.selectable && !this.disabled) {\n this.selected = !this.selected;\n }\n }\n\n /** Remove o chip */\n remove(): void {\n if (this.removable && !this.disabled) {\n this.removed.emit(this);\n }\n }\n\n /** Foco no elemento do chip */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n ngOnDestroy() {\n this.destroyed.emit(this);\n }\n}\n","<span class=\"matcha-chip-content color-label\">\n <ng-content></ng-content>\n</span>\n<ng-container *ngIf=\"removable && !hasCustomRemoveIcon()\">\n <matcha-divider direction=\"vertical\" gap=\"0\"></matcha-divider>\n <button \n type=\"button\"\n class=\"matcha-chip-remove d-flex align-items-center justify-content-center w-20 h-20 min-w-20 radius-full cursor-pointer border-0 background-transparent p-0 m-0\"\n [disabled]=\"disabled\"\n (click)=\"remove(); $event.stopPropagation()\"\n tabindex=\"-1\"\n aria-label=\"Remove\"\n matchaChipRemove>\n <matcha-icon name=\"close\" class=\"fs-14\" color=\"label\"></matcha-icon>\n </button>\n</ng-container>\n","import { \n Component, \n Input, \n Output, \n EventEmitter, \n ContentChildren, \n QueryList, \n AfterContentInit,\n HostBinding,\n HostListener,\n forwardRef,\n OnDestroy,\n OnInit,\n ElementRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatchaChipComponent } from '../chip/chip.component';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-chip-list',\n standalone: false,\n templateUrl: './chip-list.component.html',\n styleUrls: ['./chip-list.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaChipListComponent),\n multi: true\n }\n ]\n})\nexport class MatchaChipListComponent implements OnInit, AfterContentInit, OnDestroy, ControlValueAccessor {\n \n /** Se múltiplos chips podem ser selecionados */\n @Input() multiple: boolean = false;\n\n /** Se os chips podem ser selecionados */\n @Input() selectable: boolean = false;\n\n /** Se a chip list está desabilitada */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n this._updateChipsDisabledState();\n }\n private _disabled = false;\n\n /** Valor(es) selecionado(s) */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n this._value = newValue;\n this._updateChipsSelectionState();\n }\n private _value: any;\n\n /** Orientação da lista de chips */\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /** Evento emitido quando a seleção muda */\n @Output() change = new EventEmitter<any>();\n\n /** Evento emitido quando um chip é removido */\n @Output() removed = new EventEmitter<MatchaChipComponent>();\n\n @ContentChildren(MatchaChipComponent, { descendants: true }) \n chips!: QueryList<MatchaChipComponent>;\n\n @HostBinding('class.matcha-chip-list') chipListClass = true;\n @HostBinding('class.matcha-chip-list-disabled') \n get isDisabled() { return this.disabled; }\n\n @HostBinding('attr.role') role = 'listbox';\n \n @HostBinding('attr.aria-multiselectable')\n get ariaMultiselectable() { return this.multiple ? 'true' : null; }\n\n @HostBinding('attr.aria-disabled')\n get ariaDisabled() { return this.disabled.toString(); }\n\n private _chipSubscriptions: Subscription[] = [];\n private _focusedChipIndex = 0;\n\n // ControlValueAccessor\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(public _elementRef: ElementRef) {}\n\n ngOnInit() {\n // Aplica as classes CSS diretamente no elemento\n const element = this._elementRef.nativeElement;\n element.classList.add('matcha-chip-list');\n }\n\n ngAfterContentInit() {\n this._setupChipListeners();\n this._updateChipsSelectionState();\n this._updateChipsDisabledState();\n\n // Observa mudanças na lista de chips\n this.chips.changes.subscribe(() => {\n this._cleanupChipSubscriptions();\n this._setupChipListeners();\n this._updateChipsSelectionState();\n this._updateChipsDisabledState();\n });\n }\n\n ngOnDestroy() {\n this._cleanupChipSubscriptions();\n }\n\n /** Configura listeners para os chips */\n private _setupChipListeners() {\n this.chips.forEach((chip, index) => {\n // Torna os chips selecionáveis se a lista for selecionável\n if (this.selectable) {\n chip.selectable = true;\n }\n\n // Listener para mudanças de seleção\n const selectedChangeSub = chip.selectedChange.subscribe(() => {\n this._onChipSelectionChange(chip);\n });\n\n // Listener para remoção de chips\n const removedSub = chip.removed.subscribe(() => {\n this._onChipRemoved(chip);\n });\n\n this._chipSubscriptions.push(selectedChangeSub, removedSub);\n });\n }\n\n /** Limpa as subscrições dos chips */\n private _cleanupChipSubscriptions() {\n this._chipSubscriptions.forEach(sub => sub.unsubscribe());\n this._chipSubscriptions = [];\n }\n\n /** Manipula mudança de seleção de um chip */\n private _onChipSelectionChange(chip: MatchaChipComponent) {\n if (this.disabled) {\n return;\n }\n\n if (!this.multiple) {\n // Deseleciona todos os outros chips se não for múltiplo\n this.chips.forEach(c => {\n if (c !== chip && c.selected) {\n c.selected = false;\n }\n });\n }\n\n this._updateValue();\n this.onTouched();\n }\n\n /** Manipula remoção de um chip */\n private _onChipRemoved(chip: MatchaChipComponent) {\n if (this.disabled) {\n return;\n }\n\n // Remove o chip da seleção se estiver selecionado\n if (chip.selected) {\n chip.selected = false;\n this._updateValue();\n }\n\n // Emite o evento de remoção\n this.removed.emit(chip);\n this.onTouched();\n }\n\n\n\n /** Atualiza o valor baseado nos chips selecionados */\n private _updateValue() {\n if (this.multiple) {\n this._value = this.chips\n .filter(chip => chip.selected)\n .map(chip => chip.value);\n } else {\n const selectedChip = this.chips.find(chip => chip.selected);\n this._value = selectedChip ? selectedChip.value : null;\n }\n\n this.onChange(this._value);\n this.change.emit(this._value);\n }\n\n /** Atualiza o estado de seleção dos chips baseado no valor */\n private _updateChipsSelectionState() {\n if (!this.chips) {\n return;\n }\n\n if (this.multiple && Array.isArray(this._value)) {\n this.chips.forEach(chip => {\n chip.selected = this._value.includes(chip.value);\n });\n } else {\n this.chips.forEach(chip => {\n chip.selected = chip.value === this._value;\n });\n }\n }\n\n /** Atualiza o estado desabilitado dos chips */\n private _updateChipsDisabledState() {\n if (!this.chips) {\n return;\n }\n\n this.chips.forEach(chip => {\n chip.disabled = this.disabled;\n });\n }\n\n /** Manipula navegação por teclado */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent) {\n if (this.disabled || !this.chips || this.chips.length === 0) {\n return;\n }\n\n const chipsArray = this.chips.toArray();\n const isHorizontal = this.orientation === 'horizontal';\n\n switch (event.key) {\n case isHorizontal ? 'ArrowLeft' : 'ArrowUp':\n this._focusPreviousChip();\n event.preventDefault();\n break;\n case isHorizontal ? 'ArrowRight' : 'ArrowDown':\n this._focusNextChip();\n event.preventDefault();\n break;\n case 'Home':\n this._focusFirstChip();\n event.preventDefault();\n break;\n case 'End':\n this._focusLastChip();\n event.preventDefault();\n break;\n }\n }\n\n /** Foca no chip anterior */\n private _focusPreviousChip() {\n const chipsArray = this.chips.toArray();\n if (this._focusedChipIndex > 0) {\n this._focusedChipIndex--;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n /** Foca no próximo chip */\n private _focusNextChip() {\n const chipsArray = this.chips.toArray();\n if (this._focusedChipIndex < chipsArray.length - 1) {\n this._focusedChipIndex++;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n /** Foca no primeiro chip */\n private _focusFirstChip() {\n const chipsArray = this.chips.toArray();\n if (chipsArray.length > 0) {\n this._focusedChipIndex = 0;\n chipsArray[0].focus();\n }\n }\n\n /** Foca no último chip */\n private _focusLastChip() {\n const chipsArray = this.chips.toArray();\n if (chipsArray.length > 0) {\n this._focusedChipIndex = chipsArray.length - 1;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"matcha-chip-list-wrapper\" [class.matcha-chip-list-vertical]=\"orientation === 'vertical'\">\n <ng-content></ng-content>\n</div>","import { Directive, ElementRef, HostListener, Input, Renderer2, OnDestroy, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[matchaTooltip]',\n standalone: false\n})\nexport class MatchaTooltipDirective implements OnDestroy {\n @Input('matchaTooltip') tooltipText: string = '';\n private _tooltipDisabled = false;\n @Input('matchaTooltipDisabled') get tooltipDisabled() { return this._tooltipDisabled; }\n set tooltipDisabled(v: boolean | string) { this._tooltipDisabled = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-disabled')\n get tooltipDisabledAttr(): string | null {\n return this.tooltipDisabled ? 'true' : 'false';\n }\n\n private _preferAbove = false;\n @Input('matchaTooltipAbove') get preferAbove() { return this._preferAbove; }\n set preferAbove(v: boolean | string) { this._preferAbove = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-above')\n get preferAboveAttr(): string | null {\n return this.preferAbove ? 'true' : 'false';\n }\n\n private _preferBelow = false;\n @Input('matchaTooltipBelow') get preferBelow() { return this._preferBelow; }\n set preferBelow(v: boolean | string) { this._preferBelow = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-below')\n get preferBelowAttr(): string | null {\n return this.preferBelow ? 'true' : 'false';\n }\n\n private _preferLeft = false;\n @Input('matchaTooltipLeft') get preferLeft() { return this._preferLeft; }\n set preferLeft(v: boolean | string) { this._preferLeft = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-left')\n get preferLeftAttr(): string | null {\n return this.preferLeft ? 'true' : 'false';\n }\n\n private _preferRight = false;\n @Input('matchaTooltipRight') get preferRight() { return this._preferRight; }\n set preferRight(v: boolean | string) { this._preferRight = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-right')\n get preferRightAttr(): string | null {\n return this.preferRight ? 'true' : 'false';\n }\n\n private _tooltipEnableClose = false;\n @Input('matchaTooltipEnableClose') get tooltipEnableClose() { return this._tooltipEnableClose; }\n set tooltipEnableClose(v: boolean | string) { this._tooltipEnableClose = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-enable-close')\n get tooltipEnableCloseAttr(): string | null {\n return this.tooltipEnableClose ? 'true' : 'false';\n }\n\n private tooltipElement: HTMLElement | null = null;\n private documentClickListener: (() => void) | null = null;\n private isDestroyed = false;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('mouseenter')\n onMouseEnter() {\n if (this.isDestroyed || this.tooltipEnableClose) {\n // Em modo de clique/tap, não abre via hover\n return;\n }\n if (this.tooltipDisabled || this.tooltipElement || !this.tooltipText) {\n return;\n }\n this.createTooltip();\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n if (this.isDestroyed || (!this.tooltipEnableClose && this.tooltipElement)) {\n this.destroyTooltip();\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n if (this.isDestroyed || !this.tooltipEnableClose) {\n return;\n }\n event.stopPropagation();\n if (!this.tooltipElement && !this.tooltipDisabled && this.tooltipText) {\n this.createTooltip();\n }\n }\n\n private createTooltip() {\n // Verificar se já existe um tooltip ativo\n if (this.tooltipElement || this.isDestroyed) {\n return;\n }\n\n // Cria o tooltip e adiciona a classe base\n this.tooltipElement = this.renderer.createElement('div');\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content');\n\n // Define o conteúdo do tooltip\n this.tooltipElement!.textContent = this.tooltipText;\n\n // Define estilos iniciais para medição\n this.renderer.setStyle(this.tooltipElement, 'position', 'absolute');\n this.renderer.setStyle(this.tooltipElement, 'top', '0');\n this.renderer.setStyle(this.tooltipElement, 'left', '0');\n this.renderer.setStyle(this.tooltipElement, 'visibility', 'hidden');\n this.renderer.appendChild(document.body, this.tooltipElement);\n\n // Se tooltipEnableClose estiver ativo, adiciona o botão de fechar\n if (this.tooltipEnableClose) {\n const closeButton = this.renderer.createElement('div');\n this.renderer.addClass(closeButton, 'matcha-tooltip-close');\n this.renderer.appendChild(this.tooltipElement, closeButton);\n this.renderer.listen(closeButton, 'click', (e: Event) => {\n e.stopPropagation();\n this.destroyTooltip();\n });\n // Remover listener anterior se existir\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n\n this.documentClickListener = this.renderer.listen('document', 'click', (e: Event) => {\n if (this.tooltipElement && !this.tooltipElement.contains(e.target as Node)) {\n this.destroyTooltip();\n }\n });\n }\n\n // Medidas e cálculo de posição\n const margin = 8;\n const hostRect = this.el.nativeElement.getBoundingClientRect();\n const tooltipRect = this.tooltipElement!.getBoundingClientRect();\n\n const hasSpaceAbove = hostRect.top >= tooltipRect.height + margin;\n const hasSpaceBelow = (window.innerHeight - hostRect.bottom) >= tooltipRect.height + margin;\n const hasSpaceLeft = hostRect.left >= tooltipRect.width + margin;\n const hasSpaceRight = (window.innerWidth - hostRect.right) >= tooltipRect.width + margin;\n\n let chosenPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n if (this.preferAbove && hasSpaceAbove) {\n chosenPosition = 'above';\n } else if (this.preferBelow && hasSpaceBelow) {\n chosenPosition = 'below';\n } else if (this.preferLeft && hasSpaceLeft) {\n chosenPosition = 'left';\n } else if (this.preferRight && hasSpaceRight) {\n chosenPosition = 'right';\n } else {\n chosenPosition = hasSpaceAbove ? 'above' : (hasSpaceBelow ? 'below' : 'above');\n }\n\n let top: number = 0;\n let left: number = 0;\n switch (chosenPosition) {\n case 'above':\n top = hostRect.top + window.scrollY - tooltipRect.height - margin;\n left = hostRect.left + window.scrollX + (hostRect.width - tooltipRect.width) / 2;\n break;\n case 'below':\n top = hostRect.bottom + window.scrollY + margin;\n left = hostRect.left + window.scrollX + (hostRect.width - tooltipRect.width) / 2;\n break;\n case 'left':\n top = hostRect.top + window.scrollY + (hostRect.height - tooltipRect.height) / 2;\n left = hostRect.left + window.scrollX - tooltipRect.width - margin;\n break;\n case 'right':\n top = hostRect.top + window.scrollY + (hostRect.height - tooltipRect.height) / 2;\n left = hostRect.right + window.scrollX + margin;\n break;\n }\n\n if (left < margin) {\n left = margin;\n } else if (left + tooltipRect.width > window.innerWidth - margin) {\n left = window.innerWidth - tooltipRect.width - margin;\n }\n\n this.renderer.setStyle(this.tooltipElement, 'top', `${top}px`);\n this.renderer.setStyle(this.tooltipElement, 'left', `${left}px`);\n this.renderer.setStyle(this.tooltipElement, 'visibility', 'visible');\n\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_below');\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_left');\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_right');\n if (chosenPosition === 'below') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_below');\n } else if (chosenPosition === 'left') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_left');\n } else if (chosenPosition === 'right') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_right');\n }\n }\n\n private destroyTooltip() {\n if (this.tooltipElement) {\n this.renderer.removeChild(document.body, this.tooltipElement);\n this.tooltipElement = null;\n }\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n\n ngOnDestroy() {\n this.isDestroyed = true;\n this.destroyTooltip();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n// import { MatchaTooltipComponent } from './tooltip/tooltip.component';\nimport { MatchaTooltipDirective } from './tooltip.directive';\n\n@NgModule({\n declarations: [MatchaTooltipDirective],\n imports: [CommonModule],\n exports: [MatchaTooltipDirective],\n})\nexport class MatchaTooltipModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconComponent } from './icon.component';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n@NgModule({\n declarations: [MatchaIconComponent],\n imports: [CommonModule, MatchaTooltipModule],\n exports: [MatchaIconComponent],\n})\nexport class MatchaIconModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaTitleComponent } from './title/title.component';\n\n@NgModule({\n declarations: [MatchaTitleComponent],\n imports: [CommonModule],\n exports: [MatchaTitleComponent],\n})\nexport class MatchaTitleModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaDividerComponent } from './divider/divider.component';\n\n@NgModule({\n declarations: [\n MatchaDividerComponent\n ],\n imports: [CommonModule],\n exports: [\n MatchaDividerComponent\n ],\n})\nexport class MatchaDividerModule {}\n","import { NgModule } from '@angular/core';\n\nimport { MatchaButtonComponent } from './button/button.component';\n\n@NgModule({\n declarations: [MatchaButtonComponent],\n imports: [],\n exports: [MatchaButtonComponent],\n})\nexport class MatchaButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAccordionComponent } from './accordion/accordion.component';\nimport { MatchaAccordionItemComponent } from './accordion-item/accordion-item.component';\nimport { MatchaAccordionHeaderComponent } from './accordion-header/accordion-header.component';\nimport { MatchaAccordionContentComponent } from './accordion-content/accordion-content.component';\n\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\n\n\n@NgModule({\n declarations: [\n MatchaAccordionComponent,\n MatchaAccordionItemComponent,\n MatchaAccordionHeaderComponent,\n MatchaAccordionContentComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n MatchaButtonModule\n ],\n exports: [\n MatchaAccordionComponent,\n MatchaAccordionItemComponent,\n MatchaAccordionHeaderComponent,\n MatchaAccordionContentComponent\n ]\n})\nexport class MatchaAccordionModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaInfiniteScrollComponent } from './matcha-infinite-scroll/matcha-infinite-scroll.component';\nimport { MatchaInfiniteScrollDataComponent } from './matcha-infinite-scroll-data/matcha-infinite-scroll-data.component';\n\n\n@NgModule({\n declarations: [MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent]\n})\nexport class MatchaInfiniteScrollModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaLazyloadComponent } from './lazyload/lazyload.component';\nimport { MatchaLazyloadDataComponent } from './lazyload-data/lazyload-data.component';\n\n\n@NgModule({\n declarations: [MatchaLazyloadComponent, MatchaLazyloadDataComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaLazyloadComponent, MatchaLazyloadDataComponent]\n})\nexport class MatchaLazyloadModule { }\n","import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[elevation]',\n standalone: false\n})\nexport class MatchaElevationDirective {\n @Input('elevation') elevation: number | string = 0; // Valor padrão para elevação é 0\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {}\n\n ngOnChanges() {\n // Remove qualquer classe de elevação existente\n for (let i = 0; i <= 24; i++) {\n this._renderer.removeClass(this._elementRef.nativeElement, `elevation-z-${i}`);\n }\n\n // Converte para número se for string\n const elevationValue = typeof this.elevation === 'string'\n ? parseInt(this.elevation, 10)\n : this.elevation;\n\n // Adiciona a classe de elevação correspondente\n if (elevationValue >= 1 && elevationValue <= 24) {\n this._renderer.addClass(this._elementRef.nativeElement, `elevation-z-${elevationValue}`);\n } else {\n this._renderer.addClass(this._elementRef.nativeElement, `elevation-z-0`);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaElevationDirective } from './elevation.directive';\n\n@NgModule({\n declarations: [MatchaElevationDirective],\n imports: [CommonModule],\n exports: [MatchaElevationDirective],\n})\nexport class MatchaElevationModule {}\n","import { Injectable, ComponentRef, createComponent, ApplicationRef, Injector, Type, EmbeddedViewRef, Renderer2, RendererFactory2 } from '@angular/core';\n\n/**\n * Serviço responsável pela implementação técnica do overlay e backdrop dos modais.\n *\n * Este serviço lida com a criação e gerenciamento do container do overlay,\n * criação do backdrop e manipulação do DOM. É um serviço de baixo nível\n * utilizado internamente pelo MatchaModalService.\n *\n * @example\n * ```typescript\n * constructor(private overlayService: MatchaOverlayService) {}\n *\n * createOverlay() {\n * this.overlayService.open(MyComponent);\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class MatchaOverlayService {\n private overlayContainer: HTMLElement | null = null;\n private activeModal: ComponentRef<any> | null = null;\n private backdrop: HTMLElement | null = null;\n private renderer: Renderer2;\n\n constructor(\n private appRef: ApplicationRef,\n private injector: Injector,\n private rendererFactory: RendererFactory2,\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n\n /**\n * Cria o container do overlay se ainda não existir.\n * O container é um elemento div que será usado para hospedar os modais.\n *\n * @private\n */\n private createOverlayContainer(): void {\n if (!this.overlayContainer) {\n this.overlayContainer = this.renderer.createElement('div');\n this.renderer.addClass(this.overlayContainer, 'matcha-overlay-container');\n this.renderer.appendChild(document.body, this.overlayContainer);\n }\n }\n\n /**\n * Remove o container do overlay do DOM.\n *\n * @private\n */\n private removeOverlayContainer(): void {\n if (this.overlayContainer) {\n this.renderer.removeChild(document.body, this.overlayContainer);\n this.overlayContainer = null;\n }\n }\n\n /**\n * Cria o backdrop do modal se ainda não existir.\n * O backdrop é um elemento div que cria o efeito de escurecimento\n * por trás do modal.\n *\n * @private\n */\n private createBackdrop(): void {\n if (!this.backdrop) {\n this.backdrop = this.renderer.createElement('div');\n this.renderer.addClass(this.backdrop, 'matcha-modal-backdrop');\n this.renderer.appendChild(document.body, this.backdrop);\n }\n }\n\n /**\n * Remove o backdrop do modal do DOM.\n *\n * @private\n */\n private removeBackdrop(): void {\n if (this.backdrop) {\n this.renderer.removeChild(document.body, this.backdrop);\n this.backdrop = null;\n }\n }\n\n /**\n * Abre um componente dentro de um modal.\n *\n * @param component - O componente que será exibido dentro do modal\n * @param config - Configurações opcionais para o modal\n * @returns Uma referência ao componente criado\n *\n * @example\n * ```typescript\n * const componentRef = this.overlayService.open(MyComponent, {\n * data: { id: 1 }\n * });\n * ```\n */\n open<T>(component: Type<T>, config: any = {}): ComponentRef<T> {\n this.createOverlayContainer();\n this.createBackdrop();\n\n const componentRef = createComponent(component, {\n environmentInjector: this.appRef.injector,\n elementInjector: this.injector,\n });\n\n const componentElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0];\n this.renderer.appendChild(this.overlayContainer, componentElement);\n\n this.appRef.attachView(componentRef.hostView);\n this.activeModal = componentRef;\n\n return componentRef;\n }\n\n /**\n * Fecha o modal atualmente aberto e remove o backdrop e o container.\n *\n * @example\n * ```typescript\n * this.overlayService.close();\n * ```\n */\n close(): void {\n if (this.activeModal) {\n this.appRef.detachView(this.activeModal.hostView);\n this.activeModal.destroy();\n this.activeModal = null;\n this.removeBackdrop();\n this.removeOverlayContainer();\n }\n }\n}\n","import { Injectable, Type } from '@angular/core';\nimport { MatchaOverlayService } from './overlay.service';\nimport { Subject, Observable } from 'rxjs';\n\nexport interface ModalComponent {\n afterClose?: Observable<any>;\n data?: any;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MatchaModalService {\n private afterCloseSubject = new Subject<any>();\n private currentData: any = {};\n\n constructor(private overlayService: MatchaOverlayService) {}\n\n open<T extends ModalComponent>(component: Type<T>, data: any = {}) {\n this.currentData = data;\n const componentRef = this.overlayService.open(component, data);\n\n // Injeta os dados no componente\n componentRef.instance.data = data;\n\n if (componentRef.instance.afterClose) {\n componentRef.instance.afterClose.subscribe((result: any) => {\n this.afterCloseSubject.next(result);\n });\n }\n\n return {\n componentRef,\n afterClose: this.afterCloseSubject.asObservable()\n };\n }\n \n close(result?: any) {\n this.afterCloseSubject.next(result);\n this.overlayService.close();\n this.currentData = {};\n }\n\n getData(): any {\n return this.currentData;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaElevationModule } from '../matcha-elevation/elevation.module';\n\nimport { MatchaModalHeaderComponent } from './modal-header/modal-header.component';\nimport { MatchaModalContentComponent } from './modal-content/modal-content.component';\nimport { MatchaModalFooterComponent } from './modal-footer/modal-footer.component';\nimport { MatchaModalOptionsComponent } from './modal-options/modal-options.component';\nimport { MatchaModalComponent } from './modal/modal.component';\nimport { MatchaModalService } from './modal.service';\nimport { MatchaOverlayService } from './overlay.service';\n\n@NgModule({\n declarations: [\n MatchaModalHeaderComponent,\n MatchaModalContentComponent,\n MatchaModalFooterComponent,\n MatchaModalOptionsComponent,\n MatchaModalComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n MatchaElevationModule\n ],\n exports: [\n MatchaModalHeaderComponent,\n MatchaModalContentComponent,\n MatchaModalFooterComponent,\n MatchaModalOptionsComponent,\n MatchaModalComponent\n ],\n providers: [\n MatchaModalService,\n MatchaOverlayService\n ]\n})\nexport class MatchaModalModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaCardComponent } from './card/card.component';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaElevationModule } from '../matcha-elevation/elevation.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n@NgModule({\n declarations: [MatchaCardComponent],\n imports: [\n CommonModule,\n MatchaElevationModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n ],\n exports: [MatchaCardComponent],\n})\nexport class MatchaCardModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaMasonryComponent } from './masonry/masonry.component';\n\n@NgModule({\n declarations: [MatchaMasonryComponent],\n imports: [CommonModule],\n exports: [MatchaMasonryComponent]\n})\nexport class MatchaMasonryModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaButtonToggleComponent } from './button-toggle/button-toggle.component';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n\n\n@NgModule({\n declarations: [MatchaButtonToggleComponent],\n imports: [\n CommonModule,\n MatchaTooltipModule\n ],\n exports: [MatchaButtonToggleComponent]\n})\nexport class MatchaButtonToggleModule { }\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaToolbarComponent } from '../matcha-toolbar/toolbar/toolbar.component';\nimport { MatchaToolbarButtonComponent } from \"./toolbar-button/toolbar-button.component\";\nimport { MatchaToolbarContentComponent } from \"./toolbar-content/toolbar-content.component\";\nimport { MatchaToolbarMainButtonComponent } from \"./toolbar-main-button/toolbar-main-button.component\";\nimport { MatchaToolbarCustomButtonComponent } from \"./toolbar-custom-button/toolbar-custom-button.component\";\n\n\n@NgModule({\n declarations: [\n MatchaToolbarComponent,\n MatchaToolbarButtonComponent,\n MatchaToolbarContentComponent,\n MatchaToolbarMainButtonComponent,\n MatchaToolbarCustomButtonComponent\n ],\n imports: [\n CommonModule,\n MatchaButtonModule,\n MatchaTitleModule,\n MatchaTooltipModule\n ],\n exports: [\n MatchaToolbarComponent,\n MatchaToolbarButtonComponent,\n MatchaToolbarContentComponent,\n MatchaToolbarMainButtonComponent,\n MatchaToolbarCustomButtonComponent,\n MatchaTitleModule\n ]\n})\nexport class MatchaToolbarModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaGridComponent } from './grid.component';\n\n@NgModule({\n declarations: [MatchaGridComponent],\n imports: [CommonModule],\n exports: [MatchaGridComponent],\n})\nexport class MatchaGridModule {}\n","import type { PipeTransform } from '@angular/core';\nimport { inject, Pipe } from '@angular/core';\n\nimport type { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Pipe({\n // Usar 'matchaMask' para evitar conflito com o pipe 'mask' legado (ex: ngx-mask)\n name: 'matchaMask',\n pure: true,\n standalone: false,\n})\nexport class MatchaMaskPipe implements PipeTransform {\n private readonly defaultOptions = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n private readonly _maskService = inject(MatchaMaskService);\n\n private _maskExpressionArray: string[] = [];\n\n private mask = '';\n\n public transform(\n value: string | number,\n mask: string,\n { patterns, ...config }: Partial<MatchaMaskConfig> = {} as Partial<MatchaMaskConfig>\n ): string {\n let processedValue: string | number = value;\n\n const currentConfig = {\n maskExpression: mask,\n ...this.defaultOptions,\n ...config,\n patterns: {\n ...this._maskService.patterns,\n ...patterns,\n },\n };\n\n Object.entries(currentConfig).forEach(([key, val]) => {\n (this._maskService as any)[key] = val;\n });\n\n if (mask.includes('||')) {\n const maskParts = mask.split('||');\n if (maskParts.length > 1) {\n this._maskExpressionArray = maskParts.sort(\n (a: string, b: string) => a.length - b.length\n );\n this._setMask(`${processedValue}`);\n return this._maskService.applyMask(`${processedValue}`, this.mask);\n } else {\n this._maskExpressionArray = [];\n return this._maskService.applyMask(`${processedValue}`, this.mask);\n }\n }\n\n if (mask.includes(MaskExpression.CURLY_BRACKETS_LEFT)) {\n return this._maskService.applyMask(\n `${processedValue}`,\n this._maskService._repeatPatternSymbols(mask)\n );\n }\n\n if (mask.startsWith(MaskExpression.SEPARATOR)) {\n if (config.decimalMarker) {\n this._maskService.decimalMarker = config.decimalMarker;\n }\n if (config.thousandSeparator) {\n this._maskService.thousandSeparator = config.thousandSeparator;\n }\n if (config.leadZero) {\n this._maskService.leadZero = config.leadZero;\n }\n\n processedValue = String(processedValue);\n const localeDecimalMarker = this._maskService.currentLocaleDecimalMarker();\n\n if (!Array.isArray(this._maskService.decimalMarker)) {\n processedValue =\n this._maskService.decimalMarker !== localeDecimalMarker\n ? (processedValue as string).replace(\n localeDecimalMarker,\n this._maskService.decimalMarker\n )\n : processedValue;\n }\n\n if (\n this._maskService.leadZero &&\n processedValue &&\n this._maskService.dropSpecialCharacters !== false\n ) {\n processedValue = this._maskService._checkPrecision(mask, processedValue as string);\n }\n\n if (this._maskService.decimalMarker === MaskExpression.COMMA) {\n processedValue = (processedValue as string).replace(\n MaskExpression.DOT,\n MaskExpression.COMMA\n );\n }\n\n this._maskService.isNumberValue = true;\n }\n\n if (processedValue === null || typeof processedValue === 'undefined') {\n return this._maskService.applyMask('', mask);\n }\n\n return this._maskService.applyMask(`${processedValue}`, mask);\n }\n\n private _setMask(value: string) {\n if (this._maskExpressionArray.length > 0) {\n this._maskExpressionArray.some((mask): boolean | void => {\n const test =\n this._maskService.removeMask(value)?.length <=\n this._maskService.removeMask(mask)?.length;\n if (value && test) {\n this.mask = mask;\n return test;\n } else {\n this.mask =\n this._maskExpressionArray[this._maskExpressionArray.length - 1] ??\n MaskExpression.EMPTY_STRING;\n }\n });\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EventEmitter } from '@angular/core';\nimport { MatchaMaskCompatibleDirective } from './matcha-mask-compatible.directive';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MATCHA_MASK_CONFIG, MatchaMaskOptions } from './matcha-mask.config';\nimport { MatchaMaskPipe } from './matcha-mask.pipe';\n\nexport const compatibleOptions: MatchaMaskOptions = {\n specialCharacters: ['/', '(', ')', '.', ':', '-', ' ', '+', ',', '@', '[', ']', '\"', \"'\", '*'],\n patterns: {\n '0': { pattern: /\\d/ },\n '9': { pattern: /\\d/, optional: true },\n 'A': { pattern: /[a-zA-Z0-9]/ },\n 'S': { pattern: /[a-zA-Z]/ }\n },\n prefix: '',\n suffix: '',\n thousandSeparator: '',\n decimalMarker: '.',\n clearIfNotMatch: false,\n showMaskTyped: false,\n placeHolderCharacter: '_',\n shownMaskExpression: '',\n dropSpecialCharacters: true,\n hiddenInput: false,\n validation: true,\n instantPrefix: false,\n separatorLimit: '',\n apm: false,\n allowNegativeNumbers: false,\n leadZeroDateTime: false,\n leadZero: false,\n triggerOnMaskChange: false,\n keepCharacterPositions: false,\n inputTransformFn: (v) => v as string,\n outputTransformFn: (v) => v,\n maskFilled: new EventEmitter<void>()\n};\n\n@NgModule({\n declarations: [\n MatchaMaskCompatibleDirective,\n MatchaMaskPipe\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaMaskCompatibleDirective,\n MatchaMaskPipe\n ],\n providers: [\n MatchaMaskService,\n { provide: MATCHA_MASK_CONFIG, useValue: compatibleOptions }\n ]\n})\nexport class MatchaMaskModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaFormFieldComponent } from './matcha-form-field/matcha-form-field.component';\nimport { MatchaLabelComponent } from './matcha-label/matcha-label.component';\nimport { MatchaErrorComponent } from './matcha-error/matcha-error.component';\n\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaMaskModule } from '../matcha-mask/matcha-mask.module';\n\n@NgModule({\n declarations: [MatchaFormFieldComponent, MatchaLabelComponent, MatchaErrorComponent],\n imports: [CommonModule, MatchaIconModule, ReactiveFormsModule, MatchaMaskModule],\n exports: [MatchaFormFieldComponent, MatchaLabelComponent, MatchaErrorComponent, ReactiveFormsModule, MatchaMaskModule],\n})\nexport class MatchaFormFieldModule {}\n","import { Directive, Input, HostListener, ElementRef, AfterViewInit, OnDestroy, Renderer2, ChangeDetectorRef, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatchaAutocompleteComponent } from './matcha-autocomplete.component';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[matchaAutocomplete]',\n standalone: false,\n})\nexport class MatchaAutocompleteTriggerDirective implements AfterViewInit, OnDestroy {\n @Input('matchaAutocomplete') panel!: MatchaAutocompleteComponent;\n private subs = new Subscription();\n private clearButton?: HTMLElement;\n\n constructor(\n private el: ElementRef<HTMLInputElement>,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef,\n @Optional() private ngControl: NgControl\n ) {}\n\n ngAfterViewInit() {\n if (!this.panel) {\n throw new Error('Você precisa passar uma referência para <matcha-autocomplete> ex: [matchaAutocomplete]=\"auto\"');\n }\n this.panel.attachTo(this.el.nativeElement);\n\n // close panel ao clicar fora - usando click para evitar conflito com focus\n const clickSub = fromEvent(document, 'click').pipe(\n filter((ev: any) => {\n const target = ev.target as Node;\n const isInsideInput = this.el.nativeElement.contains(target) || this.el.nativeElement === target;\n const isInsidePanel = this.panel?.elRef?.nativeElement?.contains?.(target);\n\n console.log('MatchaAutocomplete: Click outside check', {\n target: target,\n inputElement: this.el.nativeElement,\n isInsideInput,\n isInsidePanel,\n shouldClose: !isInsideInput && !isInsidePanel,\n panelOpen: this.panel?.open\n });\n\n // Só fechar se o painel estiver aberto e clicou fora\n return this.panel?.open && !isInsideInput && !isInsidePanel;\n })\n ).subscribe(() => {\n console.log('MatchaAutocomplete: Fechando painel por click outside');\n this.panel.closePanel();\n });\n\n this.subs.add(clickSub);\n\n // Escutar evento de seleção do autocomplete\n const selectionSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-selection').subscribe((event: any) => {\n console.log('MatchaAutocomplete: Evento de seleção recebido na diretiva', event.detail);\n const { value, displayText } = event.detail;\n if (value !== undefined) {\n // Usar displayText se fornecido, senão usar o valor diretamente\n const textToWrite = displayText !== undefined ? displayText : value;\n this.writeValueToInput(textToWrite, value);\n }\n });\n\n this.subs.add(selectionSub);\n\n // Escutar evento de limpeza\n const clearSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-clear').subscribe(() => {\n console.log('MatchaAutocomplete: Evento de limpeza recebido na diretiva');\n this.clearInput();\n });\n\n this.subs.add(clearSub);\n\n // Criar botão de limpar se necessário\n if (this.panel.showClearButton) {\n this.createClearButton();\n\n // Observar mudanças no estado disabled do input\n const input = this.el.nativeElement;\n const observer = new MutationObserver(() => {\n this.updateClearButtonVisibility();\n });\n observer.observe(input, {\n attributes: true,\n attributeFilter: ['disabled']\n });\n // Armazenar observer para cleanup\n (this as any)._disabledObserver = observer;\n }\n\n // Observar mudanças na seleção para mostrar/esconder botão\n const selectionChangeSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-selection').subscribe(() => {\n this.updateClearButtonVisibility();\n });\n\n const clearChangeSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-clear').subscribe(() => {\n this.updateClearButtonVisibility();\n });\n\n this.subs.add(selectionChangeSub);\n this.subs.add(clearChangeSub);\n\n // Observar mudanças no FormControl para sincronizar o input com displayWith\n if (this.ngControl && this.ngControl.control) {\n const controlValueSub = this.ngControl.control.valueChanges.subscribe((value) => {\n console.log('MatchaAutocomplete: FormControl valor mudou', value);\n\n // Se o valor é um objeto, usar displayWith para exibir no input\n if (value && typeof value === 'object') {\n const displayText = this.panel.getDisplayValue(value);\n console.log('MatchaAutocomplete: Atualizando input com displayWith', { value, displayText });\n\n // Atualizar apenas o input visual, sem disparar eventos do FormControl\n const input = this.el.nativeElement;\n if (input.value !== displayText) {\n input.value = displayText;\n }\n\n // Atualizar visibilidade do botão de limpar\n this.updateClearButtonVisibility();\n }\n });\n\n this.subs.add(controlValueSub);\n }\n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n\n // Limpar observer se existir\n if ((this as any)._disabledObserver) {\n (this as any)._disabledObserver.disconnect();\n }\n\n // Remover botão de limpar se existir\n if (this.clearButton && this.clearButton.parentNode) {\n this.renderer.removeChild(this.clearButton.parentNode, this.clearButton);\n }\n }\n\n private writeValueToInput(displayText: string, actualValue?: any) {\n console.log('MatchaAutocomplete: writeValueToInput chamado', {\n displayText,\n actualValue,\n input: this.el.nativeElement,\n hasNgControl: !!this.ngControl\n });\n\n const input = this.el.nativeElement;\n\n // Se há ngControl e actualValue é um objeto (não string), atualizar FormControl diretamente\n if (this.ngControl && this.ngControl.control && actualValue !== undefined) {\n // Se actualValue é um objeto, atualizar o FormControl com o objeto completo\n if (typeof actualValue === 'object' && actualValue !== null) {\n console.log('MatchaAutocomplete: Atualizando FormControl com objeto', actualValue);\n // Usar setValue com emitEvent: false para evitar loop infinito, depois emitir manualmente\n this.ngControl.control.setValue(actualValue, { emitEvent: false });\n // Atualizar o input visual com o displayText\n input.value = displayText == null ? '' : String(displayText);\n // Emitir eventos de mudança manualmente\n this.ngControl.control.updateValueAndValidity({ emitEvent: true });\n } else {\n // Se actualValue é primitivo, atualizar normalmente\n input.value = displayText == null ? '' : String(displayText);\n // Dispatch eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n }\n } else {\n // Sem ngControl ou sem actualValue, apenas atualizar o input visual\n input.value = displayText == null ? '' : String(displayText);\n // Dispatch eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n }\n\n // Atualizar visibilidade do botão após escrever valor\n setTimeout(() => {\n this.updateClearButtonVisibility();\n }, 0);\n\n console.log('MatchaAutocomplete: Valor escrito no input', {\n inputValue: input.value,\n formControlValue: this.ngControl?.control?.value\n });\n }\n\n private clearInput() {\n const input = this.el.nativeElement;\n input.value = '';\n\n // Se há ngControl, limpar o FormControl diretamente\n if (this.ngControl && this.ngControl.control) {\n console.log('MatchaAutocomplete: Limpando FormControl');\n this.ngControl.control.setValue(null, { emitEvent: true });\n } else {\n // Sem ngControl, apenas disparar eventos\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n const blurEvent = new Event('blur', { bubbles: true });\n\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n input.dispatchEvent(blurEvent);\n }\n\n // Atualizar visibilidade do botão\n this.updateClearButtonVisibility();\n\n console.log('MatchaAutocomplete: Input limpo', {\n formControlValue: this.ngControl?.control?.value\n });\n }\n\n @HostListener('click')\n onClick() {\n // Abrir painel quando clicar no input\n this.panel.openPanel();\n }\n\n @HostListener('focus')\n onFocus() {\n // Não abrir automaticamente no focus para evitar conflito com click outside\n // O painel será aberto apenas quando o usuário clicar ou digitar\n }\n\n @HostListener('input', ['$event'])\n onInput(e: Event) {\n // se o usuário digitar, apenas reabre painel. O filtro de opções geralmente é controlado pelo componente pai\n if (!this.panel.open) this.panel.openPanel();\n }\n\n @HostListener('blur')\n onBlur() {\n // Implementar auto-seleção no blur se configurado\n if (!this.panel.autoSelectOnBlur) {\n return;\n }\n\n const input = this.el.nativeElement;\n const currentValue = input.value;\n\n // Se já há uma seleção válida (objeto), verificar se o texto ainda corresponde\n const selectedValue = this.panel.getSelectedValue();\n if (selectedValue !== undefined && selectedValue !== null) {\n // Verificar se o texto do input corresponde ao valor selecionado\n const displayText = this.panel.getDisplayValue(selectedValue);\n if (displayText.toLowerCase().trim() === currentValue.toLowerCase().trim()) {\n // Texto corresponde à seleção, não fazer nada\n return;\n }\n }\n\n // Se o valor é uma string (texto digitado mas não selecionado)\n if (typeof currentValue === 'string' && currentValue.trim() !== '') {\n // Procurar match exato (case-insensitive) nas opções disponíveis\n const exactMatch = this.panel.findOptionByText(currentValue);\n\n if (exactMatch) {\n // Match exato encontrado - selecionar automaticamente\n console.log('MatchaAutocomplete: Match exato encontrado no blur, selecionando automaticamente');\n this.panel.selectOption(exactMatch);\n\n // Emitir evento de auto-seleção\n this.panel.autoSelected.emit(exactMatch.value);\n\n // Atualizar visibilidade do botão de limpar após auto-seleção\n this.updateClearButtonVisibility();\n } else {\n // Nenhum match exato - limpar o campo\n console.log('MatchaAutocomplete: Nenhum match exato encontrado no blur, limpando campo');\n this.panel.clearSelection();\n }\n } else if (currentValue === '' || !currentValue) {\n // Campo vazio - limpar seleção se houver\n if (this.panel.hasSelection()) {\n console.log('MatchaAutocomplete: Campo vazio no blur, limpando seleção');\n this.panel.clearSelection();\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (!this.panel) return;\n\n switch (ev.key) {\n case 'ArrowDown':\n ev.preventDefault();\n this.panel.highlightNext();\n break;\n case 'ArrowUp':\n ev.preventDefault();\n this.panel.highlightPrevious();\n break;\n case 'Enter':\n ev.preventDefault();\n this.panel.selectActive();\n // pega o value escolhido e escreve no input\n setTimeout(() => {\n const val = this.panel.getSelectedValue();\n if (val !== undefined) {\n const displayText = this.panel.getDisplayValue(val);\n this.writeValueToInput(displayText, val);\n }\n });\n break;\n case 'Escape':\n ev.preventDefault();\n this.panel.closePanel();\n break;\n }\n }\n\n // Se uma opção for selecionada via click (o matcha-option notifica o pai que faz close),\n // lemos selectedValue e escrevemos no input. Como o selectOption do painel fecha imediatamente,\n // precisamos observar mudanças no DOM/QueryList ou checar logo após close.\n // Simples solução: observar clicks nas options via delegation:\n @HostListener('document:click', ['$event'])\n onDocClick(ev: MouseEvent) {\n const target = ev.target as HTMLElement;\n\n // Verificar se o clique foi em uma opção deste painel específico\n const isOptionClick = target.closest('matcha-option') &&\n this.panel?.elRef?.nativeElement?.contains(target);\n\n if (isOptionClick) {\n // Se clicou em uma opção deste painel, aguardar um pouco e atualizar o input\n setTimeout(() => {\n if (this.panel && typeof this.panel.getSelectedValue === 'function') {\n const val = this.panel.getSelectedValue();\n if (val !== undefined) {\n const displayText = this.panel.getDisplayValue(val);\n this.writeValueToInput(displayText, val);\n }\n }\n }, 10);\n }\n }\n\n private createClearButton(): void {\n if (this.clearButton) return;\n\n const input = this.el.nativeElement;\n const formField = input.closest('matcha-form-field');\n\n if (!formField) {\n console.warn('MatchaAutocomplete: matcha-form-field não encontrado para adicionar botão de limpar');\n return;\n }\n\n // Criar botão\n this.clearButton = this.renderer.createElement('span');\n // Adicionar classe do ícone (formato: i-matcha-{iconName})\n const iconClass = this.panel.clearButtonIcon.startsWith('i-matcha-')\n ? this.panel.clearButtonIcon\n : 'i-matcha-' + this.panel.clearButtonIcon;\n this.renderer.addClass(this.clearButton, iconClass);\n this.renderer.addClass(this.clearButton, 'i-size-sm');\n this.renderer.addClass(this.clearButton, 'matcha-autocomplete-clear-button');\n this.renderer.setStyle(this.clearButton, 'cursor', 'pointer');\n this.renderer.setStyle(this.clearButton, 'position', 'absolute');\n this.renderer.setStyle(this.clearButton, 'right', '12px');\n this.renderer.setStyle(this.clearButton, 'z-index', '10');\n this.renderer.setAttribute(this.clearButton, 'aria-label', this.panel.clearButtonAriaLabel);\n this.renderer.setAttribute(this.clearButton, 'role', 'button');\n this.renderer.setAttribute(this.clearButton, 'tabindex', '0');\n\n // Adicionar evento de clique\n this.renderer.listen(this.clearButton, 'click', (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.panel.clearSelection();\n });\n\n // Adicionar evento de teclado (Enter e Space)\n this.renderer.listen(this.clearButton, 'keydown', (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.stopPropagation();\n this.panel.clearSelection();\n }\n });\n\n // Inserir botão no form-field (após o input)\n const inputContainer = input.parentElement;\n if (inputContainer) {\n this.renderer.setStyle(inputContainer, 'position', 'relative');\n this.renderer.appendChild(inputContainer, this.clearButton);\n } else {\n this.renderer.appendChild(formField, this.clearButton);\n }\n\n // Atualizar visibilidade inicial\n this.updateClearButtonVisibility();\n }\n\n private updateClearButtonVisibility(): void {\n if (!this.clearButton) return;\n\n const hasSelection = this.panel.hasSelection();\n const isDisabled = this.el.nativeElement.disabled;\n\n if (hasSelection && !isDisabled && this.panel.showClearButton) {\n this.renderer.setStyle(this.clearButton, 'display', 'block');\n } else {\n this.renderer.setStyle(this.clearButton, 'display', 'none');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaOptionComponent } from './matcha-option.component';\n\n@NgModule({\n declarations: [\n MatchaOptionComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaOptionComponent\n ]\n})\n\nexport class MatchaOptionModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPanelComponent } from './matcha-panel.component';\n\n@NgModule({\n declarations: [\n MatchaPanelComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaPanelComponent\n ]\n})\nexport class MatchaPanelModule { }\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAutocompleteComponent } from './matcha-autocomplete.component';\nimport { MatchaAutocompleteTriggerDirective } from './matcha-autocomplete.directive';\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\n\n@NgModule({\n declarations: [\n MatchaAutocompleteComponent,\n MatchaAutocompleteTriggerDirective\n ],\n imports: [\n CommonModule,\n MatchaOptionModule,\n MatchaPanelModule\n ],\n exports: [\n MatchaAutocompleteComponent,\n MatchaAutocompleteTriggerDirective,\n MatchaOptionModule // Re-exporta para conveniência\n ]\n})\nexport class MatchaAutocompleteModule { }\n\n","import { Directive, Input, HostListener, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';\nimport { MatchaSelectComponent } from './matcha-select.component';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[matchaSelect]',\n standalone: false,\n})\nexport class MatchaSelectTriggerDirective implements AfterViewInit, OnDestroy {\n @Input('matchaSelect') select!: MatchaSelectComponent;\n private subs = new Subscription();\n\n constructor(private el: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit() {\n if (!this.select) {\n throw new Error('Você precisa passar uma referência para <matcha-select> ex: [matchaSelect]=\"select\"');\n }\n\n // close panel ao clicar fora - usando click para evitar conflito com focus\n const clickSub = fromEvent(document, 'click').pipe(\n filter((ev: any) => {\n const target = ev.target as Node;\n const isInsideTrigger = this.el.nativeElement.contains(target) || this.el.nativeElement === target;\n const isInsidePanel = this.select?.elRef?.nativeElement?.contains?.(target);\n\n // Só fechar se o painel estiver aberto e clicou fora\n return this.select?.open && !isInsideTrigger && !isInsidePanel;\n })\n ).subscribe(() => {\n this.select.closePanel();\n });\n\n this.subs.add(clickSub);\n\n // Escutar evento de seleção do select\n const selectionSub = fromEvent(this.select.elRef.nativeElement, 'matcha-select-selection').subscribe((event: any) => {\n const { value } = event.detail;\n if (value !== undefined) {\n this.writeValueToInput(value);\n }\n });\n\n this.subs.add(selectionSub);\n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n\n private writeValueToInput(value: any) {\n const input = this.el.nativeElement as HTMLInputElement;\n input.value = value == null ? '' : value;\n\n // Dispatch múltiplos eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n const blurEvent = new Event('blur', { bubbles: true });\n\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n input.dispatchEvent(blurEvent);\n }\n\n @HostListener('click')\n onClick() {\n // Abrir painel quando clicar no trigger\n this.select.openPanel();\n }\n\n @HostListener('focus')\n onFocus() {\n // Não abrir automaticamente no focus para evitar conflito com click outside\n // O painel será aberto apenas quando o usuário clicar\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (!this.select) return;\n\n switch (ev.key) {\n case 'ArrowDown':\n ev.preventDefault();\n this.select.highlightNext();\n break;\n case 'ArrowUp':\n ev.preventDefault();\n this.select.highlightPrevious();\n break;\n case 'Enter':\n case ' ':\n ev.preventDefault();\n this.select.selectActive();\n // pega o value escolhido e escreve no input\n setTimeout(() => {\n const val = this.select.getSelectedValue();\n if (val !== undefined) this.writeValueToInput(val);\n });\n break;\n case 'Escape':\n ev.preventDefault();\n this.select.closePanel();\n break;\n }\n }\n\n // Se uma opção for selecionada via click (o matcha-option notifica o pai que faz close),\n // lemos selectedValue e escrevemos no input. Como o selectOption do painel fecha imediatamente,\n // precisamos observar mudanças no DOM/QueryList ou checar logo após close.\n // Simples solução: observar clicks nas options via delegation:\n @HostListener('document:click', ['$event'])\n onDocClick(ev: MouseEvent) {\n const target = ev.target as HTMLElement;\n\n // Verificar se o clique foi em uma opção deste painel específico\n const isOptionClick = target.closest('matcha-option') &&\n this.select?.elRef?.nativeElement?.contains(target);\n\n if (isOptionClick) {\n // Se clicou em uma opção deste painel, aguardar um pouco e atualizar o input\n setTimeout(() => {\n if (this.select && typeof this.select.getSelectedValue === 'function') {\n const val = this.select.getSelectedValue();\n if (val !== undefined) this.writeValueToInput(val);\n }\n }, 10);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSelectComponent } from './matcha-select.component';\nimport { MatchaSelectTriggerDirective } from './matcha-select.directive';\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\n\n@NgModule({\n declarations: [\n MatchaSelectComponent,\n MatchaSelectTriggerDirective\n ],\n imports: [\n CommonModule,\n MatchaOptionModule,\n MatchaPanelModule\n ],\n exports: [\n MatchaSelectComponent,\n MatchaSelectTriggerDirective\n ]\n})\nexport class MatchaSelectModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleDirective } from './ripple.directive';\n\n@NgModule({\n declarations: [\n MatchaRippleDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaRippleDirective\n ],\n})\nexport class MatchaRippleModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleModule } from '../matcha-ripple/ripple.module';\nimport { MatchaCheckboxComponent } from './checkbox/checkbox.component';\n\n@NgModule({\n declarations: [\n MatchaCheckboxComponent,\n ],\n imports: [CommonModule, MatchaRippleModule],\n exports: [\n MatchaCheckboxComponent,\n ],\n})\nexport class MatchaCheckboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\nimport { MatchaHintTextComponent } from './hint/hint-text.component';\n\n@NgModule({\n declarations: [MatchaHintTextComponent],\n imports: [\n CommonModule,\n MatchaIconModule,\n ],\n exports: [MatchaHintTextComponent],\n})\nexport class MatchaHintTextModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-overflow-draggable',\n templateUrl: './matcha-overflow-draggable.component.html',\n styleUrls: ['./matcha-overflow-draggable.component.scss'],\n standalone: false\n})\n\nexport class MatchaOverflowDraggableComponent {\n @Input() dragRef: string = '';\n\n public dragToScroll(): void {\n const ele = document.querySelector(`matchaDraggableReference${this.dragRef}`);\n if (ele) {\n let pos = { top: 0, left: 0, x: 0, y: 0 };\n const mouseDownHandler = function (e: any) {\n pos = {\n // The current scroll\n left: ele.scrollLeft,\n top: ele.scrollTop,\n // Get the current mouse position\n x: e.clientX,\n y: e.clientY,\n };\n ele.setAttribute('style', 'cursor: grabbing; user-select: none');\n document.addEventListener('mousemove', mouseMoveHandler);\n document.addEventListener('mouseup', mouseUpHandler);\n };\n\n const mouseMoveHandler = function (e: any) {\n // How far the mouse has been moved\n const dx = e.clientX - pos.x;\n const dy = e.clientY - pos.y;\n // Scroll the element\n ele.scrollTop = pos.top - dy;\n ele.scrollLeft = pos.left - dx;\n };\n\n const mouseUpHandler = function () {\n document.removeEventListener('mousemove', mouseMoveHandler);\n document.removeEventListener('mouseup', mouseUpHandler);\n ele.setAttribute('style', 'cursor: grab; user-select: initial');\n };\n ele.addEventListener('mousedown', mouseDownHandler);\n }\n }\n\n public get classes(): string {\n const draggableReference = this.dragRef ? `matchaDraggableReference${this.dragRef}` : '';\n\n const activeClasses = `${draggableReference}`;\n return activeClasses;\n }\n\n}\n","<div [class]=\"classes\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPaginatorComponent } from './paginator/paginator.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaPaginatorIntl } from './paginator-intl.service';\n\n@NgModule({\n declarations: [MatchaPaginatorComponent],\n imports: [CommonModule, MatchaIconModule],\n exports: [MatchaPaginatorComponent],\n providers: [MatchaPaginatorIntl]\n})\nexport class MatchaPaginatorModule {}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSlideToggleComponent } from './slide-toggle/slide-toggle.component';\nimport { FormsModule } from '@angular/forms';\n\n\n\n\n@NgModule({\n declarations: [MatchaSlideToggleComponent],\n imports: [\n CommonModule,FormsModule\n ],\n exports: [MatchaSlideToggleComponent]\n})\nexport class MatchaSlideToggleModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSpinComponent } from './spin/spin.component';\n\n\n\n@NgModule({\n declarations: [MatchaSpinComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSpinComponent]\n})\nexport class MatchaSpinModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSpinnerComponent } from './spinner/spinner.component';\n\n\n@NgModule({\n declarations: [MatchaSpinnerComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSpinnerComponent]\n})\nexport class MatchaSpinnerModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaTabsComponent } from './tabs/tabs.component';\nimport { MatchaTabItemComponent } from './tab-item/tab-item.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\nexport { TabChangeEvent } from './tabs/tabs.component';\n\n@NgModule({\n declarations: [\n MatchaTabsComponent,\n MatchaTabItemComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule\n ],\n exports: [\n MatchaTabsComponent,\n MatchaTabItemComponent\n ]\n})\nexport class MatchaTabsModule { }","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatchaDateComponent } from './date/matcha-date.component';\n\n@NgModule({\n declarations: [\n MatchaDateComponent\n ],\n imports: [\n CommonModule,\n FormsModule\n ],\n exports: [\n MatchaDateComponent\n ]\n})\nexport class MatchaDateModule { }\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaDateRangeComponent } from './date-range/date-range.component';\nimport { MatchaDateModule } from '../matcha-date/matcha-date.module';\n\n@NgModule({\n declarations: [MatchaDateRangeComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatchaDateModule\n ],\n exports: [\n MatchaDateRangeComponent,\n MatchaDateModule\n ]\n})\nexport class MatchaDateRangeModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaTimeComponent } from './time/time.component';\n\n@NgModule({\n declarations: [MatchaTimeComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n exports: [MatchaTimeComponent]\n})\nexport class MatchaTimeModule { }\n","import { Directive, HostListener } from '@angular/core';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\n\n@Directive({\n selector: '[prevStep]',\n standalone: true\n})\nexport class PrevStepDirective {\n private stepper: MatchaStepperContentComponent | null;\n\n constructor(\n stepper: MatchaStepperContentComponent | null\n ) {\n this.stepper = stepper;\n }\n\n @HostListener('click')\n onClick() {\n this.stepper?.prevStep();\n }\n}","import { Directive, HostListener } from '@angular/core';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\n\n@Directive({\n selector: '[nextStep]',\n standalone: true\n})\nexport class NextStepDirective {\n private stepper: MatchaStepperContentComponent | null;\n\n constructor(\n stepper: MatchaStepperContentComponent | null\n ) {\n this.stepper = stepper;\n }\n\n @HostListener('click')\n onClick() {\n this.stepper?.nextStep();\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaStepperControllerComponent } from './stepper-controller/stepper-controller.component';\nimport { MatchaStepperComponent } from './stepper/stepper.component';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\nimport { StepComponent } from './step/step.component';\nimport { PrevStepDirective } from './prev-step.diretive';\nimport { NextStepDirective } from './next-step.diretive';\n\n@NgModule({\n declarations: [\n MatchaStepperControllerComponent,\n MatchaStepperComponent,\n MatchaStepperContentComponent,\n StepComponent\n ],\n imports: [\n CommonModule,\n PrevStepDirective,\n NextStepDirective,\n ],\n exports: [\n MatchaStepperControllerComponent, \n MatchaStepperComponent, \n MatchaStepperContentComponent,\n StepComponent,\n PrevStepDirective,\n NextStepDirective\n ],\n providers: []\n})\nexport class MatchaStepperModule { }\n","import { Directive, ElementRef, OnInit, HostBinding } from '@angular/core';\nimport { MatchaDragDirective } from './drag.directive';\n\n@Directive({\n selector: '[matchaDragHandle]',\n standalone:false\n})\nexport class MatchaDragHandleDirective implements OnInit {\n\n @HostBinding('class.matcha-drag-handle') get dragHandleClass() {\n return true;\n }\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private dragDirective: MatchaDragDirective\n ) {}\n\n ngOnInit() {\n this.dragDirective.setDragHandle(this.elementRef.nativeElement);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatchaDropListComponent } from './drop-list/drop-list.component';\nimport { MatchaDragDirective } from './directives/drag.directive';\nimport { MatchaDragHandleDirective } from './directives/drag-handle.directive';\nimport { MatchaDropListService } from './services/drop-list.service';\n\n@NgModule({\n declarations: [\n MatchaDropListComponent,\n MatchaDragDirective,\n MatchaDragHandleDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaDropListComponent,\n MatchaDragDirective,\n MatchaDragHandleDirective\n ],\n providers: [\n MatchaDropListService\n ]\n})\nexport class MatchaDropListModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatchaInputPhoneComponent } from \"./input-phone.component\";\n\n// dependencies\nimport { FormsModule } from '@angular/forms';\nimport { MatchaFormFieldModule } from '../matcha-form-field/matcha-form-field.module';\nimport { MatchaMaskModule } from '../matcha-mask/matcha-mask.module';\n@NgModule({\n declarations: [MatchaInputPhoneComponent],\n imports: [\n CommonModule,\n MatchaFormFieldModule,\n FormsModule,\n MatchaMaskModule\n ],\n exports: [MatchaInputPhoneComponent]\n})\nexport class MatchaInputPhoneModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPageLayoutComponent } from './page-layout.component';\nimport { MatchaStepperModule } from '../matcha-stepper/stepper.module';\n\n\n@NgModule({\n declarations: [\n MatchaPageLayoutComponent\n ],\n imports: [\n CommonModule,\n MatchaStepperModule\n ],\n exports: [\n MatchaPageLayoutComponent\n ]\n})\nexport class MatchaPageLayoutModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleModule } from '../matcha-ripple/ripple.module';\nimport { MatchaRadioComponent } from './radio/radio.component';\n\n\n@NgModule({\n declarations: [\n MatchaRadioComponent,\n ],\n imports: [CommonModule, MatchaRippleModule],\n exports: [\n MatchaRadioComponent,\n ],\n})\nexport class MatchaRadioModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAvatarComponent } from './avatar/avatar.component';\n\n\n\n\n@NgModule({\n declarations: [MatchaAvatarComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaAvatarComponent]\n})\nexport class MatchaAvatarModule { }\n\n\n","import { Injectable, OnDestroy, PLATFORM_ID, Inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject, Observable, fromEvent, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, startWith, map } from 'rxjs/operators';\n\nexport interface BreakpointState {\n matches: boolean;\n breakpoint: string;\n}\n\n/**\n * Serviço singleton para observação de breakpoints CSS\n * Funciona tanto no browser quanto no servidor (SSR)\n */\n@Injectable({\n providedIn: 'root' // Singleton garantido pelo Angular\n})\nexport class MatchaBreakpointObserver implements OnDestroy {\n private breakpointSubject = new BehaviorSubject<BreakpointState>({\n matches: false,\n breakpoint: ''\n });\n\n private resizeSubscription: any;\n private isBrowser: boolean;\n private currentBreakpoints = new Map<string, boolean>();\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {\n this.isBrowser = isPlatformBrowser(this.platformId);\n\n if (this.isBrowser) {\n this.setupResizeListener();\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n\n /**\n * Observa um breakpoint específico\n * @param breakpoint - String no formato CSS media query (ex: '(max-width: 768px)')\n * @returns Observable<BreakpointState>\n */\n observe(breakpoint: string): Observable<BreakpointState> {\n if (!this.isBrowser) {\n // No servidor, retorna um observable que emite false\n return of({ matches: false, breakpoint });\n }\n\n // Emite o estado inicial\n const initialState = this.getState(breakpoint);\n\n return this.breakpointSubject.asObservable().pipe(\n startWith(initialState),\n map(() => this.getState(breakpoint)),\n distinctUntilChanged((prev, curr) =>\n prev.matches === curr.matches && prev.breakpoint === curr.breakpoint\n )\n );\n }\n\n /**\n * Verifica se um breakpoint específico está ativo\n * @param breakpoint - String no formato CSS media query\n * @returns boolean\n */\n isMatched(breakpoint: string): boolean {\n if (!this.isBrowser) {\n return false;\n }\n return this.checkBreakpoint(breakpoint);\n }\n\n /**\n * Obtém o estado atual do breakpoint\n * @param breakpoint - String no formato CSS media query\n * @returns BreakpointState\n */\n getState(breakpoint: string): BreakpointState {\n return {\n matches: this.isMatched(breakpoint),\n breakpoint\n };\n }\n\n /**\n * Observa múltiplos breakpoints simultaneamente\n * @param breakpoints - Array de strings de breakpoints\n * @returns Observable<Map<string, boolean>>\n */\n observeMultiple(breakpoints: string[]): Observable<Map<string, boolean>> {\n if (!this.isBrowser) {\n const emptyMap = new Map<string, boolean>();\n breakpoints.forEach(bp => emptyMap.set(bp, false));\n return of(emptyMap);\n }\n\n return this.breakpointSubject.asObservable().pipe(\n startWith({ matches: false, breakpoint: '' }),\n map(() => {\n const result = new Map<string, boolean>();\n breakpoints.forEach(bp => {\n result.set(bp, this.checkBreakpoint(bp));\n });\n return result;\n }),\n distinctUntilChanged((prev, curr) => {\n if (prev.size !== curr.size) return false;\n for (const [key, value] of prev) {\n if (curr.get(key) !== value) return false;\n }\n return true;\n })\n );\n }\n\n private setupResizeListener(): void {\n if (!this.isBrowser) return;\n\n // Usa fromEvent para criar um observable do evento resize\n this.resizeSubscription = fromEvent(window, 'resize')\n .pipe(\n debounceTime(100) // Debounce para evitar muitas chamadas\n )\n .subscribe(() => {\n // Limpa o cache de breakpoints\n this.currentBreakpoints.clear();\n\n // Emite um novo evento para forçar reavaliação\n this.breakpointSubject.next({\n matches: false,\n breakpoint: ''\n });\n });\n }\n\n private checkBreakpoint(breakpoint: string): boolean {\n if (!this.isBrowser) return false;\n\n // Verifica cache primeiro\n if (this.currentBreakpoints.has(breakpoint)) {\n return this.currentBreakpoints.get(breakpoint)!;\n }\n\n try {\n // Remove parênteses se existirem\n const cleanBreakpoint = breakpoint.replace(/[()]/g, '');\n\n // Extrai o valor numérico e a condição\n const match = cleanBreakpoint.match(/(max-width|min-width|max-height|min-height):\\s*(\\d+)px/);\n\n if (!match) {\n console.warn(`Breakpoint inválido: ${breakpoint}`);\n this.currentBreakpoints.set(breakpoint, false);\n return false;\n }\n\n const [, condition, value] = match;\n const numericValue = parseInt(value, 10);\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n let result = false;\n switch (condition) {\n case 'max-width':\n result = windowWidth <= numericValue;\n break;\n case 'min-width':\n result = windowWidth >= numericValue;\n break;\n case 'max-height':\n result = windowHeight <= numericValue;\n break;\n case 'min-height':\n result = windowHeight >= numericValue;\n break;\n default:\n result = false;\n }\n\n // Armazena no cache\n this.currentBreakpoints.set(breakpoint, result);\n return result;\n } catch (error) {\n console.error('Erro ao verificar breakpoint:', error);\n this.currentBreakpoints.set(breakpoint, false);\n return false;\n }\n }\n\n /**\n * Método utilitário para criar breakpoints comuns\n */\n static createBreakpoint(width: number, condition: 'max' | 'min' = 'max'): string {\n const prefix = condition === 'max' ? 'max-width' : 'min-width';\n return `(${prefix}: ${width}px)`;\n }\n\n /**\n * Breakpoints pré-definidos para facilitar o uso\n */\n static readonly BREAKPOINTS = {\n XS: '(max-width: 480px)',\n SM: '(max-width: 768px)',\n MD: '(max-width: 1024px)',\n LG: '(max-width: 1200px)',\n XL: '(max-width: 1440px)',\n MOBILE: '(max-width: 768px)',\n TABLET: '(min-width: 769px) and (max-width: 1024px)',\n DESKTOP: '(min-width: 1025px)'\n } as const;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaDrawerComponent } from './drawer/drawer.component';\nimport { MatchaDrawerContainerComponent } from './drawer-container/drawer-container.component';\nimport { MatchaDrawerContentComponent } from './drawer-content/drawer-content.component';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\nimport { MatchaBreakpointObserver } from '../matcha-breakpoint-observable/breakpoint-observer.service';\n\n@NgModule({\n declarations: [\n MatchaDrawerComponent,\n MatchaDrawerContainerComponent,\n MatchaDrawerContentComponent\n ],\n imports: [\n CommonModule,\n MatchaButtonModule\n ],\n providers: [\n MatchaBreakpointObserver\n ],\n exports: [\n MatchaDrawerComponent,\n MatchaDrawerContainerComponent,\n MatchaDrawerContentComponent\n ]\n})\nexport class MatchaDrawerModule { }\n","import { NgModule } from '@angular/core';\n\nimport { MatchaHighlightComponent } from './highlight.component';\nimport { CopyButtonComponent } from './copy-button/copy-button.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\n\n// Prism.js será carregado dinamicamente no componente quando necessário\n\n@NgModule({\n declarations: [\n MatchaHighlightComponent,\n CopyButtonComponent\n ],\n imports: [\n MatchaIconModule,\n MatchaButtonModule\n ],\n exports: [\n MatchaHighlightComponent,\n CopyButtonComponent\n ],\n})\nexport class MatchaHighlightModule\n{\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\nimport { MatchaSliderComponent } from './slider/slider.component';\n\n\n@NgModule({\n declarations: [MatchaSliderComponent],\n imports: [\n CommonModule,FormsModule\n ],\n exports: [MatchaSliderComponent]\n})\nexport class MatchaSliderModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaChipComponent } from './chip/chip.component';\nimport { MatchaChipListComponent } from './chip-list/chip-list.component';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\n@NgModule({\n declarations: [\n MatchaChipComponent,\n MatchaChipListComponent\n ],\n imports: [CommonModule, MatchaDividerModule, MatchaIconModule],\n exports: [\n MatchaChipComponent,\n MatchaChipListComponent\n ],\n})\nexport class MatchaChipModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatchaAutocompleteModule } from './matcha-autocomplete/matcha-autocomplete.module';\nimport { MatchaOptionModule } from './matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from './matcha-panel/matcha-panel.module';\nimport { MatchaSelectModule } from './matcha-select/matcha-select.module';\nimport { MatchaAccordionModule } from './matcha-accordion/accordion.module';\nimport { MatchaButtonModule } from './matcha-button/button.module';\nimport { MatchaButtonToggleModule } from './matcha-button-toggle/button-toggle.module';\nimport { MatchaCardModule } from './matcha-card/card.module';\nimport { MatchaCheckboxModule } from './matcha-checkbox/checkbox.module';\nimport { MatchaDividerModule } from './matcha-divider/divider.module';\nimport { MatchaElevationModule } from './matcha-elevation/elevation.module';\nimport { MatchaFormFieldModule } from './matcha-form-field/matcha-form-field.module';\nimport { MatchaHintTextModule } from './matcha-hint-text/hint.module';\nimport { MatchaIconModule } from './matcha-icon/icon.module';\nimport { MatchaInfiniteScrollModule } from './matcha-infinite-scroll/matcha-infinite-scroll.module';\nimport { MatchaMasonryModule } from './matcha-masonry/masonry.module';\nimport { MatchaModalModule } from './matcha-modal/matcha-modal.module';\nimport { MatchaOverflowDraggableComponent } from './matcha-overflow-draggable/matcha-overflow-draggable.component';\nimport { MatchaPaginatorModule } from './matcha-paginator/paginator.module';\nimport { MatchaRippleModule } from './matcha-ripple/ripple.module';\nimport { MatchaSlideToggleModule } from './matcha-slide-toggle/slide-toggle.module';\n\nimport { MatchaSpinModule } from './matcha-spin/spin.module';\nimport { MatchaSpinnerModule } from './matcha-spinner/spinner.module';\nimport { MatchaTabsModule } from './matcha-tabs/tabs.module';\nimport { MatchaTitleModule } from './matcha-title/title.module';\nimport { MatchaTooltipModule } from './matcha-tooltip/tooltip.module';\nimport { MatchaDateRangeModule } from './matcha-date-range/date-range.module';\nimport { MatchaTimeModule } from './matcha-time/time.module';\nimport { MatchaStepperModule } from './matcha-stepper/stepper.module';\nimport { MatchaDropListModule } from './matcha-drop-list/drop-list.module';\nimport { MatchaInputPhoneModule } from './matcha-input-phone/input-phone.module';\nimport { MatchaPageLayoutModule } from './matcha-page-layout/page-layout.module';\nimport { MatchaLazyloadModule } from './matcha-lazyload/lazyload.module';\nimport { MatchaRadioModule } from './matcha-radio/radio.module';\nimport { MatchaAvatarModule } from './matcha-avatar/avatar.module';\nimport { MatchaDrawerModule } from './matcha-drawer/drawer.module';\nimport { MatchaHighlightModule } from './matcha-highlight/highlight.module';\nimport { MatchaSliderModule } from './matcha-slider/slider.module';\nimport { MatchaMaskModule } from './matcha-mask/matcha-mask.module';\nimport { MatchaChipModule } from './matcha-chip/chip.module';\n@NgModule({\n declarations: [MatchaOverflowDraggableComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatchaAccordionModule,\n MatchaAutocompleteModule,\n MatchaOptionModule,\n MatchaPanelModule,\n MatchaSelectModule,\n MatchaButtonModule,\n MatchaButtonToggleModule,\n MatchaCardModule,\n MatchaCheckboxModule,\n MatchaRadioModule,\n MatchaDividerModule,\n MatchaElevationModule,\n MatchaFormFieldModule,\n MatchaHintTextModule,\n MatchaIconModule,\n MatchaInfiniteScrollModule,\n MatchaLazyloadModule,\n MatchaInputPhoneModule,\n MatchaMasonryModule,\n MatchaModalModule,\n MatchaPaginatorModule,\n MatchaRippleModule,\n MatchaSlideToggleModule,\n MatchaSliderModule,\n MatchaSpinModule,\n MatchaSpinnerModule,\n MatchaStepperModule,\n MatchaTabsModule,\n MatchaTitleModule,\n MatchaTooltipModule,\n MatchaDateRangeModule,\n MatchaTimeModule,\n MatchaDropListModule,\n MatchaPageLayoutModule,\n MatchaDrawerModule,\n MatchaHighlightModule,\n MatchaMaskModule,\n MatchaChipModule\n ],\n exports: [MatchaAccordionModule,\n MatchaAutocompleteModule,\n MatchaOptionModule,\n MatchaPanelModule,\n MatchaSelectModule,\n MatchaButtonModule,\n MatchaButtonToggleModule,\n MatchaCardModule,\n MatchaCheckboxModule,\n MatchaRadioModule,\n MatchaDividerModule,\n MatchaElevationModule,\n MatchaFormFieldModule,\n MatchaHintTextModule,\n MatchaIconModule,\n MatchaInfiniteScrollModule,\n MatchaLazyloadModule,\n MatchaInputPhoneModule,\n MatchaMasonryModule,\n MatchaModalModule,\n MatchaPaginatorModule,\n MatchaRippleModule,\n MatchaSlideToggleModule,\n MatchaSliderModule,\n MatchaSpinModule,\n MatchaSpinnerModule,\n MatchaStepperModule,\n MatchaTabsModule,\n MatchaTitleModule,\n MatchaTooltipModule,\n MatchaDateRangeModule,\n MatchaTimeModule,\n MatchaDropListModule,\n MatchaPageLayoutModule,\n MatchaAvatarModule,\n MatchaDrawerModule,\n MatchaHighlightModule,\n MatchaMaskModule,\n MatchaChipModule\n ],\n})\nexport class MatchaComponentsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSkeletonComponent } from './skeleton/skeleton.component';\n@NgModule({\n declarations: [MatchaSkeletonComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSkeletonComponent],\n})\nexport class MatchaSkeletonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaBreakpointObserver } from './breakpoint-observer.service';\n\n/**\n * Módulo para o MatchaBreakpointObserver\n *\n * Este módulo fornece o serviço MatchaBreakpointObserver que pode ser usado\n * em qualquer parte da aplicação para observar breakpoints CSS.\n *\n * O serviço é um singleton (providedIn: 'root') e não precisa ser importado\n * explicitamente, mas este módulo pode ser usado para organização.\n */\n@NgModule({\n imports: [\n CommonModule\n ],\n providers: [\n // O serviço já é providedIn: 'root', mas incluímos aqui para clareza\n MatchaBreakpointObserver\n ]\n})\nexport class MatchaBreakpointObservableModule { }\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[step]'\n})\nexport class StepContentDirective {\n @Input('step') step!: string;\n constructor(public template: TemplateRef<any>) {}\n}","/*\n * Public API Surface of matcha-components\n */\n\n// -----------------------------------------------------------\n// INTERFACES\n// -----------------------------------------------------------\nexport * from './lib/matcha-option/matcha-option-parent.interface';\n\n// -----------------------------------------------------------\n// COMPONENTS\n// -----------------------------------------------------------\nexport * from './lib/matcha-accordion/accordion/accordion.component';\nexport * from './lib/matcha-accordion/accordion-item/accordion-item.component';\nexport * from './lib/matcha-accordion/accordion-header/accordion-header.component';\nexport * from './lib/matcha-accordion/accordion-content/accordion-content.component';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component';\nexport * from './lib/matcha-lazyload/lazyload/lazyload.component';\nexport * from './lib/matcha-lazyload/lazyload-data/lazyload-data.component';\nexport * from './lib/matcha-button/button/button.component';\nexport * from './lib/matcha-card/card/card.component';\nexport * from './lib/matcha-divider/divider/divider.component';\nexport * from './lib/matcha-title/title/title.component';\nexport * from './lib/matcha-drawer/drawer/drawer.component';\nexport * from './lib/matcha-drawer/drawer-container/drawer-container.component';\nexport * from './lib/matcha-drawer/drawer-content/drawer-content.component';\nexport * from './lib/matcha-icon/icon.component';\nexport * from './lib/matcha-grid/grid.component';\nexport * from './lib/matcha-masonry/masonry/masonry.component';\nexport * from './lib/matcha-modal/modal-content/modal-content.component';\nexport * from './lib/matcha-modal/modal-header/modal-header.component';\nexport * from './lib/matcha-modal/modal-footer/modal-footer.component';\nexport * from './lib/matcha-modal/modal-options/modal-options.component';\nexport * from './lib/matcha-modal/modal/modal.component';\nexport * from './lib/matcha-toolbar/toolbar/toolbar.component';\nexport * from './lib/matcha-toolbar/toolbar-button/toolbar-button.component';\nexport * from './lib/matcha-toolbar/toolbar-content/toolbar-content.component';\nexport * from './lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component';\nexport * from './lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component';\nexport * from './lib/matcha-form-field/matcha-form-field/matcha-form-field.component';\nexport * from './lib/matcha-form-field/matcha-label/matcha-label.component';\nexport * from './lib/matcha-form-field/matcha-error/matcha-error.component';\nexport * from './lib/matcha-checkbox/checkbox/checkbox.component';\nexport * from './lib/matcha-radio/radio/radio.component';\nexport * from './lib/matcha-spin/spin/spin.component';\nexport * from './lib/matcha-spinner/spinner/spinner.component';\nexport * from './lib/matcha-hint-text/hint/hint-text.component';\nexport * from './lib/matcha-skeleton/skeleton/skeleton.component';\nexport * from './lib/matcha-slide-toggle/slide-toggle/slide-toggle.component';\nexport * from './lib/matcha-button-toggle/button-toggle/button-toggle.component';\nexport * from './lib/matcha-tabs/tabs/tabs.component';\nexport * from './lib/matcha-tabs/tab-item/tab-item.component';\nexport * from './lib/matcha-date/date/matcha-date.component';\nexport * from './lib/matcha-date-range/date-range/date-range.component';\nexport * from './lib/matcha-time/time/time.component';\nexport * from './lib/matcha-input-phone/input-phone.component';\nexport * from './lib/matcha-stepper/step/step.component';\nexport * from './lib/matcha-stepper/stepper/stepper.component';\nexport * from './lib/matcha-stepper/stepper-content/stepper-content.component';\nexport * from './lib/matcha-stepper/stepper-controller/stepper-controller.component';\nexport * from './lib/matcha-drop-list/drop-list/drop-list.component';\nexport * from './lib/matcha-page-layout/page-layout.component';\nexport * from './lib/matcha-avatar/avatar/avatar.component';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.component';\nexport * from './lib/matcha-option/matcha-option.component';\nexport * from './lib/matcha-panel/matcha-panel.component';\nexport * from './lib/matcha-select/matcha-select.component';\nexport * from './lib/matcha-paginator/paginator/paginator.component';\nexport * from './lib/matcha-paginator/paginator/page-event.interface';\nexport * from './lib/matcha-paginator/paginator-intl.service';\nexport * from './lib/matcha-highlight/highlight.component';\nexport * from './lib/matcha-highlight/copy-button/copy-button.component';\nexport * from './lib/matcha-slider/slider/slider.component';\nexport * from './lib/matcha-chip/chip/chip.component';\nexport * from './lib/matcha-chip/chip-list/chip-list.component';\n\n// -----------------------------------------------------------\n// MODULES\n// -----------------------------------------------------------\nexport * from './lib/matcha-accordion/accordion.module';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll.module';\nexport * from './lib/matcha-lazyload/lazyload.module';\nexport * from './lib/matcha-modal/matcha-modal.module';\nexport * from './lib/matcha-card/card.module';\nexport * from './lib/matcha-masonry/masonry.module';\nexport * from './lib/matcha-title/title.module';\nexport * from './lib/matcha-button/button.module';\nexport * from './lib/matcha-button-toggle/button-toggle.module';\nexport * from './lib/matcha-toolbar/toolbar.module';\nexport * from './lib/matcha-tooltip/tooltip.module';\nexport * from './lib/matcha-divider/divider.module';\nexport * from './lib/matcha-elevation/elevation.module';\nexport * from './lib/matcha-grid/grid.module';\nexport * from './lib/matcha-form-field/matcha-form-field.module';\nexport * from './lib/matcha-components.module';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.module';\nexport * from './lib/matcha-option/matcha-option.module';\nexport * from './lib/matcha-select/matcha-select.module';\nexport * from './lib/matcha-tabs/tabs.module';\nexport * from './lib/matcha-checkbox/checkbox.module';\nexport * from './lib/matcha-radio/radio.module';\nexport * from './lib/matcha-icon/icon.module';\nexport * from './lib/matcha-paginator/paginator.module';\nexport * from './lib/matcha-skeleton/skeleton.module';\nexport * from './lib/matcha-slide-toggle/slide-toggle.module';\nexport * from './lib/matcha-slider/slider.module';\nexport * from './lib/matcha-ripple/ripple.module';\nexport * from './lib/matcha-spin/spin.module';\nexport * from './lib/matcha-spinner/spinner.module';\nexport * from './lib/matcha-hint-text/hint.module';\nexport * from './lib/matcha-input-phone/input-phone.module';\nexport * from './lib/matcha-stepper/stepper.module';\nexport * from './lib/matcha-drop-list/drop-list.module';\nexport * from './lib/matcha-page-layout/page-layout.module';\nexport * from './lib/matcha-avatar/avatar.module';\nexport * from './lib/matcha-drawer/drawer.module';\nexport * from './lib/matcha-breakpoint-observable/breakpoint-observable.module';\nexport * from './lib/matcha-panel/matcha-panel.module';\nexport * from './lib/matcha-highlight/highlight.module';\nexport * from './lib/matcha-chip/chip.module';\n\n// -----------------------------------------------------------\n// MASK COMPONENTS\n// -----------------------------------------------------------\n// export * from './lib/matcha-mask/matcha-mask.directive';\nexport * from './lib/matcha-mask/matcha-mask.pipe';\nexport * from './lib/matcha-mask/matcha-mask.service';\nexport * from './lib/matcha-mask/matcha-mask-applier.service';\nexport * from './lib/matcha-mask/matcha-mask.config';\nexport * from './lib/matcha-mask/matcha-mask-expression.enum';\n// export * from './lib/matcha-mask/matcha-mask.module';\n\n// -----------------------------------------------------------\n// MASK COMPONENTS (COMPATIBLE VERSION)\n// -----------------------------------------------------------\nexport * from './lib/matcha-mask/matcha-mask-compatible.directive';\nexport * from './lib/matcha-mask/matcha-mask.module';\n\n// -----------------------------------------------------------\n// SERVICES\n// -----------------------------------------------------------\nexport * from './lib/matcha-modal/modal.service';\nexport * from './lib/matcha-modal/overlay.service';\nexport * from './lib/matcha-date/matcha-date.module';\nexport * from './lib/matcha-date-range/date-range.module';\nexport * from './lib/matcha-time/time.module';\nexport * from './lib/matcha-stepper/stepper.service';\nexport * from './lib/matcha-breakpoint-observable/breakpoint-observer.service';\n\n// -----------------------------------------------------------\n// DIRECTIVES\n// -----------------------------------------------------------\nexport * from './lib/matcha-tooltip/tooltip.directive';\nexport * from './lib/matcha-elevation/elevation.directive';\nexport * from './lib/matcha-ripple/ripple.directive';\nexport * from './lib/matcha-drop-list/directives/drag.directive';\nexport * from './lib/matcha-drop-list/directives/drag-handle.directive';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.directive';\nexport * from './lib/matcha-select/matcha-select.directive';\nexport * from './lib/matcha-stepper/next-step.diretive';\nexport * from './lib/matcha-stepper/prev-step.diretive';\nexport * from './lib/matcha-stepper/step-content.diretive';\n\n// -----------------------------------------------------------\n// PIPES\n// -----------------------------------------------------------\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MatchaDividerComponent","i1.MatchaButtonComponent","i1.MatchaIconComponent","i1.MatchaRippleDirective","i3.MatchaMaskCompatibleDirective","i1.MatchaStepperStateService","i2","i1.MatchaDropListService","i1.MatchaPanelComponent","i1.MatchaPaginatorIntl","i3.MatchaIconComponent","i2.MatchaButtonComponent","i1","i2.CopyButtonComponent","i2.MatchaDividerComponent","i1.MatchaOverlayService","i1.MatchaStepperContentComponent","i1.MatchaDragDirective"],"mappings":"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"}
|