{"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 } 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","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    EventEmitter,\r\n    Inject,\r\n    Input,\r\n    NgZone,\r\n    OnChanges,\r\n    OnDestroy,\r\n    Optional,\r\n    Output,\r\n    Renderer2,\r\n    SimpleChange\r\n} from '@angular/core'\r\n\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({\r\n    selector: '[nxtSortablejs]',\r\n    standalone: false\r\n})\r\nexport class SortablejsDirective<T> implements OnChanges, OnDestroy, AfterViewInit {\r\n\r\n    /** Input data, can be Array or FormArray */\r\n    @Input('nxtSortablejs')\r\n    data?: SortableData<T>\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    @Input()\r\n    sortablejsContainer?: string\r\n\r\n    /** Sortablejs configuration */\r\n    @Input()\r\n    config?: Options\r\n\r\n    /** A function invoked when cloning items from template dataset into target dataset */\r\n    @Input()\r\n    cloneFunction?: CloneFunction<T>\r\n\r\n    /** Initialised a new Sortablejs instance */\r\n    @Output() readonly init = new EventEmitter<Sortable>()\r\n\r\n    private sortableInstance?: Sortable\r\n\r\n    constructor(\r\n        @Optional()\r\n        @Inject(GLOBALS)\r\n        private readonly globalConfig: Options | undefined,\r\n        private readonly service: SortablejsService,\r\n        private readonly element: ElementRef,\r\n        private readonly zone: NgZone,\r\n        private readonly renderer: Renderer2\r\n    ) { }\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 container = this.sortablejsContainer ? this.element.nativeElement.querySelector(this.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 getBindings(): SortablejsBindings<T> {\r\n        if (!this.data) {\r\n            return new SortablejsBindings([])\r\n        } else if (this.data instanceof SortablejsBindings) {\r\n            return this.data\r\n        } else {\r\n            return new SortablejsBindings([this.data])\r\n        }\r\n    }\r\n\r\n    private get options() {\r\n        return { ...this.optionsWithoutEvents, ...this.overridenOptions }\r\n    }\r\n\r\n    private get optionsWithoutEvents() {\r\n        return { ...(this.globalConfig || {}), ...(this.config || {}) }\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            if (this.optionsWithoutEvents?.[eventName as keyof typeof this.optionsWithoutEvents]) {\r\n                (this.optionsWithoutEvents[eventName as keyof typeof this.optionsWithoutEvents] 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!, null as any, null 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    private get overridenOptions(): 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        return {\r\n            onAdd: (event: SortableEvent) => {\r\n                this.service.transfer = (items: any[]) => {\r\n                    this.getBindings().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.getBindings()\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.getBindings()\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\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { Options } from 'sortablejs'\r\nimport { GLOBALS } from './globals'\r\nimport { SortablejsDirective } from './sortablejs.directive'\r\n\r\n@NgModule({\r\n    declarations: [SortablejsDirective],\r\n    exports: [SortablejsDirective]\r\n})\r\nexport class SortablejsModule {\r\n\r\n    static forRoot(globalOptions: Options): ModuleWithProviders<SortablejsModule> {\r\n        return {\r\n            ngModule: SortablejsModule,\r\n            providers: [\r\n                { provide: GLOBALS, useValue: globalOptions }\r\n            ]\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":["i1.SortablejsService"],"mappings":"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"}