{"version":3,"file":"nxt-sortablejs.mjs","sources":["../../../packages/sortablejs/src/lib/globals.ts","../../../packages/sortablejs/src/lib/sortablejs-binding.ts","../../../packages/sortablejs/src/lib/sortablejs-bindings.ts","../../../packages/sortablejs/src/lib/sortablejs.service.ts","../../../packages/sortablejs/src/lib/sortablejs.directive.ts","../../../packages/sortablejs/src/lib/sortablejs.module.ts","../../../packages/sortablejs/src/nxt-sortablejs.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core'\r\nimport { Options } from 'sortablejs'\r\n\r\n/** @internal */\r\nexport const GLOBALS: InjectionToken<Options> = new InjectionToken('Global config for sortablejs')\r\n\r\nexport function provideGlobalSortableOptions(globalOptions: Options): Provider[] {\r\n    return [\r\n        {\r\n            provide: GLOBALS,\r\n            useValue: globalOptions\r\n        }\r\n    ]\r\n}\r\n","import { type FormArray } from '@angular/forms'\r\nimport { SortableData } from './sortablejs.directive'\r\n\r\n/** @internal */\r\nfunction isFormArray<T>(target: SortableData<T>): target is (SortableData<T> & FormArray<any>) {\r\n    // we need this to identify that the target is a FormArray\r\n    // we don't want to have a dependency on @angular/forms just for that\r\n    // just checking for random FormArray methods not available on a standard array\r\n    return !!target.at && !!(target as FormArray).insert && !!(target as FormArray).reset\r\n}\r\n\r\n/** @internal */\r\nexport class SortablejsBinding<T> {\r\n\r\n    constructor(\r\n        private readonly target: SortableData<T>\r\n    ) { }\r\n\r\n    insert(index: number, item: any) {\r\n        if (isFormArray(this.target)) {\r\n            this.target.insert(index, item)\r\n        } else {\r\n            (this.target as T[]).splice(index, 0, item)\r\n        }\r\n    }\r\n\r\n    get(index: number) {\r\n        return isFormArray(this.target) ? this.target.at(index) as T : (this.target as T[])[index]\r\n    }\r\n\r\n    remove(index: number) {\r\n        let item\r\n\r\n        if (isFormArray(this.target)) {\r\n            item = this.target.at(index)\r\n            this.target.removeAt(index)\r\n        } else {\r\n            item = (this.target as T[]).splice(index, 1)[0]\r\n        }\r\n\r\n        return item\r\n    }\r\n\r\n}\r\n","import { SortablejsBinding } from './sortablejs-binding'\r\nimport { SortableData } from './sortablejs.directive'\r\n\r\n/** @internal */\r\nexport class SortablejsBindings<T> {\r\n\r\n    bindings: Array<SortablejsBinding<T>>\r\n\r\n    constructor(bindingTargets: Array<SortableData<T>>) {\r\n        this.bindings = bindingTargets.map(target => new SortablejsBinding<T>(target))\r\n    }\r\n\r\n    injectIntoEvery(index: number, items: any[]) {\r\n        this.bindings.forEach((b, i) => b.insert(index, items[i]))\r\n    }\r\n\r\n    getFromEvery(index: number) {\r\n        return this.bindings.map(b => b.get(index))\r\n    }\r\n\r\n    extractFromEvery(index: number) {\r\n        return this.bindings.map(b => b.remove(index))\r\n    }\r\n\r\n    get provided() {\r\n        return !!this.bindings.length\r\n    }\r\n\r\n}\r\n","import { Injectable } from '@angular/core'\r\n\r\n/** @internal */\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class SortablejsService {\r\n\r\n    // original library calls the events in unnatural order\r\n    // first the item is added, then removed from the previous array\r\n    // this is a temporary event to work this around\r\n    // as long as only one sortable takes place at a certain time\r\n    // this is enough to have a single `global` event\r\n    transfer?: (items: any[]) => void\r\n\r\n}\r\n","import {\r\n    AfterViewInit,\r\n    Directive,\r\n    ElementRef,\r\n    NgZone,\r\n    OnChanges,\r\n    OnDestroy,\r\n    Renderer2,\r\n    SimpleChange,\r\n    computed,\r\n    inject,\r\n    input,\r\n    output\r\n} from '@angular/core'\r\nimport { type AbstractControl, type FormArray } from '@angular/forms'\r\nimport Sortable, { Options, SortableEvent } from 'sortablejs'\r\nimport { GLOBALS } from './globals'\r\nimport { SortablejsBindings } from './sortablejs-bindings'\r\nimport { SortablejsService } from './sortablejs.service'\r\n\r\nexport type SortableData<T> = [T] extends [AbstractControl] ? (FormArray<T> | T[]) : T[]\r\nexport type CloneFunction<T> = (item: T) => T\r\n\r\n@Directive({ selector: '[nxtSortablejs]' })\r\nexport class SortablejsDirective<T> implements OnChanges, OnDestroy, AfterViewInit {\r\n\r\n    private readonly globalConfig = inject(GLOBALS, { optional: true })\r\n    private readonly service = inject(SortablejsService)\r\n    private readonly element = inject(ElementRef)\r\n    private readonly zone = inject(NgZone)\r\n    private readonly renderer = inject(Renderer2)\r\n\r\n    /** Input data, can be Array or FormArray */\r\n    readonly data = input<SortableData<T>>(undefined, { alias: 'nxtSortablejs' })\r\n\r\n    /**\r\n     * CSS selector for the sortable container\r\n     *\r\n     * Mostly required when used with custom components which wrap items in multiple containers. In that case,\r\n     * this should be the selector for the direct HTML parent of sortable items.\r\n     */\r\n    readonly sortablejsContainer = input<string>()\r\n\r\n    /** Sortablejs configuration */\r\n    readonly config = input<Options>()\r\n\r\n    /** A function invoked when cloning items from template dataset into target dataset */\r\n    readonly cloneFunction = input<CloneFunction<T>>()\r\n\r\n    /** Initialised a new Sortablejs instance */\r\n    readonly init = output<Sortable>()\r\n\r\n    private sortableInstance?: Sortable\r\n\r\n    private readonly bindings = computed(() => {\r\n        const data = this.data()\r\n        if (!data) {\r\n            return new SortablejsBindings([])\r\n        } else if (data instanceof SortablejsBindings) {\r\n            return data\r\n        } else {\r\n            return new SortablejsBindings([data])\r\n        }\r\n    })\r\n\r\n    private readonly optionsWithoutEvents = computed(() => ({ ...(this.globalConfig || {}), ...(this.config() || {}) }))\r\n    private readonly overridenOptions = computed<Options>(() => ({\r\n        // always intercept standard events but act only in case items are set (bindingEnabled)\r\n        // allows to forget about tracking this.items changes\r\n        onAdd: (event: SortableEvent) => {\r\n            this.service.transfer = (items: any[]) => {\r\n                this.bindings().injectIntoEvery(event.newIndex!, items)\r\n                this.proxyEvent('onAdd', event)\r\n            }\r\n\r\n            this.proxyEvent('onAddOriginal', event)\r\n        },\r\n        onRemove: (event: SortableEvent) => {\r\n            const bindings = this.bindings()\r\n\r\n            if (bindings.provided) {\r\n                if (this.isCloning) {\r\n                    this.service.transfer?.(bindings.getFromEvery(event.oldIndex!).map(item => this.clone(item)))\r\n\r\n                    // great thanks to https://github.com/tauu\r\n                    // event.item is the original item from the source list which is moved to the target list\r\n                    // event.clone is a clone of the original item and will be added to source list\r\n                    // If bindings are provided, adding the item dom element to the target list causes artifacts\r\n                    // as it interferes with the rendering performed by the angular template.\r\n                    // Therefore we remove it immediately and also move the original item back to the source list.\r\n                    // (event handler may be attached to the original item and not its clone, therefore keeping\r\n                    // the original dom node, circumvents side effects )\r\n                    this.renderer.removeChild(event.item.parentNode, event.item)\r\n                    this.renderer.insertBefore(event.clone.parentNode, event.item, event.clone)\r\n                    this.renderer.removeChild(event.clone.parentNode, event.clone)\r\n                } else {\r\n                    this.service.transfer?.(bindings.extractFromEvery(event.oldIndex!))\r\n                }\r\n\r\n                this.service.transfer = undefined\r\n            }\r\n\r\n            this.proxyEvent('onRemove', event)\r\n        },\r\n        onUpdate: (event: SortableEvent) => {\r\n            const bindings = this.bindings()\r\n\r\n            bindings.injectIntoEvery(event.newIndex!, bindings.extractFromEvery(event.oldIndex!))\r\n            this.proxyEvent('onUpdate', event)\r\n        }\r\n    }))\r\n\r\n    private readonly options = computed(() => ({ ...this.optionsWithoutEvents(), ...this.overridenOptions() }))\r\n\r\n    /** @internal */\r\n    ngAfterViewInit() {\r\n        if (Sortable?.create!) { // Sortable does not exist in angular universal (SSR)\r\n            this.create()\r\n        }\r\n    }\r\n\r\n    /** @internal */\r\n    ngOnChanges(changes: { [prop in keyof SortablejsDirective<T>]: SimpleChange }) {\r\n        const optionsChange = changes.config\r\n\r\n        if (optionsChange && !optionsChange.isFirstChange()) {\r\n            const previousOptions: Options = optionsChange.previousValue\r\n            const currentOptions: Options = optionsChange.currentValue\r\n\r\n            Object.keys(currentOptions).forEach(optionName => {\r\n                if (currentOptions[optionName as keyof Options] !== previousOptions[optionName as keyof Options]) {\r\n                    // use low-level option setter\r\n                    this.sortableInstance?.option(optionName as keyof Options, this.options()[optionName as keyof Options])\r\n                }\r\n            })\r\n        }\r\n    }\r\n\r\n    /** @internal */\r\n    ngOnDestroy() {\r\n        if (this.sortableInstance) {\r\n            this.sortableInstance.destroy()\r\n        }\r\n    }\r\n\r\n    private create() {\r\n        const sortablejsContainer = this.sortablejsContainer()\r\n        const container = sortablejsContainer ? this.element.nativeElement.querySelector(sortablejsContainer) : this.element.nativeElement\r\n\r\n        setTimeout(() => {\r\n            if (typeof window != 'undefined') {\r\n                this.sortableInstance = Sortable.create(container, this.options())\r\n                this.init.emit(this.sortableInstance)\r\n            }\r\n        }, 0)\r\n    }\r\n\r\n    private proxyEvent(eventName: string, ...params: any[]) {\r\n        this.zone.run(() => { // re-entering zone, see https://github.com/SortableJS/angular-sortablejs/issues/110#issuecomment-408874600\r\n            const opts = this.optionsWithoutEvents()\r\n            if (opts?.[eventName as keyof typeof opts]) {\r\n                (opts[eventName as keyof typeof opts] as (...params: any[]) => void)(...params)\r\n            }\r\n        })\r\n    }\r\n\r\n    private get isCloning() {\r\n        const groupOptions = this.sortableInstance?.options.group\r\n        return groupOptions && (typeof groupOptions != 'string')\r\n            ? groupOptions.checkPull?.(this.sortableInstance!, this.sortableInstance!, undefined as any, undefined as any) === 'clone'\r\n            : groupOptions === 'clone'\r\n    }\r\n\r\n    private clone(item: T): T {\r\n        // by default pass the item through, no cloning performed\r\n        return (this.cloneFunction() || (subitem => subitem))(item)\r\n    }\r\n\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { Options } from 'sortablejs'\r\nimport { provideGlobalSortableOptions } from './globals'\r\nimport { SortablejsDirective } from './sortablejs.directive'\r\n\r\n/** @deprecated use standalone imports */\r\n@NgModule({\r\n    imports: [\r\n        SortablejsDirective\r\n    ],\r\n    exports: [\r\n        SortablejsDirective\r\n    ]\r\n})\r\nexport class SortablejsModule {\r\n    /** @deprecated use provideGlobalSortableOptions */\r\n    // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n    static forRoot(globalOptions: Options): ModuleWithProviders<SortablejsModule> {\r\n        return {\r\n            // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n            ngModule: SortablejsModule,\r\n            providers: provideGlobalSortableOptions(globalOptions)\r\n        }\r\n    }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAGA;AACO,MAAM,OAAO,GAA4B,IAAI,cAAc,CAAC,8BAA8B,CAAC;AAE5F,SAAU,4BAA4B,CAAC,aAAsB,EAAA;IAC/D,OAAO;AACH,QAAA;AACI,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,QAAQ,EAAE;AACb;KACJ;AACL;;ACVA;AACA,SAAS,WAAW,CAAI,MAAuB,EAAA;;;;AAI3C,IAAA,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAE,MAAoB,CAAC,MAAM,IAAI,CAAC,CAAE,MAAoB,CAAC,KAAK;AACzF;AAEA;MACa,iBAAiB,CAAA;AAE1B,IAAA,WAAA,CACqB,MAAuB,EAAA;QAAvB,IAAA,CAAA,MAAM,GAAN,MAAM;IACvB;IAEJ,MAAM,CAAC,KAAa,EAAE,IAAS,EAAA;AAC3B,QAAA,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;QACnC;aAAO;YACF,IAAI,CAAC,MAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;QAC/C;IACJ;AAEA,IAAA,GAAG,CAAC,KAAa,EAAA;QACb,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAM,GAAI,IAAI,CAAC,MAAc,CAAC,KAAK,CAAC;IAC9F;AAEA,IAAA,MAAM,CAAC,KAAa,EAAA;AAChB,QAAA,IAAI,IAAI;AAER,QAAA,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC/B;aAAO;AACH,YAAA,IAAI,GAAI,IAAI,CAAC,MAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD;AAEA,QAAA,OAAO,IAAI;IACf;AAEH;;ACxCD;MACa,kBAAkB,CAAA;AAI3B,IAAA,WAAA,CAAY,cAAsC,EAAA;AAC9C,QAAA,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,iBAAiB,CAAI,MAAM,CAAC,CAAC;IAClF;IAEA,eAAe,CAAC,KAAa,EAAE,KAAY,EAAA;QACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClD;AAEA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;IACjC;AAEH;;AC1BD;MAIa,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCmBY,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;QAGqB,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAClD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACnC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;;QAGpC,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,SAAS,iDAAI,KAAK,EAAE,eAAe,EAAA,CAAG;AAE7E;;;;;AAKG;QACM,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;QAGrC,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;;QAGzB,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAoB;;QAGzC,IAAA,CAAA,IAAI,GAAG,MAAM,EAAY;AAIjB,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACxB,IAAI,CAAC,IAAI,EAAE;AACP,gBAAA,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC;YACrC;AAAO,iBAAA,IAAI,IAAI,YAAY,kBAAkB,EAAE;AAC3C,gBAAA,OAAO,IAAI;YACf;iBAAO;AACH,gBAAA,OAAO,IAAI,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC;AACJ,QAAA,CAAC,oDAAC;AAEe,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,gEAAC;AACnG,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAU,OAAO;;;AAGzD,YAAA,KAAK,EAAE,CAAC,KAAoB,KAAI;gBAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAY,KAAI;AACrC,oBAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,QAAS,EAAE,KAAK,CAAC;AACvD,oBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;AACnC,gBAAA,CAAC;AAED,gBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC;YAC3C,CAAC;AACD,YAAA,QAAQ,EAAE,CAAC,KAAoB,KAAI;AAC/B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAEhC,gBAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACnB,oBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,wBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,QAAS,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;;;;;AAU7F,wBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC;AAC5D,wBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;AAC3E,wBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;oBAClE;yBAAO;AACH,wBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAS,CAAC,CAAC;oBACvE;AAEA,oBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,SAAS;gBACrC;AAEA,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC;YACtC,CAAC;AACD,YAAA,QAAQ,EAAE,CAAC,KAAoB,KAAI;AAC/B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAEhC,gBAAA,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,QAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAS,CAAC,CAAC;AACrF,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC;YACtC;AACH,SAAA,CAAC,4DAAC;QAEc,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAkE9G,IAAA;;IA/DG,eAAe,GAAA;AACX,QAAA,IAAI,QAAQ,EAAE,MAAO,EAAE;YACnB,IAAI,CAAC,MAAM,EAAE;QACjB;IACJ;;AAGA,IAAA,WAAW,CAAC,OAAiE,EAAA;AACzE,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM;QAEpC,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE;AACjD,YAAA,MAAM,eAAe,GAAY,aAAa,CAAC,aAAa;AAC5D,YAAA,MAAM,cAAc,GAAY,aAAa,CAAC,YAAY;YAE1D,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,UAAU,IAAG;gBAC7C,IAAI,cAAc,CAAC,UAA2B,CAAC,KAAK,eAAe,CAAC,UAA2B,CAAC,EAAE;;AAE9F,oBAAA,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAA2B,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,UAA2B,CAAC,CAAC;gBAC3G;AACJ,YAAA,CAAC,CAAC;QACN;IACJ;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;QACnC;IACJ;IAEQ,MAAM,GAAA;AACV,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACtD,MAAM,SAAS,GAAG,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;QAElI,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,OAAO,MAAM,IAAI,WAAW,EAAE;AAC9B,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACzC;QACJ,CAAC,EAAE,CAAC,CAAC;IACT;AAEQ,IAAA,UAAU,CAAC,SAAiB,EAAE,GAAG,MAAa,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACf,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACxC,YAAA,IAAI,IAAI,GAAG,SAA8B,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,SAA8B,CAAgC,CAAC,GAAG,MAAM,CAAC;YACnF;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAY,SAAS,GAAA;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,KAAK;AACzD,QAAA,OAAO,YAAY,KAAK,OAAO,YAAY,IAAI,QAAQ;AACnD,cAAE,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAiB,EAAE,IAAI,CAAC,gBAAiB,EAAE,SAAgB,EAAE,SAAgB,CAAC,KAAK;AACnH,cAAE,YAAY,KAAK,OAAO;IAClC;AAEQ,IAAA,KAAK,CAAC,IAAO,EAAA;;AAEjB,QAAA,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC;IAC/D;8GAxJS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE;;;AClB1C;MASa,gBAAgB,CAAA;;;IAGzB,OAAO,OAAO,CAAC,aAAsB,EAAA;QACjC,OAAO;;AAEH,YAAA,QAAQ,EAAE,gBAAgB;AAC1B,YAAA,SAAS,EAAE,4BAA4B,CAAC,aAAa;SACxD;IACL;8GATS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,OAAA,EAAA,CANrB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAGnB,mBAAmB,CAAA,EAAA,CAAA,CAAA;+GAGd,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH;AACJ,iBAAA;;;ACbD;;AAEG;;;;"}