{"version":3,"file":"sowatech-shared-swt-dragula.mjs","sources":["../../../projects/shared/swt-dragula/DrakeFactory.ts","../../../projects/shared/swt-dragula/EventTypes.ts","../../../projects/shared/swt-dragula/Group.ts","../../../projects/shared/swt-dragula/dragula.service.ts","../../../projects/shared/swt-dragula/dragula.directive.ts","../../../projects/shared/swt-dragula/dragula.module.ts","../../../projects/shared/swt-dragula/sowatech-shared-swt-dragula.ts"],"sourcesContent":["import * as dragulaExpt from 'dragula';\r\n\r\nimport { DragulaOptions } from './DragulaOptions';\r\nimport { DrakeWithModels } from './DrakeWithModels';\r\nexport const dragula: (containers?: any, options?: any) => any = (dragulaExpt as any).default || dragulaExpt;\r\n\r\nexport type DrakeBuilder = (containers: any[], options: DragulaOptions) => DrakeWithModels;\r\n\r\nexport class DrakeFactory {\r\n  constructor(public build: DrakeBuilder = dragula) {}\r\n}\r\n\r\n","export enum EventTypes {\r\n    Cancel = 'cancel',\r\n    Cloned = 'cloned',\r\n    Drag = 'drag',\r\n    DragEnd = 'dragend',\r\n    Drop = 'drop',\r\n    Out = 'out',\r\n    Over = 'over',\r\n    Remove = 'remove',\r\n    Shadow = 'shadow',\r\n    DropModel = 'dropModel',\r\n    RemoveModel = 'removeModel',\r\n}\r\n\r\nexport const AllEvents: EventTypes[] = Object.keys(EventTypes).map(k => EventTypes[k as any] as EventTypes);\r\n\r\n\r\n","import { DragulaOptions } from './DragulaOptions';\r\nimport { DrakeWithModels } from './DrakeWithModels';\r\n\r\nexport class Group {\r\n  public initEvents = false;\r\n  constructor(\r\n    public name: string,\r\n    public drake: DrakeWithModels,\r\n    public options: DragulaOptions\r\n  ) {}\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\nimport { DragulaOptions } from './DragulaOptions';\r\nimport { DrakeFactory } from './DrakeFactory';\r\nimport { EventTypes, AllEvents } from './EventTypes';\r\nimport { Group } from './Group';\r\n\r\nexport interface DropEvent {\r\n  name: string;\r\n  el: Element;\r\n  target: Element;\r\n  source: Element;\r\n  sibling: Element;\r\n}\r\n\r\ntype FilterProjector<T extends { name: string; }> = (name: string, args: any[]) => T;\r\ntype Dispatch = { event: EventTypes; name: string; args: any[]; };\r\n\r\nconst filterEvent = <T extends { name: string; }>(\r\n  eventType: EventTypes,\r\n  filterDragType: string | undefined,\r\n  projector: FilterProjector<T>\r\n) => (input: Observable<Dispatch>): Observable<T> => input.pipe(\r\n  filter(({ event, name }) => event === eventType\r\n    && (filterDragType === undefined || name === filterDragType)),\r\n  map(({ name, args }) => projector(name, args))\r\n);\r\n\r\nconst elContainerSourceProjector =\r\n  (name: string, [el, container, source]: [Element, Element, Element]) =>\r\n    ({ name, el, container, source });\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DragulaService {\r\n\r\n  /* https://github.com/bevacqua/dragula#drakeon-events */\r\n\r\n  private dispatch$ = new Subject<Dispatch>();\r\n\r\n  public drag = (groupName?: string) => this.dispatch$.pipe(\r\n    filterEvent(\r\n      EventTypes.Drag,\r\n      groupName,\r\n      (name, [el, source]: [Element, Element]) => ({ name, el, source })\r\n    )\r\n  );\r\n\r\n  public dragend = (groupName?: string) => this.dispatch$.pipe(\r\n    filterEvent(\r\n      EventTypes.DragEnd,\r\n      groupName,\r\n      (name, [el]: [Element]) => ({ name, el })\r\n    )\r\n  );\r\n\r\n  public drop = (groupName?: string) => this.dispatch$.pipe(\r\n    filterEvent(\r\n      EventTypes.Drop,\r\n      groupName,\r\n      (name, [\r\n        el, target, source, sibling\r\n      ]: [Element, Element, Element, Element]) => ({ name, el, target, source, sibling } as DropEvent))\r\n  );\r\n\r\n  private elContainerSource =\r\n    (eventType: EventTypes) =>\r\n      (groupName?: string) =>\r\n        this.dispatch$.pipe(\r\n          filterEvent(eventType, groupName, elContainerSourceProjector)\r\n        );\r\n\r\n  public cancel = this.elContainerSource(EventTypes.Cancel);\r\n  public remove = this.elContainerSource(EventTypes.Remove);\r\n  public shadow = this.elContainerSource(EventTypes.Shadow);\r\n  public over = this.elContainerSource(EventTypes.Over);\r\n  public out = this.elContainerSource(EventTypes.Out);\r\n\r\n  public cloned = (groupName?: string) => this.dispatch$.pipe(\r\n    filterEvent(\r\n      EventTypes.Cloned,\r\n      groupName,\r\n      (name, [\r\n        clone, original, cloneType\r\n      ]: [Element, Element, 'mirror' | 'copy']) => ({ name, clone, original, cloneType }))\r\n  );\r\n\r\n  public dropModel = <T = any>(groupName?: string) => this.dispatch$.pipe(\r\n    filterEvent(\r\n      EventTypes.DropModel,\r\n      groupName,\r\n      (name, [\r\n        el, target, source, sibling, item, sourceModel, targetModel, sourceIndex, targetIndex\r\n      ]: [Element, Element, Element, Element, T, T[], T[], number, number]) => ({ name, el, target, source, sibling, item, sourceModel, targetModel, sourceIndex, targetIndex }))\r\n  );\r\n\r\n  public removeModel = <T = any>(groupName?: string) => this.dispatch$.pipe(\r\n    filterEvent(\r\n      EventTypes.RemoveModel,\r\n      groupName,\r\n      (name, [\r\n        el, container, source, item, sourceModel, sourceIndex\r\n      ]: [Element, Element, Element, T, T[], number]) => ({ name, el, container, source, item, sourceModel, sourceIndex })\r\n    )\r\n  );\r\n\r\n  private groups: { [k: string]: Group; } = {};\r\n\r\n  constructor(@Optional() private drakeFactory: DrakeFactory = null) {\r\n    if (this.drakeFactory === null)\r\n      this.drakeFactory = new DrakeFactory();\r\n\r\n  }\r\n\r\n  /** Public mainly for testing purposes. Prefer `createGroup()`. */\r\n  public add(group: Group): Group {\r\n    const existingGroup = this.find(group.name);\r\n    if (existingGroup)\r\n      throw new Error('Group named: \"' + group.name + '\" already exists.');\r\n\r\n    this.groups[group.name] = group;\r\n    this.handleModels(group);\r\n    this.setupEvents(group);\r\n    return group;\r\n  }\r\n\r\n  public find(name: string): Group {\r\n    return this.groups[name];\r\n  }\r\n\r\n  public destroy(name: string): void {\r\n    const group = this.find(name);\r\n    if (!group)\r\n      return;\r\n\r\n    group.drake && group.drake.destroy();\r\n    delete this.groups[name];\r\n  }\r\n\r\n  /**\r\n   * Creates a group with the specified name and options.\r\n   *\r\n   * Note: formerly known as `setOptions`\r\n   */\r\n  public createGroup<T = any>(name: string, options: DragulaOptions<T>): Group {\r\n    return this.add(new Group(\r\n      name,\r\n      this.drakeFactory.build([], options),\r\n      options\r\n    ));\r\n  }\r\n\r\n  private handleModels({ name, drake, options }: Group): void {\r\n    let dragElm: any;\r\n    let dragIndex: number;\r\n    let dropIndex: number;\r\n    drake.on('remove', (el: any, container: any, source: any) => {\r\n      if (!drake.models)\r\n        return;\r\n\r\n      let sourceModel = drake.models[drake.containers.indexOf(source)];\r\n      sourceModel = sourceModel.slice(0); // clone it\r\n      const item = sourceModel.splice(dragIndex, 1)[0];\r\n      // console.log('REMOVE');\r\n      // console.log(sourceModel);\r\n      this.dispatch$.next({\r\n        event: EventTypes.RemoveModel,\r\n        name,\r\n        args: [el, container, source, item, sourceModel, dragIndex]\r\n      });\r\n    });\r\n    drake.on('drag', (el: any, source: any) => {\r\n      if (!drake.models)\r\n        return;\r\n\r\n      dragElm = el;\r\n      dragIndex = this.domIndexOf(el, source);\r\n    });\r\n    drake.on('drop', (dropElm: any, target: Element, source: Element, sibling?: Element) => {\r\n      if (!drake.models || !target)\r\n        return;\r\n\r\n      dropIndex = this.domIndexOf(dropElm, target);\r\n      let sourceModel = drake.models[drake.containers.indexOf(source)];\r\n      let targetModel = drake.models[drake.containers.indexOf(target)];\r\n      // console.log('DROP');\r\n      // console.log(sourceModel);\r\n      let item: any;\r\n      if (target === source) {\r\n        sourceModel = sourceModel.slice(0);\r\n        item = sourceModel.splice(dragIndex, 1)[0];\r\n        sourceModel.splice(dropIndex, 0, item);\r\n        // this was true before we cloned and updated sourceModel,\r\n        // but targetModel still has the old value\r\n        targetModel = sourceModel;\r\n      } else {\r\n        const isCopying = dragElm !== dropElm;\r\n        item = sourceModel[dragIndex];\r\n        if (isCopying) {\r\n          if (!options.copyItem)\r\n            throw new Error('If you have enabled `copy` on a group, you must provide a `copyItem` function.');\r\n\r\n          item = options.copyItem(item);\r\n        }\r\n\r\n        if (!isCopying) {\r\n          sourceModel = sourceModel.slice(0);\r\n          sourceModel.splice(dragIndex, 1);\r\n        }\r\n        targetModel = targetModel.slice(0);\r\n        targetModel.splice(dropIndex, 0, item);\r\n        if (isCopying) {\r\n          try {\r\n            target.removeChild(dropElm);\r\n          } catch (e) { }\r\n        }\r\n      }\r\n      this.dispatch$.next({\r\n        event: EventTypes.DropModel,\r\n        name,\r\n        args: [dropElm, target, source, sibling, item, sourceModel, targetModel, dragIndex, dropIndex]\r\n      });\r\n    });\r\n  }\r\n\r\n  private setupEvents(group: Group): void {\r\n    if (group.initEvents)\r\n      return;\r\n\r\n    group.initEvents = true;\r\n    const name = group.name;\r\n    const emitter = (event: EventTypes) => {\r\n      group.drake.on(event, (...args: any[]) => {\r\n        this.dispatch$.next({ event, name, args });\r\n      });\r\n    };\r\n    AllEvents.forEach(emitter);\r\n  }\r\n\r\n  private domIndexOf(child: any, parent: any): any {\r\n    return Array.prototype.indexOf.call(parent.children, child);\r\n  }\r\n}\r\n","import { Directive, Input, Output, ElementRef, OnChanges, OnDestroy, SimpleChange, EventEmitter } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { Group } from './Group';\r\nimport { DragulaService } from './dragula.service';\r\n\r\n@Directive({\r\n    selector: '[dragula]',\r\n    standalone: false\r\n})\r\nexport class DragulaDirective implements OnChanges, OnDestroy {\r\n  @Input() public dragula: string;\r\n  @Input() public dragulaModel: any[];\r\n  @Output() public dragulaModelChange = new EventEmitter<any[]>();\r\n\r\n  private subs: Subscription;\r\n\r\n  private get container(): HTMLElement {\r\n    return this.el && this.el.nativeElement;\r\n  }\r\n  private group: Group;\r\n\r\n  public constructor(private el: ElementRef, private dragulaService: DragulaService) {\r\n  }\r\n\r\n  public ngOnChanges(changes: {dragula?: SimpleChange; dragulaModel?: SimpleChange;}): void {\r\n    if (changes && changes.dragula) {\r\n      const { previousValue: prev, currentValue: current, firstChange } = changes.dragula;\r\n      const hadPreviousValue = !!prev;\r\n      const hasNewValue = !!current;\r\n      // something -> null       =>  teardown only\r\n      // something -> something  =>  teardown, then setup\r\n      //      null -> something  =>  setup only\r\n      //\r\n      //      null -> null (precluded by fact of change being present)\r\n      if (hadPreviousValue)\r\n        this.teardown(prev);\r\n\r\n      if (hasNewValue)\r\n        this.setup();\r\n\r\n    } else if (changes && changes.dragulaModel) {\r\n      // this code only runs when you're not changing the group name\r\n      // because if you're changing the group name, you'll be doing setup or teardown\r\n      // it also only runs if there is a group name to attach to.\r\n      const { previousValue: prev, currentValue: current, firstChange } = changes.dragulaModel;\r\n      const { drake } = this.group;\r\n      if (this.dragula && drake) {\r\n        drake.models = drake.models || [];\r\n        const prevIndex = drake.models.indexOf(prev);\r\n        if (prevIndex !== -1) {\r\n          // delete the previous\r\n          drake.models.splice(prevIndex, 1);\r\n          // maybe insert a new one at the same spot\r\n          if (current)\r\n            drake.models.splice(prevIndex, 0, current);\r\n\r\n        } else if (current) {\r\n          // no previous one to remove; just push this one.\r\n          drake.models.push(current);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  // call ngOnInit 'setup' because we want to call it in ngOnChanges\r\n  // and it would otherwise run twice\r\n  public setup(): void {\r\n    const checkModel = (group: Group) => {\r\n      if (this.dragulaModel) {\r\n        if (group.drake.models)\r\n          group.drake.models.push(this.dragulaModel);\r\n         else\r\n          group.drake.models = [this.dragulaModel];\r\n\r\n      }\r\n    };\r\n\r\n    // find or create a group\r\n    let group = this.dragulaService.find(this.dragula);\r\n    if (!group) {\r\n      const options = {};\r\n      group = this.dragulaService.createGroup(this.dragula, options);\r\n    }\r\n\r\n    // ensure model and container element are pushed\r\n    checkModel(group);\r\n    group.drake.containers.push(this.container);\r\n    this.subscribe(this.dragula);\r\n\r\n    this.group = group;\r\n  }\r\n\r\n  public subscribe(name: string) {\r\n    this.subs = new Subscription();\r\n    this.subs.add(\r\n      this.dragulaService\r\n      .dropModel(name)\r\n      .subscribe(({ source, target, sourceModel, targetModel }) => {\r\n        if (source === this.el.nativeElement)\r\n          this.dragulaModelChange.emit(sourceModel);\r\n         else if (target === this.el.nativeElement)\r\n          this.dragulaModelChange.emit(targetModel);\r\n\r\n      })\r\n    );\r\n    this.subs.add(\r\n      this.dragulaService\r\n      .removeModel(name)\r\n      .subscribe(({ source, sourceModel }) => {\r\n        if (source === this.el.nativeElement)\r\n          this.dragulaModelChange.emit(sourceModel);\r\n\r\n      })\r\n    );\r\n  }\r\n\r\n  public teardown(groupName: string): void {\r\n    if (this.subs)\r\n      this.subs.unsubscribe();\r\n\r\n    const group = this.dragulaService.find(groupName);\r\n    if (group) {\r\n      const itemToRemove = group.drake.containers.indexOf(this.el.nativeElement);\r\n      if (itemToRemove !== -1)\r\n        group.drake.containers.splice(itemToRemove, 1);\r\n\r\n      if (this.dragulaModel && group.drake && group.drake.models) {\r\n        const modelIndex = group.drake.models.indexOf(this.dragulaModel);\r\n        if (modelIndex !== -1)\r\n          group.drake.models.splice(modelIndex, 1);\r\n\r\n      }\r\n    }\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.teardown(this.dragula);\r\n  }\r\n\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\n\r\nimport { DragulaDirective } from './dragula.directive';\r\n\r\n@NgModule({\r\n    exports: [\r\n        DragulaDirective\r\n    ],\r\n    declarations: [\r\n        DragulaDirective\r\n    ],\r\n})\r\nexport class DragulaModule {\r\n    static forRoot(): ModuleWithProviders<DragulaModule> {\r\n        return {\r\n            ngModule: DragulaModule,\r\n            providers: []\r\n        };\r\n    }\r\n}\r\n\r\n//swt-dragula ist eine (minimal) angepasste Kopie von ng2-dragula 2.1.1\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DrakeFactory","i1.DragulaService"],"mappings":"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"}