{"version":3,"file":"hungthuanmk-ng2-dnd.mjs","sources":["../../src/dnd.utils.ts","../../src/dnd.config.ts","../../src/dnd.service.ts","../../src/abstract.component.ts","../../src/draggable.component.ts","../../src/droppable.component.ts","../../src/sortable.component.ts","../../src/dnd.module.ts","../../public_api.ts","../../hungthuanmk-ng2-dnd.ts"],"sourcesContent":["// Copyright (C) 2016-2020 Sergey Akopkokhyants\r\n// This project is licensed under the terms of the MIT license.\r\n// https://github.com/akserg/ng2-dnd\r\n\r\n/**\r\n * Check and return true if an object is type of string\r\n */\r\nexport function isString(obj:any) {\r\n    return typeof obj === \"string\";\r\n}\r\n\r\n/**\r\n * Check and return true if an object not undefined or null\r\n */\r\nexport function isPresent(obj: any) {\r\n    return obj !== undefined && obj !== null;\r\n}\r\n\r\n/**\r\n * Check and return true if an object is type of Function\r\n */\r\nexport function isFunction(obj: any) {\r\n    return typeof obj === \"function\";\r\n}\r\n\r\n/**\r\n * Create Image element with specified url string\r\n */\r\nexport function createImage(src: string) {\r\n    let img:HTMLImageElement = new HTMLImageElement();\r\n    img.src = src;\r\n    return img;\r\n}\r\n\r\n/**\r\n * Call the function\r\n */\r\nexport function callFun(fun: Function) {\r\n    return fun();\r\n}","// Copyright (C) 2016-2020 Sergey Akopkokhyants\r\n// This project is licensed under the terms of the MIT license.\r\n// https://github.com/akserg/ng2-dnd\r\n\r\nimport { isString } from './dnd.utils';\r\n\r\nexport class DataTransferEffect {\r\n\r\n    static COPY = new DataTransferEffect('copy');\r\n    static LINK = new DataTransferEffect('link');\r\n    static MOVE = new DataTransferEffect('move');\r\n    static NONE = new DataTransferEffect('none');\r\n\r\n    constructor(public name: DataTransfer['dropEffect']) { }\r\n}\r\n\r\nexport class DragImage {\r\n    constructor(\r\n        public imageElement: any,\r\n        public x_offset: number = 0,\r\n        public y_offset: number = 0) {\r\n            if (isString(this.imageElement)) {\r\n                // Create real image from string source\r\n                let imgScr: string = <string>this.imageElement;\r\n                this.imageElement = new HTMLImageElement();\r\n                (<HTMLImageElement>this.imageElement).src = imgScr;\r\n            }\r\n        }\r\n}\r\n\r\nexport class DragDropConfig {\r\n    public onDragStartClass: string = \"dnd-drag-start\";\r\n    public onDragEnterClass: string = \"dnd-drag-enter\";\r\n    public onDragOverClass: string = \"dnd-drag-over\";\r\n    public onSortableDragClass: string = \"dnd-sortable-drag\";\r\n\r\n    public dragEffect: DataTransferEffect = DataTransferEffect.MOVE;\r\n    public dropEffect: DataTransferEffect = DataTransferEffect.MOVE;\r\n    public dragCursor: string = \"move\";\r\n    public dragImage: DragImage;\r\n    public defaultCursor: string = \"pointer\";\r\n}\r\n","// Copyright (C) 2016-2020 Sergey Akopkokhyants\r\n// This project is licensed under the terms of the MIT license.\r\n// https://github.com/akserg/ng2-dnd\r\n\r\nimport { Injectable, EventEmitter}  from '@angular/core';\r\n\r\nimport { DragDropConfig } from './dnd.config';\r\nimport { isPresent } from './dnd.utils';\r\nimport { SortableContainer } from './sortable.component';\r\n\r\nexport class DragDropData {\r\n    dragData: any;\r\n    mouseEvent: MouseEvent;\r\n}\r\n\r\nexport function dragDropServiceFactory(): DragDropService  {\r\n    return new DragDropService();\r\n}\r\n\r\n@Injectable()\r\nexport class DragDropService {\r\n    allowedDropZones: Array<string> = [];\r\n    onDragSuccessCallback: EventEmitter<DragDropData>;\r\n    dragData: any;\r\n    isDragged: boolean;\r\n}\r\n\r\nexport function dragDropSortableServiceFactory(config: DragDropConfig): DragDropSortableService  {\r\n    return new DragDropSortableService(config);\r\n}\r\n\r\n@Injectable()\r\nexport class DragDropSortableService {\r\n    index: number;\r\n    sortableContainer: SortableContainer;\r\n    isDragged: boolean;\r\n\r\n    private _elem: HTMLElement;\r\n    public get elem(): HTMLElement {\r\n        return this._elem;\r\n    }\r\n\r\n    constructor(private _config:DragDropConfig) {}\r\n\r\n    markSortable(elem: HTMLElement) {\r\n        if (isPresent(this._elem)) {\r\n            this._elem.classList.remove(this._config.onSortableDragClass);\r\n        }\r\n        if (isPresent(elem)) {\r\n            this._elem = elem;\r\n            this._elem.classList.add(this._config.onSortableDragClass);\r\n        }\r\n    }\r\n}\r\n","// Copyright (C) 2016-2020 Sergey Akopkokhyants\r\n// This project is licensed under the terms of the MIT license.\r\n// https://github.com/akserg/ng2-dnd\r\n\r\nimport { Injectable, ChangeDetectorRef, ViewRef, Directive } from '@angular/core';\r\nimport {ElementRef} from '@angular/core';\r\n\r\nimport { DragDropConfig, DragImage } from './dnd.config';\r\nimport { DragDropService } from './dnd.service';\r\nimport { isString, isFunction, isPresent, createImage, callFun } from './dnd.utils';\r\n\r\n@Injectable()\r\n@Directive()\r\nexport abstract class AbstractComponent {\r\n    _elem: HTMLElement;\r\n    _dragHandle: HTMLElement;\r\n    _dragHelper: HTMLElement;\r\n    _defaultCursor: string;\r\n\r\n    /**\r\n     * Last element that was mousedown'ed\r\n     */\r\n    _target: EventTarget;\r\n\r\n    /**\r\n     * Whether the object is draggable. Default is true.\r\n     */\r\n    private _dragEnabled: boolean = false;\r\n    set dragEnabled(enabled: boolean) {\r\n        this._dragEnabled = !!enabled;\r\n        this._elem.draggable = this._dragEnabled;\r\n    }\r\n    get dragEnabled(): boolean {\r\n        return this._dragEnabled;\r\n    }\r\n\r\n    /**\r\n     * Allows drop on this element\r\n     */\r\n    dropEnabled: boolean = false;\r\n    /**\r\n     * Drag effect\r\n     */\r\n    effectAllowed: DataTransfer['effectAllowed'];\r\n    /**\r\n     * Drag cursor\r\n     */\r\n    effectCursor: string;\r\n\r\n    /**\r\n     * Restrict places where a draggable element can be dropped. Either one of\r\n     * these two mechanisms can be used:\r\n     *\r\n     * - dropZones: an array of strings that permits to specify the drop zones\r\n     *   associated with this component. By default, if the drop-zones attribute\r\n     *   is not specified, the droppable component accepts drop operations by\r\n     *   all the draggable components that do not specify the allowed-drop-zones\r\n     *\r\n     * - allowDrop: a boolean function for droppable components, that is checked\r\n     *   when an item is dragged. The function is passed the dragData of this\r\n     *   item.\r\n     *   - if it returns true, the item can be dropped in this component\r\n     *   - if it returns false, the item cannot be dropped here\r\n     */\r\n    allowDrop: (dropData: any) => boolean;\r\n    dropZones: string[] = [];\r\n\r\n    /**\r\n     * Here is the property dragImage you can use:\r\n     * - The string value as url to the image\r\n     *   <div class=\"panel panel-default\"\r\n     *        dnd-draggable [dragEnabled]=\"true\"\r\n     *        [dragImage]=\"/images/simpler.png\">\r\n     * ...\r\n     * - The DragImage value with Image and optional offset by x and y:\r\n     *   let myDragImage: DragImage = new DragImage(\"/images/simpler1.png\", 0, 0);\r\n     * ...\r\n     *   <div class=\"panel panel-default\"\r\n     *        dnd-draggable [dragEnabled]=\"true\"\r\n     *        [dragImage]=\"myDragImage\">\r\n     * ...\r\n     * - The custom function to return the value of dragImage programmatically:\r\n     *   <div class=\"panel panel-default\"\r\n     *        dnd-draggable [dragEnabled]=\"true\"\r\n     *        [dragImage]=\"getDragImage(someData)\">\r\n     * ...\r\n     *   getDragImage(value:any): string {\r\n     *     return value ? \"/images/simpler1.png\" : \"/images/simpler2.png\"\r\n     *   }\r\n     */\r\n    dragImage: string | DragImage | Function;\r\n\r\n    cloneItem: boolean = false;\r\n\r\n    constructor(elemRef: ElementRef, public _dragDropService: DragDropService, public _config: DragDropConfig,\r\n        private _cdr: ChangeDetectorRef) {\r\n\r\n        // Assign default cursor unless overridden\r\n        this._defaultCursor = _config.defaultCursor;\r\n        this._elem = elemRef.nativeElement;\r\n        this._elem.style.cursor = this._defaultCursor;  // set default cursor on our element\r\n        //\r\n        // DROP events\r\n        //\r\n        this._elem.ondragenter = (event: Event) => {\r\n            this._onDragEnter(event);\r\n        };\r\n        this._elem.ondragover = (event: DragEvent) => {\r\n            this._onDragOver(event);\r\n            //\r\n            if (event.dataTransfer != null) {\r\n                event.dataTransfer.dropEffect = this._config.dropEffect.name;\r\n            }\r\n\r\n            return false;\r\n        };\r\n        this._elem.ondragleave = (event: Event) => {\r\n            this._onDragLeave(event);\r\n        };\r\n        this._elem.ondrop = (event: Event) => {\r\n            this._onDrop(event);\r\n        };\r\n        //\r\n        // Drag events\r\n        //\r\n        this._elem.onmousedown = (event: MouseEvent) => {\r\n            this._target = event.target;\r\n        };\r\n        this._elem.ondragstart = (event: DragEvent) => {\r\n            if (this._dragHandle) {\r\n                if (!this._dragHandle.contains(<Element>this._target)) {\r\n                    event.preventDefault();\r\n                    return;\r\n                }\r\n            }\r\n\r\n            this._onDragStart(event);\r\n            //\r\n            if (event.dataTransfer != null) {\r\n                event.dataTransfer.setData('text', '');\r\n                // Change drag effect\r\n                event.dataTransfer.effectAllowed = this.effectAllowed || this._config.dragEffect.name;\r\n                // Change drag image\r\n                if (isPresent(this.dragImage)) {\r\n                    if (isString(this.dragImage)) {\r\n                        (<any>event.dataTransfer).setDragImage(createImage(<string>this.dragImage));\r\n                    } else if (isFunction(this.dragImage)) {\r\n                        (<any>event.dataTransfer).setDragImage(callFun(<Function>this.dragImage));\r\n                    } else {\r\n                        let img: DragImage = <DragImage>this.dragImage;\r\n                        (<any>event.dataTransfer).setDragImage(img.imageElement, img.x_offset, img.y_offset);\r\n                    }\r\n                } else if (isPresent(this._config.dragImage)) {\r\n                    let dragImage: DragImage = this._config.dragImage;\r\n                    (<any>event.dataTransfer).setDragImage(dragImage.imageElement, dragImage.x_offset, dragImage.y_offset);\r\n                } else if (this.cloneItem) {\r\n                    this._dragHelper = <HTMLElement>this._elem.cloneNode(true);\r\n                    this._dragHelper.classList.add('dnd-drag-item');\r\n                    this._dragHelper.style.position = \"absolute\";\r\n                    this._dragHelper.style.top = \"0px\";\r\n                    this._dragHelper.style.left = \"-1000px\";\r\n                    this._elem.parentElement.appendChild(this._dragHelper);\r\n                    (<any>event.dataTransfer).setDragImage(this._dragHelper, event.offsetX, event.offsetY);\r\n                }\r\n\r\n                // Change drag cursor\r\n                let cursorelem = (this._dragHandle) ? this._dragHandle : this._elem;\r\n\r\n                if (this._dragEnabled) {\r\n                    cursorelem.style.cursor = this.effectCursor ? this.effectCursor : this._config.dragCursor;\r\n                } else {\r\n                    cursorelem.style.cursor = this._defaultCursor;\r\n                }\r\n            }\r\n        };\r\n\r\n        this._elem.ondragend = (event: Event) => {\r\n            if (this._elem.parentElement && this._dragHelper) {\r\n                this._elem.parentElement.removeChild(this._dragHelper);\r\n            }\r\n            // console.log('ondragend', event.target);\r\n            this._onDragEnd(event);\r\n            // Restore style of dragged element\r\n            let cursorelem = (this._dragHandle) ? this._dragHandle : this._elem;\r\n            cursorelem.style.cursor = this._defaultCursor;\r\n        };\r\n    }\r\n\r\n    public setDragHandle(elem: HTMLElement) {\r\n        this._dragHandle = elem;\r\n    }\r\n    /******* Change detection ******/\r\n\r\n    detectChanges () {\r\n        // Programmatically run change detection to fix issue in Safari\r\n        setTimeout(() => {\r\n            if ( this._cdr && !(this._cdr as ViewRef).destroyed ) {\r\n                this._cdr.detectChanges();\r\n            }\r\n        }, 250);\r\n    }\r\n\r\n    //****** Droppable *******//\r\n    private _onDragEnter(event: Event): void {\r\n        // console.log('ondragenter._isDropAllowed', this._isDropAllowed);\r\n        if (this._isDropAllowed(event)) {\r\n            // event.preventDefault();\r\n            this._onDragEnterCallback(event);\r\n        }\r\n    }\r\n\r\n    private _onDragOver(event: Event) {\r\n        // // console.log('ondragover._isDropAllowed', this._isDropAllowed);\r\n        if (this._isDropAllowed(event)) {\r\n            // The element is over the same source element - do nothing\r\n            if (event.preventDefault) {\r\n                // Necessary. Allows us to drop.\r\n                event.preventDefault();\r\n            }\r\n\r\n            this._onDragOverCallback(event);\r\n        }\r\n    }\r\n\r\n    private _onDragLeave(event: Event): void {\r\n        // console.log('ondragleave._isDropAllowed', this._isDropAllowed);\r\n        if (this._isDropAllowed(event)) {\r\n            // event.preventDefault();\r\n            this._onDragLeaveCallback(event);\r\n        }\r\n    }\r\n\r\n    private _onDrop(event: Event): void {\r\n        // console.log('ondrop._isDropAllowed', this._isDropAllowed);\r\n        if (this._isDropAllowed(event)) {\r\n            // Necessary. Allows us to drop.\r\n            this._preventAndStop(event);\r\n\r\n            this._onDropCallback(event);\r\n\r\n            this.detectChanges();\r\n        }\r\n    }\r\n\r\n    private _isDropAllowed(event: any): boolean {\r\n        if ((this._dragDropService.isDragged || (event.dataTransfer && event.dataTransfer.files)) && this.dropEnabled) {\r\n            // First, if `allowDrop` is set, call it to determine whether the\r\n            // dragged element can be dropped here.\r\n            if (this.allowDrop) {\r\n                return this.allowDrop(this._dragDropService.dragData);\r\n            }\r\n\r\n            // Otherwise, use dropZones if they are set.\r\n            if (this.dropZones.length === 0 && this._dragDropService.allowedDropZones.length === 0) {\r\n                return true;\r\n            }\r\n            for (let i: number = 0; i < this._dragDropService.allowedDropZones.length; i++) {\r\n                let dragZone: string = this._dragDropService.allowedDropZones[i];\r\n                if (this.dropZones.indexOf(dragZone) !== -1) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    private _preventAndStop(event: Event): any {\r\n        if (event.preventDefault) {\r\n            event.preventDefault();\r\n        }\r\n        if (event.stopPropagation) {\r\n            event.stopPropagation();\r\n        }\r\n    }\r\n\r\n    //*********** Draggable **********//\r\n\r\n    private _onDragStart(event: Event): void {\r\n        //console.log('ondragstart.dragEnabled', this._dragEnabled);\r\n        if (this._dragEnabled) {\r\n            this._dragDropService.allowedDropZones = this.dropZones;\r\n            // console.log('ondragstart.allowedDropZones', this._dragDropService.allowedDropZones);\r\n            this._onDragStartCallback(event);\r\n        }\r\n    }\r\n\r\n    private _onDragEnd(event: Event): void {\r\n        this._dragDropService.allowedDropZones = [];\r\n        // console.log('ondragend.allowedDropZones', this._dragDropService.allowedDropZones);\r\n        this._onDragEndCallback(event);\r\n    }\r\n\r\n    //**** Drop Callbacks ****//\r\n    _onDragEnterCallback(event: Event) { }\r\n    _onDragOverCallback(event: Event) { }\r\n    _onDragLeaveCallback(event: Event) { }\r\n    _onDropCallback(event: Event) { }\r\n\r\n    //**** Drag Callbacks ****//\r\n    _onDragStartCallback(event: Event) { }\r\n    _onDragEndCallback(event: Event) { }\r\n}\r\n\r\nexport class AbstractHandleComponent {\r\n    _elem: HTMLElement;\r\n    constructor(elemRef: ElementRef, public _dragDropService: DragDropService, public _config: DragDropConfig,\r\n        private _Component: AbstractComponent, private _cdr: ChangeDetectorRef) {\r\n        this._elem = elemRef.nativeElement;\r\n        this._Component.setDragHandle(this._elem);\r\n    }\r\n}\r\n","// Copyright (C) 2016-2020 Sergey Akopkokhyants\r\n// This project is licensed under the terms of the MIT license.\r\n// https://github.com/akserg/ng2-dnd\r\n\r\nimport { ChangeDetectorRef } from '@angular/core';\r\nimport { Directive, Input, Output, EventEmitter, ElementRef } from '@angular/core';\r\n\r\nimport { AbstractComponent, AbstractHandleComponent } from './abstract.component';\r\nimport { DragDropConfig, DragImage } from './dnd.config';\r\nimport { DragDropService, DragDropData } from './dnd.service';\r\n\r\n@Directive({ selector: '[dnd-draggable]' })\r\nexport class DraggableComponent extends AbstractComponent {\r\n\r\n    @Input(\"dragEnabled\") set draggable(value:boolean) {\r\n        this.dragEnabled = !!value;\r\n    }\r\n\r\n    /**\r\n     * Callback function called when the drag actions happened.\r\n     */\r\n    @Output() onDragStart: EventEmitter<DragDropData> = new EventEmitter<DragDropData>();\r\n    @Output() onDragEnd: EventEmitter<DragDropData> = new EventEmitter<DragDropData>();\r\n\r\n    /**\r\n     * The data that has to be dragged. It can be any JS object\r\n     */\r\n    @Input() dragData: any;\r\n\r\n    /**\r\n     * Callback function called when the drag action ends with a valid drop action.\r\n     * It is activated after the on-drop-success callback\r\n     */\r\n    @Output(\"onDragSuccess\") onDragSuccessCallback: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    @Input(\"dropZones\") set dropzones(value:Array<string>) {\r\n        this.dropZones = value;\r\n    }\r\n\r\n    /**\r\n     * Drag allowed effect\r\n     */\r\n    @Input(\"effectAllowed\") set effectallowed(value: DataTransfer['effectAllowed']) {\r\n        this.effectAllowed = value;\r\n    }\r\n\r\n    /**\r\n     * Drag effect cursor\r\n     */\r\n    @Input(\"effectCursor\") set effectcursor(value: string) {\r\n        this.effectCursor = value;\r\n    }\r\n\r\n    /**\r\n     * Here is the property dragImage you can use:\r\n     * - The string value as url to the image\r\n     *   <div class=\"panel panel-default\"\r\n     *        dnd-draggable [dragEnabled]=\"true\"\r\n     *        [dragImage]=\"/images/simpler.png\">\r\n     * ...\r\n     * - The DragImage value with Image and offset by x and y:\r\n     *   let myDragImage: DragImage = new DragImage(\"/images/simpler1.png\", 0, 0);\r\n     * ...\r\n     *   <div class=\"panel panel-default\"\r\n     *        dnd-draggable [dragEnabled]=\"true\"\r\n     *        [dragImage]=\"myDragImage\">\r\n     * ...\r\n     * - The custom function to return the value of dragImage programmatically:\r\n     *   <div class=\"panel panel-default\"\r\n     *        dnd-draggable [dragEnabled]=\"true\"\r\n     *        [dragImage]=\"getDragImage(someData)\">\r\n     * ...\r\n     *   getDragImage(value:any): string {\r\n     *     return value ? \"/images/simpler1.png\" : \"/images/simpler2.png\"\r\n     *   }\r\n     */\r\n    @Input() dragImage: string | DragImage | Function;\r\n\r\n\r\n    @Input() cloneItem: boolean;\r\n\r\n    constructor(elemRef: ElementRef, dragDropService: DragDropService, config:DragDropConfig,\r\n        cdr:ChangeDetectorRef) {\r\n\r\n        super(elemRef, dragDropService, config, cdr);\r\n        this._defaultCursor = this._elem.style.cursor;\r\n        this.dragEnabled = true;\r\n    }\r\n\r\n    _onDragStartCallback(event: MouseEvent) {\r\n        this._dragDropService.isDragged = true;\r\n        this._dragDropService.dragData = this.dragData;\r\n        this._dragDropService.onDragSuccessCallback = this.onDragSuccessCallback;\r\n        this._elem.classList.add(this._config.onDragStartClass);\r\n        //\r\n        this.onDragStart.emit({dragData: this.dragData, mouseEvent: event});\r\n    }\r\n\r\n    _onDragEndCallback(event: MouseEvent) {\r\n        this._dragDropService.isDragged = false;\r\n        this._dragDropService.dragData = null;\r\n        this._dragDropService.onDragSuccessCallback = null;\r\n        this._elem.classList.remove(this._config.onDragStartClass);\r\n        //\r\n        this.onDragEnd.emit({dragData: this.dragData, mouseEvent: event});\r\n    }\r\n}\r\n\r\n\r\n@Directive({ selector: '[dnd-draggable-handle]' })\r\nexport class DraggableHandleComponent extends AbstractHandleComponent {\r\n    constructor(elemRef: ElementRef, dragDropService: DragDropService, config:DragDropConfig, _Component: DraggableComponent,\r\n        cdr:ChangeDetectorRef) {\r\n\r\n        super(elemRef, dragDropService, config, _Component, cdr);\r\n    }\r\n}\r\n","// Copyright (C) 2016-2020 Sergey Akopkokhyants\r\n// This project is licensed under the terms of the MIT license.\r\n// https://github.com/akserg/ng2-dnd\r\n\r\nimport { ChangeDetectorRef } from '@angular/core';\r\nimport { Directive, Input, Output, EventEmitter, ElementRef } from '@angular/core';\r\n\r\nimport { AbstractComponent } from './abstract.component';\r\nimport { DragDropConfig } from './dnd.config';\r\nimport { DragDropService, DragDropData } from './dnd.service';\r\n\r\n@Directive({ selector: '[dnd-droppable]' })\r\nexport class DroppableComponent extends AbstractComponent {\r\n\r\n    @Input(\"dropEnabled\") set droppable(value:boolean) {\r\n        this.dropEnabled = !!value;\r\n    }\r\n\r\n    /**\r\n     * Callback function called when the drop action completes correctly.\r\n     * It is activated before the on-drag-success callback.\r\n     */\r\n    @Output() onDropSuccess: EventEmitter<DragDropData> = new EventEmitter<DragDropData>();\r\n    @Output() onDragEnter: EventEmitter<DragDropData> = new EventEmitter<DragDropData>();\r\n    @Output() onDragOver: EventEmitter<DragDropData> = new EventEmitter<DragDropData>();\r\n    @Output() onDragLeave: EventEmitter<DragDropData> = new EventEmitter<DragDropData>();\r\n\r\n    @Input(\"allowDrop\") set allowdrop(value: (dropData: any) => boolean) {\r\n        this.allowDrop = value;\r\n    }\r\n\r\n    @Input(\"dropZones\") set dropzones(value:Array<string>) {\r\n        this.dropZones = value;\r\n    }\r\n\r\n    /**\r\n     * Drag allowed effect\r\n     */\r\n    @Input(\"effectAllowed\") set effectallowed(value: DataTransfer['effectAllowed']) {\r\n        this.effectAllowed = value;\r\n    }\r\n\r\n    /**\r\n     * Drag effect cursor\r\n     */\r\n    @Input(\"effectCursor\") set effectcursor(value: string) {\r\n        this.effectCursor = value;\r\n    }\r\n\r\n    constructor(elemRef: ElementRef, dragDropService: DragDropService, config:DragDropConfig,\r\n        cdr:ChangeDetectorRef) {\r\n\r\n        super(elemRef, dragDropService, config, cdr);\r\n\r\n        this.dropEnabled = true;\r\n    }\r\n\r\n    _onDragEnterCallback(event: MouseEvent) {\r\n        if (this._dragDropService.isDragged) {\r\n            this._elem.classList.add(this._config.onDragEnterClass);\r\n            this.onDragEnter.emit({dragData: this._dragDropService.dragData, mouseEvent: event});\r\n        }\r\n    }\r\n\r\n    _onDragOverCallback (event: MouseEvent) {\r\n        if (this._dragDropService.isDragged) {\r\n            this._elem.classList.add(this._config.onDragOverClass);\r\n            this.onDragOver.emit({dragData: this._dragDropService.dragData, mouseEvent: event});\r\n        }\r\n    };\r\n\r\n    _onDragLeaveCallback (event: MouseEvent) {\r\n        if (this._dragDropService.isDragged) {\r\n            this._elem.classList.remove(this._config.onDragOverClass);\r\n            this._elem.classList.remove(this._config.onDragEnterClass);\r\n            this.onDragLeave.emit({dragData: this._dragDropService.dragData, mouseEvent: event});\r\n        }\r\n    };\r\n\r\n    _onDropCallback (event: MouseEvent) {\r\n        let dataTransfer = (event as any).dataTransfer;\r\n        if (this._dragDropService.isDragged || (dataTransfer && dataTransfer.files)) {\r\n            this.onDropSuccess.emit({dragData: this._dragDropService.dragData, mouseEvent: event});\r\n            if (this._dragDropService.onDragSuccessCallback) {\r\n                this._dragDropService.onDragSuccessCallback.emit({dragData: this._dragDropService.dragData, mouseEvent: event});\r\n            }\r\n            this._elem.classList.remove(this._config.onDragOverClass);\r\n            this._elem.classList.remove(this._config.onDragEnterClass);\r\n        }\r\n    }\r\n}\r\n","// Copyright (C) 2016-2020 Sergey Akopkokhyants\r\n// This project is licensed under the terms of the MIT license.\r\n// https://github.com/akserg/ng2-dnd\r\n\r\nimport { ChangeDetectorRef } from '@angular/core';\r\nimport { Directive, Input, Output, EventEmitter, ElementRef } from '@angular/core';\r\nimport { FormArray} from '@angular/forms';\r\n\r\nimport { AbstractComponent, AbstractHandleComponent } from './abstract.component';\r\nimport { DragDropConfig } from './dnd.config';\r\nimport { DragDropService, DragDropSortableService } from './dnd.service';\r\n\r\n@Directive({ selector: '[dnd-sortable-container]' })\r\nexport class SortableContainer extends AbstractComponent {\r\n\r\n    @Input(\"dragEnabled\") set draggable(value:boolean) {\r\n        this.dragEnabled = !!value;\r\n    }\r\n\r\n    private _sortableData: Array<any>|FormArray = [];\r\n    private sortableHandler: SortableFormArrayHandler|SortableArrayHandler;\r\n\r\n    @Input() set sortableData(sortableData: Array<any>|FormArray) {\r\n        this._sortableData = sortableData;\r\n        if (sortableData instanceof FormArray) {\r\n            this.sortableHandler = new SortableFormArrayHandler();\r\n        } else {\r\n            this.sortableHandler = new SortableArrayHandler();\r\n        }\r\n        //\r\n        this.dropEnabled = !!this._sortableData;\r\n        // console.log(\"collection is changed, drop enabled: \" + this.dropEnabled);\r\n    }\r\n    get sortableData(): Array<any>|FormArray {\r\n        return this._sortableData;\r\n    }\r\n\r\n    @Input(\"dropZones\") set dropzones(value:Array<string>) {\r\n        this.dropZones = value;\r\n    }\r\n\r\n    constructor(elemRef: ElementRef, dragDropService: DragDropService, config:DragDropConfig, cdr:ChangeDetectorRef,\r\n        private _sortableDataService: DragDropSortableService) {\r\n\r\n        super(elemRef, dragDropService, config, cdr);\r\n        this.dragEnabled = false;\r\n    }\r\n\r\n    _onDragEnterCallback(event: Event) {\r\n        if (this._sortableDataService.isDragged) {\r\n            let item:any = this._sortableDataService.sortableContainer.getItemAt(this._sortableDataService.index);\r\n            // Check does element exist in sortableData of this Container\r\n            if (this.indexOf(item) === -1) {\r\n                // Let's add it\r\n                // console.log('Container._onDragEnterCallback. drag node [' + this._sortableDataService.index.toString() + '] over parent node');\r\n                // Remove item from previouse list\r\n                this._sortableDataService.sortableContainer.removeItemAt(this._sortableDataService.index);\r\n                if (this._sortableDataService.sortableContainer._sortableData.length === 0) {\r\n                    this._sortableDataService.sortableContainer.dropEnabled = true;\r\n                }\r\n                // Add item to new list\r\n                this.insertItemAt(item, 0);\r\n                this._sortableDataService.sortableContainer = this;\r\n                this._sortableDataService.index = 0;\r\n            }\r\n            // Refresh changes in properties of container component\r\n            this.detectChanges();\r\n        }\r\n    }\r\n\r\n    getItemAt(index: number): any {\r\n        return this.sortableHandler.getItemAt(this._sortableData, index);\r\n    }\r\n\r\n    indexOf(item: any): number {\r\n        return this.sortableHandler.indexOf(this._sortableData, item);\r\n    }\r\n\r\n    removeItemAt(index: number): void {\r\n        this.sortableHandler.removeItemAt(this._sortableData, index);\r\n    }\r\n\r\n    insertItemAt(item: any, index: number) {\r\n        this.sortableHandler.insertItemAt(this._sortableData, item, index);\r\n    }\r\n}\r\n\r\nclass SortableArrayHandler {\r\n    getItemAt(sortableData: any, index: number): any {\r\n        return sortableData[index];\r\n    }\r\n\r\n    indexOf(sortableData: any, item: any): number {\r\n        return sortableData.indexOf(item);\r\n    }\r\n\r\n    removeItemAt(sortableData: any, index: number) {\r\n        sortableData.splice(index, 1);\r\n    }\r\n\r\n    insertItemAt(sortableData: any, item: any, index: number) {\r\n        sortableData.splice(index, 0, item);\r\n    }\r\n}\r\n\r\nclass SortableFormArrayHandler {\r\n    getItemAt(sortableData: any, index: number): any {\r\n        return sortableData.at(index);\r\n    }\r\n\r\n    indexOf(sortableData: any, item: any): number {\r\n        return sortableData.controls.indexOf(item);\r\n    }\r\n\r\n    removeItemAt(sortableData: any, index: number) {\r\n        sortableData.removeAt(index);\r\n    }\r\n\r\n    insertItemAt(sortableData: any, item: any, index: number) {\r\n        sortableData.insert(index, item);\r\n    }\r\n}\r\n\r\n@Directive({ selector: '[dnd-sortable]' })\r\nexport class SortableComponent extends AbstractComponent {\r\n\r\n    @Input('sortableIndex') index: number;\r\n\r\n    @Input(\"dragEnabled\") set draggable(value:boolean) {\r\n        this.dragEnabled = !!value;\r\n    }\r\n\r\n    @Input(\"dropEnabled\") set droppable(value:boolean) {\r\n        this.dropEnabled = !!value;\r\n    }\r\n\r\n    /**\r\n     * The data that has to be dragged. It can be any JS object\r\n     */\r\n    @Input() dragData: any;\r\n\r\n    /**\r\n     * Drag allowed effect\r\n     */\r\n    @Input(\"effectAllowed\") set effectallowed(value: DataTransfer['effectAllowed']) {\r\n        this.effectAllowed = value;\r\n    }\r\n\r\n    /**\r\n     * Drag effect cursor\r\n     */\r\n    @Input(\"effectCursor\") set effectcursor(value: string) {\r\n        this.effectCursor = value;\r\n    }\r\n\r\n    /**\r\n     * Callback function called when the drag action ends with a valid drop action.\r\n     * It is activated after the on-drop-success callback\r\n     */\r\n    @Output(\"onDragSuccess\") onDragSuccessCallback: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    @Output(\"onDragStart\") onDragStartCallback: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output(\"onDragOver\") onDragOverCallback: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output(\"onDragEnd\") onDragEndCallback: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output(\"onDropSuccess\") onDropSuccessCallback: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    constructor(elemRef: ElementRef, dragDropService: DragDropService, config:DragDropConfig,\r\n        private _sortableContainer: SortableContainer,\r\n        private _sortableDataService: DragDropSortableService,\r\n        cdr:ChangeDetectorRef) {\r\n        super(elemRef, dragDropService, config, cdr);\r\n        this.dropZones = this._sortableContainer.dropZones;\r\n        this.dragEnabled = true;\r\n        this.dropEnabled = true;\r\n    }\r\n\r\n    _onDragStartCallback(event: Event) {\r\n        // console.log('_onDragStartCallback. dragging elem with index ' + this.index);\r\n        this._sortableDataService.isDragged = true;\r\n        this._sortableDataService.sortableContainer = this._sortableContainer;\r\n        this._sortableDataService.index = this.index;\r\n        this._sortableDataService.markSortable(this._elem);\r\n        // Add dragData\r\n        this._dragDropService.isDragged = true;\r\n        this._dragDropService.dragData = this.dragData;\r\n        this._dragDropService.onDragSuccessCallback = this.onDragSuccessCallback;\r\n        //\r\n        this.onDragStartCallback.emit(this._dragDropService.dragData);\r\n    }\r\n\r\n    _onDragOverCallback(event: Event) {\r\n        if (this._sortableDataService.isDragged && this._elem !== this._sortableDataService.elem) {\r\n            // console.log('_onDragOverCallback. dragging elem with index ' + this.index);\r\n            this._sortableDataService.sortableContainer = this._sortableContainer;\r\n            this._sortableDataService.index = this.index;\r\n            this._sortableDataService.markSortable(this._elem);\r\n            this.onDragOverCallback.emit(this._dragDropService.dragData);\r\n        }\r\n    }\r\n\r\n    _onDragEndCallback(event: Event) {\r\n        // console.log('_onDragEndCallback. end dragging elem with index ' + this.index);\r\n        this._sortableDataService.isDragged = false;\r\n        this._sortableDataService.sortableContainer = null;\r\n        this._sortableDataService.index = null;\r\n        this._sortableDataService.markSortable(null);\r\n        // Add dragGata\r\n        this._dragDropService.isDragged = false;\r\n        this._dragDropService.dragData = null;\r\n        this._dragDropService.onDragSuccessCallback = null;\r\n        //\r\n        this.onDragEndCallback.emit(this._dragDropService.dragData);\r\n    }\r\n\r\n    _onDragEnterCallback(event: Event) {\r\n        if (this._sortableDataService.isDragged) {\r\n            this._sortableDataService.markSortable(this._elem);\r\n            if ((this.index !== this._sortableDataService.index) ||\r\n                (this._sortableDataService.sortableContainer.sortableData !== this._sortableContainer.sortableData)) {\r\n                // console.log('Component._onDragEnterCallback. drag node [' + this.index + '] over node [' + this._sortableDataService.index + ']');\r\n                // Get item\r\n                let item:any = this._sortableDataService.sortableContainer.getItemAt(this._sortableDataService.index);\r\n                // Remove item from previouse list\r\n                this._sortableDataService.sortableContainer.removeItemAt(this._sortableDataService.index);\r\n                if (this._sortableDataService.sortableContainer.sortableData.length === 0) {\r\n                    this._sortableDataService.sortableContainer.dropEnabled = true;\r\n                }\r\n                // Add item to new list\r\n                this._sortableContainer.insertItemAt(item, this.index);\r\n                if (this._sortableContainer.dropEnabled) {\r\n                    this._sortableContainer.dropEnabled = false;\r\n                }\r\n                this._sortableDataService.sortableContainer = this._sortableContainer;\r\n                this._sortableDataService.index = this.index;\r\n                this.detectChanges();\r\n            }\r\n        }\r\n    }\r\n\r\n    _onDropCallback (event: Event) {\r\n        if (this._sortableDataService.isDragged) {\r\n            // console.log('onDropCallback.onDropSuccessCallback.dragData', this._dragDropService.dragData);\r\n            this.onDropSuccessCallback.emit(this._dragDropService.dragData);\r\n            if (this._dragDropService.onDragSuccessCallback) {\r\n                // console.log('onDropCallback.onDragSuccessCallback.dragData', this._dragDropService.dragData);\r\n                this._dragDropService.onDragSuccessCallback.emit(this._dragDropService.dragData);\r\n            }\r\n            // Refresh changes in properties of container component\r\n            this._sortableContainer.detectChanges();\r\n        }\r\n    }\r\n}\r\n\r\n@Directive({ selector: '[dnd-sortable-handle]' })\r\nexport class SortableHandleComponent extends AbstractHandleComponent {\r\n    constructor(elemRef: ElementRef, dragDropService: DragDropService, config:DragDropConfig, _Component: SortableComponent,\r\n        cdr:ChangeDetectorRef) {\r\n\r\n        super(elemRef, dragDropService, config, _Component, cdr);\r\n    }\r\n}\r\n","// Copyright (C) 2016-2020 Sergey Akopkokhyants\r\n// This project is licensed under the terms of the MIT license.\r\n// https://github.com/akserg/ng2-dnd\r\n\r\nimport { NgModule, ModuleWithProviders } from \"@angular/core\";\r\n\r\nimport { DragDropConfig } from './dnd.config';\r\nimport { DragDropService, DragDropSortableService, dragDropServiceFactory, dragDropSortableServiceFactory } from './dnd.service';\r\nimport { DraggableComponent, DraggableHandleComponent } from './draggable.component';\r\nimport { DroppableComponent } from './droppable.component';\r\nimport { SortableContainer, SortableComponent, SortableHandleComponent } from './sortable.component';\r\n\r\nexport * from './abstract.component';\r\nexport * from './dnd.config';\r\nexport * from './dnd.service';\r\nexport * from './draggable.component';\r\nexport * from './droppable.component';\r\nexport * from './sortable.component';\r\n\r\nexport let providers = [\r\n    DragDropConfig,\r\n    { provide: DragDropService, useFactory: dragDropServiceFactory },\r\n    { provide: DragDropSortableService, useFactory: dragDropSortableServiceFactory, deps: [DragDropConfig] }\r\n];\r\n\r\n@NgModule({\r\n  declarations: [\r\n      DraggableComponent,\r\n      DraggableHandleComponent,\r\n      DroppableComponent,\r\n      SortableContainer,\r\n      SortableComponent,\r\n      SortableHandleComponent,\r\n  ],\r\n  exports : [\r\n      DraggableComponent,\r\n      DraggableHandleComponent,\r\n      DroppableComponent,\r\n      SortableContainer,\r\n      SortableComponent,\r\n      SortableHandleComponent\r\n  ],\r\n})\r\nexport class DndModule {\r\n  static forRoot(): ModuleWithProviders<DndModule> {\r\n    return {\r\n        ngModule: DndModule,\r\n        providers: providers,\r\n    };\r\n  }\r\n}\r\n","// Copyright (C) 2016-2020 Sergey Akopkokhyants\r\n// This project is licensed under the terms of the MIT license.\r\n// https://github.com/akserg/ng2-dnd\r\n\r\nexport * from './src/dnd.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.DragDropConfig","i1.DragDropService","i2.DragDropConfig","i1.DragDropSortableService"],"mappings":"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"}