{"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    standalone: true\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    standalone: true\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    standalone: true\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: [\n    DragDropModule,\n    MixedCdkDragDropDirective,\n    MixedCdkDropListDirective,\n    MixedCdkDragSizeHelperDirective\n  ],\n  exports: [\n    MixedCdkDragDropDirective,\n    MixedCdkDropListDirective,\n    MixedCdkDragSizeHelperDirective\n  ],\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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"}