{"version":3,"file":"deja-js-component-dragdrop.mjs","sources":["../../../../projects/deja-js/component/dragdrop/draggable.directive.ts","../../../../projects/deja-js/component/dragdrop/droppable.directive.ts","../../../../projects/deja-js/component/dragdrop/index.ts","../../../../projects/deja-js/component/dragdrop/deja-js-component-dragdrop.ts"],"sourcesContent":["/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\nimport { Directive, ElementRef, HostBinding, Input, Optional } from '@angular/core';\nimport { DejaClipboardService, Destroy, IdService } from '@deja-js/component/core';\nimport { filter, fromEvent, switchMap, take, takeUntil } from 'rxjs';\n\n@Directive({\n    selector: '[deja-draggable]'\n})\nexport class DejaDraggableDirective extends Destroy {\n    @HostBinding('attr.draggable') public draggable: boolean = null;\n    @HostBinding('attr.dragdropid') public dragdropid: string;\n    private draginfokey = 'draginfos';\n    private objectKey = 'object';\n    private elementKey = 'element';\n    private uuidKey = 'uuid';\n    private _context: IDejaDragContext;\n\n    @Input('deja-draggable')\n    public set context(value: IDejaDragContext) {\n        this._context = value;\n        this.draggable = !!value || null;\n    }\n\n    public get context(): IDejaDragContext {\n        return this._context;\n    }\n\n    public constructor(elementRef: ElementRef, @Optional() private clipboardService: DejaClipboardService, idService: IdService) {\n        super();\n\n        const element = elementRef.nativeElement as HTMLElement;\n\n        fromEvent<DragEvent>(element, 'dragstart').pipe(\n            filter(() => !!this.context),\n            switchMap(event => {\n                if (!clipboardService) {\n                    throw new Error('To use the DejaDraggableDirective, please import and provide the DejaClipboardService in your application.');\n                }\n\n                // console.log('dragstart');\n                const dragInfos = {} as Record<string, unknown>;\n                this.dragdropid = idService.generate();\n                dragInfos[this.uuidKey] = this.dragdropid;\n\n                const object = this.context?.object || element;\n                dragInfos[this.objectKey] = object;\n                dragInfos[this.elementKey] = element;\n\n                this.clipboardService.set(this.draginfokey, dragInfos);\n\n                let data = 'notavailable';\n                if (object) {\n                    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n                    (<any>object).dragged = true;\n                    data = JSON.stringify(data);\n                }\n\n                if (this.context?.dragstartcallback) {\n                    const e = event as IDejaDragEvent;\n                    e.dragInfo = dragInfos;\n                    e.dragObject = this.context.object;\n                    e.dragElement = element;\n                    this.context.dragstartcallback(e);\n                    event.dataTransfer.setData('text/plain', data);\n                    if (e.defaultPrevented) {\n                        event.preventDefault();\n                    }\n                }\n\n                return fromEvent<DragEvent>(element, 'dragend').pipe(\n                    take(1)\n                );\n            }),\n            takeUntil(this.destroyed$)\n        ).subscribe(evt => {\n            // console.log('dragend');\n            const dragEndInfos = this.clipboardService.get(this.draginfokey) as Record<string, unknown>;\n            const obj = dragEndInfos?.[this.objectKey];\n            if (obj) {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n                delete (<any>obj).dragged;\n            }\n\n            if (this.context?.dragendcallback && dragEndInfos) {\n                const e = evt as IDejaDragEvent;\n                e.dragInfo = dragEndInfos;\n                e.dragObject = obj;\n                e.dragElement = dragEndInfos[this.elementKey] as HTMLElement;\n                this.context.dragendcallback(e);\n\n                if (e.defaultPrevented) {\n                    evt.stopPropagation();\n                }\n            }\n\n            this.clipboardService.clear();\n            this.dragdropid = undefined;\n        });\n    }\n}\n\nexport interface IDejaDragEvent extends DragEvent {\n    dragInfo: Record<string, unknown>;\n    dragObject: unknown;\n    dragElement: HTMLElement;\n}\n\nexport interface IDejaDragContext {\n    object?: unknown;\n    dragstartcallback?: (event: IDejaDragEvent) => void;\n    dragendcallback?: (event: IDejaDragEvent) => void;\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, HostBinding, Input, Optional } from '@angular/core';\nimport { DejaClipboardService, Destroy } from '@deja-js/component/core';\nimport { filter, fromEvent, mergeWith, switchMap, take, takeUntil, tap } from 'rxjs';\n\nimport { IDejaDragEvent } from './draggable.directive';\n\n\n@Directive({\n    selector: '[deja-droppable]'\n})\nexport class DejaDroppableDirective extends Destroy {\n\n    /**\n     * @deprecated\n     */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('continous-dragover')\n    public set allEvents(value: BooleanInput) {\n        this._allEvents = coerceBooleanProperty(value);\n    }\n\n    @HostBinding('attr.droppable') public droppable: boolean = null;\n    private draginfokey = 'draginfos';\n    private objectKey = 'object';\n    private droppedKey = 'dropped';\n    private elementKey = 'element';\n    private lastTarget: EventTarget;\n    private lastAccept: boolean;\n    private _allEvents = false;\n    private _context: IDejaDropContext;\n\n    @Input('deja-droppable')\n    public set context(value: IDejaDropContext) {\n        this._context = value;\n        this.droppable = !!value || null;\n    }\n\n    public get context(): IDejaDropContext {\n        return this._context;\n    }\n\n    public constructor(elementRef: ElementRef, @Optional() private clipboardService: DejaClipboardService) {\n        super();\n\n        let inDrag = false;\n        const element = elementRef.nativeElement as HTMLElement;\n\n        // DragEnter event\n        const dragEnterEvent$ = fromEvent<DragEvent>(element, 'dragenter').pipe(\n            tap(() => {\n                if (!clipboardService) {\n                    throw new Error('To use the DejaDroppableDirective, please import and provide the DejaClipboardService in your application.');\n                }\n            }),\n            filter(() => !inDrag && !!this.context && !!this.context.dragentercallback && !!this.clipboardService.get(this.draginfokey)),\n            tap(() => inDrag = true)\n        );\n\n        // DragLeave event\n        const dragLeaveEvent$ = fromEvent<DragEvent>(element, 'dragleave').pipe(\n            filter(() => inDrag && !!this.context && !!this.clipboardService.get(this.draginfokey)),\n            filter(leaveEvent => {\n                const bounds = element.getBoundingClientRect();\n                const inside = leaveEvent.x >= bounds.left && leaveEvent.x <= bounds.right && leaveEvent.y >= bounds.top && leaveEvent.y <= bounds.bottom;\n                return !inside;\n            })\n        );\n\n        // Drop event\n        const dropEvent$ = fromEvent<DragEvent>(element, 'drop').pipe(\n            filter(() => inDrag && !!this.context && !!this.clipboardService.get(this.draginfokey))\n        );\n\n        // DragOver event\n        const dragOverEvent$ = fromEvent<DragEvent>(element, 'dragover').pipe(\n            filter(() => inDrag)\n        );\n\n        const dragEndEvent$ = dragEnterEvent$.pipe(\n            mergeWith(dragLeaveEvent$, dropEvent$),\n            tap(() => inDrag = false)\n        );\n\n        // DragEnter\n        dragEnterEvent$.pipe(\n            switchMap(dragEvent => {\n                const dragInfos = this.clipboardService.get(this.draginfokey) as Record<string, unknown>;\n                const e = dragEvent as IDejaDropEvent;\n                e.dragInfo = dragInfos;\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n                e.dragObject = (<any>dragEvent)[this.objectKey];\n                e.dragElement = element;\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n                e.itsMe = (<any>dragEvent)[this.elementKey] === element;\n                this.context.dragentercallback(e);\n                if (e.defaultPrevented) {\n                    dragEvent.preventDefault();\n                    dragEvent.dataTransfer.dropEffect = 'copy';\n                } else {\n                    dragEvent.dataTransfer.dropEffect = 'none';\n                }\n\n                const leave$ = dragLeaveEvent$.pipe(\n                    take(1),\n                    filter(() => !!this.context.dragleavecallback),\n                    tap(leaveEvent => {\n                        const le = new CustomEvent('DejaDragLeave', { cancelable: true });\n                        this.context.dragleavecallback(le);\n                        if (le.defaultPrevented) {\n                            leaveEvent.preventDefault();\n                        }\n                    })\n                );\n\n                const drop$ = dropEvent$.pipe(\n                    take(1),\n                    filter(() => !!this.context.dropcallback),\n                    tap(dropEvent => {\n                        if (dragInfos) {\n                            const evt = dropEvent as IDejaDropEvent;\n                            evt.dragInfo = dragInfos;\n                            evt.dragObject = dragInfos[this.objectKey];\n                            evt.dragElement = element;\n                            evt.itsMe = dragInfos[this.elementKey] === element;\n\n                            this.context.dropcallback(evt);\n                            if (evt.defaultPrevented) {\n                                evt.dragInfo[this.droppedKey] = true;\n                                dropEvent.preventDefault();\n                                dragEvent.dataTransfer.dropEffect = 'copy';\n                            } else {\n                                dragEvent.dataTransfer.dropEffect = 'none';\n                            }\n                        }\n                    })\n                );\n\n                const over$ = dragOverEvent$.pipe(\n                    // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n                    takeUntil(dragEndEvent$),\n                    tap(overEvent => {\n                        if (!this._allEvents && this.lastTarget && this.lastTarget === overEvent.target) {\n                            if (this.lastAccept) {\n                                overEvent.preventDefault();\n                                dragEvent.dataTransfer.dropEffect = 'copy';\n                            } else {\n                                dragEvent.dataTransfer.dropEffect = 'none';\n                            }\n                        } else if (this.context.dragovercallback && dragInfos) {\n                            const evt = overEvent as IDejaDropEvent;\n                            evt.dragInfo = dragInfos;\n                            evt.dragObject = dragInfos[this.objectKey];\n                            evt.dragElement = element;\n                            evt.itsMe = dragInfos[this.elementKey] === element;\n\n                            this.context.dragovercallback(evt);\n                            this.lastTarget = overEvent.target;\n                            this.lastAccept = evt.defaultPrevented;\n                            if (evt.defaultPrevented) {\n                                overEvent.preventDefault();\n                                dragEvent.dataTransfer.dropEffect = 'copy';\n                            } else {\n                                dragEvent.dataTransfer.dropEffect = 'none';\n                            }\n                        }\n                    })\n                );\n\n                return drop$.pipe(\n                    mergeWith(over$, leave$)\n                );\n            }),\n            takeUntil(this.destroyed$)\n        ).subscribe(_event => {\n            // console.log(_event.type);\n        });\n    }\n}\n\nexport interface IDejaDropEvent extends IDejaDragEvent {\n    itsMe: boolean;\n}\n\nexport interface IDejaDropContext {\n    dragentercallback: (event: IDejaDropEvent) => void;\n    dropcallback?: (event: IDejaDropEvent) => void;\n    dragovercallback?: (event: IDejaDropEvent) => void;\n    dragleavecallback?: (event: CustomEvent) => void;\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { DejaDraggableDirective } from './draggable.directive';\nimport { DejaDroppableDirective } from './droppable.directive';\n\n@NgModule({\n    declarations: [DejaDraggableDirective, DejaDroppableDirective],\n    exports: [DejaDraggableDirective, DejaDroppableDirective]\n})\nexport class DejaDragDropModule { }\n\nexport * from './draggable.directive';\nexport * from './droppable.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}