{"version":3,"file":"angular-mixed-cdk-drag-drop.mjs","sources":["../../../projects/angular-mixed-cdk-drag-drop/src/lib/mixed-drag-drop.ts","../../../projects/angular-mixed-cdk-drag-drop/src/lib/mixed-cdk-drag-drop.directive.ts","../../../projects/angular-mixed-cdk-drag-drop/src/lib/mixed-cdk-drag-drop.module.ts","../../../projects/angular-mixed-cdk-drag-drop/src/public-api.ts","../../../projects/angular-mixed-cdk-drag-drop/src/angular-mixed-cdk-drag-drop.ts"],"sourcesContent":["export class MixedDragDropConfig {\n  autoScrollStep = 6;\n}\n","import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  Self,\n  SimpleChanges,\n  SkipSelf,\n} from '@angular/core';\nimport {\n  CdkDropList,\n  CdkDragEnter,\n  moveItemInArray,\n  CdkDragSortEvent,\n  DropListOrientation,\n  CdkDropListGroup,\n  CdkDrag,\n} from '@angular/cdk/drag-drop';\n\nimport { MixedDragDropConfig } from './mixed-drag-drop';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport interface MixedCdkDragContainerSize { drag: CdkDrag; containerSize: DOMRectReadOnly };\n\n@Directive({\n  selector: '[cdkDropListGroup][mixedCdkDragDrop]',\n})\nexport class MixedCdkDragDropDirective<T = any> implements OnChanges, AfterViewInit, OnDestroy {\n  /** @param {EventEmitter} dropped: emit previousIndex and currentIndex when dropList dropped. Valid when itemList is not being provided. **/\n  @Output() readonly dropped = new EventEmitter<{ previousIndex: number; currentIndex: number }>();\n\n  @Input() itemList: T[] | undefined;\n  @Input() orientation: DropListOrientation = 'horizontal';\n  @Input() containerSelector = '';\n\n  private readonly _resizeDragItem = new Set<MixedCdkDragSizeHelperDirective>();\n\n  private targetIndex = -1;\n  private sourceIndex = -1;\n  private source: CdkDropList | undefined;\n  private observer: ResizeObserver | undefined;\n  private currentContentRect: DOMRectReadOnly | undefined;\n  private animationFrame: number | undefined;\n\n  constructor(public element: ElementRef<HTMLElement>, @Self() private cdkDropListGroup: CdkDropListGroup<CdkDropList<T>>) {\n    this.observer = new ResizeObserver((entries: Array<ResizeObserverEntry>) => {\n      this.animationFrame = window.requestAnimationFrame(() => {\n        if (entries.length) {\n          const element = this.containerSelector\n            ? entries[0]\n            : entries.find((e: ResizeObserverEntry) => e.target === this.element.nativeElement);\n          if (element) {\n            this.currentContentRect = element.contentRect;\n            for (let item of this._resizeDragItem) {\n              item.onSizeChangeEmit(element.contentRect);\n            }\n          }\n        }\n      });\n    });\n  }\n\n  ngAfterViewInit() {\n    this.observeAll();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['orientation']) {\n      this.cdkDropListGroup._items.forEach((i: CdkDropList<T>) => {\n        i.orientation = this.orientation;\n        i.element.nativeElement.style.flexDirection = this.orientation === 'horizontal' ? 'row' : 'column';\n      });\n    }\n    if (changes['containerSelector']) {\n      this.observer?.disconnect();\n      this.observeAll();\n    }\n  }\n\n  addResizeDragItem(item: MixedCdkDragSizeHelperDirective) {\n    this._resizeDragItem.add(item);\n    if (this.currentContentRect) {\n      item.onSizeChangeEmit(this.currentContentRect);\n    }\n  }\n\n  deleteResizeDragItem(item: MixedCdkDragSizeHelperDirective) {\n    this._resizeDragItem.delete(item);\n  }\n\n  onDropListDropped() {\n    if (this.sourceIndex < 0 || this.targetIndex < 0) {\n      return;\n    }\n    // if sourceIndex is before targetIndex then the real target should minus one, to remove the source placeholder which being counted.\n    const target = this.targetIndex + (this.sourceIndex < this.targetIndex ? -1 : 0);\n    if (this.sourceIndex !== this.targetIndex && target >= 0) {\n      if (this.itemList) {\n        moveItemInArray(this.itemList, this.sourceIndex, target);\n      } else {\n        this.dropped.emit({\n          previousIndex: this.sourceIndex,\n          currentIndex: target,\n        });\n      }\n      this.sourceIndex = -1;\n      this.targetIndex = -1;\n    }\n    // reset\n    this.source = undefined;\n  }\n\n  onDropListEntered({ item, container, currentIndex }: CdkDragEnter | CdkDragSortEvent) {\n    // dropList which the cdkDrag currently entered.\n    const dropElement = container.element.nativeElement;\n    // get all the dropList nodes in dropListGroup\n    const dropListNodes = Array.from(dropElement.parentElement?.children ?? []);\n    // dropList which the cdkDrag originally belonged.\n    const sourceElement = item.dropContainer.element.nativeElement;\n\n    // might enter multiple dropList after drag start, should only keep the index from the first time\n    if (!this.source || this.sourceIndex === -1) {\n      this.sourceIndex = dropListNodes.indexOf(sourceElement);\n      this.source = item.dropContainer;\n    }\n    // target index should consider the currentIndex, which indicate drop before/after dropIndex (index of dropList which currently entered).\n    this.targetIndex = dropListNodes.indexOf(dropElement) + currentIndex;\n  }\n\n  private observeAll() {\n    if (this.containerSelector) {\n      const el = document.querySelector(this.containerSelector);\n      if (el) {\n        this.observer?.observe(el);\n      }\n    } else {\n      this.observer?.observe(this.element.nativeElement);\n    }\n  }\n\n  ngOnDestroy() {\n    this.observer?.disconnect();\n    this.observer = undefined;\n    this.currentContentRect = undefined;\n    this._resizeDragItem.clear();\n    if (this.animationFrame) {\n      window.cancelAnimationFrame(this.animationFrame);\n    }\n  }\n}\n\n@Directive({\n  selector: '[cdkDropList][mixedCdkDropList]',\n})\nexport class MixedCdkDropListDirective implements OnInit, OnDestroy {\n  private lifecycleEmitter = new Subject<void>();\n\n  constructor(\n    @Self() private cdkDropList: CdkDropList,\n    @SkipSelf() private mixedDragDrop: MixedCdkDragDropDirective,\n    private config: MixedDragDropConfig\n  ) {\n  }\n\n  ngOnInit() {\n    this.cdkDropList.autoScrollStep = this.config.autoScrollStep;\n    this.cdkDropList.orientation = this.mixedDragDrop.orientation;\n    this.cdkDropList.element.nativeElement.style.flexDirection =\n      this.mixedDragDrop.orientation === 'horizontal' ? 'row' : 'column';\n    this.cdkDropList.element.nativeElement.style.display = 'flex';\n    this.cdkDropList.element.nativeElement.style.flexWrap = 'nowrap';\n    this.cdkDropList.element.nativeElement.style.width = 'fit-content';\n    this.cdkDropList.element.nativeElement.style.height = 'fit-content';\n    this.cdkDropList.sorted\n      .pipe(takeUntil(this.lifecycleEmitter))\n      .subscribe(event => this.mixedDragDrop.onDropListEntered(event));\n    this.cdkDropList.entered\n      .pipe(takeUntil(this.lifecycleEmitter))\n      .subscribe(event => this.mixedDragDrop.onDropListEntered(event));\n    this.cdkDropList.dropped\n      .pipe(takeUntil(this.lifecycleEmitter))\n      .subscribe(() => this.mixedDragDrop.onDropListDropped());\n  }\n\n  ngOnDestroy() {\n    this.lifecycleEmitter.next();\n    this.lifecycleEmitter.unsubscribe();\n  }\n}\n\n@Directive({\n  selector: '[cdkDrag][mixedCdkDragSizeHelper]',\n})\nexport class MixedCdkDragSizeHelperDirective implements AfterViewInit, OnDestroy {\n  @Output() contentBoxSize = new EventEmitter<MixedCdkDragContainerSize>();\n\n  constructor(@Self() private cdkDrag: CdkDrag, @SkipSelf() private mixedContainer: MixedCdkDragDropDirective) {\n  }\n\n  ngAfterViewInit() {\n    this.mixedContainer.addResizeDragItem(this);\n  }\n\n  ngOnDestroy() {\n    this.mixedContainer.deleteResizeDragItem(this);\n  }\n\n  onSizeChangeEmit(rect: DOMRectReadOnly) {\n    this.contentBoxSize?.emit({ drag: this.cdkDrag, containerSize: rect } as MixedCdkDragContainerSize);\n  }\n\n  /** @param event :{MixedCdkDragContainerSize} contentSize observer event.\n   *  @param percentWidth :{number} set width to the percentage based on the dropListGroup Container width, valid from 0 to 100.\n   *  @param percentHeight :{number} set width to the percentage based on the dropListGroup Container width, valid from 0 to 100. **/\n  static defaultEmitter(\n    event: MixedCdkDragContainerSize,\n    percentWidth: number,\n    percentHeight: number\n  ) {\n    if (percentWidth) {\n      event.drag.element.nativeElement.style.width = `${(percentWidth * event.containerSize.width) / 100}px`;\n    } else {\n      event.drag.element.nativeElement.style.width = '';\n    }\n    if (percentHeight) {\n      event.drag.element.nativeElement.style.height = `${(percentHeight * event.containerSize.height) / 100}px`;\n    } else {\n      event.drag.element.nativeElement.style.height = '';\n    }\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport {\n  MixedCdkDragSizeHelperDirective,\n  MixedCdkDragDropDirective,\n  MixedCdkDropListDirective,\n} from './mixed-cdk-drag-drop.directive';\nimport { MixedDragDropConfig } from './mixed-drag-drop';\n\n@NgModule({\n  imports: [DragDropModule],\n  declarations: [MixedCdkDragDropDirective, MixedCdkDropListDirective, MixedCdkDragSizeHelperDirective],\n  exports: [MixedCdkDragDropDirective, MixedCdkDropListDirective, MixedCdkDragSizeHelperDirective],\n  providers: [\n    {\n      provide: MixedDragDropConfig,\n      useValue: MixedDragDropConfig,\n    },\n  ],\n})\nexport class MixedCdkDragDropModule {\n  static forRoot(config: MixedDragDropConfig): ModuleWithProviders<MixedCdkDragDropModule> {\n    return {\n      ngModule: MixedCdkDragDropModule,\n      providers: [\n        {\n          provide: MixedDragDropConfig,\n          useValue: config,\n        },\n      ],\n    };\n  }\n}\n","/*\n * Public API Surface of angular-mixed-cdk-drag-drop\n */\n\nexport * from './lib/mixed-cdk-drag-drop.directive';\nexport * from './lib/mixed-cdk-drag-drop.module';\nexport * from './lib/mixed-drag-drop';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.MixedDragDropConfig"],"mappings":"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"}