{"version":3,"file":"react-dnd-html5-backend-DVLS2pDk.js","sources":["../../node_modules/react-dnd-html5-backend/dist/utils/js_utils.js","../../node_modules/react-dnd-html5-backend/dist/EnterLeaveCounter.js","../../node_modules/react-dnd-html5-backend/dist/NativeDragSources/NativeDragSource.js","../../node_modules/react-dnd-html5-backend/dist/NativeTypes.js","../../node_modules/react-dnd-html5-backend/dist/NativeDragSources/getDataFromDataTransfer.js","../../node_modules/react-dnd-html5-backend/dist/NativeDragSources/nativeTypesConfig.js","../../node_modules/react-dnd-html5-backend/dist/NativeDragSources/index.js","../../node_modules/react-dnd-html5-backend/dist/BrowserDetector.js","../../node_modules/react-dnd-html5-backend/dist/MonotonicInterpolant.js","../../node_modules/react-dnd-html5-backend/dist/OffsetUtils.js","../../node_modules/react-dnd-html5-backend/dist/OptionsReader.js","../../node_modules/react-dnd-html5-backend/dist/HTML5BackendImpl.js","../../node_modules/react-dnd-html5-backend/dist/index.js"],"sourcesContent":["// cheap lodash replacements\nexport function memoize(fn) {\n let result = null;\n const memoized = ()=>{\n if (result == null) {\n result = fn();\n }\n return result;\n };\n return memoized;\n}\n/**\n * drop-in replacement for _.without\n */ export function without(items, item) {\n return items.filter((i)=>i !== item\n );\n}\nexport function union(itemsA, itemsB) {\n const set = new Set();\n const insertItem = (item)=>set.add(item)\n ;\n itemsA.forEach(insertItem);\n itemsB.forEach(insertItem);\n const result = [];\n set.forEach((key)=>result.push(key)\n );\n return result;\n}\n\n//# sourceMappingURL=js_utils.js.map","import { union, without } from './utils/js_utils.js';\nexport class EnterLeaveCounter {\n enter(enteringNode) {\n const previousLength = this.entered.length;\n const isNodeEntered = (node)=>this.isNodeInDocument(node) && (!node.contains || node.contains(enteringNode))\n ;\n this.entered = union(this.entered.filter(isNodeEntered), [\n enteringNode\n ]);\n return previousLength === 0 && this.entered.length > 0;\n }\n leave(leavingNode) {\n const previousLength = this.entered.length;\n this.entered = without(this.entered.filter(this.isNodeInDocument), leavingNode);\n return previousLength > 0 && this.entered.length === 0;\n }\n reset() {\n this.entered = [];\n }\n constructor(isNodeInDocument){\n this.entered = [];\n this.isNodeInDocument = isNodeInDocument;\n }\n}\n\n//# sourceMappingURL=EnterLeaveCounter.js.map","export class NativeDragSource {\n initializeExposedProperties() {\n Object.keys(this.config.exposeProperties).forEach((property)=>{\n Object.defineProperty(this.item, property, {\n configurable: true,\n enumerable: true,\n get () {\n // eslint-disable-next-line no-console\n console.warn(`Browser doesn't allow reading \"${property}\" until the drop event.`);\n return null;\n }\n });\n });\n }\n loadDataTransfer(dataTransfer) {\n if (dataTransfer) {\n const newProperties = {};\n Object.keys(this.config.exposeProperties).forEach((property)=>{\n const propertyFn = this.config.exposeProperties[property];\n if (propertyFn != null) {\n newProperties[property] = {\n value: propertyFn(dataTransfer, this.config.matchesTypes),\n configurable: true,\n enumerable: true\n };\n }\n });\n Object.defineProperties(this.item, newProperties);\n }\n }\n canDrag() {\n return true;\n }\n beginDrag() {\n return this.item;\n }\n isDragging(monitor, handle) {\n return handle === monitor.getSourceId();\n }\n endDrag() {\n // empty\n }\n constructor(config){\n this.config = config;\n this.item = {};\n this.initializeExposedProperties();\n }\n}\n\n//# sourceMappingURL=NativeDragSource.js.map","export const FILE = '__NATIVE_FILE__';\nexport const URL = '__NATIVE_URL__';\nexport const TEXT = '__NATIVE_TEXT__';\nexport const HTML = '__NATIVE_HTML__';\n\n//# sourceMappingURL=NativeTypes.js.map","export function getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n const result = typesToTry.reduce((resultSoFar, typeToTry)=>resultSoFar || dataTransfer.getData(typeToTry)\n , '');\n return result != null ? result : defaultValue;\n}\n\n//# sourceMappingURL=getDataFromDataTransfer.js.map","import * as NativeTypes from '../NativeTypes.js';\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer.js';\nexport const nativeTypesConfig = {\n [NativeTypes.FILE]: {\n exposeProperties: {\n files: (dataTransfer)=>Array.prototype.slice.call(dataTransfer.files)\n ,\n items: (dataTransfer)=>dataTransfer.items\n ,\n dataTransfer: (dataTransfer)=>dataTransfer\n },\n matchesTypes: [\n 'Files'\n ]\n },\n [NativeTypes.HTML]: {\n exposeProperties: {\n html: (dataTransfer, matchesTypes)=>getDataFromDataTransfer(dataTransfer, matchesTypes, '')\n ,\n dataTransfer: (dataTransfer)=>dataTransfer\n },\n matchesTypes: [\n 'Html',\n 'text/html'\n ]\n },\n [NativeTypes.URL]: {\n exposeProperties: {\n urls: (dataTransfer, matchesTypes)=>getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n')\n ,\n dataTransfer: (dataTransfer)=>dataTransfer\n },\n matchesTypes: [\n 'Url',\n 'text/uri-list'\n ]\n },\n [NativeTypes.TEXT]: {\n exposeProperties: {\n text: (dataTransfer, matchesTypes)=>getDataFromDataTransfer(dataTransfer, matchesTypes, '')\n ,\n dataTransfer: (dataTransfer)=>dataTransfer\n },\n matchesTypes: [\n 'Text',\n 'text/plain'\n ]\n }\n};\n\n//# sourceMappingURL=nativeTypesConfig.js.map","import { NativeDragSource } from './NativeDragSource.js';\nimport { nativeTypesConfig } from './nativeTypesConfig.js';\nexport function createNativeDragSource(type, dataTransfer) {\n const config = nativeTypesConfig[type];\n if (!config) {\n throw new Error(`native type ${type} has no configuration`);\n }\n const result = new NativeDragSource(config);\n result.loadDataTransfer(dataTransfer);\n return result;\n}\nexport function matchNativeItemType(dataTransfer) {\n if (!dataTransfer) {\n return null;\n }\n const dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n return Object.keys(nativeTypesConfig).filter((nativeItemType)=>{\n const typeConfig = nativeTypesConfig[nativeItemType];\n if (!(typeConfig === null || typeConfig === void 0 ? void 0 : typeConfig.matchesTypes)) {\n return false;\n }\n return typeConfig.matchesTypes.some((t)=>dataTransferTypes.indexOf(t) > -1\n );\n })[0] || null;\n}\n\n//# sourceMappingURL=index.js.map","import { memoize } from './utils/js_utils.js';\nexport const isFirefox = memoize(()=>/firefox/i.test(navigator.userAgent)\n);\nexport const isSafari = memoize(()=>Boolean(window.safari)\n);\n\n//# sourceMappingURL=BrowserDetector.js.map","export class MonotonicInterpolant {\n interpolate(x) {\n const { xs , ys , c1s , c2s , c3s } = this;\n // The rightmost point in the dataset should give an exact result\n let i = xs.length - 1;\n if (x === xs[i]) {\n return ys[i];\n }\n // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n let low = 0;\n let high = c3s.length - 1;\n let mid;\n while(low <= high){\n mid = Math.floor(0.5 * (low + high));\n const xHere = xs[mid];\n if (xHere < x) {\n low = mid + 1;\n } else if (xHere > x) {\n high = mid - 1;\n } else {\n return ys[mid];\n }\n }\n i = Math.max(0, high);\n // Interpolate\n const diff = x - xs[i];\n const diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n }\n constructor(xs, ys){\n const { length } = xs;\n // Rearrange xs and ys so that xs is sorted\n const indexes = [];\n for(let i = 0; i < length; i++){\n indexes.push(i);\n }\n indexes.sort((a, b)=>xs[a] < xs[b] ? -1 : 1\n );\n // Get consecutive differences and slopes\n const dys = [];\n const dxs = [];\n const ms = [];\n let dx;\n let dy;\n for(let i1 = 0; i1 < length - 1; i1++){\n dx = xs[i1 + 1] - xs[i1];\n dy = ys[i1 + 1] - ys[i1];\n dxs.push(dx);\n dys.push(dy);\n ms.push(dy / dx);\n }\n // Get degree-1 coefficients\n const c1s = [\n ms[0]\n ];\n for(let i2 = 0; i2 < dxs.length - 1; i2++){\n const m2 = ms[i2];\n const mNext = ms[i2 + 1];\n if (m2 * mNext <= 0) {\n c1s.push(0);\n } else {\n dx = dxs[i2];\n const dxNext = dxs[i2 + 1];\n const common = dx + dxNext;\n c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n }\n }\n c1s.push(ms[ms.length - 1]);\n // Get degree-2 and degree-3 coefficients\n const c2s = [];\n const c3s = [];\n let m;\n for(let i3 = 0; i3 < c1s.length - 1; i3++){\n m = ms[i3];\n const c1 = c1s[i3];\n const invDx = 1 / dxs[i3];\n const common = c1 + c1s[i3 + 1] - m - m;\n c2s.push((m - c1 - common) * invDx);\n c3s.push(common * invDx * invDx);\n }\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n}\n\n//# sourceMappingURL=MonotonicInterpolant.js.map","import { isFirefox, isSafari } from './BrowserDetector.js';\nimport { MonotonicInterpolant } from './MonotonicInterpolant.js';\nconst ELEMENT_NODE = 1;\nexport function getNodeClientOffset(node) {\n const el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n if (!el) {\n return null;\n }\n const { top , left } = el.getBoundingClientRect();\n return {\n x: left,\n y: top\n };\n}\nexport function getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY\n };\n}\nfunction isImageNode(node) {\n var ref;\n return node.nodeName === 'IMG' && (isFirefox() || !((ref = document.documentElement) === null || ref === void 0 ? void 0 : ref.contains(node)));\n}\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n let dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n let dragPreviewHeight = isImage ? dragPreview.height : sourceHeight;\n // Work around @2x coordinate discrepancies in browsers\n if (isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n }\n return {\n dragPreviewWidth,\n dragPreviewHeight\n };\n}\nexport function getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n const isImage = isImageNode(dragPreview);\n const dragPreviewNode = isImage ? sourceNode : dragPreview;\n const dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n const offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y\n };\n const { offsetWidth: sourceWidth , offsetHeight: sourceHeight } = sourceNode;\n const { anchorX , anchorY } = anchorPoint;\n const { dragPreviewWidth , dragPreviewHeight } = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight);\n const calculateYOffset = ()=>{\n const interpolantY = new MonotonicInterpolant([\n 0,\n 0.5,\n 1\n ], [\n // Dock to the top\n offsetFromDragPreview.y,\n // Align at the center\n (offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight, \n ]);\n let y = interpolantY.interpolate(anchorY);\n // Work around Safari 8 positioning bug\n if (isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n return y;\n };\n const calculateXOffset = ()=>{\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n const interpolantX = new MonotonicInterpolant([\n 0,\n 0.5,\n 1\n ], [\n // Dock to the left\n offsetFromDragPreview.x,\n // Align at the center\n (offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth, \n ]);\n return interpolantX.interpolate(anchorX);\n };\n // Force offsets if specified in the options.\n const { offsetX , offsetY } = offsetPoint;\n const isManualOffsetX = offsetX === 0 || offsetX;\n const isManualOffsetY = offsetY === 0 || offsetY;\n return {\n x: isManualOffsetX ? offsetX : calculateXOffset(),\n y: isManualOffsetY ? offsetY : calculateYOffset()\n };\n}\n\n//# sourceMappingURL=OffsetUtils.js.map","export class OptionsReader {\n get window() {\n if (this.globalContext) {\n return this.globalContext;\n } else if (typeof window !== 'undefined') {\n return window;\n }\n return undefined;\n }\n get document() {\n var ref;\n if ((ref = this.globalContext) === null || ref === void 0 ? void 0 : ref.document) {\n return this.globalContext.document;\n } else if (this.window) {\n return this.window.document;\n } else {\n return undefined;\n }\n }\n get rootElement() {\n var ref;\n return ((ref = this.optionsArgs) === null || ref === void 0 ? void 0 : ref.rootElement) || this.window;\n }\n constructor(globalContext, options){\n this.ownerDocument = null;\n this.globalContext = globalContext;\n this.optionsArgs = options;\n }\n}\n\n//# sourceMappingURL=OptionsReader.js.map","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectSpread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nimport { EnterLeaveCounter } from './EnterLeaveCounter.js';\nimport { createNativeDragSource, matchNativeItemType } from './NativeDragSources/index.js';\nimport * as NativeTypes from './NativeTypes.js';\nimport { getDragPreviewOffset, getEventClientOffset, getNodeClientOffset } from './OffsetUtils.js';\nimport { OptionsReader } from './OptionsReader.js';\nexport class HTML5BackendImpl {\n /**\n\t * Generate profiling statistics for the HTML5Backend.\n\t */ profile() {\n var ref, ref1;\n return {\n sourcePreviewNodes: this.sourcePreviewNodes.size,\n sourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n sourceNodeOptions: this.sourceNodeOptions.size,\n sourceNodes: this.sourceNodes.size,\n dragStartSourceIds: ((ref = this.dragStartSourceIds) === null || ref === void 0 ? void 0 : ref.length) || 0,\n dropTargetIds: this.dropTargetIds.length,\n dragEnterTargetIds: this.dragEnterTargetIds.length,\n dragOverTargetIds: ((ref1 = this.dragOverTargetIds) === null || ref1 === void 0 ? void 0 : ref1.length) || 0\n };\n }\n // public for test\n get window() {\n return this.options.window;\n }\n get document() {\n return this.options.document;\n }\n /**\n\t * Get the root element to use for event subscriptions\n\t */ get rootElement() {\n return this.options.rootElement;\n }\n setup() {\n const root = this.rootElement;\n if (root === undefined) {\n return;\n }\n if (root.__isReactDndBackendSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n root.__isReactDndBackendSetUp = true;\n this.addEventListeners(root);\n }\n teardown() {\n const root = this.rootElement;\n if (root === undefined) {\n return;\n }\n root.__isReactDndBackendSetUp = false;\n this.removeEventListeners(this.rootElement);\n this.clearCurrentDragSourceNode();\n if (this.asyncEndDragFrameId) {\n var ref;\n (ref = this.window) === null || ref === void 0 ? void 0 : ref.cancelAnimationFrame(this.asyncEndDragFrameId);\n }\n }\n connectDragPreview(sourceId, node, options) {\n this.sourcePreviewNodeOptions.set(sourceId, options);\n this.sourcePreviewNodes.set(sourceId, node);\n return ()=>{\n this.sourcePreviewNodes.delete(sourceId);\n this.sourcePreviewNodeOptions.delete(sourceId);\n };\n }\n connectDragSource(sourceId, node, options) {\n this.sourceNodes.set(sourceId, node);\n this.sourceNodeOptions.set(sourceId, options);\n const handleDragStart = (e)=>this.handleDragStart(e, sourceId)\n ;\n const handleSelectStart = (e)=>this.handleSelectStart(e)\n ;\n node.setAttribute('draggable', 'true');\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n return ()=>{\n this.sourceNodes.delete(sourceId);\n this.sourceNodeOptions.delete(sourceId);\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', 'false');\n };\n }\n connectDropTarget(targetId, node) {\n const handleDragEnter = (e)=>this.handleDragEnter(e, targetId)\n ;\n const handleDragOver = (e)=>this.handleDragOver(e, targetId)\n ;\n const handleDrop = (e)=>this.handleDrop(e, targetId)\n ;\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n return ()=>{\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n }\n addEventListeners(target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.addEventListener) {\n return;\n }\n target.addEventListener('dragstart', this.handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this.handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n }\n removeEventListeners(target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.removeEventListener) {\n return;\n }\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this.handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this.handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n }\n getCurrentSourceNodeOptions() {\n const sourceId = this.monitor.getSourceId();\n const sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n return _objectSpread({\n dropEffect: this.altKeyPressed ? 'copy' : 'move'\n }, sourceNodeOptions || {});\n }\n getCurrentDropEffect() {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n return this.getCurrentSourceNodeOptions().dropEffect;\n }\n getCurrentSourcePreviewNodeOptions() {\n const sourceId = this.monitor.getSourceId();\n const sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n return _objectSpread({\n anchorX: 0.5,\n anchorY: 0.5,\n captureDraggingState: false\n }, sourcePreviewNodeOptions || {});\n }\n isDraggingNativeItem() {\n const itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some((key)=>NativeTypes[key] === itemType\n );\n }\n beginDragNativeItem(type, dataTransfer) {\n this.clearCurrentDragSourceNode();\n this.currentNativeSource = createNativeDragSource(type, dataTransfer);\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([\n this.currentNativeHandle\n ]);\n }\n setCurrentDragSourceNode(node) {\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node;\n // A timeout of > 0 is necessary to resolve Firefox issue referenced\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n const MOUSE_MOVE_TIMEOUT = 1000;\n // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n //\n // We need to wait before we start listening for mousemove events.\n // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n // immediately in some browsers.\n //\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n //\n this.mouseMoveTimeoutTimer = setTimeout(()=>{\n var ref;\n return (ref = this.rootElement) === null || ref === void 0 ? void 0 : ref.addEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }, MOUSE_MOVE_TIMEOUT);\n }\n clearCurrentDragSourceNode() {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n if (this.rootElement) {\n var ref;\n (ref = this.window) === null || ref === void 0 ? void 0 : ref.clearTimeout(this.mouseMoveTimeoutTimer || undefined);\n this.rootElement.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }\n this.mouseMoveTimeoutTimer = null;\n return true;\n }\n return false;\n }\n handleDragStart(e, sourceId) {\n if (e.defaultPrevented) {\n return;\n }\n if (!this.dragStartSourceIds) {\n this.dragStartSourceIds = [];\n }\n this.dragStartSourceIds.unshift(sourceId);\n }\n handleDragEnter(_e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n }\n handleDragOver(_e, targetId) {\n if (this.dragOverTargetIds === null) {\n this.dragOverTargetIds = [];\n }\n this.dragOverTargetIds.unshift(targetId);\n }\n handleDrop(_e, targetId) {\n this.dropTargetIds.unshift(targetId);\n }\n constructor(manager, globalContext, options){\n this.sourcePreviewNodes = new Map();\n this.sourcePreviewNodeOptions = new Map();\n this.sourceNodes = new Map();\n this.sourceNodeOptions = new Map();\n this.dragStartSourceIds = null;\n this.dropTargetIds = [];\n this.dragEnterTargetIds = [];\n this.currentNativeSource = null;\n this.currentNativeHandle = null;\n this.currentDragSourceNode = null;\n this.altKeyPressed = false;\n this.mouseMoveTimeoutTimer = null;\n this.asyncEndDragFrameId = null;\n this.dragOverTargetIds = null;\n this.lastClientOffset = null;\n this.hoverRafId = null;\n this.getSourceClientOffset = (sourceId)=>{\n const source = this.sourceNodes.get(sourceId);\n return source && getNodeClientOffset(source) || null;\n };\n this.endDragNativeItem = ()=>{\n if (!this.isDraggingNativeItem()) {\n return;\n }\n this.actions.endDrag();\n if (this.currentNativeHandle) {\n this.registry.removeSource(this.currentNativeHandle);\n }\n this.currentNativeHandle = null;\n this.currentNativeSource = null;\n };\n this.isNodeInDocument = (node)=>{\n // Check the node either in the main document or in the current context\n return Boolean(node && this.document && this.document.body && this.document.body.contains(node));\n };\n this.endDragIfSourceWasRemovedFromDOM = ()=>{\n const node = this.currentDragSourceNode;\n if (node == null || this.isNodeInDocument(node)) {\n return;\n }\n if (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n this.actions.endDrag();\n }\n this.cancelHover();\n };\n this.scheduleHover = (dragOverTargetIds)=>{\n if (this.hoverRafId === null && typeof requestAnimationFrame !== 'undefined') {\n this.hoverRafId = requestAnimationFrame(()=>{\n if (this.monitor.isDragging()) {\n this.actions.hover(dragOverTargetIds || [], {\n clientOffset: this.lastClientOffset\n });\n }\n this.hoverRafId = null;\n });\n }\n };\n this.cancelHover = ()=>{\n if (this.hoverRafId !== null && typeof cancelAnimationFrame !== 'undefined') {\n cancelAnimationFrame(this.hoverRafId);\n this.hoverRafId = null;\n }\n };\n this.handleTopDragStartCapture = ()=>{\n this.clearCurrentDragSourceNode();\n this.dragStartSourceIds = [];\n };\n this.handleTopDragStart = (e)=>{\n if (e.defaultPrevented) {\n return;\n }\n const { dragStartSourceIds } = this;\n this.dragStartSourceIds = null;\n const clientOffset = getEventClientOffset(e);\n // Avoid crashing if we missed a drop event or our previous drag died\n if (this.monitor.isDragging()) {\n this.actions.endDrag();\n this.cancelHover();\n }\n // Don't publish the source just yet (see why below)\n this.actions.beginDrag(dragStartSourceIds || [], {\n publishSource: false,\n getSourceClientOffset: this.getSourceClientOffset,\n clientOffset\n });\n const { dataTransfer } = e;\n const nativeType = matchNativeItemType(dataTransfer);\n if (this.monitor.isDragging()) {\n if (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n const sourceId = this.monitor.getSourceId();\n const sourceNode = this.sourceNodes.get(sourceId);\n const dragPreview = this.sourcePreviewNodes.get(sourceId) || sourceNode;\n if (dragPreview) {\n const { anchorX , anchorY , offsetX , offsetY } = this.getCurrentSourcePreviewNodeOptions();\n const anchorPoint = {\n anchorX,\n anchorY\n };\n const offsetPoint = {\n offsetX,\n offsetY\n };\n const dragPreviewOffset = getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n }\n try {\n // Firefox won't drag without setting data\n dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.setData('application/json', {});\n } catch (err) {\n // IE doesn't support MIME types in setData\n }\n // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n this.setCurrentDragSourceNode(e.target);\n // Now we are ready to publish the drag source.. or are we not?\n const { captureDraggingState } = this.getCurrentSourcePreviewNodeOptions();\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(()=>this.actions.publishDragSource()\n , 0);\n } else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n this.actions.publishDragSource();\n }\n } else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n this.beginDragNativeItem(nativeType);\n } else if (dataTransfer && !dataTransfer.types && (e.target && !e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in\n // dragenter handler.\n return;\n } else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n };\n this.handleTopDragEndCapture = ()=>{\n if (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n this.actions.endDrag();\n }\n this.cancelHover();\n };\n this.handleTopDragEnterCapture = (e)=>{\n this.dragEnterTargetIds = [];\n if (this.isDraggingNativeItem()) {\n var ref;\n (ref = this.currentNativeSource) === null || ref === void 0 ? void 0 : ref.loadDataTransfer(e.dataTransfer);\n }\n const isFirstEnter = this.enterLeaveCounter.enter(e.target);\n if (!isFirstEnter || this.monitor.isDragging()) {\n return;\n }\n const { dataTransfer } = e;\n const nativeType = matchNativeItemType(dataTransfer);\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n this.beginDragNativeItem(nativeType, dataTransfer);\n }\n };\n this.handleTopDragEnter = (e)=>{\n const { dragEnterTargetIds } = this;\n this.dragEnterTargetIds = [];\n if (!this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n this.altKeyPressed = e.altKey;\n // If the target changes position as the result of `dragenter`, `dragover` might still\n // get dispatched despite target being no longer there. The easy solution is to check\n // whether there actually is a target before firing `hover`.\n if (dragEnterTargetIds.length > 0) {\n this.actions.hover(dragEnterTargetIds, {\n clientOffset: getEventClientOffset(e)\n });\n }\n const canDrop = dragEnterTargetIds.some((targetId)=>this.monitor.canDropOnTarget(targetId)\n );\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = this.getCurrentDropEffect();\n }\n }\n };\n this.handleTopDragOverCapture = (e)=>{\n this.dragOverTargetIds = [];\n if (this.isDraggingNativeItem()) {\n var ref;\n (ref = this.currentNativeSource) === null || ref === void 0 ? void 0 : ref.loadDataTransfer(e.dataTransfer);\n }\n };\n this.handleTopDragOver = (e)=>{\n const { dragOverTargetIds } = this;\n this.dragOverTargetIds = [];\n if (!this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = 'none';\n }\n return;\n }\n this.altKeyPressed = e.altKey;\n this.lastClientOffset = getEventClientOffset(e);\n this.scheduleHover(dragOverTargetIds);\n const canDrop = (dragOverTargetIds || []).some((targetId)=>this.monitor.canDropOnTarget(targetId)\n );\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = this.getCurrentDropEffect();\n }\n } else if (this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n } else {\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = 'none';\n }\n }\n };\n this.handleTopDragLeaveCapture = (e)=>{\n if (this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n const isLastLeave = this.enterLeaveCounter.leave(e.target);\n if (!isLastLeave) {\n return;\n }\n if (this.isDraggingNativeItem()) {\n setTimeout(()=>this.endDragNativeItem()\n , 0);\n }\n this.cancelHover();\n };\n this.handleTopDropCapture = (e)=>{\n this.dropTargetIds = [];\n if (this.isDraggingNativeItem()) {\n var ref;\n e.preventDefault();\n (ref = this.currentNativeSource) === null || ref === void 0 ? void 0 : ref.loadDataTransfer(e.dataTransfer);\n } else if (matchNativeItemType(e.dataTransfer)) {\n // Dragging some elements, like and may still behave like a native drag event,\n // even if the current drag event matches a user-defined type.\n // Stop the default behavior when we're not expecting a native item to be dropped.\n e.preventDefault();\n }\n this.enterLeaveCounter.reset();\n };\n this.handleTopDrop = (e)=>{\n const { dropTargetIds } = this;\n this.dropTargetIds = [];\n this.actions.hover(dropTargetIds, {\n clientOffset: getEventClientOffset(e)\n });\n this.actions.drop({\n dropEffect: this.getCurrentDropEffect()\n });\n if (this.isDraggingNativeItem()) {\n this.endDragNativeItem();\n } else if (this.monitor.isDragging()) {\n this.actions.endDrag();\n }\n this.cancelHover();\n };\n this.handleSelectStart = (e)=>{\n const target = e.target;\n // Only IE requires us to explicitly say\n // we want drag drop operation to start\n if (typeof target.dragDrop !== 'function') {\n return;\n }\n // Inputs and textareas should be selectable\n if (target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return;\n }\n // For other targets, ask IE\n // to enable drag and drop\n e.preventDefault();\n target.dragDrop();\n };\n this.options = new OptionsReader(globalContext, options);\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n this.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument);\n }\n}\n\n//# sourceMappingURL=HTML5BackendImpl.js.map","import { HTML5BackendImpl } from './HTML5BackendImpl.js';\nimport * as _NativeTypes from './NativeTypes.js';\nexport { getEmptyImage } from './getEmptyImage.js';\nexport { _NativeTypes as NativeTypes };\nexport const HTML5Backend = function createBackend(manager, context, options) {\n return new HTML5BackendImpl(manager, context, options);\n};\n\n//# sourceMappingURL=index.js.map"],"names":["memoize","fn","result","without","items","item","i","union","itemsA","itemsB","set","insertItem","key","EnterLeaveCounter","enteringNode","previousLength","isNodeEntered","node","leavingNode","isNodeInDocument","NativeDragSource","property","dataTransfer","newProperties","propertyFn","monitor","handle","config","FILE","URL","TEXT","HTML","getDataFromDataTransfer","typesToTry","defaultValue","resultSoFar","typeToTry","nativeTypesConfig","NativeTypes.FILE","NativeTypes.HTML","matchesTypes","NativeTypes.URL","NativeTypes.TEXT","createNativeDragSource","type","matchNativeItemType","dataTransferTypes","nativeItemType","typeConfig","t","isFirefox","isSafari","MonotonicInterpolant","x","xs","ys","c1s","c2s","c3s","low","high","mid","xHere","diff","diffSq","length","indexes","b","dxs","ms","dx","dy","i1","i2","m2","mNext","dxNext","common","m","i3","c1","invDx","ELEMENT_NODE","getNodeClientOffset","el","top","left","getEventClientOffset","e","isImageNode","ref","getDragPreviewSize","isImage","dragPreview","sourceWidth","sourceHeight","dragPreviewWidth","dragPreviewHeight","getDragPreviewOffset","sourceNode","clientOffset","anchorPoint","offsetPoint","dragPreviewNodeOffsetFromClient","offsetFromDragPreview","anchorX","anchorY","calculateYOffset","y","calculateXOffset","offsetX","offsetY","isManualOffsetX","isManualOffsetY","OptionsReader","globalContext","options","_defineProperty","obj","value","_objectSpread","target","source","ownKeys","sym","HTML5BackendImpl","ref1","root","sourceId","handleDragStart","handleSelectStart","targetId","handleDragEnter","handleDragOver","handleDrop","sourceNodeOptions","sourcePreviewNodeOptions","itemType","NativeTypes","MOUSE_MOVE_TIMEOUT","_e","manager","dragOverTargetIds","dragStartSourceIds","nativeType","dragPreviewOffset","captureDraggingState","dragEnterTargetIds","dropTargetIds","HTML5Backend","context"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12]}