{"version":3,"file":"taiga-ui-cdk-directives-auto-focus.mjs","sources":["../../../projects/cdk/directives/auto-focus/handlers/abstract.handler.ts","../../../projects/cdk/directives/auto-focus/handlers/default.handler.ts","../../../projects/cdk/directives/auto-focus/handlers/ios.handler.ts","../../../projects/cdk/directives/auto-focus/autofocus.options.ts","../../../projects/cdk/directives/auto-focus/autofocus.directive.ts","../../../projects/cdk/directives/auto-focus/handlers/sync.handler.ts","../../../projects/cdk/directives/auto-focus/taiga-ui-cdk-directives-auto-focus.ts"],"sourcesContent":["import {type ElementRef} from '@angular/core';\n\nimport {type TuiAutofocusHandler, type TuiAutofocusOptions} from '../autofocus.options';\n\nexport abstract class AbstractTuiAutofocusHandler implements TuiAutofocusHandler {\n    constructor(\n        protected readonly el: ElementRef<HTMLElement>,\n        protected readonly options: TuiAutofocusOptions,\n    ) {}\n\n    public abstract setFocus(): void;\n\n    protected get element(): HTMLElement {\n        // TODO: Remove when legacy controls are dropped\n        const el = this.el.nativeElement.tagName.includes('-')\n            ? this.el.nativeElement.querySelector<HTMLElement>(this.options.query)\n            : this.el.nativeElement;\n\n        return el || this.el.nativeElement;\n    }\n\n    protected get isTextFieldElement(): boolean {\n        return this.element.matches(this.options.query);\n    }\n}\n","import {type ElementRef, type NgZone} from '@angular/core';\nimport {tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {map, type Observable, race, skipWhile, take, throttleTime, timer} from 'rxjs';\n\nimport {type TuiAutofocusOptions} from '../autofocus.options';\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TIMEOUT = 1000;\nconst NG_ANIMATION_SELECTOR = '.ng-animating';\n\nexport class TuiDefaultAutofocusHandler extends AbstractTuiAutofocusHandler {\n    constructor(\n        el: ElementRef<HTMLElement>,\n        private readonly animationFrame$: Observable<number>,\n        private readonly zone: NgZone,\n        options: TuiAutofocusOptions,\n    ) {\n        super(el, options);\n    }\n\n    public setFocus(): void {\n        if (this.isTextFieldElement) {\n            race(\n                timer(this.options.delay || TIMEOUT),\n                this.animationFrame$.pipe(\n                    throttleTime(100, tuiZonefreeScheduler(this.zone)),\n                    map(() => this.element.closest(NG_ANIMATION_SELECTOR)),\n                    skipWhile(Boolean),\n                    take(1),\n                ),\n            ).subscribe(() =>\n                this.element.focus({preventScroll: this.options.preventScroll}),\n            );\n        } else {\n            this.element.focus({preventScroll: true});\n        }\n    }\n}\n","import {type ElementRef, type NgZone, type Renderer2} from '@angular/core';\nimport {tuiIsPresent, tuiPx} from '@taiga-ui/cdk/utils';\n\nimport {type TuiAutofocusOptions} from '../autofocus.options';\nimport {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nconst TEXTFIELD_ATTRS = [\n    'type',\n    'inputMode',\n    'autocomplete',\n    'accept',\n    'min',\n    'max',\n    'step',\n    'pattern',\n    'size',\n    'maxlength',\n] as const;\n\nexport class TuiIosAutofocusHandler extends AbstractTuiAutofocusHandler {\n    constructor(\n        el: ElementRef<HTMLElement>,\n        private readonly renderer: Renderer2,\n        private readonly zone: NgZone,\n        private readonly win: Window,\n        options: TuiAutofocusOptions,\n    ) {\n        super(el, options);\n    }\n\n    public setFocus(): void {\n        if (this.isTextFieldElement) {\n            this.zone.runOutsideAngular(() => this.iosWebkitAutofocus());\n        } else {\n            this.element.focus({preventScroll: true});\n        }\n    }\n\n    private iosWebkitAutofocus(): void {\n        const fakeInput: HTMLInputElement = this.makeFakeInput();\n        const duration = this.getDurationTimeBeforeFocus();\n        let fakeFocusTimeoutId = 0;\n        let elementFocusTimeoutId = 0;\n\n        const blurHandler = (): void => fakeInput.focus({preventScroll: true});\n        const focusHandler = (): void => {\n            clearTimeout(fakeFocusTimeoutId);\n\n            fakeFocusTimeoutId = this.win.setTimeout(() => {\n                clearTimeout(elementFocusTimeoutId);\n\n                fakeInput.removeEventListener('blur', blurHandler);\n                fakeInput.removeEventListener('focus', focusHandler);\n\n                elementFocusTimeoutId = this.win.setTimeout(() => {\n                    this.element.focus({preventScroll: this.options.preventScroll});\n                    fakeInput.remove();\n                }, duration);\n            });\n        };\n\n        fakeInput.addEventListener('blur', blurHandler, {once: true});\n        fakeInput.addEventListener('focus', focusHandler);\n\n        if (this.insideDialog()) {\n            this.win.document.body.appendChild(fakeInput);\n        } else {\n            this.element.parentElement?.appendChild(fakeInput);\n        }\n\n        fakeInput.focus({preventScroll: true});\n    }\n\n    /**\n     * @note:\n     * emulate textfield position in layout with cursor\n     * before focus to real textfield element\n     *\n     * required note:\n     * [fakeInput.readOnly = true] ~\n     * don't use {readOnly: true} value, it's doesn't work for emulate autofill\n     *\n     * [fakeInput.style.opacity = 0] ~\n     * don't use {opacity: 0}, sometimes it's doesn't work for emulate real input\n     *\n     * [fakeInput.style.fontSize = 16px] ~\n     * disable possible auto zoom\n     *\n     * [fakeInput.style.top/left] ~\n     * emulate position cursor before focus to real textfield element\n     */\n    private makeFakeInput(): HTMLInputElement {\n        const fakeInput: HTMLInputElement = this.renderer.createElement('input');\n        const rect: DOMRect = this.element.getBoundingClientRect();\n\n        this.patchFakeInputFromFocusableElement(fakeInput);\n\n        fakeInput.style.height = tuiPx(rect.height);\n        fakeInput.style.width = tuiPx(rect.width / 2);\n        fakeInput.style.position = 'fixed';\n        fakeInput.style.zIndex = '-99999999';\n        fakeInput.style.caretColor = 'transparent';\n        fakeInput.style.border = 'none';\n        fakeInput.style.outline = 'none';\n        fakeInput.style.color = 'transparent';\n        fakeInput.style.background = 'transparent';\n        fakeInput.style.cursor = 'none';\n        fakeInput.style.fontSize = tuiPx(16);\n        fakeInput.style.top = tuiPx(rect.top);\n        fakeInput.style.left = tuiPx(rect.left);\n\n        return fakeInput;\n    }\n\n    private getDurationTimeBeforeFocus(): number {\n        return (\n            parseFloat(\n                this.win\n                    .getComputedStyle(this.element)\n                    .getPropertyValue('--tui-duration'),\n            ) || 0\n        );\n    }\n\n    /**\n     * @note:\n     * unfortunately, in older versions of iOS\n     * there is a bug that the fake input cursor\n     * will move along with the dialog animation\n     * and then that dialog will be shaking\n     */\n    private insideDialog(): boolean {\n        return !!this.element.closest('tui-dialog');\n    }\n\n    /**\n     * @note:\n     * inherit basic attributes values from real input\n     * for help iOS detect what do you want see on keyboard,\n     * for example [inputMode=numeric, autocomplete=cc-number]\n     */\n    private patchFakeInputFromFocusableElement(fakeInput: HTMLInputElement): void {\n        TEXTFIELD_ATTRS.forEach((attr) => {\n            const value = this.element.getAttribute(attr);\n\n            if (tuiIsPresent(value)) {\n                fakeInput.setAttribute(attr, value);\n            }\n        });\n    }\n}\n","import {ElementRef, InjectionToken, NgZone, Renderer2} from '@angular/core';\nimport {WA_ANIMATION_FRAME, WA_WINDOW} from '@ng-web-apis/common';\nimport {TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils';\nimport {type Observable} from 'rxjs';\n\nimport {TuiDefaultAutofocusHandler} from './handlers/default.handler';\nimport {TuiIosAutofocusHandler} from './handlers/ios.handler';\n\nexport interface TuiAutofocusHandler {\n    setFocus(): void;\n}\n\nexport interface TuiAutofocusOptions {\n    readonly delay: number;\n    readonly query: string;\n    readonly preventScroll: boolean;\n}\n\nexport const [TUI_AUTOFOCUS_OPTIONS, tuiAutoFocusOptionsProvider] =\n    tuiCreateOptions<TuiAutofocusOptions>({\n        delay: NaN, // NaN = no delay/sync\n        query: 'input, textarea, select, [contenteditable]',\n        preventScroll: false,\n    });\n\nexport const TUI_AUTOFOCUS_HANDLER = new InjectionToken<TuiAutofocusHandler>(\n    ngDevMode ? 'TUI_AUTOFOCUS_HANDLER' : '',\n);\n\nexport const TUI_AUTOFOCUS_PROVIDERS = [\n    {\n        provide: TUI_AUTOFOCUS_HANDLER,\n        deps: [\n            ElementRef,\n            WA_ANIMATION_FRAME,\n            Renderer2,\n            NgZone,\n            WA_WINDOW,\n            TUI_IS_IOS,\n            TUI_AUTOFOCUS_OPTIONS,\n        ],\n\n        // eslint-disable-next-line @typescript-eslint/max-params,max-params\n        useFactory: (\n            el: ElementRef<HTMLElement>,\n            animationFrame$: Observable<number>,\n            renderer: Renderer2,\n            zone: NgZone,\n            win: Window,\n            isIos: boolean,\n            options: TuiAutofocusOptions,\n        ) =>\n            isIos\n                ? new TuiIosAutofocusHandler(el, renderer, zone, win, options)\n                : new TuiDefaultAutofocusHandler(el, animationFrame$, zone, options),\n    },\n];\n","import {type BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {type AfterViewInit, DestroyRef, Directive, inject, Input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {timer} from 'rxjs';\n\nimport {\n    TUI_AUTOFOCUS_HANDLER,\n    TUI_AUTOFOCUS_OPTIONS,\n    TUI_AUTOFOCUS_PROVIDERS,\n} from './autofocus.options';\n\n@Directive({\n    standalone: true,\n    selector: '[tuiAutoFocus]',\n    providers: TUI_AUTOFOCUS_PROVIDERS,\n})\nexport class TuiAutoFocus implements AfterViewInit {\n    private readonly handler = inject(TUI_AUTOFOCUS_HANDLER);\n    private readonly options = inject(TUI_AUTOFOCUS_OPTIONS);\n    private readonly destroyRef = inject(DestroyRef);\n\n    @Input({\n        alias: 'tuiAutoFocus',\n        transform: coerceBooleanProperty,\n    })\n    public autoFocus: BooleanInput;\n\n    public ngAfterViewInit(): void {\n        if (this.autoFocus) {\n            this.focus();\n        }\n    }\n\n    public focus(): void {\n        if (Number.isNaN(this.options.delay)) {\n            void Promise.resolve().then(() => this.handler.setFocus());\n        } else {\n            timer(this.options.delay)\n                .pipe(takeUntilDestroyed(this.destroyRef))\n                .subscribe(() => this.handler.setFocus());\n        }\n    }\n}\n","import {AbstractTuiAutofocusHandler} from './abstract.handler';\n\nexport class TuiSynchronousAutofocusHandler extends AbstractTuiAutofocusHandler {\n    public setFocus(): void {\n        this.element.focus({preventScroll: true});\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;MAIsB,2BAA2B,CAAA;IAC7C,WACuB,CAAA,EAA2B,EAC3B,OAA4B,EAAA;QAD5B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAyB;QAC3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAqB;KAC/C;AAIJ,IAAA,IAAc,OAAO,GAAA;;AAEjB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AAClD,cAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAc,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACtE,cAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AAE5B,QAAA,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;KACtC;AAED,IAAA,IAAc,kBAAkB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACnD;AACJ;;ACjBD,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAExC,MAAO,0BAA2B,SAAQ,2BAA2B,CAAA;AACvE,IAAA,WAAA,CACI,EAA2B,EACV,eAAmC,EACnC,IAAY,EAC7B,OAA4B,EAAA;AAE5B,QAAA,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAJF,IAAe,CAAA,eAAA,GAAf,eAAe,CAAoB;QACnC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;KAIhC;IAEM,QAAQ,GAAA;QACX,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CACA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,EACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CACrB,YAAY,CAAC,GAAG,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAClD,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,EACtD,SAAS,CAAC,OAAO,CAAC,EAClB,IAAI,CAAC,CAAC,CAAC,CACV,CACJ,CAAC,SAAS,CAAC,MACR,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAC,CAAC,CAClE,CAAC;AACL,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;AAC7C,SAAA;KACJ;AACJ;;AC/BD,MAAM,eAAe,GAAG;IACpB,MAAM;IACN,WAAW;IACX,cAAc;IACd,QAAQ;IACR,KAAK;IACL,KAAK;IACL,MAAM;IACN,SAAS;IACT,MAAM;IACN,WAAW;CACL,CAAC;AAEL,MAAO,sBAAuB,SAAQ,2BAA2B,CAAA;IACnE,WACI,CAAA,EAA2B,EACV,QAAmB,EACnB,IAAY,EACZ,GAAW,EAC5B,OAA4B,EAAA;AAE5B,QAAA,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QALF,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;KAI/B;IAEM,QAAQ,GAAA;QACX,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAChE,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;AAC7C,SAAA;KACJ;IAEO,kBAAkB,GAAA;AACtB,QAAA,MAAM,SAAS,GAAqB,IAAI,CAAC,aAAa,EAAE,CAAC;AACzD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACnD,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAE9B,QAAA,MAAM,WAAW,GAAG,MAAY,SAAS,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,MAAW;YAC5B,YAAY,CAAC,kBAAkB,CAAC,CAAC;YAEjC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAK;gBAC1C,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAEpC,gBAAA,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACnD,gBAAA,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAErD,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAK;AAC7C,oBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAC,CAAC,CAAC;oBAChE,SAAS,CAAC,MAAM,EAAE,CAAC;iBACtB,EAAE,QAAQ,CAAC,CAAC;AACjB,aAAC,CAAC,CAAC;AACP,SAAC,CAAC;AAEF,QAAA,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;AAC9D,QAAA,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAElD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACrB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACjD,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;AACtD,SAAA;QAED,SAAS,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;KAC1C;AAED;;;;;;;;;;;;;;;;;AAiBG;IACK,aAAa,GAAA;QACjB,MAAM,SAAS,GAAqB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,IAAI,GAAY,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAE3D,QAAA,IAAI,CAAC,kCAAkC,CAAC,SAAS,CAAC,CAAC;QAEnD,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,QAAA,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC9C,QAAA,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;AACnC,QAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;AACrC,QAAA,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;AAC3C,QAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,QAAA,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACjC,QAAA,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC;AACtC,QAAA,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;AAC3C,QAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAChC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACrC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExC,QAAA,OAAO,SAAS,CAAC;KACpB;IAEO,0BAA0B,GAAA;AAC9B,QAAA,QACI,UAAU,CACN,IAAI,CAAC,GAAG;AACH,aAAA,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,aAAA,gBAAgB,CAAC,gBAAgB,CAAC,CAC1C,IAAI,CAAC,EACR;KACL;AAED;;;;;;AAMG;IACK,YAAY,GAAA;QAChB,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;KAC/C;AAED;;;;;AAKG;AACK,IAAA,kCAAkC,CAAC,SAA2B,EAAA;AAClE,QAAA,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAE9C,YAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AACrB,gBAAA,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvC,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AACJ;;MCnIY,CAAC,qBAAqB,EAAE,2BAA2B,CAAC,GAC7D,gBAAgB,CAAsB;AAClC,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,KAAK,EAAE,4CAA4C;AACnD,IAAA,aAAa,EAAE,KAAK;AACvB,CAAA,EAAE;AAEM,MAAA,qBAAqB,GAAG,IAAI,cAAc,CACnD,SAAS,GAAG,uBAAuB,GAAG,EAAE,EAC1C;AAEW,MAAA,uBAAuB,GAAG;AACnC,IAAA;AACI,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,IAAI,EAAE;YACF,UAAU;YACV,kBAAkB;YAClB,SAAS;YACT,MAAM;YACN,SAAS;YACT,UAAU;YACV,qBAAqB;AACxB,SAAA;;AAGD,QAAA,UAAU,EAAE,CACR,EAA2B,EAC3B,eAAmC,EACnC,QAAmB,EACnB,IAAY,EACZ,GAAW,EACX,KAAc,EACd,OAA4B,KAE5B,KAAK;AACD,cAAE,IAAI,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;cAC5D,IAAI,0BAA0B,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC;AAC/E,KAAA;;;AC7CL,MAKa,YAAY,CAAA;AALzB,IAAA,WAAA,GAAA;AAMqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAuBpD,KAAA;IAfU,eAAe,GAAA;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,SAAA;KACJ;IAEM,KAAK,GAAA;QACR,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClC,YAAA,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9D,SAAA;AAAM,aAAA;AACH,YAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACpB,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACzC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,SAAA;KACJ;+GAzBQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,cAAA,EAAA,WAAA,EAON,qBAAqB,CAAA,EAAA,EAAA,SAAA,EATzB,uBAAuB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAEzB,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE,uBAAuB;AACrC,iBAAA,CAAA;8BAUU,SAAS,EAAA,CAAA;sBAJf,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA;AACH,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,SAAS,EAAE,qBAAqB;AACnC,qBAAA,CAAA;;;ACtBC,MAAO,8BAA+B,SAAQ,2BAA2B,CAAA;IACpE,QAAQ,GAAA;QACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;KAC7C;AACJ;;ACND;;AAEG;;;;"}