{"version":3,"file":"ngx-sortablejs.mjs","sources":["../../../projects/ngx-sortablejs/src/lib/globals.ts","../../../projects/ngx-sortablejs/src/lib/sortablejs-binding.ts","../../../projects/ngx-sortablejs/src/lib/sortablejs-bindings.ts","../../../projects/ngx-sortablejs/src/lib/sortablejs.service.ts","../../../projects/ngx-sortablejs/src/lib/sortablejs.directive.ts","../../../projects/ngx-sortablejs/src/lib/sortablejs.module.ts","../../../projects/ngx-sortablejs/src/ngx-sortablejs.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\r\nimport {Options} from 'sortablejs';\r\n\r\nexport const GLOBALS: InjectionToken<Options> = new InjectionToken('Global config for sortablejs');\r\n","import {SortableData} from './sortablejs.directive';\r\n\r\nexport class SortablejsBinding {\r\n\r\n  constructor(private target: SortableData) {\r\n  }\r\n\r\n  insert(index: number, item: any) {\r\n    if (this.isFormArray) {\r\n      this.target.insert(index, item);\r\n    } else {\r\n      this.target.splice(index, 0, item);\r\n    }\r\n  }\r\n\r\n  get(index: number) {\r\n    return this.isFormArray ? this.target.at(index) : this.target[index];\r\n  }\r\n\r\n  remove(index: number) {\r\n    let item;\r\n\r\n    if (this.isFormArray) {\r\n      item = this.target.at(index);\r\n      this.target.removeAt(index);\r\n    } else {\r\n      item = this.target.splice(index, 1)[0];\r\n    }\r\n\r\n    return item;\r\n  }\r\n\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  private get isFormArray() {\r\n    // just checking for random FormArray methods not available on a standard array\r\n    return !!this.target.at && !!this.target.insert && !!this.target.reset;\r\n  }\r\n\r\n}\r\n","import { SortablejsBinding } from './sortablejs-binding';\r\nimport {SortableData} from './sortablejs.directive';\r\n\r\nexport class SortablejsBindings {\r\n\r\n  bindings: SortablejsBinding[];\r\n\r\n  constructor(bindingTargets: SortableData[]) {\r\n    this.bindings = bindingTargets.map(target => new SortablejsBinding(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@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  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChange,\r\n} from '@angular/core';\r\nimport Sortable, {Options} 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 = any | any[];\r\n\r\nconst getIndexesFromEvent = (event: SortableEvent) => {\r\n  if (event.hasOwnProperty('newDraggableIndex') && event.hasOwnProperty('oldDraggableIndex')) {\r\n    return {\r\n      new: event.newDraggableIndex,\r\n      old: event.oldDraggableIndex,\r\n    };\r\n  } else {\r\n    return {\r\n      new: event.newIndex,\r\n      old: event.oldIndex,\r\n    };\r\n  }\r\n};\r\n\r\n@Directive({\r\n  selector: '[sortablejs]',\r\n})\r\nexport class SortablejsDirective implements OnInit, OnChanges, OnDestroy {\r\n\r\n  @Input()\r\n  sortablejs: SortableData; // array or a FormArray\r\n\r\n  @Input()\r\n  sortablejsContainer: string;\r\n\r\n  @Input()\r\n  sortablejsOptions: Options;\r\n\r\n  @Input()\r\n  sortablejsCloneFunction: (item: any) => any;\r\n\r\n  private sortableInstance: any;\r\n\r\n  @Output() sortablejsInit = new EventEmitter();\r\n\r\n  constructor(\r\n    @Optional() @Inject(GLOBALS) private globalConfig: Options,\r\n    private service: SortablejsService,\r\n    private element: ElementRef,\r\n    private zone: NgZone,\r\n    private renderer: Renderer2,\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (Sortable && Sortable.create) { // Sortable does not exist in angular universal (SSR)\r\n      this.create();\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: { [prop in keyof SortablejsDirective]: SimpleChange }) {\r\n    const optionsChange: SimpleChange = changes.sortablejsOptions;\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] !== previousOptions[optionName]) {\r\n          // use low-level option setter\r\n          this.sortableInstance.option(optionName, this.options[optionName]);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\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      this.sortableInstance = Sortable.create(container, this.options);\r\n      this.sortablejsInit.emit(this.sortableInstance);\r\n    }, 0);\r\n  }\r\n\r\n  private getBindings(): SortablejsBindings {\r\n    if (!this.sortablejs) {\r\n      return new SortablejsBindings([]);\r\n    } else if (this.sortablejs instanceof SortablejsBindings) {\r\n      return this.sortablejs;\r\n    } else {\r\n      return new SortablejsBindings([this.sortablejs]);\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.sortablejsOptions || {})};\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 && this.optionsWithoutEvents[eventName]) {\r\n        this.optionsWithoutEvents[eventName](...params);\r\n      }\r\n    });\r\n  }\r\n\r\n  private get isCloning() {\r\n    return this.sortableInstance.options.group.checkPull(this.sortableInstance, this.sortableInstance) === 'clone';\r\n  }\r\n\r\n  private clone<T>(item: T): T {\r\n    // by default pass the item through, no cloning performed\r\n    return (this.sortablejsCloneFunction || (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 = null;\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        const indexes = getIndexesFromEvent(event);\r\n\r\n        bindings.injectIntoEvery(indexes.new, bindings.extractFromEvery(indexes.old));\r\n        this.proxyEvent('onUpdate', event);\r\n      },\r\n    };\r\n  }\r\n\r\n}\r\n\r\ninterface SortableEvent {\r\n  oldIndex: number;\r\n  newIndex: number;\r\n  oldDraggableIndex?: number;\r\n  newDraggableIndex?: number;\r\n  item: HTMLElement;\r\n  clone: HTMLElement;\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {GLOBALS} from './globals';\r\nimport {SortablejsDirective} from './sortablejs.directive';\r\nimport {Options} from 'sortablejs';\r\n\r\n@NgModule({\r\n  declarations: [SortablejsDirective],\r\n  exports: [SortablejsDirective],\r\n})\r\nexport class SortablejsModule {\r\n\r\n  public 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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"}