{"version":3,"file":"seniorsistemas-angular-components-calendar-mask.mjs","sources":["../../projects/angular-components/calendar-mask/src/lib/calendar-mask/calendar-mask.directive.ts","../../projects/angular-components/calendar-mask/src/lib/calendar-mask/calendar-mask.module.ts","../../projects/angular-components/calendar-mask/src/seniorsistemas-angular-components-calendar-mask.ts"],"sourcesContent":["import { AfterViewChecked, Directive, HostListener, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\r\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\r\n\r\nimport { Calendar } from 'primeng/calendar';\r\n\r\n/**\r\n * @deprecated\r\n * @since 19.6.0\r\n * Favor utilizar o componente: s-datepicker, que é o calendário oficial do Design System da Senior.\r\n *\r\n * @description Diretiva que aplica máscara de entrada a um componente `p-calendar` do PrimeNG,\r\n * formatando automaticamente a data conforme o formato configurado no calendário.\r\n * Intercepta os eventos de teclado e input do campo interno do calendar para garantir\r\n * que apenas entradas válidas sejam aceitas.\r\n *\r\n * @example\r\n * ```html\r\n * <p-calendar sCalendarMask [(ngModel)]=\"data\" dateFormat=\"dd/mm/yy\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Directive({\r\n    selector: 'p-calendar[sCalendarMask]',\r\n    standalone: true,\r\n})\r\nexport class CalendarMaskDirective implements OnInit, OnDestroy, AfterViewChecked {\r\n    host = inject(Calendar);\r\n    renderer = inject(Renderer2);\r\n\r\n    // TODO: Mudei um monte de coisa e tem que testar se isso ainda funciona\r\n    // TODO: Ainda está sendo usada esta diretiva?\r\n    SELECTORS = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\r\n\r\n    /**\r\n     * @description Caractere usado como placeholder para as posições ainda não preenchidas na máscara.\r\n     *\r\n     * @default '_'\r\n     */\r\n    @Input()\r\n    public slotChar = '_';\r\n\r\n    /**\r\n     * @description Quando `true`, limpa automaticamente o campo caso o valor digitado\r\n     * seja inválido ao perder o foco.\r\n     *\r\n     * @default false\r\n     */\r\n    @Input()\r\n    public autoClear = false;\r\n\r\n    public value: any;\r\n    public input?: HTMLInputElement;\r\n    public filled?: boolean;\r\n\r\n    private _mask?: string;\r\n    private defs: any;\r\n    private tests?: any[];\r\n    private partialPosition: any;\r\n    private firstNonMaskPos: number | null | undefined;\r\n    private lastRequiredNonMaskPos: any;\r\n    private len?: number;\r\n    private oldVal?: string;\r\n    private buffer: any;\r\n    private defaultBuffer?: string;\r\n    private focusText?: string;\r\n    private caretTimeoutId: any;\r\n    private androidChrome?: boolean;\r\n    private firstTime = true;\r\n\r\n    private focusListener?: () => void;\r\n    private blurListener?: () => void;\r\n    private keydownListener?: () => void;\r\n    private keypressListener?: () => void;\r\n    private inputListener?: () => void;\r\n    private pasteListener?: () => void;\r\n\r\n    private setListeners() {\r\n        this.input = this.host.inputfieldViewChild?.nativeElement;\r\n        this.value = this.input?.value;\r\n\r\n        this.focusListener = this.renderer.listen(this.input, 'focus', () => {\r\n            this.onInputFocus();\r\n        });\r\n\r\n        this.blurListener = this.renderer.listen(this.input, 'blur', (event: any) => {\r\n            this.onInputBlur(event);\r\n        });\r\n\r\n        this.keydownListener = this.renderer.listen(this.input, 'keydown', (event: any) => {\r\n            this.onKeyDown(event);\r\n        });\r\n\r\n        this.keypressListener = this.renderer.listen(this.input, 'keypress', (event: any) => {\r\n            this.onKeyPress(event);\r\n        });\r\n\r\n        this.inputListener = this.renderer.listen(this.input, 'input', (event: any) => {\r\n            this.onInputChange(event);\r\n        });\r\n\r\n        this.pasteListener = this.renderer.listen(this.input, 'paste', (event: any) => {\r\n            this.handleInputChange(event);\r\n        });\r\n    }\r\n\r\n    public ngOnInit() {\r\n        const ua = navigator.userAgent;\r\n        this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);\r\n\r\n        this.createMaskFromDateFormat();\r\n        this.initMask();\r\n    }\r\n\r\n    get mask(): string {\r\n        return this._mask ?? '';\r\n    }\r\n\r\n    set mask(val: string) {\r\n        this._mask = val;\r\n\r\n        this.initMask();\r\n        this.writeValue('');\r\n    }\r\n\r\n    public writeValue(value: any): void {\r\n        this.value = value;\r\n\r\n        if (this.input) {\r\n            if (this.value == undefined) {\r\n                this.input.value = '';\r\n            } else {\r\n                this.input.value = this.value;\r\n            }\r\n\r\n            this.checkVal();\r\n            this.focusText = this.input.value;\r\n            this.updateFilledState();\r\n        }\r\n    }\r\n\r\n    public onInputBlur(e: any) {\r\n        this.checkVal();\r\n        this.updateFilledState();\r\n\r\n        if (this.value != this.focusText) {\r\n            if (\r\n                !this.input?.disabled &&\r\n                (this.value === undefined || this.value === null || (this.value as string).indexOf(this.slotChar) >= 0)\r\n            ) {\r\n                this.value = '';\r\n                e.target.value = '';\r\n                this.host.updateModel(null);\r\n            }\r\n\r\n            this.updateModel(e);\r\n            const event = document.createEvent('HTMLEvents');\r\n            event.initEvent('change', true, false);\r\n            this.input?.dispatchEvent(event);\r\n        }\r\n    }\r\n\r\n    public onKeyDown(e: any) {\r\n        if (this.host.readonlyInput) {\r\n            return;\r\n        }\r\n\r\n        const k = e.which || e.keyCode;\r\n        const iPhone = /iphone/i.test(navigator.userAgent);\r\n        let pos;\r\n        let begin;\r\n        let end;\r\n        this.oldVal = this.input?.value;\r\n\r\n        // Backspace, delete, and escape get special treatment\r\n        if (k === 8 || k === 46 || (iPhone && k === 127)) {\r\n            pos = this.caret();\r\n            begin = pos?.begin;\r\n            end = pos?.end;\r\n\r\n            if (begin && end) {\r\n                if (end - begin === 0) {\r\n                    begin = k !== 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));\r\n                    end = k === 46 ? this.seekNext(end) : end;\r\n                }\r\n\r\n                this.clearBuffer(begin, end);\r\n                this.shiftL(begin, end - 1);\r\n            }\r\n\r\n            this.updateModel(e);\r\n            e.preventDefault();\r\n        } else if (k === 13) {\r\n            // Enter\r\n            this.onInputBlur(e);\r\n            this.updateModel(e);\r\n        } else if (k === 27) {\r\n            // Escape\r\n            if (this.input && this.focusText) {\r\n                this.input.value = this.focusText;\r\n                this.caret(0, this.checkVal());\r\n            }\r\n            this.updateModel(e);\r\n            e.preventDefault();\r\n        }\r\n    }\r\n\r\n    public onKeyPress(e: any) {\r\n        if (this.host.readonlyInput) return;\r\n\r\n        const k = e.which || e.keyCode;\r\n        const pos = this.caret();\r\n        let p;\r\n        let c;\r\n        let next: any;\r\n\r\n        if (e.ctrlKey || e.altKey || e.metaKey || k < 32 || (k > 34 && k < 41)) {\r\n            // Ignore\r\n            return;\r\n        } else if (k && k !== 13) {\r\n            if (!isNullOrUndefined(pos?.end) && !isNullOrUndefined(pos?.begin)) {\r\n                if (pos.end - pos.begin !== 0) {\r\n                    this.clearBuffer(pos.begin, pos.end);\r\n                    this.shiftL(pos.begin, pos.end - 1);\r\n                }\r\n            }\r\n\r\n            if (!isNullOrUndefined(pos?.begin)) {\r\n                p = this.seekNext(pos.begin - 1);\r\n            }\r\n\r\n            if (p < (this.len ?? 0)) {\r\n                c = String.fromCharCode(k);\r\n                if (this.tests?.[p].test(c)) {\r\n                    this.shiftR(p);\r\n\r\n                    this.buffer[p] = c;\r\n                    this.writeBuffer();\r\n                    next = this.seekNext(p);\r\n\r\n                    if (/android/i.test(navigator.userAgent)) {\r\n                        // Path for CSP Violation on FireFox OS 1.1\r\n                        const proxy = () => {\r\n                            this.caret(next);\r\n                        };\r\n\r\n                        setTimeout(proxy, 0);\r\n                    } else {\r\n                        this.caret(next);\r\n                    }\r\n                }\r\n            }\r\n            e.preventDefault();\r\n        }\r\n\r\n        this.updateModel(e);\r\n        this.updateFilledState();\r\n    }\r\n\r\n    private createCompleteMask(): string {\r\n        switch (this.host.selectionMode) {\r\n            case 'range':\r\n                return this.mask + ` ${this.host.rangeSeparator} ` + this.mask;\r\n            case 'single':\r\n            case 'multiple':\r\n                return this.mask;\r\n            default:\r\n                return '';\r\n        }\r\n    }\r\n\r\n    public checkVal(allow?: boolean) {\r\n        // Try to place characters where they belong\r\n        const test = this.input?.value;\r\n        let lastMatch = -1;\r\n        let i: any;\r\n        let c: any;\r\n        let pos = 0;\r\n\r\n        for (i = 0; i < (this.len ?? 0); i++) {\r\n            if (this.tests?.[i]) {\r\n                this.buffer[i] = this.getPlaceholder(i);\r\n                while (pos++ < (test?.length ?? 0)) {\r\n                    c = test?.charAt(pos - 1);\r\n                    if (this.tests[i].test(c)) {\r\n                        this.buffer[i] = c;\r\n                        lastMatch = i;\r\n                        break;\r\n                    }\r\n                }\r\n                if (pos > (test?.length ?? 0)) {\r\n                    this.clearBuffer(i + 1, this.len);\r\n                    break;\r\n                }\r\n            } else {\r\n                if (this.buffer[i] === test?.charAt(pos)) {\r\n                    pos++;\r\n                }\r\n                if (i < this.partialPosition) {\r\n                    lastMatch = i;\r\n                }\r\n            }\r\n        }\r\n        if (allow) {\r\n            this.writeBuffer();\r\n        } else if (lastMatch + 1 < this.partialPosition) {\r\n            if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {\r\n                // Invalid value. Remove it and replace it with the\r\n                // mask, which is the default behavior.\r\n                if (this.input?.value) {\r\n                    this.input.value = '';\r\n                }\r\n                this.clearBuffer(0, this.len);\r\n            } else {\r\n                // Invalid value, but we opt to show the value to the\r\n                // user and allow them to correct their mistake.\r\n                this.writeBuffer();\r\n            }\r\n        } else {\r\n            this.writeBuffer();\r\n            if (!isNullOrUndefined(this.input)) {\r\n                this.input.value = this.input.value.substring(0, lastMatch + 1);\r\n            }\r\n        }\r\n\r\n        return this.partialPosition ? i : this.firstNonMaskPos;\r\n    }\r\n\r\n    public onInputFocus() {\r\n        if (this.host.readonlyInput) return;\r\n\r\n        clearTimeout(this.caretTimeoutId);\r\n        let pos: any;\r\n\r\n        this.focusText = this.input?.value;\r\n\r\n        pos = this.checkVal();\r\n\r\n        this.caretTimeoutId = setTimeout(() => {\r\n            if (this.input !== document.activeElement) {\r\n                return;\r\n            }\r\n            this.writeBuffer();\r\n            if (pos == this.mask.replace('?', '').length) {\r\n                this.caret(0, pos);\r\n            } else {\r\n                this.caret(pos);\r\n            }\r\n        }, 10);\r\n    }\r\n\r\n    public onInputChange(event: any) {\r\n        if (this.androidChrome) this.handleAndroidInput(event);\r\n        else this.handleInputChange(event);\r\n    }\r\n\r\n    public handleInputChange(event: any) {\r\n        if (this.host.readonlyInput) return;\r\n\r\n        setTimeout(() => {\r\n            const pos = this.checkVal(true);\r\n            this.caret(pos);\r\n            this.updateModel(event);\r\n        }, 0);\r\n    }\r\n\r\n    public updateModel(e: any) {\r\n        const updatedValue = e.target.value;\r\n        if (updatedValue !== null || updatedValue !== undefined) {\r\n            this.value = updatedValue;\r\n            this.host.onUserInput(e);\r\n        }\r\n    }\r\n\r\n    public updateFilledState() {\r\n        this.filled = this.input && this.input.value != '';\r\n    }\r\n\r\n    public focus() {\r\n        this.input?.focus();\r\n    }\r\n\r\n    private initMask() {\r\n        const completeMask = this.createCompleteMask();\r\n\r\n        this.tests = [];\r\n        this.partialPosition = completeMask.length;\r\n        this.len = completeMask.length;\r\n        this.firstNonMaskPos = null;\r\n        this.defs = {\r\n            '9': '[0-9]',\r\n        };\r\n\r\n        const maskTokens = completeMask.split('');\r\n        for (let i = 0; i < maskTokens.length; i++) {\r\n            const c = maskTokens[i];\r\n\r\n            if (c == '?') {\r\n                this.len--;\r\n                this.partialPosition = i;\r\n            } else if (this.defs[c]) {\r\n                this.tests.push(new RegExp(this.defs[c]));\r\n\r\n                if (this.firstNonMaskPos === null) {\r\n                    this.firstNonMaskPos = this.tests.length - 1;\r\n                }\r\n\r\n                if (i < this.partialPosition) {\r\n                    this.lastRequiredNonMaskPos = this.tests.length - 1;\r\n                }\r\n            } else {\r\n                this.tests.push(null);\r\n            }\r\n        }\r\n\r\n        this.buffer = [];\r\n\r\n        for (let i = 0; i < maskTokens.length; i++) {\r\n            const c = maskTokens[i];\r\n\r\n            if (c != '?') {\r\n                if (this.defs[c]) {\r\n                    this.buffer.push(this.getPlaceholder(i));\r\n                } else {\r\n                    this.buffer.push(c);\r\n                }\r\n            }\r\n        }\r\n\r\n        this.defaultBuffer = this.buffer.join('');\r\n    }\r\n\r\n    private caret(first?: number, last?: number) {\r\n        let range, begin, end;\r\n\r\n        if (!this.input?.offsetParent || this.input !== document.activeElement) {\r\n            return { begin: 0, end: 0 };\r\n        }\r\n\r\n        if (typeof first == 'number') {\r\n            begin = first;\r\n            end = typeof last === 'number' ? last : begin;\r\n\r\n            if (this.input.setSelectionRange) {\r\n                this.input.setSelectionRange(begin, end);\r\n            } else if ((this.input as any)['createTextRange']) {\r\n                range = (this.input as any)['createTextRange']();\r\n                range.collapse(true);\r\n                range.moveEnd('character', end);\r\n                range.moveStart('character', begin);\r\n                range.select();\r\n            }\r\n        } else {\r\n            begin = this.input.selectionStart;\r\n            end = this.input.selectionEnd;\r\n\r\n            return { begin: begin, end: end };\r\n        }\r\n\r\n        return { begin: first ?? 0, end: last ?? 0 };\r\n    }\r\n\r\n    private getPlaceholder(i: number) {\r\n        if (i < this.slotChar.length) return this.slotChar.charAt(i);\r\n        return this.slotChar.charAt(0);\r\n    }\r\n\r\n    private seekNext(pos: any) {\r\n        while (++pos < (this.len ?? 0)) {\r\n            if (this.tests?.[pos]) break;\r\n        }\r\n        return pos;\r\n    }\r\n\r\n    private seekPrev(pos: any) {\r\n        while (--pos >= 0 && !this.tests?.[pos]) {\r\n            if (this.tests?.[pos]) break;\r\n        }\r\n        return pos;\r\n    }\r\n\r\n    private shiftL(begin: number, end: number) {\r\n        let i: any;\r\n        let j: any;\r\n\r\n        if (begin < 0) {\r\n            return;\r\n        }\r\n\r\n        j = this.seekNext(end);\r\n\r\n        for (i = begin; i < (this.len ?? 0); i++) {\r\n            if (this.tests?.[i]) {\r\n                if (j < (this.len ?? 0) && this.tests[i].test(this.buffer[j])) {\r\n                    this.buffer[i] = this.buffer[j];\r\n                    this.buffer[j] = this.getPlaceholder(j);\r\n                } else break;\r\n\r\n                j = this.seekNext(j);\r\n            }\r\n        }\r\n        this.writeBuffer();\r\n        if (!isNullOrUndefined(this.firstNonMaskPos)) {\r\n            this.caret(Math.max(this.firstNonMaskPos, begin));\r\n        }\r\n    }\r\n\r\n    private shiftR(pos: any) {\r\n        let i: any;\r\n        let c = this.getPlaceholder(pos);\r\n        let j: any;\r\n        let t: any;\r\n\r\n        for (i = pos; i < (this.len ?? 0); i++) {\r\n            if (this.tests?.[i]) {\r\n                j = this.seekNext(i);\r\n                t = this.buffer[i];\r\n                this.buffer[i] = c;\r\n\r\n                if (j < (this.len ?? 0) && this.tests[j].test(t)) {\r\n                    c = t;\r\n                } else break;\r\n            }\r\n        }\r\n    }\r\n\r\n    private handleAndroidInput(e: any) {\r\n        const curVal = this.input?.value;\r\n        const pos = this.caret();\r\n\r\n        if (isNullOrUndefined(pos?.begin)) return;\r\n\r\n        if (this.oldVal && this.oldVal.length && this.oldVal.length > (curVal?.length ?? 0)) {\r\n            // A deletion or backspace happened\r\n            this.checkVal(true);\r\n            while (pos?.begin > 0 && !this.tests?.[pos.begin - 1]) {\r\n                pos.begin--;\r\n            }\r\n            if (pos.begin === 0) {\r\n                while (pos.begin < (this.firstNonMaskPos ?? 0) && !this.tests?.[pos.begin]) {\r\n                    pos.begin++;\r\n                }\r\n            }\r\n\r\n            setTimeout(() => {\r\n                this.caret(pos.begin!, pos.begin!);\r\n                if (this.isCompleted()) {\r\n                    const sentVal = curVal?.replace(this.slotChar, ''); // Limpa os caracteres placeholders extras caso ele esteja completo\r\n                    sentVal && this.updateCalendarValue(sentVal);\r\n                }\r\n            }, 0);\r\n        } else {\r\n            this.checkVal(true);\r\n\r\n            while (pos.begin < (this.len ?? 0) && !this.tests?.[pos.begin]) {\r\n                pos.begin++;\r\n            }\r\n\r\n            if (!isNullOrUndefined(pos.begin)) {\r\n                setTimeout(() => {\r\n                    this.caret(pos.begin!, pos.begin!);\r\n                    if (this.isCompleted()) {\r\n                        const sentVal = curVal?.replace(this.slotChar, ''); // Limpa os caracteres placeholders extras caso ele esteja completo\r\n                        sentVal && this.updateCalendarValue(sentVal);\r\n                    }\r\n                }, 0);\r\n            }\r\n        }\r\n    }\r\n\r\n    private updateCalendarValue(sentVal: string) {\r\n        // TODO verificar\r\n        const dateVal = <Date>this.host.parseValueFromString(sentVal);\r\n        if (this.host.isSelectable(dateVal.getDate(), dateVal.getMonth(), dateVal.getFullYear(), false)) {\r\n            this.host.updateModel(sentVal);\r\n            this.host.updateUI();\r\n        }\r\n    }\r\n\r\n    private clearBuffer(start: any, end: any) {\r\n        let i;\r\n\r\n        for (i = start; i < end && i < (this.len ?? 0); i++) {\r\n            if (this.tests?.[i]) {\r\n                this.buffer[i] = this.getPlaceholder(i);\r\n            }\r\n        }\r\n    }\r\n\r\n    private writeBuffer() {\r\n        if (!isNullOrUndefined(this.input)) {\r\n            this.input.value = this.buffer.join('');\r\n        }\r\n    }\r\n\r\n    private createMaskFromDateFormat() {\r\n        const calendar = this.host;\r\n        let mask = this.autoClear ? '?' : '';\r\n\r\n        if (!calendar.timeOnly) {\r\n            let dateFormat = calendar.dateFormat;\r\n            dateFormat = dateFormat?.replace(/y/g, 'yy');\r\n            mask += dateFormat?.replace(/[^/*,.\\-+\\[\\]\\\\]/g, '9');\r\n            if (calendar.showTime) {\r\n                mask += ' ';\r\n            }\r\n        }\r\n\r\n        if (calendar.showTime || calendar.timeOnly) {\r\n            mask += '99:99';\r\n            if (calendar.showSeconds) {\r\n                mask += ':99';\r\n            }\r\n        }\r\n\r\n        this._mask = mask;\r\n\r\n        this.initMask();\r\n    }\r\n\r\n    isCompleted(): boolean {\r\n        for (let i = this.firstNonMaskPos ?? 0; i <= this.lastRequiredNonMaskPos; i++) {\r\n            if (this.tests?.[i] && this.buffer[i] === this.getPlaceholder(i)) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    ngAfterViewChecked(): void {\r\n        if (this.host.inputfieldViewChild && this.firstTime) {\r\n            this.firstTime = false;\r\n            this.setListeners();\r\n            if (!isNullOrUndefined(this.input)) {\r\n                this.input.type = 'tel';\r\n            }\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        if (this.focusListener) this.focusListener();\r\n        if (this.blurListener) this.blurListener();\r\n        if (this.keydownListener) this.keydownListener();\r\n        if (this.keypressListener) this.keypressListener();\r\n        if (this.inputListener) this.inputListener();\r\n        if (this.pasteListener) this.pasteListener();\r\n    }\r\n\r\n    @HostListener('keydown', ['$event'])\r\n    onKeydownEventTest(e: KeyboardEvent) {\r\n        const { key } = e;\r\n        if (key == 'Tab') {\r\n            // Este código foi implementado para corrigir um problema no componente na v9\r\n            // Deve ser removido assim que atualizarmos o PrimeNG para a v10\r\n            const allFocusableElements = document.querySelectorAll(this.SELECTORS);\r\n            let nextIsFocusable = false;\r\n            let previousFocusable: string;\r\n            let forceCloseModal = true;\r\n            allFocusableElements.forEach((element) => {\r\n                if (!e.shiftKey) {\r\n                    if (nextIsFocusable && element.id) {\r\n                        this.focusableElement(element.id, forceCloseModal);\r\n                        nextIsFocusable = false;\r\n                        e.preventDefault();\r\n                        return;\r\n                    }\r\n                }\r\n\r\n                let activeTagName = window.document.activeElement?.tagName;\r\n                if (e.shiftKey && element.id && element.tagName === 'INPUT' && activeTagName == 'BUTTON') {\r\n                    previousFocusable = element.id;\r\n                    forceCloseModal = false;\r\n                }\r\n\r\n                if (element.id === this.host.inputId) {\r\n                    if (previousFocusable) {\r\n                        this.focusableElement(previousFocusable, forceCloseModal);\r\n                        e.preventDefault();\r\n                        forceCloseModal = true;\r\n                        return;\r\n                    }\r\n                    nextIsFocusable = true;\r\n                } else if (e.shiftKey && element.id) {\r\n                    previousFocusable = element.id;\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    public focusableElement(id: string, hide: boolean) {\r\n        const htmlElement = window.document.getElementById(id);\r\n        htmlElement?.focus();\r\n        if (hide) {\r\n            this.host.hideOverlay();\r\n        }\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CalendarMaskDirective } from './calendar-mask.directive';\r\n\r\n@NgModule({\r\n    imports: [CalendarMaskDirective],\r\n    exports: [CalendarMaskDirective],\r\n})\r\nexport class CalendarMaskModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}