403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/draganddrop/draggable/dist/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/draganddrop/draggable/dist/draggable.bundle.js.map
{"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}\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}\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, elementsPreventingDrag } = this.options;\n\n\t\t\tif ((elementsPreventingDrag ?? []).some((selector) => child.closest(selector)))\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn child.closest(dragElement) || null;\n\t\t}\n\n\t\treturn null;\n\t}\n}\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}\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}\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 { Event } from 'main.core';\nimport 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\tEvent.bind(this.getDocument(), 'mousedown', this.onMouseDown, { capture: true });\n\t}\n\n\tdisable()\n\t{\n\t\tEvent.unbind(this.getDocument(), 'mousedown', this.onMouseDown, { capture: true });\n\t}\n\n\tstartHandleMouseUp()\n\t{\n\t\tEvent.bind(this.getDocument(), 'mouseup', this.onMouseUp);\n\t}\n\n\tstopHandleMouseUp()\n\t{\n\t\tEvent.unbind(this.getDocument(), 'mouseup', this.onMouseUp);\n\t}\n\n\tstartHandleMouseMove()\n\t{\n\t\tEvent.bind(this.getDocument(), 'mousemove', this.onMouseMove);\n\t}\n\n\tstopHandleMouseMove()\n\t{\n\t\tEvent.unbind(this.getDocument(), 'mousemove', this.onMouseMove);\n\t}\n\n\tstartPreventContextMenu()\n\t{\n\t\tEvent.bind(this.getDocument(), 'contextmenu', this.preventDefaultEventAction, { capture: true });\n\t}\n\n\tstopPreventContextMenu()\n\t{\n\t\tEvent.unbind(this.getDocument(), 'contextmenu', this.preventDefaultEventAction, { capture: true });\n\t}\n\n\tstartPreventNativeDragAndDrop()\n\t{\n\t\tEvent.bind(this.getDocument(), 'dragstart', this.preventDefaultEventAction);\n\t}\n\n\tstopPreventNativeDragAndDrop()\n\t{\n\t\tEvent.unbind(this.getDocument(), '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}\n","import { Event } from 'main.core';\nimport 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;\nEvent.bind(\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\tEvent.bind(this.getDocument(), 'touchstart', this.onTouchStart);\n\t}\n\n\tdisable()\n\t{\n\t\tEvent.unbind(this.getDocument(), '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\tEvent.bind(this.getDocument(), 'contextmenu', this.preventDefaultEventAction, { capture: true });\n\t}\n\n\tstopPreventContextMenu()\n\t{\n\t\tEvent.unbind(this.getDocument(), 'contextmenu', this.preventDefaultEventAction, { capture: true });\n\t}\n\n\tstartHandleTouchEvents()\n\t{\n\t\tEvent.bind(this.getDocument(), 'touchmove', this.onTouchMove);\n\t\tEvent.bind(this.getDocument(), 'touchend', this.onTouchEnd);\n\t\tEvent.bind(this.getDocument(), 'touchcancel', this.onTouchEnd);\n\t}\n\n\tstopHandleTouchEvents()\n\t{\n\t\tEvent.unbind(this.getDocument(), 'touchmove', this.onTouchMove);\n\t\tEvent.unbind(this.getDocument(), 'touchend', this.onTouchEnd);\n\t\tEvent.unbind(this.getDocument(), '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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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}\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\telementsPreventingDrag?: 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\ttype?: string,\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 (\n\t\t\t!Type.isNil(options.dropzone)\n\t\t\t&& (\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)\n\t\t{\n\t\t\tif (options.dropzone instanceof NodeList)\n\t\t\t{\n\t\t\t\tthis.addDropzone(...options.dropzone);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.addDropzone(...[options.dropzone].flat());\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\tdestroy(): void\n\t{\n\t\tthis.removeSensor(...this.getSensors());\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);\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.disable();\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\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 = null;\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 ? undefined : 'none',\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\n\t\t\treturn Math.round(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\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\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\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\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\n\t\treturn depth.property || 'margin-left';\n\t}\n\n\tgetDepthMargin(): number\n\t{\n\t\tconst { depth } = this.getOptions();\n\n\t\treturn Text.toNumber(depth.margin) || 20;\n\t}\n\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\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\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\t// eslint-disable-next-line max-lines-per-function\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\t// eslint-disable-next-line @bitrix24/bitrix24-rules/no-style\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 && Type.isArrayFilled(afterElements))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst sortOffsetY = this.getSortOffsetY();\n\t\t\t\t\t\tafterElements.forEach((element) => {\n\t\t\t\t\t\t\tthis.move(element, { y: sortOffsetY });\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 && Type.isString(this.insertType))\n\t\t{\n\t\t\tif (this.insertType === 'after')\n\t\t\t{\n\t\t\t\tDom.insertAfter(source, this.insertElement);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDom.insertBefore(source, this.insertElement);\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\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","Event","constructor","data","DragStartSensorEvent","Sensor","EventEmitter","container","options","originalDragStartEvent","dragStartEvent","setEventNamespace","dropzone","containers","Type","isArray","dropzones","isArrayLike","delay","getDocument","context","document","addContainer","removeContainer","filter","includes","getContainerByChild","childElement","find","contains","addDropzone","removeDropzone","getDropzoneByChild","getElementFromPoint","x","y","elementFromPoint","preventDefaultEventAction","event","cancelable","preventDefault","isDragging","isDefaultPrevented","enable","disable","getDragElementByChild","child","dragElement","elementsPreventingDrag","some","selector","closest","DragMoveSensorEvent","DragEndSensorEvent","DragDropSensorEvent","MouseSensor","mousedownTimeoutId","onMouseDown","bind","onMouseMove","onMouseUp","onDragStart","capture","unbind","startHandleMouseUp","stopHandleMouseUp","startHandleMouseMove","stopHandleMouseMove","startPreventContextMenu","stopPreventContextMenu","startPreventNativeDragAndDrop","stopPreventNativeDragAndDrop","ctrlKey","metaKey","button","target","setTimeout","sourceContainer","clientX","clientY","originalSource","originalEvent","emit","over","overContainer","dragMoveEvent","clearTimeout","dragEndEvent","dragDropEvent","preventScrolling","passive","TouchSensor","tapTimeoutId","touchMoved","onTouchStart","onTouchEnd","onTouchMove","isTouchMoved","startPreventScrolling","stopPreventScrolling","startHandleTouchEvents","stopHandleTouchEvents","touch","touches","changedTouches","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","window","offset","cache","Cache","MemoryCache","onDragMove","onDragEnd","onDragDrop","isDomNode","NodeList","flat","Error","isNil","setOptions","getOptions","addSensor","isString","isPlainObject","isNumber","invalidateCache","getSensors","initializedSensors","map","CurrentSensor","instance","getContainers","subscribe","destroy","removeSensor","removedSensors","sensor","forEach","unsubscribe","Dom","addClass","invalidateContainersCache","getDropzones","getDraggableElements","remember","reduce","acc","getDraggableElementsOfContainer","draggableSelector","notDraggable","notDropPreview","elements","querySelectorAll","element","parentElement","getLastDraggableElementOfContainer","draggableElements","length","getElementIndex","indexOf","getDropPreview","source","getSource","Tag","render","sourceRect","getSourceClientRect","dropPreview","CLONE","Runtime","clone","style","width","height","move","requestAnimationFrame","transform","transition","setSource","set","get","getBoundingClientRect","adjustDropPreview","force","skipOffset","targetRect","getRelativePosition","dropPreviewRect","top","Math","abs","adjustPosition","left","showDropPreviewAfter","elementRect","marginBottom","Text","toNumber","marginTop","bottom","pushDraggableElementToContainer","lastDraggableElement","insertAfter","append","resetDraggableElementsPosition","undefined","resetDraggableElementsTransition","getSortOffsetY","round","getSortOffsetX","marginLeft","marginRight","getElementMiddlePoint","getDraggableElementByChild","splitDraggableElementsListByPoint","point","useRect","elementMiddlePoint","push","delete","isDepthEditorEnabled","depth","DROP_PREVIEW","getDepthProperty","property","getDepthMargin","margin","getElementDepth","attr","setElementDepth","depthMargin","sourceMargin","getSourceLeftMargin","getStartSourceDepth","sourceDepth","getSourceWidth","getSourceLeftOffset","sourceDepthMargin","setDropPreviewDepth","sourceWidth","sourceLeftOffset","dropPreviewWidth","depthDiff","calcDepthByOffset","offsetX","startSourceDepth","max","floor","getChildren","parent","parentDepth","parentRect","nextElements","stop","currentDepth","getPreviousElement","prevElements","isArrayFilled","pop","dragBeforeStartEvent","pointerOffsetX","pointerOffsetY","HEADLESS","children","childrenElements","body","sourceIndex","startClientX","startClientY","offsetY","originalOver","stopMove","sortOffsetY","localSourceIndex","index","currentTransform","insertType","insertElement","prevDepth","minDepth","maxDepth","min","dragOverEvent","lastOver","dragEnterEvent","enter","enterContainer","outContainer","dragOutEvent","out","removeClass","sourceOver","dropzoneOver","dragOverDropzoneEvent","lastOverDropzone","dragEnterDropzoneEvent","dragOutDropzoneEvent","dragOverContainerEvent","lastOverContainer","dragEnterContainerEvent","lastContainer","beforeElements","afterElements","lastElement","firstElement","dragOutContainerEvent","end","endContainer","remove","insertBefore","MOVE"],"mappings":"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"}

Youez - 2016 - github.com/yon3zu
LinuXploit