{"version":3,"file":"swimlane-ngx-dnd.mjs","sources":["../../../../projects/swimlane/ngx-dnd/src/lib/services/drake-store.service.ts","../../../../projects/swimlane/ngx-dnd/src/lib/directives/ngx-droppable.directive.ts","../../../../projects/swimlane/ngx-dnd/src/lib/directives/ngx-draggable.directive.ts","../../../../projects/swimlane/ngx-dnd/src/lib/directives/ngx-drag-handle.directive.ts","../../../../projects/swimlane/ngx-dnd/src/lib/components/container/container.component.html","../../../../projects/swimlane/ngx-dnd/src/lib/components/container/container.component.ts","../../../../projects/swimlane/ngx-dnd/src/lib/components/item/item.component.html","../../../../projects/swimlane/ngx-dnd/src/lib/components/item/item.component.ts","../../../../projects/swimlane/ngx-dnd/src/lib/ngx-dnd.module.ts","../../../../projects/swimlane/ngx-dnd/src/swimlane-ngx-dnd.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport dragula from '@swimlane/dragula';\nimport { DroppableDirective } from '../directives/ngx-droppable.directive';\nimport { DraggableDirective } from '../directives/ngx-draggable.directive';\n\n/**\n * Central service that handles all events\n *\n * @export\n */\n@Injectable({ providedIn: 'root' })\nexport class DrakeStoreService {\n  private droppableMap = new WeakMap<any, DroppableDirective>();\n  private draggableMap = new WeakMap<any, DraggableDirective>();\n  private dragulaOptions: dragula.DragulaOptions;\n  private drake: dragula.Drake;\n\n  constructor() {\n    this.dragulaOptions = this.createDrakeOptions();\n    this.drake = dragula([], this.dragulaOptions);\n    this.registerEvents();\n  }\n\n  register(droppable: DroppableDirective) {\n    this.droppableMap.set(droppable.container, droppable);\n    this.drake.containers.push(droppable.container);\n  }\n\n  remove(droppable: DroppableDirective) {\n    this.droppableMap.delete(droppable.container);\n    const idx = this.drake.containers.indexOf(droppable.container);\n    if (idx > -1) {\n      this.drake.containers.splice(idx, 1);\n    }\n  }\n\n  registerDraggable(draggable: DraggableDirective) {\n    this.draggableMap.set(draggable.element, draggable);\n  }\n\n  removeDraggable(draggable: DraggableDirective) {\n    this.draggableMap.delete(draggable.element);\n  }\n\n  createDrakeOptions(): dragula.DragulaOptions {\n    const accepts = (el: any, target: any /*, source: any, sibling: any */) => {\n      if (el.contains(target)) {\n        return false;\n      }\n      const elementComponent = this.draggableMap.get(el);\n      const targetComponent = this.droppableMap.get(target);\n      if (elementComponent && targetComponent) {\n        return elementComponent.dropZones.includes(targetComponent.dropZone);\n      }\n      return true;\n    };\n\n    const copy = (_: any, source: any) => {\n      const sourceComponent = this.droppableMap.get(source);\n      if (sourceComponent) {\n        return sourceComponent.copy;\n      }\n      return false;\n    };\n\n    const moves = (el?: any, source?: any, handle?: any, sibling?: any) => {\n      const elementComponent = this.draggableMap.get(el);\n      if (elementComponent) {\n        return elementComponent.moves(source, handle, sibling);\n      }\n      return true;\n    };\n\n    const direction: any = (el: any, target: any, source: any) => {\n      const targetComponent = this.droppableMap.get(target);\n      return targetComponent.direction || 'vertical';\n    };\n\n    return { accepts, copy, moves, revertOnSpill: true, direction };\n  }\n\n  registerEvents(): void {\n    let dragElm: any;\n    let draggedItem: any;\n\n    this.drake.on('drag', (el: any, source: any) => {\n      draggedItem = undefined;\n      dragElm = el;\n\n      if (!el || !source) {\n        return;\n      }\n\n      if (this.draggableMap.has(el)) {\n        const elementComponent = this.draggableMap.get(el);\n        draggedItem = elementComponent.model;\n\n        elementComponent.drag.emit({\n          type: 'drag',\n          el,\n          source,\n          value: draggedItem\n        });\n      }\n\n      if (this.droppableMap.has(source)) {\n        const sourceComponent = this.droppableMap.get(source);\n        this.dragulaOptions.removeOnSpill = sourceComponent.removeOnSpill;\n\n        sourceComponent.drag.emit({\n          type: 'drag',\n          el,\n          source,\n          sourceComponent,\n          value: draggedItem\n        });\n      }\n    });\n\n    this.drake.on('drop', (el: any, target: any, source: any) => {\n      const targetComponent = this.droppableMap.get(target);\n\n      if (!targetComponent) {\n        // not a target, abort\n        return;\n      }\n\n      let dropElmModel = draggedItem;\n      const dropIndex = Array.prototype.indexOf.call(target.children, el);\n\n      if (dropIndex < 0) {\n        // dropIndex is bad... cancel\n        this.drake.cancel(true);\n        return;\n      }\n\n      const sourceComponent = this.droppableMap.get(source);\n\n      if (sourceComponent) {\n        const sourceModel = sourceComponent.model;\n        const targetModel = targetComponent.model;\n\n        const hasDragModel = !!(sourceModel && draggedItem);\n        const dragIndex = hasDragModel ? sourceModel.indexOf(draggedItem) : -1;\n        if (hasDragModel && dragIndex < 0) {\n          // dragIndex is bad... cancel\n          this.drake.cancel(true);\n          return;\n        }\n\n        if (targetModel) {\n          const reorder = dragIndex > -1 && sourceModel && target === source;\n          const copy = !sourceModel || dragElm !== el;\n          if (reorder) {\n            sourceModel.splice(dropIndex, 0, sourceModel.splice(dragIndex, 1)[0]);\n          } else {\n            if (el.parentNode === target) {\n              target.removeChild(el);\n            }\n\n            if (copy) {\n              dropElmModel = JSON.parse(JSON.stringify(dropElmModel));\n            } else {\n              if (el.parentNode !== source) {\n                // add element back, let angular remove it\n                this.drake.cancel(true);\n              }\n              sourceModel.splice(dragIndex, 1);\n            }\n            targetModel.splice(dropIndex, 0, dropElmModel);\n          }\n        }\n      }\n\n      targetComponent.drop.emit({\n        type: 'drop',\n        el,\n        source,\n        value: dropElmModel,\n        dropIndex\n      });\n    });\n\n    this.drake.on('remove', (el: any, container: any, source: any) => {\n      if (this.droppableMap.has(source)) {\n        const sourceComponent = this.droppableMap.get(source);\n        const sourceModel = sourceComponent.model;\n\n        const dragIndex = draggedItem && sourceModel ? sourceModel.indexOf(draggedItem) : -1;\n\n        if (dragIndex > -1) {\n          if (el.parentNode !== source) {\n            // add element back, let angular remove it\n            source.appendChild(el);\n          }\n          sourceModel.splice(dragIndex, 1);\n        }\n\n        sourceComponent.remove.emit({\n          type: 'remove',\n          el,\n          container,\n          source,\n          value: draggedItem\n        });\n      }\n    });\n\n    this.drake.on('cancel', (el: any, container: any, source: any) => {\n      if (this.droppableMap.has(container)) {\n        const containerComponent = this.droppableMap.get(container);\n        containerComponent.cancel.emit({\n          type: 'cancel',\n          el,\n          container,\n          source,\n          value: draggedItem\n        });\n      }\n    });\n\n    this.drake.on('over', (el: any, container: any, source: any) => {\n      if (this.droppableMap.has(container)) {\n        const containerComponent = this.droppableMap.get(container);\n        containerComponent.over.emit({\n          type: 'over',\n          el,\n          container,\n          source,\n          value: draggedItem\n        });\n      }\n    });\n\n    this.drake.on('out', (el: any, container: any, source: any) => {\n      if (this.droppableMap.has(container)) {\n        const containerComponent = this.droppableMap.get(container);\n        containerComponent.out.emit({\n          type: 'out',\n          el,\n          container,\n          source,\n          value: draggedItem\n        });\n      }\n    });\n  }\n}\n","import {\n  Directive,\n  Input,\n  Output,\n  OnInit,\n  OnDestroy,\n  AfterViewInit,\n  ElementRef,\n  EventEmitter,\n  Renderer2\n} from '@angular/core';\n\nimport { DrakeStoreService } from '../services/drake-store.service';\n\nlet i = 10000;\nfunction getNextId() {\n  return i++;\n}\n\n/**\n * Makes the container droppable and children draggable.\n *\n * @export\n */\n@Directive({ selector: '[ngxDroppable]' })\nexport class DroppableDirective implements OnInit, OnDestroy, AfterViewInit {\n  @Input() model: any;\n  @Input() copy = false;\n  @Input() removeOnSpill = false;\n  @Input() ngxDroppable: string;\n  @Input() direction: 'vertical' | 'horizontal' | 'mixed' = 'vertical';\n\n  @Output() drop: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() drag: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() over: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() out: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() remove: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() cancel: EventEmitter<any> = new EventEmitter<any>();\n\n  get container(): any {\n    return this.el.nativeElement;\n  }\n\n  @Input()\n  get dropZone(): string {\n    return this._dropZone || this.ngxDroppable || this.defaultZone;\n  }\n  set dropZone(val: string) {\n    this._dropZone = val;\n  }\n\n  defaultZone: string;\n  _dropZone: string;\n\n  constructor(private el: ElementRef, private renderer: Renderer2, private drakesService: DrakeStoreService) {}\n\n  ngOnInit(): void {\n    this.defaultZone = `@@DefaultDropZone-${getNextId()}@@`;\n    this.drakesService.register(this);\n  }\n\n  ngAfterViewInit(): void {\n    this.over.subscribe(() => {\n      this.renderer.addClass(this.container, 'gu-over');\n    });\n    this.out.subscribe(() => {\n      this.renderer.removeClass(this.container, 'gu-over');\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.drakesService.remove(this);\n  }\n}\n","import { Directive, ElementRef, HostListener, Input, Output, EventEmitter, OnDestroy, OnInit } from '@angular/core';\n\nimport { DroppableDirective } from './ngx-droppable.directive';\nimport { DrakeStoreService } from '../services/drake-store.service';\n\n/**\n * Adds properties and events to draggable elements\n *\n * @export\n */\n@Directive({ selector: '[ngxDraggable]' })\nexport class DraggableDirective implements OnInit, OnDestroy {\n  @Input() ngxDraggable: string[];\n  @Input() model: any;\n\n  @Input()\n  get dropZones(): any {\n    return this._dropZones || this.ngxDraggable || this._parentDropzones;\n  }\n  set dropZones(val: any) {\n    this._dropZones = val;\n  }\n\n  @Input('moves') _moves: boolean | ((...args: any[]) => any) = true;\n\n  /*\n  ContentChildren doesn't get children created with NgTemplateOutlet\n  See https://github.com/angular/angular/issues/14842\n  Implemented via updateElements method\n\n  @ContentChildren(DragHandleDirective, {descendants: true})\n  handlesList: QueryList<DragHandleDirective>; */\n\n  handles: any[] = [];\n\n  get hasHandle() {\n    return !!this.handles.length;\n  }\n\n  @Output() drag: EventEmitter<any> = new EventEmitter<any>();\n\n  dragDelay: number = 200; // milliseconds\n  dragDelayed: boolean = true;\n\n  touchTimeout: any;\n\n  get element(): any {\n    return this.el.nativeElement;\n  }\n\n  _dropZones: string[];\n  _parentDropzones: string[];\n\n  constructor(\n    private el: ElementRef,\n    private drakesService: DrakeStoreService,\n    private droppableDirective: DroppableDirective\n  ) {}\n\n  // From: https://github.com/bevacqua/dragula/issues/289#issuecomment-277143172\n  @HostListener('touchmove', ['$event'])\n  onMove(e: Event) {\n    if (!this._moves || this.dragDelayed) {\n      e.stopPropagation();\n      clearTimeout(this.touchTimeout);\n    }\n  }\n\n  @HostListener('touchstart')\n  onDown() {\n    if (this._moves) {\n      this.touchTimeout = setTimeout(() => {\n        this.dragDelayed = false;\n      }, this.dragDelay);\n    }\n  }\n\n  @HostListener('touchend')\n  onUp() {\n    if (this._moves) {\n      clearTimeout(<number>this.touchTimeout);\n      this.dragDelayed = true;\n    }\n  }\n\n  ngOnInit(): void {\n    this.update();\n  }\n\n  update(): void {\n    this._parentDropzones = [this.droppableDirective.dropZone];\n    this.drakesService.registerDraggable(this);\n    this.updateElements();\n  }\n\n  ngOnDestroy(): void {\n    this.drakesService.removeDraggable(this);\n  }\n\n  updateElements(): void {\n    const nativeElement = this.el.nativeElement;\n    const handles: NodeList = nativeElement.querySelectorAll('[ngxdraghandle]');\n    this.handles = Array.from(handles).filter((h: any) => findFirstDraggableParent(h) === nativeElement);\n\n    function findFirstDraggableParent(c: any) {\n      while (c.parentNode) {\n        c = c.parentNode;\n        if (c.hasAttribute && c.hasAttribute('ngxdraggable')) {\n          return c;\n        }\n      }\n    }\n  }\n\n  canMove(source?: any, handle?: any, sibling?: any): boolean {\n    if (typeof this._moves === 'boolean') return this._moves;\n    if (typeof this._moves === 'function') return this._moves(this.model, source, handle, sibling);\n    return true;\n  }\n\n  moves(source: any, handle: any, sibling: any): boolean {\n    if (!this.canMove(source, handle, sibling)) return false;\n\n    return this.hasHandle ? this.handles.some(h => handelFor(handle, h)) : true;\n\n    function handelFor(c: any, p: any) {\n      if (c === p) return true;\n      while ((c = c.parentNode) && c !== p); // tslint:disable-line\n      return !!c;\n    }\n  }\n\n  ngDoCheck(): void {\n    this.updateElements();\n  }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Adds properties and events to drag handle elements\n *\n * @export\n */\n@Directive({ selector: '[ngxDragHandle]' })\nexport class DragHandleDirective {}\n","<div\n  ngxDroppable\n  [dropZone]=\"dropZone\"\n  [model]=\"model\"\n  [copy]=\"copy\"\n  [ngClass]=\"{ 'gu-empty': !model?.length }\"\n  [removeOnSpill]=\"removeOnSpill\"\n  class=\"ngx-dnd-container\"\n>\n  <ng-container *ngIf=\"model\">\n    <ng-container *ngFor=\"let item of model\">\n      <ngx-dnd-item\n        ngxDraggable\n        [model]=\"item\"\n        [dropZone]=\"dropZone\"\n        [dropZones]=\"dropZones\"\n        [copy]=\"copy\"\n        [moves]=\"moves\"\n        [removeOnSpill]=\"removeOnSpill\"\n        [droppableItemClass]=\"droppableItemClass\"\n      >\n      </ngx-dnd-item>\n    </ng-container>\n  </ng-container>\n  <ng-content *ngIf=\"!model\"></ng-content>\n</div>\n","import {\n  Component,\n  OnInit,\n  AfterViewInit,\n  Input,\n  Output,\n  ViewEncapsulation,\n  ContentChild,\n  TemplateRef,\n  ViewChild,\n  EventEmitter\n} from '@angular/core';\n\nimport { DroppableDirective } from '../../directives/ngx-droppable.directive';\n\nlet i = 0;\nfunction getNextId() {\n  return i++;\n}\n\n/**\n * Component that allows nested ngxDroppable and ngxDraggables\n *\n * @export\n */\n@Component({\n  selector: 'ngx-dnd-container',\n  templateUrl: './container.component.html',\n  styleUrls: ['./container.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class ContainerComponent implements OnInit, AfterViewInit {\n  @Input() model: any;\n  @Input() copy = false;\n  @Input() removeOnSpill = false;\n  @Input() droppableItemClass: string | ((o: any) => any);\n\n  @Input() dropZone = `@@DefaultDropZone-${getNextId()}@@`;\n\n  @Input()\n  get dropZones() {\n    return this._dropZones || this._defaultZones;\n  }\n  set dropZones(val) {\n    this._dropZones = val;\n  }\n\n  @Input() moves: (model: any, source: any, handle: any, sibling: any) => boolean;\n\n  // @Input() classes: any = {};\n  // @Input() dragulaOptions: any;\n\n  @Input('template')\n  set templateInput(template: TemplateRef<any>) {\n    this.template = template;\n  }\n\n  @ContentChild(TemplateRef, { static: true })\n  set templateChild(template: TemplateRef<any>) {\n    this.template = template;\n  }\n\n  template: TemplateRef<any>;\n\n  @ViewChild(DroppableDirective, { static: true })\n  droppable: any;\n\n  @Output() drop: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() drag: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() over: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() out: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() remove: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() cancel: EventEmitter<any> = new EventEmitter<any>();\n\n  _dropZones: string[];\n  _defaultZones: string[];\n\n  ngOnInit() {\n    this._defaultZones = [this.dropZone];\n  }\n\n  ngAfterViewInit() {\n    this.droppable.drag.subscribe((v: any) => this.drag.emit(v));\n    this.droppable.drop.subscribe((v: any) => this.drop.emit(v));\n    this.droppable.over.subscribe((v: any) => this.over.emit(v));\n    this.droppable.out.subscribe((v: any) => this.out.emit(v));\n    this.droppable.remove.subscribe((v: any) => this.remove.emit(v));\n    this.droppable.cancel.subscribe((v: any) => this.cancel.emit(v));\n  }\n}\n","<ng-container [ngSwitch]=\"type\">\n  <ng-container *ngSwitchCase=\"'array'\">\n    <ngx-dnd-container\n      [model]=\"model\"\n      [template]=\"container.template\"\n      [dropZone]=\"dropZone\"\n      [dropZones]=\"dropZones\"\n      [removeOnSpill]=\"removeOnSpill\"\n      [droppableItemClass]=\"droppableItemClass\"\n      [copy]=\"copy\"\n    >\n    </ngx-dnd-container>\n  </ng-container>\n\n  <ng-container *ngSwitchCase=\"'object'\">\n    <ng-template *ngIf=\"container.template\" [ngTemplateOutlet]=\"container.template\" [ngTemplateOutletContext]=\"data\">\n    </ng-template>\n    <ng-container *ngIf=\"!container.template\">\n      <div class=\"ngx-dnd-content\">\n        {{ model.label }}\n      </div>\n      <ngx-dnd-container\n        *ngIf=\"model.children\"\n        [model]=\"model.children\"\n        [template]=\"container.template\"\n        [dropZone]=\"dropZone\"\n        [dropZones]=\"dropZones\"\n        [removeOnSpill]=\"removeOnSpill\"\n        [droppableItemClass]=\"droppableItemClass\"\n        [copy]=\"copy\"\n      >\n      </ngx-dnd-container>\n    </ng-container>\n  </ng-container>\n\n  <ng-container *ngSwitchCase=\"'undefined'\"> </ng-container>\n\n  <ng-container *ngSwitchDefault>\n    <ng-template *ngIf=\"container.template\" [ngTemplateOutlet]=\"container.template\" [ngTemplateOutletContext]=\"data\">\n    </ng-template>\n    <div *ngIf=\"!container.template\" class=\"ngx-dnd-content\">\n      {{ model }}\n    </div>\n  </ng-container>\n</ng-container>\n","import { Component, OnInit, Input, ViewEncapsulation, HostBinding } from '@angular/core';\n\nimport { ContainerComponent } from '../container/container.component';\nimport { DraggableDirective } from '../../directives/ngx-draggable.directive';\n\n/**\n * Component that allows nested ngxDroppable and ngxDraggables\n * Should only be use inside a ngx-dnd-container\n * Outside a ngx-dnd-container use ngxDroppable\n *\n * @export\n */\n@Component({\n  selector: 'ngx-dnd-item',\n  templateUrl: './item.component.html',\n  styleUrls: ['./item.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class ItemComponent implements OnInit {\n  @Input() model: any;\n\n  @Input()\n  get dropZone() {\n    return this._dropZone || this.container.dropZone;\n  }\n  set dropZone(val) {\n    this._dropZone = val;\n  }\n\n  @Input()\n  get dropZones() {\n    return this._dropZones || this.container.dropZones;\n  }\n  set dropZones(val) {\n    this._dropZones = val;\n  }\n\n  @Input()\n  get droppableItemClass() {\n    return this._droppableItemClass || this.container.droppableItemClass;\n  }\n  set droppableItemClass(val) {\n    this._droppableItemClass = val;\n  }\n\n  @Input()\n  get removeOnSpill() {\n    return typeof this._removeOnSpill === 'boolean' ? this._removeOnSpill : this.container.removeOnSpill;\n  }\n  set removeOnSpill(val) {\n    this._removeOnSpill = val;\n  }\n\n  @Input()\n  get copy() {\n    return typeof this._copy === 'boolean' ? this._copy : this.container.copy;\n  }\n  set copy(val) {\n    this._copy = val;\n  }\n\n  _copy = false;\n  _dropZone: any;\n  _dropZones: any;\n  _droppableItemClass: any;\n  _removeOnSpill = false;\n  data: any;\n\n  get hasHandle(): boolean {\n    return this.draggableDirective.hasHandle;\n  }\n\n  get moveDisabled(): boolean {\n    return !this.draggableDirective.canMove();\n  }\n\n  @HostBinding('class')\n  get classString() {\n    const itemClass =\n      typeof this.droppableItemClass === 'function' ? this.droppableItemClass(this.model) : this.droppableItemClass;\n\n    const classes = ['ngx-dnd-item', itemClass || ''];\n    if (this.moveDisabled) {\n      classes.push('move-disabled');\n    }\n    if (this.hasHandle) {\n      classes.push('has-handle');\n    }\n    return classes.join(' ');\n  }\n\n  get type() {\n    if (Array.isArray(this.model)) {\n      return 'array';\n    }\n    return typeof this.model;\n  }\n\n  constructor(public container: ContainerComponent, public draggableDirective: DraggableDirective) {}\n\n  ngOnInit() {\n    this.data = {\n      model: this.model,\n      type: this.type,\n      dropZone: this.dropZone,\n      template: this.container.template\n    };\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { DraggableDirective } from './directives/ngx-draggable.directive';\nimport { DroppableDirective } from './directives/ngx-droppable.directive';\nimport { DragHandleDirective } from './directives/ngx-drag-handle.directive';\nimport { ContainerComponent } from './components/container/container.component';\nimport { ItemComponent } from './components/item/item.component';\nimport { DrakeStoreService } from './services/drake-store.service';\n\nconst components = [ContainerComponent, ItemComponent];\nconst directives = [DraggableDirective, DroppableDirective, DragHandleDirective];\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [...components, ...directives],\n  exports: [...components, ...directives]\n})\nexport class NgxDnDModule {\n  static forRoot(): ModuleWithProviders<NgxDnDModule> {\n    return {\n      ngModule: NgxDnDModule,\n      providers: [DrakeStoreService]\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i","getNextId","i1.DrakeStoreService","i2.DroppableDirective","i1.ContainerComponent","i2.DraggableDirective","i1"],"mappings":"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"}