File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/ui/draganddrop/draggable/dist/draggable.bundle.js.map
Back
{"version":3,"file":"draggable.bundle.js","sources":["../src/events/base.event.js","../src/sensor/events/drag.start.sensor.event.js","../src/sensor/sensor.js","../src/sensor/events/drag.move.sensor.event.js","../src/sensor/events/drag.end.sensor.event.js","../src/sensor/events/drag.drop.sensor.event.js","../src/sensor/mousesensor/mousesensor.js","../src/sensor/touchsensor/touchsensor.js","../src/events/drag.before.start.event.js","../src/events/drag.start.event.js","../src/events/drag.move.event.js","../src/events/drag.over.event.js","../src/events/drag.over.container.event.js","../src/events/drag.enter.event.js","../src/events/drag.enter.container.event.js","../src/events/drag.out.event.js","../src/events/drag.out.container.event.js","../src/events/drag.end.event.js","../src/events/drag.over.dropzone.event.js","../src/events/drag.enter.dropzone.event.js","../src/events/drag.out.dropzone.event.js","../src/events/drag.drop.event.js","../src/draggable.js"],"sourcesContent":["import {Event} from 'main.core';\n\nexport default class BaseEvent extends Event.BaseEvent\n{\n\tconstructor(data)\n\t{\n\t\tsuper({data});\n\t}\n}","import BaseEvent from '../../events/base.event';\n\nexport class DragStartSensorEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\toriginalSource: HTMLElement,\n\t\toriginalEvent: MouseEvent | TouchEvent,\n\t\tsourceContainer: HTMLElement,\n\t};\n}","import {Type} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport {DragStartSensorEvent} from './events/drag.start.sensor.event';\n\nexport default class Sensor extends EventEmitter\n{\n\tcontainers: Array<HTMLElement>;\n\toptions: Object;\n\toriginalDragStartEvent: null | MouseEvent | TouchEvent = null;\n\tdragStartEvent: ?DragStartSensorEvent = null;\n\n\tconstructor(container: HTMLElement | Array<HTMLElement> = [], options: Object = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.DragAndDrop.Draggable.Sensor');\n\n\t\tconst {dropzone} = options;\n\t\tthis.containers = Type.isArray(container) ? [...container] : [container];\n\t\tthis.dropzones = Type.isArrayLike(dropzone) ? [...dropzone] : [dropzone];\n\t\tthis.options = {delay: 0, ...options};\n\t}\n\n\tgetDocument(): HTMLDocument\n\t{\n\t\treturn this.options.context.document;\n\t}\n\n\taddContainer(...containers: Array<HTMLElement>)\n\t{\n\t\tthis.containers = [...this.containers, ...containers];\n\t}\n\n\tremoveContainer(...containers: Array<HTMLElement>)\n\t{\n\t\tthis.containers = this.containers.filter((container) => {\n\t\t\treturn !containers.includes(container);\n\t\t});\n\t}\n\n\tgetContainerByChild(childElement: HTMLElement): ?HTMLElement\n\t{\n\t\treturn this.containers.find((container) => {\n\t\t\treturn container.contains(childElement);\n\t\t});\n\t}\n\n\taddDropzone(...dropzones: Array<HTMLElement>)\n\t{\n\t\tthis.dropzones = [...this.dropzones, ...dropzones];\n\t}\n\n\tremoveDropzone(...dropzones: Array<HTMLElement>)\n\t{\n\t\tthis.dropzones = this.dropzones.filter((dropzone) => {\n\t\t\treturn !dropzones.includes(dropzone);\n\t\t});\n\t}\n\n\tgetDropzoneByChild(childElement: HTMLElement): ?HTMLElement\n\t{\n\t\treturn this.dropzones.find((dropzone) => {\n\t\t\treturn dropzone.contains(childElement);\n\t\t});\n\t}\n\n\t// eslint-disable-next-line class-methods-use-this\n\tgetElementFromPoint(x: number, y: number): HTMLElement\n\t{\n\t\treturn this.getDocument().elementFromPoint(x, y);\n\t}\n\n\t// eslint-disable-next-line class-methods-use-this\n\tpreventDefaultEventAction(event)\n\t{\n\t\tif (event.cancelable)\n\t\t{\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tisDragging(): boolean\n\t{\n\t\treturn this.dragStartEvent && !this.dragStartEvent.isDefaultPrevented();\n\t}\n\n\tenable()\n\t{\n\t\treturn this;\n\t}\n\n\tdisable()\n\t{\n\t\treturn this;\n\t}\n\n\tgetDragElementByChild(child: HTMLElement): ?HTMLElement\n\t{\n\t\tif (child)\n\t\t{\n\t\t\tconst {dragElement} = this.options;\n\t\t\treturn child.closest(dragElement) || null;\n\t\t}\n\n\t\treturn null;\n\t}\n}","import BaseEvent from '../../events/base.event';\n\nexport class DragMoveSensorEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\toriginalSource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\tover: HTMLElement,\n\t\toverContainer: HTMLElement,\n\t\toriginalEvent: MouseEvent | TouchEvent,\n\t};\n}","import BaseEvent from '../../events/base.event';\n\nexport class DragEndSensorEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\toriginalSource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\tover: HTMLElement,\n\t\toverContainer: HTMLElement,\n\t\toriginalEvent: HTMLElement,\n\t};\n}","import BaseEvent from '../../events/base.event';\n\nexport class DragDropSensorEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\toriginalSource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\tover: HTMLElement,\n\t\toverContainer: HTMLElement,\n\t\toriginalEvent: HTMLElement,\n\t\tdropzone: HTMLElement,\n\t};\n}","import Sensor from '../sensor';\nimport {DragStartSensorEvent} from '../events/drag.start.sensor.event';\nimport {DragMoveSensorEvent} from '../events/drag.move.sensor.event';\nimport {DragEndSensorEvent} from '../events/drag.end.sensor.event';\nimport {DragDropSensorEvent} from '../events/drag.drop.sensor.event';\n\nexport default class MouseSensor extends Sensor\n{\n\tconstructor(container = [], options = {})\n\t{\n\t\tsuper(container, options);\n\n\t\tthis.mousedownTimeoutId = null;\n\n\t\tthis.onMouseDown = this.onMouseDown.bind(this);\n\t\tthis.onMouseMove = this.onMouseMove.bind(this);\n\t\tthis.onMouseUp = this.onMouseUp.bind(this);\n\t\tthis.onDragStart = this.onDragStart.bind(this);\n\t}\n\n\tenable()\n\t{\n\t\tthis.getDocument().addEventListener('mousedown', this.onMouseDown, true);\n\t}\n\n\tdisable()\n\t{\n\t\tthis.getDocument().removeEventListener('mousedown', this.onMouseDown, true);\n\t}\n\n\tstartHandleMouseUp()\n\t{\n\t\tthis.getDocument().addEventListener('mouseup', this.onMouseUp);\n\t}\n\n\tstopHandleMouseUp()\n\t{\n\t\tthis.getDocument().removeEventListener('mouseup', this.onMouseUp);\n\t}\n\n\tstartHandleMouseMove()\n\t{\n\t\tthis.getDocument().addEventListener('mousemove', this.onMouseMove);\n\t}\n\n\tstopHandleMouseMove()\n\t{\n\t\tthis.getDocument().removeEventListener('mousemove', this.onMouseMove);\n\t}\n\n\tstartPreventContextMenu()\n\t{\n\t\tthis.getDocument().addEventListener('contextmenu', this.preventDefaultEventAction, true);\n\t}\n\n\tstopPreventContextMenu()\n\t{\n\t\tthis.getDocument().removeEventListener('contextmenu', this.preventDefaultEventAction, true);\n\t}\n\n\tstartPreventNativeDragAndDrop()\n\t{\n\t\tthis.getDocument().addEventListener('dragstart', this.preventDefaultEventAction);\n\t}\n\n\tstopPreventNativeDragAndDrop()\n\t{\n\t\tthis.getDocument().removeEventListener('dragstart', this.preventDefaultEventAction);\n\t}\n\n\tonMouseDown(event: MouseEvent)\n\t{\n\t\tif (!event.ctrlKey && !event.metaKey && !event.button)\n\t\t{\n\t\t\tthis.originalDragStartEvent = event;\n\t\t\tconst container = this.getContainerByChild(event.target);\n\n\t\t\tif (container)\n\t\t\t{\n\t\t\t\tconst dragElement = this.getDragElementByChild(event.target);\n\t\t\t\tif (dragElement)\n\t\t\t\t{\n\t\t\t\t\tthis.startHandleMouseUp();\n\t\t\t\t\tthis.startPreventNativeDragAndDrop();\n\n\t\t\t\t\tthis.mousedownTimeoutId = setTimeout(() => {\n\t\t\t\t\t\tthis.onDragStart();\n\t\t\t\t\t}, this.options.delay);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tonDragStart()\n\t{\n\t\tconst sourceContainer = this.getContainerByChild(\n\t\t\tthis.originalDragStartEvent.target,\n\t\t);\n\n\t\tthis.dragStartEvent = new DragStartSensorEvent({\n\t\t\tclientX: this.originalDragStartEvent.clientX,\n\t\t\tclientY: this.originalDragStartEvent.clientY,\n\t\t\toriginalSource: this.originalDragStartEvent.target,\n\t\t\toriginalEvent: this.originalDragStartEvent,\n\t\t\tsourceContainer,\n\t\t});\n\n\t\tthis.emit('drag:start', this.dragStartEvent);\n\n\t\tif (this.isDragging())\n\t\t{\n\t\t\tthis.startPreventContextMenu();\n\t\t\tthis.startHandleMouseMove();\n\t\t}\n\t}\n\n\tonMouseMove(originalEvent)\n\t{\n\t\tif (this.isDragging())\n\t\t{\n\t\t\tconst {clientX, clientY} = originalEvent;\n\t\t\tconst over = this.getElementFromPoint(clientX, clientY);\n\t\t\tconst overContainer = this.getContainerByChild(over);\n\t\t\tconst {originalSource, sourceContainer} = this.dragStartEvent.data;\n\n\t\t\tconst dragMoveEvent = new DragMoveSensorEvent({\n\t\t\t\tclientX,\n\t\t\t\tclientY,\n\t\t\t\toriginalSource,\n\t\t\t\tsourceContainer,\n\t\t\t\tover,\n\t\t\t\toverContainer,\n\t\t\t\toriginalEvent,\n\t\t\t});\n\n\t\t\tthis.emit('drag:move', dragMoveEvent);\n\t\t}\n\t}\n\n\tonMouseUp(originalEvent)\n\t{\n\t\tclearTimeout(this.mousedownTimeoutId);\n\n\t\tthis.stopHandleMouseUp();\n\t\tthis.stopPreventNativeDragAndDrop();\n\n\t\tif (this.isDragging())\n\t\t{\n\t\t\tconst {clientX, clientY} = originalEvent;\n\t\t\tconst over = this.getElementFromPoint(clientX, clientY);\n\t\t\tconst overContainer = this.getContainerByChild(over);\n\t\t\tconst {originalSource, sourceContainer} = this.dragStartEvent.data;\n\n\t\t\tconst dragEndEvent = new DragEndSensorEvent({\n\t\t\t\tclientX,\n\t\t\t\tclientY,\n\t\t\t\toriginalSource,\n\t\t\t\tsourceContainer,\n\t\t\t\tover,\n\t\t\t\toverContainer,\n\t\t\t\toriginalEvent,\n\t\t\t});\n\n\t\t\tthis.emit('drag:end', dragEndEvent);\n\n\t\t\tif (!dragEndEvent.isDefaultPrevented())\n\t\t\t{\n\t\t\t\tconst dropzone = this.getDropzoneByChild(over);\n\n\t\t\t\tif (dropzone)\n\t\t\t\t{\n\t\t\t\t\tconst dragDropEvent = new DragDropSensorEvent({\n\t\t\t\t\t\tclientX,\n\t\t\t\t\t\tclientY,\n\t\t\t\t\t\toriginalSource,\n\t\t\t\t\t\tsourceContainer,\n\t\t\t\t\t\tover,\n\t\t\t\t\t\toverContainer,\n\t\t\t\t\t\toriginalEvent,\n\t\t\t\t\t\tdropzone,\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.emit('drag:drop', dragDropEvent);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.stopPreventContextMenu();\n\t\t\tthis.stopHandleMouseMove();\n\t\t}\n\n\t\tthis.originalDragStartEvent = null;\n\t}\n}","import Sensor from '../sensor';\nimport {DragStartSensorEvent} from '../events/drag.start.sensor.event';\nimport {DragMoveSensorEvent} from '../events/drag.move.sensor.event';\nimport {DragEndSensorEvent} from '../events/drag.end.sensor.event';\nimport {DragDropSensorEvent} from '../events/drag.drop.sensor.event';\n\nlet preventScrolling = false;\nwindow.addEventListener(\n\t'touchmove',\n\t(event) => {\n\t\tif (preventScrolling)\n\t\t{\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\t{passive: false},\n);\n\nexport default class TouchSensor extends Sensor\n{\n\tconstructor(container = [], options = {})\n\t{\n\t\tsuper(container, options);\n\n\t\tthis.tapTimeoutId = null;\n\t\tthis.touchMoved = false;\n\n\t\tthis.onTouchStart = this.onTouchStart.bind(this);\n\t\tthis.onTouchEnd = this.onTouchEnd.bind(this);\n\t\tthis.onTouchMove = this.onTouchMove.bind(this);\n\t\tthis.onDragStart = this.onDragStart.bind(this);\n\t}\n\n\tenable()\n\t{\n\t\tthis.getDocument().addEventListener('touchstart', this.onTouchStart);\n\t}\n\n\tdisable()\n\t{\n\t\tthis.getDocument().removeEventListener('touchstart', this.onTouchStart);\n\t}\n\n\tisTouchMoved(): boolean\n\t{\n\t\treturn this.touchMoved;\n\t}\n\n\t// eslint-disable-next-line class-methods-use-this\n\tstartPreventScrolling()\n\t{\n\t\tpreventScrolling = true;\n\t}\n\n\t// eslint-disable-next-line class-methods-use-this\n\tstopPreventScrolling()\n\t{\n\t\tpreventScrolling = false;\n\t}\n\n\tstartPreventContextMenu()\n\t{\n\t\tthis.getDocument().addEventListener('contextmenu', this.preventDefaultEventAction, true);\n\t}\n\n\tstopPreventContextMenu()\n\t{\n\t\tthis.getDocument().removeEventListener('contextmenu', this.preventDefaultEventAction, true);\n\t}\n\n\tstartHandleTouchEvents()\n\t{\n\t\tthis.getDocument().addEventListener('touchmove', this.onTouchMove);\n\t\tthis.getDocument().addEventListener('touchend', this.onTouchEnd);\n\t\tthis.getDocument().addEventListener('touchcancel', this.onTouchEnd);\n\t}\n\n\tstopHandleTouchEvents()\n\t{\n\t\tthis.getDocument().removeEventListener('touchmove', this.onTouchMove);\n\t\tthis.getDocument().removeEventListener('touchend', this.onTouchEnd);\n\t\tthis.getDocument().removeEventListener('touchcancel', this.onTouchEnd);\n\t}\n\n\tonTouchStart(event)\n\t{\n\t\tconst container = this.getContainerByChild(event.target);\n\t\tif (container)\n\t\t{\n\t\t\tconst dragElement = this.getDragElementByChild(event.target);\n\t\t\tif (dragElement)\n\t\t\t{\n\t\t\t\tthis.originalDragStartEvent = event;\n\n\t\t\t\tthis.startHandleTouchEvents();\n\t\t\t\tthis.startPreventContextMenu();\n\t\t\t\tthis.startPreventScrolling();\n\n\t\t\t\tthis.tapTimeoutId = setTimeout(() => {\n\t\t\t\t\tif (!this.isTouchMoved())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.onDragStart();\n\t\t\t\t\t}\n\t\t\t\t}, this.options.delay);\n\t\t\t}\n\t\t}\n\t}\n\n\tonDragStart()\n\t{\n\t\tconst touch = (\n\t\t\tthis.originalDragStartEvent.touches[0]\n\t\t\t|| this.originalDragStartEvent.changedTouches[0]\n\t\t);\n\n\t\tconst sourceContainer = this.getContainerByChild(this.originalDragStartEvent.target);\n\n\t\tthis.dragStartEvent = new DragStartSensorEvent({\n\t\t\tclientX: touch.clientX,\n\t\t\tclientY: touch.clientY,\n\t\t\toriginalSource: this.originalDragStartEvent.target,\n\t\t\toriginalEvent: this.originalDragStartEvent,\n\t\t\tsourceContainer,\n\t\t});\n\n\t\tthis.emit('drag:start', this.dragStartEvent);\n\t}\n\n\tonTouchMove(originalEvent)\n\t{\n\t\tthis.touchMoved = true;\n\n\t\tif (this.isDragging())\n\t\t{\n\t\t\tconst touch = originalEvent.touches[0] || originalEvent.changedTouches[0];\n\t\t\tconst {clientX, clientY} = touch;\n\t\t\tconst over = this.getElementFromPoint(clientX, clientY);\n\t\t\tconst overContainer = this.getContainerByChild(over);\n\t\t\tconst {originalSource, sourceContainer} = this.dragStartEvent.data;\n\n\t\t\tconst dragMoveEvent = new DragMoveSensorEvent({\n\t\t\t\tclientX,\n\t\t\t\tclientY,\n\t\t\t\toriginalSource,\n\t\t\t\tsourceContainer,\n\t\t\t\tover,\n\t\t\t\toverContainer,\n\t\t\t\toriginalEvent,\n\t\t\t});\n\n\t\t\tthis.emit('drag:move', dragMoveEvent);\n\t\t}\n\t}\n\n\tonTouchEnd(originalEvent)\n\t{\n\t\tclearTimeout(this.tapTimeoutId);\n\n\t\tthis.stopPreventScrolling();\n\t\tthis.stopPreventContextMenu();\n\t\tthis.stopHandleTouchEvents();\n\n\t\tif (this.isDragging())\n\t\t{\n\t\t\tconst touch = originalEvent.touches[0] || originalEvent.changedTouches[0];\n\t\t\tconst {clientX, clientY} = touch;\n\t\t\tconst over = this.getElementFromPoint(clientX, clientY);\n\t\t\tconst overContainer = this.getContainerByChild(over);\n\t\t\tconst {originalSource, sourceContainer} = this.dragStartEvent.data;\n\n\t\t\tconst dragEndEvent = new DragEndSensorEvent({\n\t\t\t\tclientX,\n\t\t\t\tclientY,\n\t\t\t\toriginalSource,\n\t\t\t\tsourceContainer,\n\t\t\t\tover,\n\t\t\t\toverContainer,\n\t\t\t\toriginalEvent,\n\t\t\t});\n\n\t\t\tthis.emit('drag:end', dragEndEvent);\n\n\t\t\tif (!dragEndEvent.isDefaultPrevented())\n\t\t\t{\n\t\t\t\tconst dropzone = this.getDropzoneByChild(over);\n\n\t\t\t\tif (dropzone)\n\t\t\t\t{\n\t\t\t\t\tconst dragDropEvent = new DragDropSensorEvent({\n\t\t\t\t\t\tclientX,\n\t\t\t\t\t\tclientY,\n\t\t\t\t\t\toriginalSource,\n\t\t\t\t\t\tsourceContainer,\n\t\t\t\t\t\tover,\n\t\t\t\t\t\toverContainer,\n\t\t\t\t\t\toriginalEvent,\n\t\t\t\t\t\tdropzone,\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.emit('drag:drop', dragDropEvent);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.originalDragStartEvent = null;\n\t\tthis.dragStartEvent = null;\n\t\tthis.touchMoved = false;\n\t}\n}","import BaseEvent from './base.event';\n\nexport class DragBeforeStartEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t};\n}\n","import BaseEvent from './base.event';\n\nexport class DragStartEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tpointerOffsetX: number,\n\t\tpointerOffsetY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragMoveEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\toffsetX: number,\n\t\toffsetY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragOverEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t\tover: HTMLElement,\n\t\toriginalOver: HTMLElement,\n\t\toverContainer: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragOverContainerEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t\tover: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragEnterEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t\tenter: HTMLElement,\n\t\tenterContainer: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragEnterContainerEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t\tenter: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragOutEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t\tout: HTMLElement,\n\t\toutContainer: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragOutContainerEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t\tout: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragEndEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragOverDropzoneEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t\toriginalOver: HTMLElement,\n\t\tdropzone: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragEnterDropzoneEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t\tdropzone: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragOutDropzoneEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t\tdropzone: HTMLElement,\n\t};\n}","import BaseEvent from './base.event';\n\nexport class DragDropEvent extends BaseEvent\n{\n\tdata: {\n\t\tclientX: number,\n\t\tclientY: number,\n\t\tsource: HTMLElement,\n\t\tsourceContainer: HTMLElement,\n\t\toriginalSource: HTMLElement,\n\t\tdropzone: HTMLElement,\n\t};\n}","import {Type, Dom, Cache, Runtime, Tag, Text} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\n\nimport typeof Sensor from './sensor/sensor';\nimport MouseSensor from './sensor/mousesensor/mousesensor';\nimport TouchSensor from './sensor/touchsensor/touchsensor';\n\nimport {DragBeforeStartEvent} from './events/drag.before.start.event';\nimport {DragStartEvent} from './events/drag.start.event';\nimport {DragMoveEvent} from './events/drag.move.event';\nimport {DragOverEvent} from './events/drag.over.event';\nimport {DragOverContainerEvent} from './events/drag.over.container.event';\nimport {DragEnterEvent} from './events/drag.enter.event';\nimport {DragEnterContainerEvent} from './events/drag.enter.container.event';\nimport {DragOutEvent} from './events/drag.out.event';\nimport {DragOutContainerEvent} from './events/drag.out.container.event';\nimport {DragEndEvent} from './events/drag.end.event';\nimport {DragOverDropzoneEvent} from './events/drag.over.dropzone.event';\nimport {DragEnterDropzoneEvent} from './events/drag.enter.dropzone.event';\nimport {DragOutDropzoneEvent} from './events/drag.out.dropzone.event';\nimport {DragDropEvent} from './events/drag.drop.event';\n\nimport typeof {DragStartSensorEvent} from './sensor/events/drag.start.sensor.event';\nimport typeof {DragMoveSensorEvent} from './sensor/events/drag.move.sensor.event';\nimport typeof {DragEndSensorEvent} from './sensor/events/drag.end.sensor.event';\nimport typeof {DragDropSensorEvent} from './sensor/events/drag.drop.sensor.event';\n\nimport './css/style.css';\n\ntype DraggableOptions = {\n\tcontainer: HTMLElement | Array<HTMLElement> | NodeList,\n\tdropzone: HTMLElement | Array<HTMLElement> | NodeList,\n\tdraggable?: string,\n\tdragElement?: string,\n\tdelay?: number,\n\tsensors?: Array<Sensor>,\n\ttransitionDuration: number,\n\tcontext?: Window,\n\toffset?: {\n\t\tx?: number,\n\t\ty?: number,\n\t},\n};\n\nconst defaultSensors = [\n\tMouseSensor,\n\tTouchSensor,\n];\n\nconst optionsKey = Symbol('options');\nconst sensorsKey = Symbol('sensors');\nconst containersKey = Symbol('containers');\nconst dropzonesKey = Symbol('dropzones');\n\n/**\n * @namespace BX.UI.DragAndDrop\n */\nexport class Draggable extends EventEmitter\n{\n\tstatic MOVE = 'move';\n\tstatic CLONE = 'clone';\n\tstatic DROP_PREVIEW = 'drop-preview';\n\tstatic HEADLESS = 'headless';\n\n\t[optionsKey]: DraggableOptions = {\n\t\tdelay: 0,\n\t\tsensors: [],\n\t\tdraggable: '.ui-draggable--item',\n\t\ttype: 'move',\n\t\ttransitionDuration: 150,\n\t\tdropzone: [],\n\t\tcontext: window,\n\t\toffset: {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t},\n\t};\n\n\t[containersKey] = [];\n\t[dropzonesKey] = [];\n\t[sensorsKey] = [];\n\n\tdragStartEvent: ?DragStartEvent = null;\n\n\tconstructor(options: DraggableOptions = {})\n\t{\n\t\tsuper(options);\n\t\tthis.setEventNamespace('BX.UI.DragAndDrop.Draggable');\n\n\t\tthis.cache = new Cache.MemoryCache();\n\t\tthis.onDragStart = this.onDragStart.bind(this);\n\t\tthis.onDragMove = this.onDragMove.bind(this);\n\t\tthis.onDragEnd = this.onDragEnd.bind(this);\n\t\tthis.onDragDrop = this.onDragDrop.bind(this);\n\n\t\tif (\n\t\t\tType.isArray(options.container)\n\t\t\t|| Type.isDomNode(options.container)\n\t\t\t|| options.container instanceof NodeList\n\t\t)\n\t\t{\n\t\t\tif (options.container instanceof NodeList)\n\t\t\t{\n\t\t\t\tthis.addContainer(...options.container);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.addContainer(...[options.container].flat());\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new Error('Option container not a HTMLElement, Array of HTMLElement or NodeList');\n\t\t}\n\n\t\tif (!Type.isNil(options.dropzone))\n\t\t{\n\t\t\tif (\n\t\t\t\tType.isArray(options.dropzone)\n\t\t\t\t|| Type.isDomNode(options.dropzone)\n\t\t\t\t|| options.dropzone instanceof NodeList\n\t\t\t)\n\t\t\t{\n\t\t\t\tif (options.dropzone instanceof NodeList)\n\t\t\t\t{\n\t\t\t\t\tthis.addDropzone(...[...options.dropzone]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.addDropzone(...[options.dropzone].flat());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.setOptions({\n\t\t\t...this.getOptions(),\n\t\t\t...options,\n\t\t});\n\n\t\tconst {sensors} = this.getOptions();\n\t\tthis.addSensor(...[\n\t\t\t...defaultSensors,\n\t\t\t...sensors,\n\t\t]);\n\t}\n\n\tgetDocument(): HTMLDocument\n\t{\n\t\treturn this.getOptions().context.document;\n\t}\n\n\tgetOptions(): DraggableOptions\n\t{\n\t\treturn this[optionsKey];\n\t}\n\n\tsetOptions(options: {[key: string]: any})\n\t{\n\t\tthis[optionsKey] = {...options};\n\n\t\tif (!Type.isString(this[optionsKey].dragElement))\n\t\t{\n\t\t\tthis[optionsKey].dragElement = this[optionsKey].draggable;\n\t\t}\n\n\t\tif (!Type.isPlainObject(this[optionsKey].offset))\n\t\t{\n\t\t\tthis[optionsKey].offset = {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t};\n\t\t}\n\n\t\tif (!Type.isNumber(this[optionsKey].offset.x))\n\t\t{\n\t\t\tthis[optionsKey].offset.x = 0;\n\t\t}\n\n\t\tif (!Type.isNumber(this[optionsKey].offset.y))\n\t\t{\n\t\t\tthis[optionsKey].offset.y = 0;\n\t\t}\n\n\t\tthis.invalidateCache();\n\t}\n\n\tisDragging(): boolean\n\t{\n\t\treturn this.dragStartEvent && !this.dragStartEvent.isDefaultPrevented();\n\t}\n\n\tgetSensors(): Array<Sensor>\n\t{\n\t\treturn this[sensorsKey];\n\t}\n\n\taddSensor(...sensors: Array<Sensor>)\n\t{\n\t\tconst initializedSensors = sensors.map((CurrentSensor) => {\n\t\t\tconst instance = new CurrentSensor(\n\t\t\t\tthis.getContainers(),\n\t\t\t\tthis.getOptions(),\n\t\t\t);\n\n\t\t\tinstance.subscribe('drag:start', this.onDragStart);\n\t\t\tinstance.subscribe('drag:move', this.onDragMove);\n\t\t\tinstance.subscribe('drag:end', this.onDragEnd);\n\t\t\tinstance.subscribe('drag:drop', this.onDragDrop);\n\n\t\t\tinstance.enable();\n\n\t\t\treturn instance;\n\t\t});\n\n\t\tthis[sensorsKey] = [\n\t\t\t...this.getSensors(),\n\t\t\t...initializedSensors,\n\t\t];\n\t}\n\n\tremoveSensor(...sensors: Array<Sensor>)\n\t{\n\t\tconst removedSensors = this.getSensors().filter((sensor) => {\n\t\t\treturn sensors.includes(sensor.constructor);\n\t\t});\n\n\t\tremovedSensors.forEach((sensor: Sensor) => {\n\t\t\tsensor.unsubscribe('drag:start', this.onDragStart);\n\t\t\tsensor.unsubscribe('drag:move', this.onDragMove);\n\t\t\tsensor.unsubscribe('drag:end', this.onDragEnd);\n\t\t\tsensor.unsubscribe('drag:drop', this.onDragDrop);\n\t\t\tsensor.enable();\n\t\t});\n\n\t\tthis[sensorsKey] = this.getSensors().filter((sensor) => {\n\t\t\treturn !removedSensors.includes(sensor);\n\t\t});\n\t}\n\n\tgetContainers(): Array<HTMLElement>\n\t{\n\t\treturn this[containersKey];\n\t}\n\n\tgetContainerByChild(childElement: HTMLElement): ?HTMLElement\n\t{\n\t\treturn this.getContainers().find((container) => {\n\t\t\treturn container.contains(childElement);\n\t\t});\n\t}\n\n\taddContainer(...containers: Array<HTMLElement>)\n\t{\n\t\tthis[containersKey] = [\n\t\t\t...this.getContainers(),\n\t\t\t...containers,\n\t\t];\n\n\t\tthis[containersKey].forEach((container) => {\n\t\t\tDom.addClass(container, 'ui-draggable--container');\n\t\t});\n\n\t\tthis.getSensors().forEach((sensor) => {\n\t\t\tsensor.addContainer(...containers);\n\t\t});\n\n\t\tthis.invalidateContainersCache();\n\t}\n\n\tremoveContainer(...containers: Array<HTMLElement>)\n\t{\n\t\tthis[containersKey] = this.getContainers().filter((container) => {\n\t\t\treturn !containers.includes(container);\n\t\t});\n\n\t\tthis.getSensors().forEach((sensor) => {\n\t\t\tsensor.removeContainer(...containers);\n\t\t});\n\n\t\tthis.invalidateContainersCache();\n\t}\n\n\tgetDropzones(): Array<HTMLElement>\n\t{\n\t\treturn this[dropzonesKey];\n\t}\n\n\tgetDropzoneByChild(childElement: HTMLElement): ?HTMLElement\n\t{\n\t\treturn this.getDropzones().find((dropzone) => {\n\t\t\treturn dropzone.contains(childElement);\n\t\t});\n\t}\n\n\taddDropzone(...dropzones: Array<HTMLElement>)\n\t{\n\t\tthis[dropzonesKey] = [\n\t\t\t...this.getDropzones(),\n\t\t\t...dropzones,\n\t\t];\n\n\t\tthis[dropzonesKey].forEach((dropzone) => {\n\t\t\tDom.addClass(dropzone, 'ui-draggable--dropzone');\n\t\t});\n\n\t\tthis.getSensors().forEach((sensor) => {\n\t\t\tsensor.addDropzone(...dropzones);\n\t\t});\n\t}\n\n\tremoveDropzone(...dropzones: Array<HTMLElement>)\n\t{\n\t\tthis[dropzonesKey] = this.getContainers().filter((dropzone) => {\n\t\t\treturn !dropzones.includes(dropzone);\n\t\t});\n\n\t\tthis.getSensors().forEach((sensor) => {\n\t\t\tsensor.removeDropzone(...dropzones);\n\t\t});\n\t}\n\n\tgetDraggableElements(): Array<HTMLElement>\n\t{\n\t\treturn this.cache.remember('draggableElements', () => {\n\t\t\treturn this.getContainers().reduce((acc, container) => {\n\t\t\t\treturn [...acc, ...this.getDraggableElementsOfContainer(container)];\n\t\t\t}, []);\n\t\t});\n\t}\n\n\tgetDraggableElementsOfContainer(container: HTMLElement): Array<HTMLElement>\n\t{\n\t\treturn this.cache.remember(container, () => {\n\t\t\tconst draggableSelector = this.getOptions().draggable;\n\t\t\tconst notDraggable = ':not(.ui-draggable--draggable)';\n\t\t\tconst notDropPreview = ':not(.ui-draggable--drop-preview)';\n\n\t\t\tconst filter = `${notDraggable}${notDropPreview}`;\n\t\t\tconst selector = `${draggableSelector}${filter}`;\n\n\t\t\tconst elements = [...container.querySelectorAll(selector)];\n\n\t\t\treturn elements.filter((element) => element.parentElement === container);\n\t\t});\n\t}\n\n\tgetLastDraggableElementOfContainer(container): ?HTMLElement\n\t{\n\t\tconst draggableElements = this.getDraggableElementsOfContainer(container);\n\t\treturn draggableElements[draggableElements.length - 1] || null;\n\t}\n\n\tgetElementIndex(element: HTMLElement): number\n\t{\n\t\treturn this.getDraggableElements().indexOf(element);\n\t}\n\n\tgetDropPreview()\n\t{\n\t\treturn this.cache.remember('dropPreview', () => {\n\t\t\tconst {type} = this.getOptions();\n\t\t\tconst source = this.getSource();\n\t\t\tif (source === null)\n\t\t\t{\n\t\t\t\treturn Tag.render`<div></div>`;\n\t\t\t}\n\t\t\tconst sourceRect = this.getSourceClientRect();\n\t\t\tlet dropPreview;\n\n\t\t\tif (type === Draggable.CLONE)\n\t\t\t{\n\t\t\t\tdropPreview = Runtime.clone(source);\n\t\t\t\tDom.addClass(dropPreview, 'ui-draggable--drop-preview-clone');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdropPreview = Tag.render`<div></div>`;\n\t\t\t}\n\n\t\t\tDom.addClass(dropPreview, 'ui-draggable--drop-preview');\n\t\t\tDom.style(dropPreview, {\n\t\t\t\twidth: `${sourceRect.width}px`,\n\t\t\t\theight: `${sourceRect.height}px`,\n\t\t\t});\n\n\t\t\treturn dropPreview;\n\t\t});\n\t}\n\n\tmove(element, {x = 0, y = 0})\n\t{\n\t\tconst {transitionDuration} = this.getOptions();\n\n\t\trequestAnimationFrame(() => {\n\t\t\tDom.style(element, {\n\t\t\t\ttransform: `translate3d(${x}px, ${y}px, 0px)`,\n\t\t\t\ttransition: `all ${transitionDuration}ms ease 0s`,\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * @private\n\t */\n\tsetSource(element: ?HTMLElement)\n\t{\n\t\tthis.cache.set('source', element || null);\n\t}\n\n\t/**\n\t * @private\n\t */\n\tgetSource(): ?HTMLElement\n\t{\n\t\treturn this.cache.get('source') || null;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tgetSourceClientRect(): DOMRect\n\t{\n\t\treturn this.cache.remember('sourceClientRect', () => {\n\t\t\treturn this.cache.get('source').getBoundingClientRect();\n\t\t});\n\t}\n\n\t/**\n\t * @private\n\t */\n\tadjustDropPreview(target: HTMLElement, options = {})\n\t{\n\t\tconst {x = false, y = false, force = true, skipOffset = false, transition = true} = options;\n\t\tconst dropPreview = this.getDropPreview();\n\t\tconst targetRect = Dom.getRelativePosition(target, target.parentElement);\n\t\tconst dropPreviewRect = Dom.getRelativePosition(dropPreview, dropPreview.parentElement);\n\n\t\tlet offset = 0;\n\n\t\tif (dropPreviewRect.height !== 0 && !skipOffset)\n\t\t{\n\t\t\tif (targetRect.height > dropPreviewRect.height)\n\t\t\t{\n\t\t\t\tif (targetRect.top > dropPreviewRect.top)\n\t\t\t\t{\n\t\t\t\t\toffset = targetRect.height - dropPreviewRect.height;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (targetRect.top > dropPreviewRect.top)\n\t\t\t{\n\t\t\t\toffset = -Math.abs(targetRect.height - dropPreviewRect.height);\n\t\t\t}\n\t\t}\n\n\t\tconst {transitionDuration} = this.getOptions();\n\t\tconst adjustPosition = () => {\n\t\t\tconst style = {\n\t\t\t\ttransition: transition ? `all ${transitionDuration}ms ease 0ms` : 'null',\n\t\t\t};\n\n\t\t\tif (y)\n\t\t\t{\n\t\t\t\tstyle.top = `${targetRect.top + offset}px`;\n\t\t\t}\n\n\t\t\tif (x)\n\t\t\t{\n\t\t\t\tstyle.left = `${targetRect.left}px`;\n\t\t\t}\n\n\t\t\tDom.style(dropPreview, style);\n\t\t};\n\n\t\tif (force)\n\t\t{\n\t\t\tadjustPosition();\n\t\t}\n\t\telse\n\t\t{\n\t\t\trequestAnimationFrame(adjustPosition);\n\t\t}\n\t}\n\n\tshowDropPreviewAfter(element: HTMLElement)\n\t{\n\t\tconst elementRect = Dom.getRelativePosition(element, element.parentElement);\n\t\tconst marginBottom = Text.toNumber(Dom.style(element, 'margin-bottom'));\n\t\tconst marginTop = Text.toNumber(Dom.style(element, 'margin-top'));\n\t\tconst bottom = elementRect.bottom + marginBottom + marginTop;\n\n\t\tconst {transitionDuration} = this.getOptions();\n\n\t\trequestAnimationFrame(() => {\n\t\t\tDom.style(this.getDropPreview(), {\n\t\t\t\ttop: `${bottom}px`,\n\t\t\t\ttransition: `all ${transitionDuration}ms ease 0s`,\n\t\t\t});\n\t\t});\n\t}\n\n\tpushDraggableElementToContainer(element: HTMLElement, container: HTMLElement)\n\t{\n\t\tconst lastDraggableElement = this.getLastDraggableElementOfContainer(container);\n\n\t\tif (lastDraggableElement)\n\t\t{\n\t\t\tDom.insertAfter(element, lastDraggableElement);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.append(element, container);\n\t\t}\n\n\t\tthis.invalidateContainersCache();\n\t}\n\n\tresetDraggableElementsPosition(container: ?HTMLElement, {transition = true} = {})\n\t{\n\t\tconst draggableElements = (() => {\n\t\t\tif (container)\n\t\t\t{\n\t\t\t\treturn this.getDraggableElementsOfContainer(container);\n\t\t\t}\n\n\t\t\treturn this.getDraggableElements();\n\t\t})();\n\n\t\tdraggableElements.forEach((element) => {\n\t\t\tDom.style(element, {\n\t\t\t\ttransform: null,\n\t\t\t\ttransition: !transition ? 'none' : undefined,\n\t\t\t});\n\t\t});\n\t}\n\n\tresetDraggableElementsTransition(container: ?HTMLElement)\n\t{\n\t\tconst draggableElements = (() => {\n\t\t\tif (container)\n\t\t\t{\n\t\t\t\treturn this.getDraggableElementsOfContainer(container);\n\t\t\t}\n\n\t\t\treturn this.getDraggableElements();\n\t\t})();\n\n\t\tdraggableElements.forEach((element) => {\n\t\t\tDom.style(element, {\n\t\t\t\ttransition: null,\n\t\t\t});\n\t\t});\n\t}\n\n\tgetSortOffsetY(): number\n\t{\n\t\treturn this.cache.remember('sortOffsetY', () => {\n\t\t\tconst source = this.getSource();\n\t\t\tconst sourceRect = this.getSourceClientRect();\n\t\t\tconst marginTop = Text.toNumber(Dom.style(source, 'margin-top'));\n\t\t\tconst marginBottom = Text.toNumber(Dom.style(source, 'margin-bottom'));\n\t\t\treturn sourceRect.height + (marginTop + marginBottom);\n\t\t});\n\t}\n\n\tgetSortOffsetX(): number\n\t{\n\t\treturn this.cache.remember('sortOffsetX', () => {\n\t\t\tconst source = this.getSource();\n\t\t\tconst sourceRect = this.getSourceClientRect();\n\t\t\tconst marginLeft = Text.toNumber(Dom.style(source, 'margin-left'));\n\t\t\tconst marginRight = Text.toNumber(Dom.style(source, 'margin-right'));\n\t\t\treturn sourceRect.width + (marginLeft + marginRight);\n\t\t});\n\t}\n\n\t// eslint-disable-next-line class-methods-use-this\n\tgetElementMiddlePoint(element: HTMLElement): {x: number, y: number}\n\t{\n\t\tconst elementRect = element.getBoundingClientRect();\n\t\treturn {\n\t\t\tx: elementRect.left + (elementRect.width / 2),\n\t\t\ty: elementRect.top + (elementRect.height / 2),\n\t\t};\n\t}\n\n\tgetDraggableElementByChild(child: HTMLElement): ?HTMLElement\n\t{\n\t\treturn child.closest(this.getOptions().draggable);\n\t}\n\n\tsplitDraggableElementsListByPoint(\n\t\tcontainer: HTMLElement,\n\t\tpoint: {x: number, y: number},\n\t): [Array<HTMLElement>, Array<HTMLElement>]\n\t{\n\t\tlet useRect = true;\n\t\treturn this.getDraggableElementsOfContainer(container)\n\t\t\t.reduce((acc, element) => {\n\t\t\t\tif (useRect)\n\t\t\t\t{\n\t\t\t\t\tconst elementMiddlePoint = this.getElementMiddlePoint(element);\n\n\t\t\t\t\tif (elementMiddlePoint.y < point.y)\n\t\t\t\t\t{\n\t\t\t\t\t\tacc[0].push(element);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tacc[1].push(element);\n\t\t\t\t\t\tuseRect = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tacc[1].push(element);\n\t\t\t\t}\n\n\t\t\t\treturn acc;\n\t\t\t}, [[], []]);\n\t}\n\n\tinvalidateContainersCache()\n\t{\n\t\tthis.cache.delete('draggableElements');\n\t\tthis.getContainers().forEach((container) => this.cache.delete(container));\n\t}\n\n\tinvalidateCache()\n\t{\n\t\tthis.cache.delete('source');\n\t\tthis.cache.delete('sourceClientRect');\n\t\tthis.cache.delete('dropPreview');\n\t\tthis.cache.delete('sortOffsetY');\n\t\tthis.cache.delete('sortOffsetX');\n\t\tthis.cache.delete('sourceLeftOffset');\n\t\tthis.cache.delete('sourceLeftMargin');\n\t\tthis.invalidateContainersCache();\n\t}\n\n\tisDepthEditorEnabled(): boolean\n\t{\n\t\tconst {depth, type} = this.getOptions();\n\t\treturn (\n\t\t\tType.isPlainObject(depth)\n\t\t\t&& (type === Draggable.DROP_PREVIEW || type === Draggable.CLONE)\n\t\t);\n\t}\n\n\tgetDepthProperty(): string\n\t{\n\t\tconst {depth} = this.getOptions();\n\t\treturn depth.property || 'margin-left';\n\t}\n\n\tgetDepthMargin(): number\n\t{\n\t\tconst {depth} = this.getOptions();\n\t\treturn Text.toNumber(depth.margin) || 20;\n\t}\n\n\t// eslint-disable-next-line\n\tgetElementDepth(element: HTMLElement): number\n\t{\n\t\treturn Text.toNumber(Dom.attr(element, 'data-depth'));\n\t}\n\n\tsetElementDepth(element: HTMLElement, depth: number)\n\t{\n\t\tDom.attr(element, 'data-depth', depth);\n\t\tconst depthMargin = this.getDepthMargin();\n\t\tconst sourceMargin = this.getSourceLeftMargin();\n\t\tconst margin = (depthMargin * depth) + sourceMargin;\n\t\tDom.style(element, this.getDepthProperty(), `${margin}px`);\n\t}\n\n\tgetStartSourceDepth(): number\n\t{\n\t\treturn this.dragStartEvent.data.sourceDepth;\n\t}\n\n\tgetSourceWidth(): number\n\t{\n\t\treturn this.getSourceClientRect().width;\n\t}\n\n\tgetSourceLeftOffset(): number\n\t{\n\t\treturn this.cache.remember('sourceLeftOffset', () => {\n\t\t\tconst source = this.getSource();\n\t\t\tconst sourceRect = Dom.getRelativePosition(source, source.parentElement);\n\t\t\tconst sourceMargin = this.getStartSourceDepth() * this.getDepthMargin();\n\t\t\treturn sourceRect.left - sourceMargin;\n\t\t});\n\t}\n\n\tgetSourceLeftMargin(): number\n\t{\n\t\treturn this.cache.remember('sourceLeftMargin', () => {\n\t\t\tconst source = this.getSource();\n\t\t\tconst sourceDepth = this.getStartSourceDepth();\n\t\t\tconst depthMargin = this.getDepthMargin();\n\t\t\tconst sourceDepthMargin = sourceDepth * depthMargin;\n\t\t\tconst sourceMargin = Text.toNumber(Dom.style(source, this.getDepthProperty()));\n\n\t\t\treturn sourceMargin - sourceDepthMargin;\n\t\t});\n\t}\n\n\tsetDropPreviewDepth(depth: number)\n\t{\n\t\tconst sourceDepth = this.getStartSourceDepth();\n\t\tconst sourceWidth = this.getSourceWidth();\n\t\tconst depthMargin = this.getDepthMargin();\n\t\tconst sourceLeftOffset = this.getSourceLeftOffset();\n\n\t\tconst dropPreviewWidth = (() => {\n\t\t\tconst depthDiff = Math.abs(sourceDepth - depth);\n\t\t\tif (depth > sourceDepth)\n\t\t\t{\n\t\t\t\treturn sourceWidth - (depthDiff * depthMargin);\n\t\t\t}\n\n\t\t\tif (depth < sourceDepth)\n\t\t\t{\n\t\t\t\treturn sourceWidth + (depthDiff * depthMargin);\n\t\t\t}\n\n\t\t\treturn sourceWidth;\n\t\t})();\n\n\t\tDom.style(this.getDropPreview(), {\n\t\t\tleft: `${(depth * depthMargin) + sourceLeftOffset}px`,\n\t\t\twidth: `${dropPreviewWidth}px`,\n\t\t});\n\t}\n\n\tcalcDepthByOffset(offsetX): number\n\t{\n\t\tconst startSourceDepth = this.getStartSourceDepth();\n\t\tconst depthMargin = this.getDepthMargin();\n\t\tconst sourceDepthMargin = startSourceDepth * depthMargin;\n\n\t\treturn Math.max(0, Math.floor((offsetX + sourceDepthMargin) / depthMargin));\n\t}\n\n\tgetChildren(parent: HTMLElement): Array<HTMLElement>\n\t{\n\t\tconst parentDepth = this.getElementDepth(parent);\n\t\tconst parentRect = parent.getBoundingClientRect();\n\t\tconst container = this.getContainerByChild(parent);\n\t\tconst [, nextElements] = this.splitDraggableElementsListByPoint(\n\t\t\tcontainer,\n\t\t\t{x: parentRect.left, y: parentRect.bottom},\n\t\t);\n\n\t\tlet stop = false;\n\t\treturn nextElements.reduce((acc, element) => {\n\t\t\tif (!stop)\n\t\t\t{\n\t\t\t\tconst currentDepth = this.getElementDepth(element);\n\t\t\t\tif (currentDepth > parentDepth)\n\t\t\t\t{\n\t\t\t\t\treturn [...acc, element];\n\t\t\t\t}\n\n\t\t\t\tstop = true;\n\t\t\t}\n\n\t\t\treturn acc;\n\t\t}, []);\n\t}\n\n\tgetPreviousElement(element: HTMLElement): ?HTMLElement\n\t{\n\t\tconst elementRect = element.getBoundingClientRect();\n\t\tconst container = this.getContainerByChild(element);\n\t\tconst [prevElements] = this.splitDraggableElementsListByPoint(\n\t\t\tcontainer,\n\t\t\t{x: elementRect.left, y: elementRect.top},\n\t\t);\n\n\t\tif (Type.isArrayFilled(prevElements))\n\t\t{\n\t\t\treturn prevElements.pop();\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tonDragStart(event: DragStartSensorEvent)\n\t{\n\t\tconst {originalSource, sourceContainer, clientX, clientY} = event.data;\n\n\t\tconst source = this.getDraggableElementByChild(originalSource);\n\n\t\tconst dragBeforeStartEvent = new DragBeforeStartEvent({\n\t\t\tclientX,\n\t\t\tclientY,\n\t\t\tsource,\n\t\t\tsourceContainer,\n\t\t\toriginalSource\n\t\t});\n\n\t\tthis.emit('beforeStart', dragBeforeStartEvent);\n\n\t\tif (dragBeforeStartEvent.isDefaultPrevented())\n\t\t{\n\t\t\tevent.preventDefault();\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setSource(source);\n\n\t\tconst sourceDepth = this.getElementDepth(source);\n\t\tconst sourceRect = this.getSourceClientRect();\n\t\tconst pointerOffsetX = clientX - sourceRect.left;\n\t\tconst pointerOffsetY = clientY - sourceRect.top;\n\t\tconst {type} = this.getOptions();\n\n\t\tlet draggable = source;\n\t\tif (type !== Draggable.HEADLESS)\n\t\t{\n\t\t\tconst clone = Runtime.clone(source);\n\n\t\t\tDom.style(clone, 'margin', 0);\n\n\t\t\tdraggable = Tag.render`<div>${clone}</div>`;\n\n\t\t\tDom.style(draggable, {\n\t\t\t\twidth: `${sourceRect.width}px`,\n\t\t\t\theight: `${sourceRect.height}px`,\n\t\t\t\ttop: `${(clientY - pointerOffsetY) + this.getOptions().offset.y}px`,\n\t\t\t\tleft: `${(clientX - pointerOffsetX) + this.getOptions().offset.x}px`,\n\t\t\t});\n\n\t\t\tDom.addClass(draggable, 'ui-draggable--draggable');\n\t\t\tthis.pushDraggableElementToContainer(draggable, sourceContainer);\n\n\t\t\tif (this.isDepthEditorEnabled())\n\t\t\t{\n\t\t\t\tconst children = this.getChildren(source);\n\n\t\t\t\tthis.childrenElements = children;\n\n\t\t\t\tif (children.length > 0)\n\t\t\t\t{\n\t\t\t\t\tDom.append(Runtime.clone(clone), draggable);\n\n\t\t\t\t\tchildren.forEach((element) => {\n\t\t\t\t\t\tDom.style(element, 'display', 'none');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst dropPreview = this.getDropPreview();\n\n\t\tif (type === Draggable.DROP_PREVIEW || type === Draggable.CLONE)\n\t\t{\n\t\t\tthis.pushDraggableElementToContainer(dropPreview, sourceContainer);\n\t\t\tthis.adjustDropPreview(source, {force: true, x: true, y: true, transition: false});\n\t\t}\n\n\t\tDom.addClass(source, 'ui-draggable--source');\n\t\tDom.addClass(this.getDocument().body, 'ui-draggable--disable-user-select');\n\t\tDom.addClass(this.getDocument().body, `ui-draggable--type-${this.getOptions().type}`);\n\n\t\tconst sourceIndex = this.getElementIndex(source);\n\t\tthis.dragStartEvent = new DragStartEvent({\n\t\t\tclientX,\n\t\t\tclientY,\n\t\t\tpointerOffsetX,\n\t\t\tpointerOffsetY,\n\t\t\tdraggable,\n\t\t\tdropPreview,\n\t\t\tsource,\n\t\t\tsourceIndex,\n\t\t\tsourceContainer,\n\t\t\tsourceDepth,\n\t\t\toriginalSource,\n\t\t});\n\n\t\tthis.emit('start', this.dragStartEvent);\n\n\t\tif (this.dragStartEvent.isDefaultPrevented())\n\t\t{\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tonDragMove(event: DragMoveSensorEvent): void\n\t{\n\t\tif (!this.isDragging())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst {clientX, clientY, sourceContainer, originalSource} = event.data;\n\t\tconst {\n\t\t\tclientX: startClientX,\n\t\t\tclientY: startClientY,\n\t\t\tpointerOffsetX,\n\t\t\tpointerOffsetY,\n\t\t\tsource,\n\t\t\tsourceIndex,\n\t\t\tdraggable,\n\t\t\tdropPreview,\n\t\t} = this.dragStartEvent.data;\n\t\tconst offsetX = clientX - startClientX;\n\t\tconst offsetY = clientY - startClientY;\n\n\t\tconst dragMoveEvent = new DragMoveEvent({\n\t\t\tclientX,\n\t\t\tclientY,\n\t\t\toffsetX,\n\t\t\toffsetY,\n\t\t\tpointerOffsetX,\n\t\t\tpointerOffsetY,\n\t\t\tdraggable,\n\t\t\tdropPreview,\n\t\t\tsource,\n\t\t\tsourceIndex,\n\t\t\tsourceContainer,\n\t\t\toriginalSource,\n\t\t});\n\n\t\tthis.emit('move', dragMoveEvent);\n\n\t\tif (dragMoveEvent.isDefaultPrevented())\n\t\t{\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tif (!Type.isDomNode(event.data.over))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst originalOver = event.data.over;\n\t\tconst over = this.getDraggableElementByChild(originalOver);\n\t\tconst overContainer = this.getContainerByChild(originalOver);\n\n\t\tconst {type} = this.getOptions();\n\t\tif (type !== Draggable.HEADLESS)\n\t\t{\n\t\t\tDom.style(draggable, {\n\t\t\t\ttop: `${(clientY - pointerOffsetY) + this.getOptions().offset.y}px`,\n\t\t\t\tleft: `${(clientX - pointerOffsetX) + this.getOptions().offset.x}px`,\n\t\t\t});\n\n\t\t\tif (overContainer && overContainer.contains(source) && !this.stopMove)\n\t\t\t{\n\t\t\t\tconst sortOffsetY = this.getSortOffsetY();\n\t\t\t\tconst draggableElements = this.getDraggableElementsOfContainer(overContainer);\n\t\t\t\tconst localSourceIndex = draggableElements.indexOf(source);\n\n\t\t\t\tdraggableElements.forEach((element, index) => {\n\t\t\t\t\tif (element !== source)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst currentTransform = element.style.transform;\n\t\t\t\t\t\tconst elementMiddlePoint = this.getElementMiddlePoint(element);\n\n\t\t\t\t\t\tif (elementMiddlePoint.y === 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tindex > localSourceIndex\n\t\t\t\t\t\t\t&& clientY > elementMiddlePoint.y\n\t\t\t\t\t\t\t&& currentTransform !== `translate3d(0px, ${-sortOffsetY}px, 0px)`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.adjustDropPreview(element, {y: true});\n\t\t\t\t\t\t\tthis.move(element, {y: -sortOffsetY});\n\t\t\t\t\t\t\tthis.insertType = 'after';\n\t\t\t\t\t\t\tthis.insertElement = element;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tindex < localSourceIndex\n\t\t\t\t\t\t\t&& clientY < elementMiddlePoint.y\n\t\t\t\t\t\t\t&& currentTransform !== `translate3d(0px, ${sortOffsetY}px, 0px)`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.adjustDropPreview(element, {y: true});\n\t\t\t\t\t\t\tthis.move(element, {y: sortOffsetY});\n\t\t\t\t\t\t\tthis.insertType = 'before';\n\t\t\t\t\t\t\tthis.insertElement = element;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t((index < localSourceIndex && clientY > elementMiddlePoint.y)\n\t\t\t\t\t\t\t|| (index > localSourceIndex && clientY < elementMiddlePoint.y))\n\t\t\t\t\t\t\t&& currentTransform !== 'translate3d(0px, 0px, 0px)'\n\t\t\t\t\t\t\t&& currentTransform !== ''\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.adjustDropPreview(element, {y: true});\n\t\t\t\t\t\t\tthis.move(element, {y: 0});\n\n\t\t\t\t\t\t\tthis.insertElement = element;\n\n\t\t\t\t\t\t\tif (index < localSourceIndex && clientY > elementMiddlePoint.y)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.insertType = 'after';\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (index > localSourceIndex && clientY < elementMiddlePoint.y)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.insertType = 'before';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDepthEditorEnabled())\n\t\t{\n\t\t\tlet currentDepth = this.calcDepthByOffset(offsetX);\n\t\t\tconst parentElement = this.getPreviousElement(dropPreview);\n\n\t\t\tif (parentElement)\n\t\t\t{\n\t\t\t\tconst prevDepth = this.getElementDepth(parentElement);\n\t\t\t\tconst minDepth = 0;\n\t\t\t\tconst maxDepth = Math.max(minDepth, prevDepth + 1);\n\t\t\t\tcurrentDepth = Math.max(minDepth, Math.min(currentDepth, maxDepth));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcurrentDepth = 0;\n\t\t\t}\n\n\t\t\tthis.setDropPreviewDepth(currentDepth);\n\t\t\tthis.currentDepth = currentDepth;\n\t\t}\n\n\t\tif (Type.isDomNode(over) && source !== over)\n\t\t{\n\t\t\tconst dragOverEvent = new DragOverEvent({\n\t\t\t\t...dragMoveEvent.data,\n\t\t\t\tover,\n\t\t\t\toriginalOver,\n\t\t\t\toverContainer,\n\t\t\t});\n\n\t\t\tthis.emit('over', dragOverEvent);\n\n\t\t\tif (!dragOverEvent.isDefaultPrevented())\n\t\t\t{\n\t\t\t\tDom.addClass(over, 'ui-draggable--over');\n\t\t\t}\n\n\t\t\tif (over !== this.lastOver)\n\t\t\t{\n\t\t\t\tconst dragEnterEvent = new DragEnterEvent({\n\t\t\t\t\t...dragMoveEvent.data,\n\t\t\t\t\tenter: over,\n\t\t\t\t\tenterContainer: overContainer,\n\t\t\t\t});\n\n\t\t\t\tthis.emit('enter', dragEnterEvent);\n\t\t\t}\n\t\t}\n\n\t\tthis.lastOver = this.lastOver || over;\n\n\t\tif (!over || over !== this.lastOver)\n\t\t{\n\t\t\tif (this.lastOver)\n\t\t\t{\n\t\t\t\tconst outContainer = this.getContainerByChild(this.lastOver);\n\t\t\t\tconst dragOutEvent = new DragOutEvent({\n\t\t\t\t\t...dragMoveEvent,\n\t\t\t\t\tout: this.lastOver,\n\t\t\t\t\toutContainer,\n\t\t\t\t});\n\n\t\t\t\tthis.emit('out', dragOutEvent);\n\n\t\t\t\tDom.removeClass(this.lastOver, 'ui-draggable--over');\n\t\t\t}\n\n\t\t\tthis.lastOver = over;\n\t\t}\n\n\t\tconst sourceOver = this.getDocument().elementFromPoint(clientX, clientY);\n\t\tconst dropzoneOver = this.getDropzoneByChild(sourceOver);\n\n\t\tif (dropzoneOver)\n\t\t{\n\t\t\tconst dragOverDropzoneEvent = new DragOverDropzoneEvent({\n\t\t\t\t...dragMoveEvent.data,\n\t\t\t\tdropzone: dropzoneOver,\n\t\t\t});\n\n\t\t\tthis.emit('dropzone:over', dragOverDropzoneEvent);\n\n\t\t\tif (dropzoneOver !== this.lastOverDropzone)\n\t\t\t{\n\t\t\t\tconst dragEnterDropzoneEvent = new DragEnterDropzoneEvent({\n\t\t\t\t\t...dragMoveEvent.data,\n\t\t\t\t\tdropzone: dropzoneOver,\n\t\t\t\t});\n\n\t\t\t\tthis.emit('dropzone:enter', dragEnterDropzoneEvent);\n\t\t\t}\n\t\t}\n\n\t\tthis.lastOverDropzone = this.lastOverDropzone || dropzoneOver;\n\n\t\tif (dropzoneOver !== this.lastOverDropzone)\n\t\t{\n\t\t\tconst dragOutDropzoneEvent = new DragOutDropzoneEvent({\n\t\t\t\t...dragMoveEvent.data,\n\t\t\t\tdropzone: this.lastOverDropzone,\n\t\t\t});\n\n\t\t\tthis.emit('dropzone:out', dragOutDropzoneEvent);\n\n\t\t\tthis.lastOverDropzone = dropzoneOver;\n\t\t}\n\n\t\tif (overContainer)\n\t\t{\n\t\t\tconst dragOverContainerEvent = new DragOverContainerEvent({\n\t\t\t\t...dragMoveEvent.data,\n\t\t\t\tover: overContainer,\n\t\t\t});\n\n\t\t\tthis.emit('container:over', dragOverContainerEvent);\n\n\t\t\tif (overContainer !== this.lastOverContainer)\n\t\t\t{\n\t\t\t\tconst dragEnterContainerEvent = new DragEnterContainerEvent({\n\t\t\t\t\t...dragMoveEvent.data,\n\t\t\t\t\tenter: overContainer,\n\t\t\t\t});\n\n\t\t\t\tthis.emit('container:enter', dragEnterContainerEvent);\n\n\t\t\t\tif (!overContainer.contains(source))\n\t\t\t\t{\n\t\t\t\t\tconst lastContainer = this.getContainerByChild(source);\n\t\t\t\t\tconst [beforeElements, afterElements] = this.splitDraggableElementsListByPoint(\n\t\t\t\t\t\toverContainer,\n\t\t\t\t\t\t{x: clientX, y: clientY},\n\t\t\t\t\t);\n\n\t\t\t\t\tif (type === Draggable.DROP_PREVIEW || type === Draggable.CLONE)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.stopMove = true;\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis.stopMove = false;\n\t\t\t\t\t\t}, 300);\n\n\t\t\t\t\t\tthis.pushDraggableElementToContainer(this.getDropPreview(), overContainer);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (type !== Draggable.HEADLESS)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.pushDraggableElementToContainer(source, overContainer);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Type.isArrayFilled(beforeElements))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst lastElement = beforeElements[beforeElements.length - 1];\n\n\t\t\t\t\t\tif (type === Draggable.DROP_PREVIEW || type === Draggable.CLONE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.showDropPreviewAfter(lastElement);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.insertType = 'after';\n\t\t\t\t\t\tthis.insertElement = lastElement;\n\t\t\t\t\t}\n\t\t\t\t\telse if (Type.isArrayFilled(afterElements))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst [firstElement] = afterElements;\n\n\t\t\t\t\t\tif (type === Draggable.DROP_PREVIEW || type === Draggable.CLONE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.adjustDropPreview(afterElements);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.insertType = 'before';\n\t\t\t\t\t\tthis.insertElement = firstElement;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.resetDraggableElementsTransition(lastContainer);\n\t\t\t\t\tthis.resetDraggableElementsPosition(lastContainer);\n\n\t\t\t\t\tif (type !== Draggable.HEADLESS)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (Type.isArrayFilled(afterElements))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst sortOffsetY = this.getSortOffsetY();\n\t\t\t\t\t\t\tafterElements.forEach((element) => {\n\t\t\t\t\t\t\t\tthis.move(element, {y: sortOffsetY});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.lastOverContainer = this.lastOverContainer || overContainer;\n\n\t\tif (overContainer !== this.lastOverContainer)\n\t\t{\n\t\t\tconst dragOutContainerEvent = new DragOutContainerEvent({\n\t\t\t\t...dragMoveEvent.data,\n\t\t\t\tout: this.lastOverContainer,\n\t\t\t});\n\n\t\t\tthis.emit('container:out', dragOutContainerEvent);\n\n\t\t\tthis.lastOverContainer = overContainer;\n\t\t}\n\t}\n\n\tonDragEnd(event: DragEndSensorEvent)\n\t{\n\t\tconst dragEndEvent = new DragEndEvent({\n\t\t\t...this.dragStartEvent.data,\n\t\t\tclientX: event.data.clientX,\n\t\t\tclientY: event.data.clientY,\n\t\t\tend: this.lastOver,\n\t\t\tendContainer: this.lastOverContainer,\n\t\t});\n\n\t\tconst {source, draggable} = this.dragStartEvent.data;\n\n\t\tif (this.getOptions().type !== Draggable.HEADLESS)\n\t\t{\n\t\t\tDom.remove(draggable);\n\t\t}\n\n\t\tDom.removeClass(source, 'ui-draggable--source');\n\n\t\tthis.getDraggableElements().forEach((element) => {\n\t\t\tDom.removeClass(element, 'ui-draggable--draggable');\n\t\t\tDom.removeClass(element, 'ui-draggable--over');\n\t\t});\n\n\t\tDom.remove(this.getDropPreview());\n\n\t\tthis.resetDraggableElementsPosition();\n\t\tthis.resetDraggableElementsTransition();\n\n\t\tif (this.getOptions().type !== Draggable.HEADLESS)\n\t\t{\n\t\t\tif (Type.isString(this.insertType))\n\t\t\t{\n\t\t\t\tif (this.insertType === 'after')\n\t\t\t\t{\n\t\t\t\t\tDom.insertAfter(source, this.insertElement);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tDom.insertBefore(source, this.insertElement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDepthEditorEnabled())\n\t\t{\n\t\t\tconst startSourceDepth = this.getStartSourceDepth();\n\t\t\tconst depthDiff = (() => {\n\t\t\t\tif (Type.isNumber(this.currentDepth))\n\t\t\t\t{\n\t\t\t\t\treturn this.currentDepth - startSourceDepth;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t})();\n\n\t\t\tlet lastElement = source;\n\t\t\tthis.childrenElements.forEach((element) => {\n\t\t\t\tconst currentDepth = this.getElementDepth(element);\n\t\t\t\tthis.setElementDepth(element, currentDepth + depthDiff);\n\t\t\t\tDom.insertAfter(element, lastElement);\n\t\t\t\tDom.style(element, 'display', null);\n\t\t\t\tlastElement = element;\n\t\t\t});\n\n\t\t\tif (Type.isNumber(this.currentDepth))\n\t\t\t{\n\t\t\t\tthis.setElementDepth(source, this.currentDepth);\n\t\t\t}\n\t\t}\n\n\t\tthis.lastOver = null;\n\t\tthis.lastOverContainer = null;\n\t\tthis.insertType = null;\n\t\tthis.lastOverDropzone = null;\n\t\tthis.childrenElements = [];\n\t\tthis.currentDepth = null;\n\t\tthis.invalidateCache();\n\t\tDom.removeClass(this.getDocument().body, 'ui-draggable--disable-user-select');\n\t\tDom.removeClass(this.getDocument().body, `ui-draggable--type-${this.getOptions().type}`);\n\n\t\tthis.emit('end', dragEndEvent); // todo test in default\n\t}\n\n\tonDragDrop(event: DragDropSensorEvent)\n\t{\n\t\tconst dragDropEvent = new DragDropEvent({\n\t\t\t...this.dragStartEvent.data,\n\t\t\tclientX: event.data.clientX,\n\t\t\tclientY: event.data.clientY,\n\t\t\tdropzone: event.data.dropzone,\n\t\t});\n\n\t\tthis.emit('drop', dragDropEvent);\n\t}\n}\n\nexport {\n\tDragStartEvent,\n\tDragMoveEvent,\n\tDragOutEvent,\n\tDragOutContainerEvent,\n\tDragEndEvent,\n\tDragOverEvent,\n\tDragOverContainerEvent,\n\tDragEnterEvent,\n\tDragEnterContainerEvent,\n};\n"],"names":["BaseEvent","data","Event","DragStartSensorEvent","Sensor","container","options","setEventNamespace","dropzone","containers","Type","isArray","dropzones","isArrayLike","delay","context","document","filter","includes","childElement","find","contains","x","y","getDocument","elementFromPoint","event","cancelable","preventDefault","dragStartEvent","isDefaultPrevented","child","dragElement","closest","EventEmitter","DragMoveSensorEvent","DragEndSensorEvent","DragDropSensorEvent","MouseSensor","mousedownTimeoutId","onMouseDown","bind","onMouseMove","onMouseUp","onDragStart","addEventListener","removeEventListener","preventDefaultEventAction","ctrlKey","metaKey","button","originalDragStartEvent","getContainerByChild","target","getDragElementByChild","startHandleMouseUp","startPreventNativeDragAndDrop","setTimeout","sourceContainer","clientX","clientY","originalSource","originalEvent","emit","isDragging","startPreventContextMenu","startHandleMouseMove","over","getElementFromPoint","overContainer","dragMoveEvent","clearTimeout","stopHandleMouseUp","stopPreventNativeDragAndDrop","dragEndEvent","getDropzoneByChild","dragDropEvent","stopPreventContextMenu","stopHandleMouseMove","preventScrolling","window","passive","TouchSensor","tapTimeoutId","touchMoved","onTouchStart","onTouchEnd","onTouchMove","startHandleTouchEvents","startPreventScrolling","isTouchMoved","touch","touches","changedTouches","stopPreventScrolling","stopHandleTouchEvents","DragBeforeStartEvent","DragStartEvent","DragMoveEvent","DragOverEvent","DragOverContainerEvent","DragEnterEvent","DragEnterContainerEvent","DragOutEvent","DragOutContainerEvent","DragEndEvent","DragOverDropzoneEvent","DragEnterDropzoneEvent","DragOutDropzoneEvent","DragDropEvent","defaultSensors","optionsKey","Symbol","sensorsKey","containersKey","dropzonesKey","Draggable","sensors","draggable","type","transitionDuration","offset","cache","Cache","MemoryCache","onDragMove","onDragEnd","onDragDrop","isDomNode","NodeList","addContainer","flat","Error","isNil","addDropzone","setOptions","getOptions","addSensor","isString","isPlainObject","isNumber","invalidateCache","initializedSensors","map","CurrentSensor","instance","getContainers","subscribe","enable","getSensors","removedSensors","sensor","constructor","forEach","unsubscribe","Dom","addClass","invalidateContainersCache","removeContainer","getDropzones","removeDropzone","remember","reduce","acc","getDraggableElementsOfContainer","draggableSelector","notDraggable","notDropPreview","selector","elements","querySelectorAll","element","parentElement","draggableElements","length","getDraggableElements","indexOf","source","getSource","Tag","render","sourceRect","getSourceClientRect","dropPreview","CLONE","Runtime","clone","style","width","height","requestAnimationFrame","transform","transition","set","get","getBoundingClientRect","force","skipOffset","getDropPreview","targetRect","getRelativePosition","dropPreviewRect","top","Math","abs","adjustPosition","left","elementRect","marginBottom","Text","toNumber","marginTop","bottom","lastDraggableElement","getLastDraggableElementOfContainer","insertAfter","append","undefined","marginLeft","marginRight","point","useRect","elementMiddlePoint","getElementMiddlePoint","push","depth","DROP_PREVIEW","property","margin","attr","depthMargin","getDepthMargin","sourceMargin","getSourceLeftMargin","getDepthProperty","sourceDepth","getStartSourceDepth","sourceDepthMargin","sourceWidth","getSourceWidth","sourceLeftOffset","getSourceLeftOffset","dropPreviewWidth","depthDiff","offsetX","startSourceDepth","max","floor","parent","parentDepth","getElementDepth","parentRect","splitDraggableElementsListByPoint","nextElements","stop","currentDepth","prevElements","isArrayFilled","pop","getDraggableElementByChild","dragBeforeStartEvent","setSource","pointerOffsetX","pointerOffsetY","HEADLESS","pushDraggableElementToContainer","isDepthEditorEnabled","children","getChildren","childrenElements","adjustDropPreview","body","sourceIndex","getElementIndex","startClientX","startClientY","offsetY","originalOver","stopMove","sortOffsetY","getSortOffsetY","localSourceIndex","index","currentTransform","move","insertType","insertElement","calcDepthByOffset","getPreviousElement","prevDepth","minDepth","maxDepth","min","setDropPreviewDepth","dragOverEvent","lastOver","dragEnterEvent","enter","enterContainer","outContainer","dragOutEvent","out","removeClass","sourceOver","dropzoneOver","dragOverDropzoneEvent","lastOverDropzone","dragEnterDropzoneEvent","dragOutDropzoneEvent","dragOverContainerEvent","lastOverContainer","dragEnterContainerEvent","lastContainer","beforeElements","afterElements","lastElement","showDropPreviewAfter","firstElement","resetDraggableElementsTransition","resetDraggableElementsPosition","dragOutContainerEvent","end","endContainer","remove","insertBefore","setElementDepth"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.29 |
proxy
|
phpinfo
|
Settings