{"version":3,"file":"js/4075-d8dcced8690a051187f8.js","mappings":"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","sources":["webpack://AYTM/./app/_stock/webpack/lib/adnd/ADNDHelpers.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/ADNDState.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/RectHitTest.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/RectVHitTest.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/layers/ADNDTargetsLayer.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/layers/ADNDGlassLayer.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/layers/ADNDEdgeScrollingLayer.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/targets/ADNDDropTarget.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/sources/ADNDDataSource.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/targets/ADNDDropDataTarget.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/targets/ADNDDropFilesTarget.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/layers/ADNDDragLayer.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/targets/itemsList/ADNDListItem.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/targets/ADNDItemsList.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/sources/ADNDDraggableDataSource.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/sources/itemsList/ADNDListItemHandle.js","webpack://AYTM/./app/_stock/webpack/lib/adnd/ADND.js"],"sourcesContent":["export const DATA_ITEM_TYPE_PREFIX = 'dnditemtype/'\n\nexport const getTime =\n window.performance && window.performance.now\n ? window.performance.now.bind(window.performance)\n : 'function' == typeof Date.now\n ? Date.now\n : function () {\n return Date.now()\n }\n\nexport const requestAnimationFrame =\n null != window.requestAnimationFrame\n ? window.requestAnimationFrame\n : (function () {\n let lastCallTime = null\n return function requestAnimationFrame(callback) {\n const currentTime = getTime()\n const nextFrameAfter = null == lastCallTime ? 16 : Math.max(0, 16 - Math.floor(currentTime - lastCallTime))\n const nextCallTime = currentTime + nextFrameAfter\n lastCallTime = nextCallTime\n return setTimeout(function () {\n callback(nextCallTime)\n }, nextFrameAfter)\n }\n })()\n\nexport const cancelAnimationFrame =\n null != window.cancelAnimationFrame\n ? window.cancelAnimationFrame\n : function (requestID) {\n clearTimeout(requestID)\n }\n\nexport function getScrollX() {\n return null != window.scrollX\n ? window.scrollX\n : null != window.pageXOffset\n ? window.pageXOffset\n : (document.documentElement || document.body.parentNode || document.body).scrollLeft\n}\n\nexport function getScrollY() {\n return null != window.scrollY\n ? window.scrollY\n : null != window.pageYOffset\n ? window.pageYOffset\n : (document.documentElement || document.body.parentNode || document.body).scrollTop\n}\n\nconst fileTypeRegExp = /file/i\nconst filePromiseTypeRegExp = /file-promise/i\nexport function dragContainsFiles(event) {\n if (event && event.dataTransfer && event.dataTransfer.types) {\n for (let i = 0; i < event.dataTransfer.types.length; i++) {\n const type = event.dataTransfer.types[i]\n if (type && fileTypeRegExp.test(type) && !filePromiseTypeRegExp.test(type)) {\n return true\n }\n }\n }\n return false\n}\n\nexport function itemTypeFromEvent(event) {\n if (event && event.dataTransfer && event.dataTransfer.types) {\n for (let i = 0; i < event.dataTransfer.types.length; i++) {\n const dataTransferType = event.dataTransfer.types[i]\n if (dataTransferType.slice(0, DATA_ITEM_TYPE_PREFIX.length) == DATA_ITEM_TYPE_PREFIX) {\n return dataTransferType.slice(DATA_ITEM_TYPE_PREFIX.length)\n }\n }\n }\n return null\n}\n\nexport function getItemType(state, event) {\n if (null != state.source) {\n return state.source.PUBLIC.getType()\n } else if (dragContainsFiles(event)) {\n return 'files'\n } else {\n return itemTypeFromEvent(event)\n }\n}\n\nexport const isMac =\n 0 <= navigator.platform.search(/mac/i) // eslint-disable-line compat/compat\n ? function () {\n return true\n }\n : function () {\n return false\n }\n\nexport function isCloningEvent(event) {\n return isMac() ? event.shiftKey : event.shiftKey || event.ctrlKey\n}\n","export function DEFAULT_STATE() {\n return {\n stage: null, // 'started', 'dropped', 'canceled'\n cursor: {\n x: null,\n y: null\n },\n item: {\n type: null,\n width: null,\n height: null\n },\n target: {\n current: null\n },\n source: null,\n operation: {\n type: 'clone',\n enableMove: false,\n enableClone: true\n },\n layers: {\n glass: true,\n edgeScrolling: true\n }\n }\n}\n\nlet state = DEFAULT_STATE()\n\nexport function getState() {\n return state\n}\n\nexport function updateState(updater) {\n state = updater(state) || DEFAULT_STATE()\n return state\n}\n","export const DEFAULT_CELL_WIDTH = 500\nexport const DEFAULT_CELL_HEIGHT = 500\n\nfunction DEFAULT_PROPS() {\n return {\n cellWidth: DEFAULT_CELL_WIDTH,\n cellHeight: DEFAULT_CELL_HEIGHT,\n table: [],\n idMap: {},\n lastRect: null\n }\n}\n\nconst PUBLIC = {\n add(id, rect, sort = 0) {\n const { table, idMap, cellWidth, cellHeight } = this.props\n const startCol = Math.floor(rect.left / cellWidth)\n const startRow = Math.floor(rect.top / cellHeight)\n const endCol = Math.floor(rect.right / cellWidth)\n const endRow = Math.floor(rect.bottom / cellHeight)\n for (let row = startRow; row <= endRow; row++) {\n if (null == table[row]) {\n table[row] = []\n }\n for (let col = startCol; col <= endCol; col++) {\n if (null == table[row][col]) {\n table[row][col] = []\n }\n table[row][col].push({\n id,\n rect,\n sort\n })\n }\n }\n idMap[id] = {\n rect,\n sort,\n startCol,\n startRow,\n endCol,\n endRow\n }\n return this.PUBLIC\n },\n bake({ startRow = 0, endRow = Number.POSITIVE_INFINITY, startCol = 0, endCol = Number.POSITIVE_INFINITY } = {}) {\n const { table } = this.props\n const realEndRow = Math.min(table.length - 1, endRow)\n for (let r = startRow; r <= realEndRow; r++) {\n const row = table[r]\n if (null != row) {\n const realEndCol = Math.min(row.length - 1, endCol)\n for (let c = startCol; c <= realEndCol; c++) {\n const cell = row[c]\n if (null != cell) {\n row[c] = cell.sort(function (a, b) {\n return b.sort - a.sort\n })\n }\n }\n }\n }\n return this.PUBLIC\n },\n clear() {\n this.props.table = []\n this.props.idMap = {}\n this.props.lastRect = null\n return this.PUBLIC\n },\n update(id, rect, sort) {\n const { table, idMap } = this.props\n const prevRecord = idMap[id]\n // remove old record\n if (null != prevRecord) {\n const { startRow, endRow, startCol, endCol, rect: prevRect } = prevRecord\n if (\n null != rect &&\n rect.left === prevRect.left &&\n rect.right === prevRect.right &&\n rect.top === prevRect.top &&\n rect.bottom === prevRect.bottom\n ) {\n // no update needed\n return this.PUBLIC\n }\n for (let row = startRow; row <= endRow; row++) {\n if (null == table[row]) {\n continue\n }\n for (let col = startCol; col <= endCol; col++) {\n if (null == table[row][col]) {\n continue\n }\n table[row][col] = table[row][col].filter(record => record.id !== id)\n }\n }\n }\n if (null != rect) {\n // add new record\n this.PUBLIC.add(id, rect, null == sort ? (null == prevRecord ? void 0 : prevRecord.sort) : sort)\n // bake affected range\n const { startRow, endRow, startCol, endCol } = idMap[id]\n this.PUBLIC.bake({ startRow, endRow, startCol, endCol })\n }\n // return api\n return this.PUBLIC\n },\n isEmpty() {\n return 0 == this.props.table.length\n },\n test(x, y) {\n const { lastRect, cellWidth, cellHeight, table } = this.props\n if (\n null != lastRect &&\n lastRect.rect.left <= x &&\n lastRect.rect.right >= x &&\n lastRect.rect.top <= y &&\n lastRect.rect.bottom >= y\n ) {\n return lastRect.id\n } else {\n const cellCol = Math.floor(x / cellWidth)\n const cellRow = Math.floor(y / cellHeight)\n const rects = null == table[cellRow] ? null : table[cellRow][cellCol]\n if (null == rects) {\n return null\n } else {\n for (const testRect of rects) {\n if (\n testRect.rect.left <= x &&\n testRect.rect.right >= x &&\n testRect.rect.top <= y &&\n testRect.rect.bottom >= y\n ) {\n this.props.lastRect = testRect\n return testRect.id\n }\n }\n }\n }\n return null\n }\n}\n\nexport default function RectHitTest({ cellWidth = DEFAULT_CELL_WIDTH, cellHeight = DEFAULT_CELL_HEIGHT } = {}) {\n const RectHitTest = {\n props: Object.assign({}, DEFAULT_PROPS(), { cellWidth, cellHeight })\n }\n RectHitTest.PUBLIC = {\n add: PUBLIC.add.bind(RectHitTest),\n bake: PUBLIC.bake.bind(RectHitTest),\n isEmpty: PUBLIC.isEmpty.bind(RectHitTest),\n clear: PUBLIC.clear.bind(RectHitTest),\n update: PUBLIC.update.bind(RectHitTest),\n test: PUBLIC.test.bind(RectHitTest)\n }\n return RectHitTest.PUBLIC\n}\n","export const DEFAULT_PAGE_SIZE = 1000\n\nfunction DEFAULT_PROPS() {\n return {\n pageSize: DEFAULT_PAGE_SIZE,\n pages: [],\n idMap: {},\n lastPageIndex: null,\n lastRectIndex: null,\n leftBorder: null,\n rightBorder: null\n }\n}\n\nconst PUBLIC = {\n add(id, rect) {\n if (rect.left === rect.right || rect.top === rect.bottom) {\n return this.PUBLIC\n }\n const { pages, idMap, pageSize, leftBorder, rightBorder } = this.props\n const topPageIndex = Math.floor(rect.top / pageSize)\n const bottomPageIndex = Math.floor(rect.bottom / pageSize)\n for (let pageIndex = topPageIndex; pageIndex <= bottomPageIndex; pageIndex++) {\n if (null == pages[pageIndex]) {\n pages[pageIndex] = [\n {\n id,\n top: rect.top,\n bottom: rect.bottom\n }\n ]\n } else {\n pages[pageIndex].push({\n id,\n top: rect.top,\n bottom: rect.bottom\n })\n }\n }\n idMap[id] = { rect, topPageIndex, bottomPageIndex }\n this.props.leftBorder = null == leftBorder ? rect.left : Math.min(leftBorder, rect.left)\n this.props.rightBorder = null == rightBorder ? rect.right : Math.max(rightBorder, rect.right)\n return this.PUBLIC\n },\n bake({ topPageIndex = 0, bottomPageIndex = this.props.pages.length - 1 } = {}) {\n const { pages } = this.props\n for (let i = topPageIndex; i <= bottomPageIndex; i++) {\n if (null != pages[i]) {\n pages[i].sort(function (a, b) {\n return a.top - b.top\n })\n }\n }\n return this.PUBLIC\n },\n isEmpty() {\n return 0 == this.props.pages.length\n },\n clear() {\n this.props.pages = []\n this.props.idMap = {}\n this.props.lastPageIndex = null\n this.props.lastRectIndex = null\n this.props.leftBorder = null\n this.props.rightBorder = null\n return this.PUBLIC\n },\n update(id, rect) {\n const { pages, idMap } = this.props\n const prevRecord = idMap[id]\n // remove old record\n if (null != prevRecord) {\n const { topPageIndex, bottomPageIndex, rect: prevRect } = prevRecord\n if (\n null != rect &&\n rect.left === prevRect.left &&\n rect.right === prevRect.right &&\n rect.top === prevRect.top &&\n rect.bottom === prevRect.bottom\n ) {\n // no update needed\n return this.PUBLIC\n }\n for (let i = topPageIndex; i <= bottomPageIndex; i++) {\n if (null == pages[i]) {\n continue\n }\n pages[i] = pages[i].filter(record => record.id !== id)\n }\n }\n if (null != rect) {\n // add new record\n this.PUBLIC.add(id, rect)\n // bake affected range\n const { topPageIndex, bottomPageIndex } = idMap[id]\n this.PUBLIC.bake({ topPageIndex, bottomPageIndex })\n }\n // return api\n return this.PUBLIC\n },\n test(x, y) {\n const lastPageIndex = this.props.lastPageIndex\n const testPageIndex = Math.floor(y / this.props.pageSize)\n this.props.lastPageIndex = testPageIndex\n if (\n (null != this.props.leftBorder && x < this.props.leftBorder) ||\n (null != this.props.rightBorder && x > this.props.rightBorder)\n ) {\n // left horizontal borders\n this.props.lastRectIndex = null\n return void 0\n }\n const testPage = this.props.pages[testPageIndex]\n if (null != testPage) {\n if (lastPageIndex == testPageIndex) {\n // same page\n if (null != this.props.lastRectIndex) {\n const lastRect = testPage[this.props.lastRectIndex]\n if (y >= lastRect.top && y <= lastRect.bottom) {\n // we still inside last rect\n return lastRect.id\n } else if (this.props.lastRectIndex > 0 && y < lastRect.top) {\n // scan up\n for (let i = this.props.lastRectIndex - 1; i >= 0; i--) {\n const possibleRect = testPage[i]\n if (y >= possibleRect.top && y <= possibleRect.bottom) {\n this.props.lastRectIndex = i\n return possibleRect.id\n } else if (y > possibleRect.bottom) {\n break\n }\n }\n } else if (this.props.lastRectIndex < testPage.length - 1 && y > lastRect.bottom) {\n // scan down\n for (let i = this.props.lastRectIndex + 1; i < testPage.length; i++) {\n const possibleRect = testPage[i]\n if (y >= possibleRect.top && y <= possibleRect.bottom) {\n this.props.lastRectIndex = i\n return possibleRect.id\n } else if (y < possibleRect.top) {\n break\n }\n }\n }\n } else {\n // full page scan if no lastRectIndex\n for (const [i, possibleRect] of testPage.entries()) {\n if (y >= possibleRect.top && y <= possibleRect.bottom) {\n this.props.lastRectIndex = i\n return possibleRect.id\n }\n }\n }\n } else {\n // other page\n if (null != lastPageIndex && lastPageIndex > testPageIndex) {\n // scan from bottom\n for (let i = testPage.length - 1; i >= 0; i--) {\n const possibleRect = testPage[i]\n if (y >= possibleRect.top && y <= possibleRect.bottom) {\n this.props.lastRectIndex = i\n return possibleRect.id\n } else if (y > possibleRect.bottom) {\n break\n }\n }\n } else {\n // scan from top\n for (const [i, possibleRect] of testPage.entries()) {\n if (y >= possibleRect.top && y <= possibleRect.bottom) {\n this.props.lastRectIndex = i\n return possibleRect.id\n } else if (y < possibleRect.top) {\n break\n }\n }\n }\n }\n }\n // nothing found\n this.props.lastRectIndex = null\n return null\n }\n}\n\nexport default function RectVHitTest(props = {}) {\n const RectVHitTest = {\n props: Object.assign({}, DEFAULT_PROPS(), props)\n }\n RectVHitTest.PUBLIC = {\n add: PUBLIC.add.bind(RectVHitTest),\n bake: PUBLIC.bake.bind(RectVHitTest),\n isEmpty: PUBLIC.isEmpty.bind(RectVHitTest),\n clear: PUBLIC.clear.bind(RectVHitTest),\n update: PUBLIC.update.bind(RectVHitTest),\n test: PUBLIC.test.bind(RectVHitTest)\n }\n return RectVHitTest.PUBLIC\n}\n","import { getTime, getScrollX, getScrollY } from '../ADNDHelpers'\nimport { getState, updateState } from '../ADNDState'\n\nimport RectHitTest from '../RectHitTest'\nimport RectVHitTest from '../RectVHitTest'\n\nexport const STAGE_STOPPED = 0\nexport const STAGE_INIT = 1\nexport const STAGE_FETCH = 10\nexport const STAGE_HIT_TEST_BAKE = 11\nexport const STAGE_UPDATE_DYNAMIC_TARGETS = 12\nexport const STAGE_STARTED = 100\n\nexport const UPDATE_DYNAMIC_TARGETS_TICK = 45\n\nconst props = {\n stage: STAGE_STOPPED,\n targets: {},\n type: null,\n fetched: 0,\n activeTargets: [],\n activeDynamicTargets: [],\n updateDynamicTargetsTickCounter: 0,\n currentTargetIndex: null,\n rectHitTest: null,\n zIndexRectHitTest: null,\n blackHoles: {},\n lastCursor: {\n x: null,\n y: null\n },\n lock: {\n x: null,\n y: null\n },\n hitShift: {\n x: 0,\n y: 0\n },\n started: false\n}\n\nconst LAYER = {\n updatesState: true,\n start(/*event*/) {\n LAYER.setStage(STAGE_INIT)\n return LAYER\n },\n stop(/*event*/) {\n LAYER.setStage(STAGE_STOPPED)\n return LAYER\n },\n isStarted() {\n return props.started\n },\n setStage(stage) {\n props.stage = stage\n if (STAGE_STARTED == stage && !props.started) {\n // started\n props.started = true\n props.activeTargets.forEach(function (target) {\n if (target.PRIVATE.doStart) {\n target.PRIVATE.doStart()\n }\n })\n } else if (STAGE_STOPPED == stage || STAGE_INIT == stage) {\n // stopped\n const started = props.started\n props.started = false\n props.blackHoles = {}\n props.lastCursor.x = null\n props.lastCursor.y = null\n if (STAGE_STOPPED == stage) {\n LAYER.lockX(null)\n LAYER.lockY(null)\n props.rectHitTest = null\n props.zIndexRectHitTest = null\n } else if (STAGE_INIT == stage) {\n props.rectHitTest = null != props.lock.x ? RectVHitTest() : RectHitTest()\n props.zIndexRectHitTest = null\n }\n if (null != props.currentTargetIndex) {\n const currentTarget = props.activeTargets[props.currentTargetIndex]\n if (null != currentTarget) {\n currentTarget.PRIVATE.doLeave(getState())\n }\n }\n if (started) {\n props.activeTargets.forEach(function (target) {\n if (target.PRIVATE.doStop) {\n target.PRIVATE.doStop()\n }\n })\n }\n props.fetched = 0\n props.activeTargets = []\n props.activeDynamicTargets = []\n props.updateDynamicTargetsTickCounter = 0\n props.currentTargetIndex = null\n }\n return LAYER\n },\n getStage() {\n return props.stage\n },\n frame(state) {\n if (props.type != state.item.type) {\n props.type = state.item.type\n LAYER.setStage(STAGE_INIT)\n return state\n }\n switch (props.stage) {\n case STAGE_INIT: {\n return LAYER.setStage(STAGE_FETCH).frame(state)\n }\n case STAGE_FETCH: {\n fetchTargets()\n return state\n }\n case STAGE_HIT_TEST_BAKE: {\n if (props.activeTargets.length && null != props.rectHitTest) {\n props.activeTargets.forEach(function (target, index) {\n props.rectHitTest.add(index, target.props.rect)\n if (target.props.zIndex > 0) {\n if (null == props.zIndexRectHitTest) {\n props.zIndexRectHitTest = RectHitTest()\n }\n props.zIndexRectHitTest.add(index, target.props.rect, target.props.zIndex)\n }\n })\n props.rectHitTest.bake()\n if (null != props.zIndexRectHitTest) {\n props.zIndexRectHitTest.bake()\n }\n }\n LAYER.setStage(null == props.rectHitTest || props.rectHitTest.isEmpty() ? STAGE_STOPPED : STAGE_STARTED)\n return state\n }\n case STAGE_UPDATE_DYNAMIC_TARGETS: {\n if (props.activeDynamicTargets.length) {\n let targetsUpdated = false\n for (let index = 0; index < props.activeDynamicTargets.length; index++) {\n const dynamicTargetIndex = props.activeDynamicTargets[index]\n const target = props.activeTargets[dynamicTargetIndex]\n if (null != target) {\n target.PRIVATE.fetchRect()\n if (null != target.props.rect) {\n props.rectHitTest.update(dynamicTargetIndex, target.props.rect)\n targetsUpdated = true\n if (target.props.zIndex > 0 && null != props.zIndexRectHitTest) {\n props.zIndexRectHitTest.update(dynamicTargetIndex, target.props.rect, target.props.zIndex)\n }\n }\n }\n }\n if (targetsUpdated) {\n props.lastCursor.x = null\n props.lastCursor.y = null\n }\n }\n LAYER.setStage(STAGE_STARTED)\n return state\n }\n case STAGE_STARTED: {\n if (props.activeDynamicTargets.length) {\n props.updateDynamicTargetsTickCounter++\n if (UPDATE_DYNAMIC_TARGETS_TICK <= props.updateDynamicTargetsTickCounter) {\n props.updateDynamicTargetsTickCounter = 0\n LAYER.setStage(STAGE_UPDATE_DYNAMIC_TARGETS)\n return state\n }\n }\n // apply locks\n let x = null == props.lock.x ? state.cursor.x : props.lock.x\n let y = null == props.lock.y ? state.cursor.y : props.lock.y\n // apply black holes\n let shiftX = 0\n let shiftY = 0\n for (const blackHoleId in props.blackHoles) {\n const blackHole = props.blackHoles[blackHoleId]\n if (\n (null == blackHole.top ? true : y >= blackHole.top) &&\n (null == blackHole.left ? true : x >= blackHole.left)\n ) {\n if (null != blackHole.bottom && null != blackHole.top) {\n shiftY += y < blackHole.bottom ? blackHole.top - y : blackHole.top - blackHole.bottom\n }\n if (null != blackHole.right && null != blackHole.left) {\n shiftX += x < blackHole.right ? blackHole.left - x : blackHole.left - blackHole.right\n }\n if (null != blackHole.height) {\n shiftY += blackHole.height\n }\n if (null != blackHole.width) {\n shiftX += blackHole.width\n }\n }\n }\n x += shiftX\n y += shiftY\n // rect hit test\n if (x != props.lastCursor.x || y != props.lastCursor.y) {\n if (null != props.rectHitTest) {\n const hitX = x + props.hitShift.x\n const hitY = y + props.hitShift.y\n const hitTargetIndex =\n null != props.zIndexRectHitTest\n ? props.zIndexRectHitTest.test(state.cursor.x + props.hitShift.x, state.cursor.y + props.hitShift.y) ||\n props.rectHitTest.test(hitX, hitY)\n : props.rectHitTest.test(hitX, hitY)\n if (hitTargetIndex != props.currentTargetIndex) {\n const lastTarget = null != props.currentTargetIndex ? props.activeTargets[props.currentTargetIndex] : null\n const hitTarget =\n null != hitTargetIndex ? props.activeTargets[hitTargetIndex] : lastTarget.capture ? lastTarget : null\n if (lastTarget != hitTarget) {\n if (null != lastTarget) {\n lastTarget.PRIVATE.doLeave(state)\n }\n if (null != hitTarget) {\n hitTarget.PRIVATE.doEnter(state)\n }\n props.currentTargetIndex = hitTargetIndex\n state.target.current = hitTarget\n }\n }\n if (null != state.target.current && state.target.current.PRIVATE.hitTest) {\n state.target.current = state.target.current.PRIVATE.hitTest(hitX, hitY)\n }\n }\n props.lastCursor.x = x\n props.lastCursor.y = y\n }\n return state.target.current && state.target.current.PRIVATE && state.target.current.PRIVATE.frame\n ? state.target.current.PRIVATE.frame(state)\n : state\n }\n default: {\n return state\n }\n }\n },\n drop(_state, event) {\n if (null != props.currentTargetIndex) {\n const currentTarget = props.activeTargets[props.currentTargetIndex]\n if (null != currentTarget) {\n const state = updateState(function (state) {\n state.stage = 'dropped'\n return state\n })\n currentTarget.PRIVATE.doDrop(state, event)\n }\n }\n return LAYER\n },\n addTarget(type, target) {\n if (null != type) {\n if (null == props.targets[type]) {\n props.targets[type] = []\n }\n if (!props.targets[type].includes(target)) {\n props.targets[type].push(target)\n if (STAGE_STOPPED != props.stage) {\n LAYER.setStage(STAGE_INIT)\n }\n }\n }\n return LAYER\n },\n removeTarget(type, target) {\n if (null != type && null != props.targets[type]) {\n const targetIndex = props.targets[type].indexOf(target)\n if (targetIndex >= 0) {\n props.targets[type].splice(targetIndex, 1)\n if (STAGE_STOPPED != props.stage) {\n LAYER.setStage(STAGE_INIT)\n }\n }\n }\n return LAYER\n },\n lockX(value) {\n props.lock.x = null == value ? null : parseFloat(value)\n if (isNaN(props.lock.x)) {\n props.lock.x = null\n }\n return LAYER\n },\n lockY(value) {\n props.lock.y = null == value ? null : parseFloat(value)\n if (isNaN(props.lock.y)) {\n props.lock.y = null\n }\n return LAYER\n },\n hitShift(x = 0, y = 0) {\n props.hitShift.x = x\n props.hitShift.y = y\n return LAYER\n },\n setBlackHole(id, blackHole) {\n props.blackHoles[id] = blackHole\n return LAYER\n },\n removeBlackHole(id) {\n if (void 0 !== props.blackHoles[id]) {\n delete props.blackHoles[id]\n }\n return LAYER\n }\n}\n\nfunction fetchTargets() {\n if (null == props.type) {\n LAYER.setStage(STAGE_STOPPED)\n return\n }\n const targets = props.targets[props.type]\n if (null == targets || targets.length == props.fetched) {\n LAYER.setStage(STAGE_HIT_TEST_BAKE)\n } else {\n const startTime = getTime()\n const scrollX = getScrollX()\n const scrollY = getScrollY()\n while (props.fetched < targets.length) {\n const target = targets[props.fetched]\n if (target.PRIVATE.acceptDrop(props.type)) {\n target.PRIVATE.fetchRect(scrollX, scrollY)\n props.activeTargets.push(target)\n if (target.props.dynamicPosition) {\n props.activeDynamicTargets.push(props.activeTargets.length - 1)\n }\n }\n props.fetched++\n const iterationTime = getTime()\n if (iterationTime - startTime > 12) {\n // pass fetching rest targets to the next frame\n return\n }\n }\n LAYER.setStage(STAGE_HIT_TEST_BAKE)\n }\n}\n\nexport default function ADNDTargetsLayer() {\n return LAYER\n}\n","import { requestAnimationFrame } from '../ADNDHelpers'\nimport { getState } from '../ADNDState'\nimport ADND from '../ADND'\n\nconst Z_INDEX_DND_LAYER = 9010\n\nconst props = {\n node: null\n}\n\nfunction dragLeave(event) {\n ADND().leftDocument(event)\n}\n\nlet mouseMoveStopTimeout = null\nfunction mouseMove(event) {\n if (event && 0 == event.buttons) {\n requestAnimationFrame(function () {\n const source = getState().source\n if (null == source) {\n if (null != mouseMoveStopTimeout) {\n clearTimeout(mouseMoveStopTimeout)\n }\n mouseMoveStopTimeout = setTimeout(() => {\n mouseMoveStopTimeout = null\n const adndModule = ADND()\n if (adndModule.isStarted()) {\n adndModule.stop(event)\n }\n }, 500)\n } else {\n source.CONNECT.dragEnd(event)\n }\n })\n }\n}\n\nconst LAYER = {\n updatesState: false,\n start(/*event*/) {\n if (null == props.node) {\n const glass = document.createElement('div')\n glass.style.position = 'fixed'\n glass.style.left = 0\n glass.style.right = 0\n glass.style.top = 0\n glass.style.bottom = 0\n glass.style.background = 'transparent'\n glass.style.zIndex = Z_INDEX_DND_LAYER\n glass.style.width = '100%'\n glass.style.height = '100%'\n props.node = glass\n props.node.addEventListener('dragleave', dragLeave, true)\n props.node.addEventListener('mousemove', mouseMove, true)\n requestAnimationFrame(function () {\n if (null != props.node) {\n document.body.appendChild(props.node)\n }\n })\n }\n return LAYER\n },\n stop(/*event*/) {\n if (null != props.node) {\n const glass = props.node\n props.node = null\n glass.removeEventListener('dragleave', dragLeave, true)\n glass.removeEventListener('mousemove', mouseMove, true)\n requestAnimationFrame(function () {\n if (glass.parentNode == document.body) {\n document.body.removeChild(glass)\n }\n })\n }\n return LAYER\n }\n}\n\nexport default function ADNDGlassLayer() {\n return LAYER\n}\n","import { getScrollX, getScrollY } from '../ADNDHelpers'\n\nexport const DEFAULT_TOP_EDGE = 150\nexport const DEFAULT_BOTTOM_EDGE = 150\nexport const DEFAULT_LEFT_EDGE = 120\nexport const DEFAULT_RIGHT_EDGE = 120\n\nexport const SCROLL_ACTIVATION_TIMEOUT = 1000\n\nconst props = {\n started: false,\n active: false,\n topEdge: DEFAULT_TOP_EDGE,\n bottomEdge: DEFAULT_BOTTOM_EDGE,\n leftEdge: DEFAULT_LEFT_EDGE,\n rightEdge: DEFAULT_RIGHT_EDGE,\n stepX: 0,\n stepY: 0,\n lastX: null,\n lastY: null\n}\n\nconst LAYER = {\n updatesState: false,\n start(/*event*/) {\n if (!props.started) {\n props.started = true\n setTimeout(() => {\n if (props.started) {\n props.active = true\n }\n }, SCROLL_ACTIVATION_TIMEOUT)\n }\n return LAYER\n },\n stop(/*event*/) {\n props.started = false\n props.active = false\n return LAYER\n },\n frame(state) {\n if (props.active) {\n const scrollX = getScrollX()\n const scrollY = getScrollY()\n const x = state.cursor.x\n const y = state.cursor.y\n if (x != props.lastX || y != props.lastY) {\n props.stepY = 0\n props.stepX = 0\n if (scrollY > 0 && y <= scrollY + props.topEdge) {\n props.stepY = Math.min(-1, -props.topEdge + y - scrollY) >> 2\n } else if (scrollY < document.body.scrollHeight - window.innerHeight) {\n const bottomEdge = scrollY + window.innerHeight - props.bottomEdge\n if (y >= bottomEdge) {\n props.stepY = Math.max(1, y - bottomEdge) >> 2\n }\n }\n if (scrollX > 0 && x <= scrollX + props.leftEdge) {\n props.stepX = Math.min(-1, -props.leftEdge + x - scrollX) >> 2\n } else if (scrollX < document.body.scrollWidth - window.innerWidth) {\n const rightEdge = scrollX + window.innerWidth - props.rightEdge\n if (x >= rightEdge) {\n props.stepX = Math.max(1, x - rightEdge) >> 2\n }\n }\n props.lastX = x\n props.lastY = y\n }\n if (\n (props.stepY < 0 && scrollY <= 0) ||\n (props.stepY > 0 && scrollY >= document.body.scrollHeight - window.innerHeight)\n ) {\n props.stepY = 0\n }\n if (\n (props.stepX < 0 && scrollX <= 0) ||\n (props.stepX > 0 && scrollX >= document.body.scrollWidth - window.innerWidth)\n ) {\n props.stepX = 0\n }\n if (0 != props.stepX || 0 != props.stepY) {\n // eslint-disable-next-line compat/compat\n window.scrollBy(props.stepX, props.stepY)\n }\n }\n return state\n }\n}\n\nexport default function ADNDEdgeScrollingLayer({\n topEdge = DEFAULT_TOP_EDGE,\n bottomEdge = DEFAULT_BOTTOM_EDGE,\n leftEdge = DEFAULT_LEFT_EDGE,\n rightEdge = DEFAULT_RIGHT_EDGE\n} = {}) {\n props.topEdge = topEdge\n props.bottomEdge = bottomEdge\n props.leftEdge = leftEdge\n props.rightEdge = rightEdge\n return LAYER\n}\n","import { getScrollX, getScrollY, requestAnimationFrame } from '../ADNDHelpers'\n\nimport ADNDTargetsLayer from '../layers/ADNDTargetsLayer'\n\nexport function DEFAULT_PROPS() {\n return {\n acceptTypes: [],\n fetchData: function () {\n return null\n },\n node: null,\n rect: null,\n edge: null,\n dynamicPosition: false,\n zIndex: 0,\n entered: false,\n onEnterHandler: null,\n onLeaveHandler: null,\n onDropHandler: null,\n acceptDropFetcher: null\n }\n}\n\nexport const PRIVATE = {\n doEnter(state) {\n this.props.entered = true\n if (this.props.onEnterHandler) {\n this.props.onEnterHandler(Object.assign({}, state.source?.PUBLIC ?? {}, this.PUBLIC), {\n type: state.item ? state.item.type : null\n })\n }\n return this.PRIVATE\n },\n doLeave(state) {\n this.props.entered = false\n if (this.props.onLeaveHandler) {\n this.props.onLeaveHandler(this.PUBLIC, { type: state.item ? state.item.type : null })\n }\n return this.PRIVATE\n },\n acceptDrop(type) {\n return this.props.acceptDropFetcher ? this.props.acceptDropFetcher(type, this.PUBLIC) : true\n },\n fetchRect(scrollX = getScrollX(), scrollY = getScrollY()) {\n if (null != this.props.node) {\n const rect = this.props.node.getBoundingClientRect()\n this.props.rect = {\n left: rect.left + scrollX - (this.props.edge?.left || 0),\n right: rect.right + scrollX + (this.props.edge?.right || 0),\n top: rect.top + scrollY - (this.props.edge?.top || 0),\n bottom: rect.bottom + scrollY + (this.props.edge?.bottom || 0),\n width: rect.width || rect.right - rect.left,\n height: rect.height || rect.bottom - rect.top\n }\n }\n return this.PRIVATE\n },\n doDrop(state, event) {\n if (this.props.onDropHandler) {\n const data = this.PRIVATE.fetchData(state, event)\n if (null != data) {\n const target = this\n requestAnimationFrame(function () {\n if (target.props.onDropHandler) {\n target.props.onDropHandler.apply(target, data)\n }\n })\n }\n }\n return this.PRIVATE\n },\n fetchData(/*state, event*/) {\n return null\n }\n}\n\nexport const PUBLIC = {\n clone(withProps = {}) {\n return ADNDDropTarget(Object.assign({}, this.props, withProps))\n },\n connect(node, { dynamicPosition, acceptTypes, zIndex } = {}) {\n if (node != this.props.node) {\n if (null != node) {\n const target = this\n this.props.acceptTypes.forEach(function (type) {\n ADNDTargetsLayer().addTarget(type, target)\n })\n } else {\n this.PUBLIC.disconnect()\n }\n this.props.node = node\n }\n if (null != dynamicPosition) {\n this.props.dynamicPosition = dynamicPosition\n }\n if (null != acceptTypes) {\n this.props.acceptTypes = acceptTypes\n }\n if (null != zIndex) {\n this.props.zIndex = zIndex\n }\n return this.PUBLIC\n },\n disconnect() {\n if (null != this.props.node) {\n const target = this\n this.props.acceptTypes.forEach(function (type) {\n ADNDTargetsLayer().removeTarget(type, target)\n })\n this.props.node = null\n }\n return this.PUBLIC\n },\n isConnected() {\n return null != this.props.node\n },\n connectedNode() {\n return this.props.node\n },\n onEnter(onEnterHandler) {\n if ('function' == typeof onEnterHandler) {\n this.props.onEnterHandler = onEnterHandler\n }\n return this.PUBLIC\n },\n onLeave(onLeaveHandler) {\n if ('function' == typeof onLeaveHandler) {\n this.props.onLeaveHandler = onLeaveHandler\n }\n return this.PUBLIC\n },\n acceptDrop(acceptDropFetcher) {\n if ('function' == typeof acceptDropFetcher) {\n this.props.acceptDropFetcher = acceptDropFetcher\n }\n return this.PUBLIC\n },\n onDrop(onDropHandler) {\n if ('function' == typeof onDropHandler) {\n this.props.onDropHandler = onDropHandler\n }\n return this.PUBLIC\n },\n setEdges(top = 0, right = 0, bottom = 0, left = 0) {\n this.props.edge = { top, right, bottom, left }\n return this.PUBLIC\n }\n}\n\nexport function extendADNDDropTarget(props = {}, defaultProps = DEFAULT_PROPS()) {\n const ADNDDropTarget = {\n props: Object.assign({}, defaultProps, props)\n }\n\n ADNDDropTarget.PRIVATE = {\n doEnter: PRIVATE.doEnter.bind(ADNDDropTarget),\n doLeave: PRIVATE.doLeave.bind(ADNDDropTarget),\n acceptDrop: PRIVATE.acceptDrop.bind(ADNDDropTarget),\n fetchRect: PRIVATE.fetchRect.bind(ADNDDropTarget),\n doDrop: PRIVATE.doDrop.bind(ADNDDropTarget),\n fetchData: PRIVATE.fetchData.bind(ADNDDropTarget)\n }\n\n ADNDDropTarget.PUBLIC = {\n clone: PUBLIC.clone.bind(ADNDDropTarget),\n connect: PUBLIC.connect.bind(ADNDDropTarget),\n disconnect: PUBLIC.disconnect.bind(ADNDDropTarget),\n isConnected: PUBLIC.isConnected.bind(ADNDDropTarget),\n connectedNode: PUBLIC.connectedNode.bind(ADNDDropTarget),\n onEnter: PUBLIC.onEnter.bind(ADNDDropTarget),\n onLeave: PUBLIC.onLeave.bind(ADNDDropTarget),\n acceptDrop: PUBLIC.acceptDrop.bind(ADNDDropTarget),\n onDrop: PUBLIC.onDrop.bind(ADNDDropTarget),\n setEdges: PUBLIC.setEdges.bind(ADNDDropTarget)\n }\n\n return ADNDDropTarget\n}\n\nexport default function ADNDDropTarget(props) {\n return extendADNDDropTarget(props).PUBLIC\n}\n","import ADND from '../ADND'\nimport { requestAnimationFrame, getScrollX, getScrollY, DATA_ITEM_TYPE_PREFIX } from '../ADNDHelpers'\nimport { updateState } from '../ADNDState'\n\nexport const TEXT_TYPE = 'Text'\nexport const JSON_TYPE = 'application/json'\n\nexport const TRANSPARENT_1X1_PNG =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='\n\nexport function DEFAULT_PROPS() {\n return {\n node: null,\n rect: null,\n type: null,\n data: null,\n dataFetcher: null,\n onStartHandler: null,\n acceptDragFetcher: null,\n onEndHandler: null,\n crossTab: true,\n clearDragImage: true,\n edgeScrolling: true\n }\n}\n\nexport const CONNECT = {\n dragStart(event) {\n if (null != this.props.type) {\n const data = this.PRIVATE.fetchData()\n if (null != data) {\n this.props.data = data\n\n // update state\n const source = this\n updateState(function (state) {\n source.PRIVATE.fetchRect()\n if (null != source.props.rect) {\n state.item.width = source.props.rect.width\n state.item.height = source.props.rect.height\n }\n state.source = source\n if (null == state.layers) {\n state.layers = {}\n }\n state.layers.edgeScrolling = source.props.edgeScrolling\n return state\n })\n\n if (event.dataTransfer) {\n event.dataTransfer.setData(TEXT_TYPE, '')\n // set crosstab data\n if (this.props.crossTab) {\n // set json type (IE/Edge fill fuck it)\n try {\n const jsonData = JSON.stringify(data)\n event.dataTransfer.setData(JSON_TYPE, jsonData)\n } catch {\n //\n }\n\n // set item type (IE/Edge will fuck it)\n try {\n event.dataTransfer.setData(`${DATA_ITEM_TYPE_PREFIX}${this.props.type}`, 'true')\n } catch {\n //\n }\n }\n\n // clear drag image\n if (this.props.clearDragImage) {\n if (event.dataTransfer.setDragImage) {\n try {\n const transparentImage = document.createElement('img')\n transparentImage.src = TRANSPARENT_1X1_PNG\n event.dataTransfer.setDragImage(transparentImage, 0, 0)\n } catch {\n //\n }\n } else {\n const target = event.srcElement || event.target\n const transparentDragSource = target.cloneNode(true)\n transparentDragSource.innerHTML = ''\n transparentDragSource.style.border = 'none'\n transparentDragSource.style.padding = '0'\n transparentDragSource.style.width = '1px'\n transparentDragSource.style.height = '1px'\n target.parentNode.insertBefore(transparentDragSource, target)\n target.parentNode.removeChild(target)\n requestAnimationFrame(function () {\n transparentDragSource.parentNode.insertBefore(target, transparentDragSource)\n transparentDragSource.remove()\n })\n }\n }\n }\n\n // blur focused element\n if (\n document.activeElement &&\n document.activeElement != document.body &&\n 'function' == typeof document.activeElement.blur\n ) {\n document.activeElement.blur()\n }\n\n this.PRIVATE.doStart(event)\n } else {\n event.preventDefault()\n }\n } else {\n event.preventDefault()\n }\n },\n dragEnd(event) {\n this.PRIVATE.doEnd(event)\n ADND().stop(event)\n const source = this\n updateState(function (state) {\n if (state.source === source) {\n state.source = null\n }\n return state\n })\n }\n}\n\nexport const PRIVATE = {\n acceptDrag() {\n return this.props.acceptDragFetcher ? this.props.acceptDragFetcher(this.PUBLIC) : true\n },\n fetchData() {\n return this.props.dataFetcher ? this.props.dataFetcher() : null\n },\n doStart(event) {\n if (this.props.onStartHandler) {\n this.props.onStartHandler(event, this.PUBLIC)\n }\n return this.PRIVATE\n },\n doEnd(event) {\n if (this.props.onEndHandler) {\n this.props.onEndHandler(event, this.PUBLIC)\n }\n return this.PRIVATE\n },\n fetchRect(scrollX = getScrollX(), scrollY = getScrollY()) {\n if (null != this.props.node) {\n const rect = this.props.node.getBoundingClientRect()\n this.props.rect = {\n left: rect.left + scrollX,\n right: rect.right + scrollX,\n top: rect.top + scrollY,\n bottom: rect.bottom + scrollY,\n width: rect.width || rect.right - rect.left,\n height: rect.height || rect.bottom - rect.top\n }\n } else {\n this.props.rect = null\n }\n return this.PRIVATE\n }\n}\n\nexport const PUBLIC = {\n connect(node) {\n if (node != this.props.node) {\n if (null != this.props.node) {\n this.PUBLIC.disconnect()\n }\n if (null != node) {\n node.addEventListener('dragstart', this.CONNECT.dragStart, true)\n node.addEventListener('dragend', this.CONNECT.dragEnd, true)\n node.draggable = true\n }\n this.props.node = node\n }\n return this.PUBLIC\n },\n disconnect() {\n if (null != this.props.node) {\n this.props.node.removeEventListener('dragstart', this.CONNECT.dragStart, true)\n this.props.node.removeEventListener('dragend', this.CONNECT.dragEnd, true)\n this.props.node.draggable = false\n this.props.node = null\n }\n return this.PUBLIC\n },\n connectedNode() {\n return this.props.node\n },\n onStart(onStartHandler) {\n if ('function' == typeof onStartHandler) {\n this.props.onStartHandler = onStartHandler\n }\n return this.PUBLIC\n },\n acceptDrag(acceptDragFetcher) {\n if ('function' == typeof acceptDragFetcher) {\n this.props.acceptDragFetcher = acceptDragFetcher\n }\n return this.PUBLIC\n },\n onEnd(onEndHandler) {\n if ('function' == typeof onEndHandler) {\n this.props.onEndHandler = onEndHandler\n }\n return this.PUBLIC\n },\n fetchData(dataFetcher) {\n if ('function' == typeof dataFetcher) {\n this.props.dataFetcher = dataFetcher\n }\n return this.PUBLIC\n },\n getType() {\n return this.props.type\n },\n getData() {\n return this.props.data\n }\n}\n\nexport function extendADNDDataSource(props = {}, defaultProps = DEFAULT_PROPS()) {\n const ADNDDataSource = {\n props: Object.assign({}, defaultProps, props)\n }\n\n ADNDDataSource.CONNECT = {\n dragStart: CONNECT.dragStart.bind(ADNDDataSource),\n dragEnd: CONNECT.dragEnd.bind(ADNDDataSource)\n }\n\n ADNDDataSource.PRIVATE = {\n acceptDrag: PRIVATE.acceptDrag.bind(ADNDDataSource),\n fetchData: PRIVATE.fetchData.bind(ADNDDataSource),\n doStart: PRIVATE.doStart.bind(ADNDDataSource),\n doEnd: PRIVATE.doEnd.bind(ADNDDataSource),\n fetchRect: PRIVATE.fetchRect.bind(ADNDDataSource)\n }\n\n ADNDDataSource.PUBLIC = {\n connect: PUBLIC.connect.bind(ADNDDataSource),\n disconnect: PUBLIC.disconnect.bind(ADNDDataSource),\n connectedNode: PUBLIC.connectedNode.bind(ADNDDataSource),\n onStart: PUBLIC.onStart.bind(ADNDDataSource),\n acceptDrag: PUBLIC.acceptDrag.bind(ADNDDataSource),\n onEnd: PUBLIC.onEnd.bind(ADNDDataSource),\n fetchData: PUBLIC.fetchData.bind(ADNDDataSource),\n getType: PUBLIC.getType.bind(ADNDDataSource),\n getData: PUBLIC.getData.bind(ADNDDataSource)\n }\n\n return ADNDDataSource\n}\n\nexport default function ADNDDataSource(props) {\n return extendADNDDataSource(props).PUBLIC\n}\n\nADNDDataSource.TEXT_TYPE = TEXT_TYPE\nADNDDataSource.JSON_TYPE = JSON_TYPE\nADNDDataSource.DATA_ITEM_TYPE_PREFIX = DATA_ITEM_TYPE_PREFIX\n","import { extendADNDDropTarget } from './ADNDDropTarget'\n// import { DATA_ITEM_TYPE_PREFIX } from '../ADNDHelpers'\nimport { JSON_TYPE } from '../sources/ADNDDataSource'\n\nconst PRIVATE = {\n fetchData(state, event) {\n if (null != state.source) {\n const data = {\n type: state.source.PUBLIC.getType(),\n data: state.source.PUBLIC.getData(),\n clone: 'clone' == state.operation.type\n }\n return [data]\n } else if (event.dataTransfer && state.item.type) {\n try {\n // event.dataTransfer.setData(`${DATA_ITEM_TYPE_PREFIX}${this.props.acceptTypes[0]}`, 'true')\n const eventData = JSON.parse(event.dataTransfer.getData(JSON_TYPE))\n const data = {\n type: state.item.type,\n data: eventData,\n clone: true\n }\n return [data]\n } catch {\n //\n }\n }\n return null\n }\n}\n\nconst PUBLIC = {\n clone({ acceptTypes = this.props.acceptTypes, dynamicPosition = this.props.acceptTypes } = {}) {\n return ADNDDropDataTarget({ acceptTypes, dynamicPosition })\n }\n}\n\nexport default function ADNDDropDataTarget({ acceptTypes, dynamicPosition = false } = {}) {\n const ADNDDropDataTarget = extendADNDDropTarget({ acceptTypes, dynamicPosition })\n\n ADNDDropDataTarget.PRIVATE.fetchData = PRIVATE.fetchData.bind(ADNDDropDataTarget)\n\n ADNDDropDataTarget.PUBLIC.clone = PUBLIC.clone.bind(ADNDDropDataTarget)\n\n return ADNDDropDataTarget.PUBLIC\n}\n","import { extendADNDDropTarget } from './ADNDDropTarget'\n\nconst PRIVATE = {\n fetchData(_state, event) {\n if (event && event.dataTransfer && event.dataTransfer.files && event.dataTransfer.files.length) {\n const files = []\n for (let i = 0; i < event.dataTransfer.files.length; i++) {\n files.push(event.dataTransfer.files[i])\n }\n if (files.length) {\n return files\n }\n }\n return null\n }\n}\n\nconst PUBLIC = {\n clone() {\n return ADNDDropFilesTarget()\n }\n}\n\nexport default function ADNDDropFilesTarget({ dynamicPosition = false } = {}) {\n const ADNDDropFilesTarget = extendADNDDropTarget({ acceptTypes: ['files'], dynamicPosition })\n\n ADNDDropFilesTarget.PRIVATE.fetchData = PRIVATE.fetchData.bind(ADNDDropFilesTarget)\n\n ADNDDropFilesTarget.PUBLIC.clone = PUBLIC.clone.bind(ADNDDropFilesTarget)\n\n return ADNDDropFilesTarget.PUBLIC\n}\n","import { requestAnimationFrame, getScrollX, getScrollY } from '../ADNDHelpers'\nimport { updateState } from '../ADNDState'\n\nexport const DRAG_LAYER_CLASS_NAME = 'drag-layer'\nexport const DRAG_LAYER_HIDDEN_CLASS_NAME = 'drag-layer-hidden'\n\nexport const DRAG_LAYER_STYLE = `.${DRAG_LAYER_CLASS_NAME} {\n display: block;\n position: absolute;\n left: 0;\n top: 0;\n border: 0;\n padding: 0;\n margin: 0;\n background: transparent;\n pointer-events: none;\n user-select: none;\n z-index: 9000000;\n transition: none;\n}\n.${DRAG_LAYER_CLASS_NAME} * {\n pointer-events: none !important;\n user-select: none !important;\n}\n.${DRAG_LAYER_HIDDEN_CLASS_NAME}, .${DRAG_LAYER_HIDDEN_CLASS_NAME} * {\n visibility: hidden !important;\n}\n`\n\nconst props = {\n started: false,\n layerNode: null,\n styleNode: null,\n contentNode: null,\n className: null,\n width: null,\n height: null,\n hidden: true,\n lock: {\n x: null,\n y: null\n },\n offset: {\n x: 0,\n y: 0\n },\n cursor: {\n x: null,\n y: null\n },\n cloneNote: {\n operation: null,\n cloningNode: null,\n movingNode: null\n }\n}\n\nconst LAYER = {\n updatesState: false,\n start(/*event*/) {\n if (!props.started) {\n // style node\n const styleNode = document.createElement('style')\n styleNode.type = 'text/css'\n if (styleNode.styleSheet) {\n styleNode.styleSheet.cssText = DRAG_LAYER_STYLE\n } else {\n styleNode.appendChild(document.createTextNode(DRAG_LAYER_STYLE))\n }\n\n // layer node\n const layerNode = document.createElement('div')\n LAYER.hide(layerNode)\n\n props.started = true\n\n // add to the body\n requestAnimationFrame(function () {\n if (props.started) {\n props.styleNode = styleNode\n props.layerNode = layerNode\n document.body.appendChild(props.styleNode)\n document.body.appendChild(props.layerNode)\n }\n })\n }\n return LAYER\n },\n stop(/*event*/) {\n if (props.started) {\n props.started = false\n props.contentNode = null\n props.cloneNote.cloningNode = null\n props.cloneNote.movingNode = null\n props.cloneNote.operation = null\n props.className = null\n props.width = null\n props.height = null\n props.hidden = true\n props.offset.x = 0\n props.offset.y = 0\n props.cursor.x = null\n props.cursor.y = null\n\n LAYER.lockX(null)\n LAYER.lockY(null)\n\n const styleNode = props.styleNode\n props.styleNode = null\n const layerNode = props.layerNode\n props.layerNode = null\n // remove from the body\n requestAnimationFrame(function () {\n if (null != layerNode && layerNode.parentNode == document.body) {\n document.body.removeChild(layerNode)\n }\n if (null != styleNode && styleNode.parentNode == document.body) {\n document.body.removeChild(styleNode)\n }\n })\n }\n return LAYER\n },\n isActive() {\n return props.started && null != props.contentNode\n },\n frame(state) {\n if (props.started && !props.hidden) {\n if (state.cursor.x != props.cursor.x || state.cursor.y != props.cursor.y) {\n props.cursor.x = state.cursor.x\n props.cursor.y = state.cursor.y\n LAYER.move(props.cursor.x, props.cursor.y)\n }\n if (props.cloneNote.operation != state.operation.type) {\n switch (state.operation.type) {\n case 'clone': {\n if (\n null != props.cloneNote.movingNode &&\n null != props.layerNode &&\n props.cloneNote.movingNode.parentNode == props.layerNode\n ) {\n props.layerNode.removeChild(props.cloneNote.movingNode)\n }\n if (null != props.cloneNote.cloningNode && null != props.layerNode) {\n props.layerNode.appendChild(props.cloneNote.cloningNode)\n }\n break\n }\n case 'move': {\n if (\n null != props.cloneNote.cloningNode &&\n null != props.layerNode &&\n props.cloneNote.cloningNode.parentNode == props.layerNode\n ) {\n props.layerNode.removeChild(props.cloneNote.cloningNode)\n }\n if (null != props.cloneNote.movingNode && null != props.layerNode) {\n props.layerNode.appendChild(props.cloneNote.movingNode)\n }\n break\n }\n default: {\n break\n }\n }\n props.cloneNote.operation = state.operation.type\n }\n }\n return state\n },\n move(x, y) {\n if (null != props.layerNode) {\n const layerX = null != props.lock.x ? props.lock.x : x + props.offset.x\n const layerY = null != props.lock.y ? props.lock.y : y + props.offset.y\n const translate = `translate(${layerX}px, ${layerY}px)`\n props.layerNode.style.webkitTransform = translate\n props.layerNode.style.mozTransform = translate\n props.layerNode.style.msTransform = translate\n props.layerNode.style.transform = translate\n }\n return LAYER\n },\n show(layerNode = props.layerNode) {\n if (null != layerNode) {\n layerNode.style.visibility = 'visible'\n layerNode.className = `${DRAG_LAYER_CLASS_NAME}${props.className ? ' ' + props.className : ''}`\n props.hidden = false\n }\n return LAYER\n },\n hide(layerNode = props.layerNode) {\n if (null != layerNode) {\n layerNode.style.visibility = 'hidden'\n layerNode.className = `${DRAG_LAYER_CLASS_NAME} ${DRAG_LAYER_HIDDEN_CLASS_NAME}${\n props.className ? ' ' + props.className : ''\n }`\n props.hidden = true\n }\n return LAYER\n },\n cloneContent({\n node,\n className,\n cursorX,\n cursorY,\n lockX,\n lockY,\n width: thisWidth,\n height: thisHeight,\n finalizeContent\n } = {}) {\n requestAnimationFrame(function () {\n if (null != props.layerNode) {\n const contentNode = node.cloneNode(true)\n const nodeRect = node.getBoundingClientRect()\n const width = thisWidth || nodeRect.width || nodeRect.right - nodeRect.left\n const height = thisHeight || nodeRect.height || nodeRect.bottom - nodeRect.top\n const scrollX = getScrollX()\n const scrollY = getScrollY()\n props.className = className\n\n LAYER.hide()\n\n props.width = width\n props.height = height\n props.layerNode.style.width = `${width}px`\n props.layerNode.style.height = `${height}px`\n props.layerNode.style.webkitTransform = null\n props.layerNode.style.mozTransform = null\n props.layerNode.style.msTransform = null\n props.layerNode.style.transform = null\n if (null != props.contentNode && props.contentNode.parentNode == props.layerNode) {\n props.layerNode.removeChild(props.contentNode)\n }\n props.contentNode = finalizeContent ? finalizeContent(contentNode) : contentNode\n props.layerNode.appendChild(props.contentNode)\n requestAnimationFrame(function () {\n if (null != props.layerNode && null != props.contentNode) {\n const rect = props.contentNode.getBoundingClientRect()\n const width = thisWidth || rect.width || rect.right - rect.left\n const height = thisHeight || rect.height || rect.bottom - rect.top\n props.width = width\n props.height = height\n updateState(function (state) {\n state.item.width = props.width\n state.item.height = props.height\n return state\n })\n props.layerNode.style.width = `${width}px`\n props.layerNode.style.height = `${height}px`\n props.offset.x = null != cursorX ? nodeRect.left + scrollX - cursorX : width >> 1\n props.offset.y = null != cursorY ? nodeRect.top + scrollY - cursorY : height >> 1\n LAYER.lockX(true === lockX ? Math.round(nodeRect.left + scrollX) : lockX)\n LAYER.lockY(true === lockY ? Math.round(nodeRect.top + scrollY) : lockY)\n\n LAYER.move(cursorX, cursorY).show()\n }\n })\n } else {\n requestAnimationFrame(function () {\n LAYER.cloneContent({ node, className, cursorX, cursorY, lockX, lockY, width: thisWidth, height: thisHeight })\n })\n }\n })\n\n return LAYER\n },\n updateContent(updater) {\n if (null != props.contentNode) {\n updater(props.contentNode)\n }\n return LAYER\n },\n useCloneNote({ cloningNode, movingNode } = {}) {\n props.cloneNote.cloningNode = cloningNode\n props.cloneNote.movingNode = movingNode\n return LAYER\n },\n lockX(value) {\n props.lock.x = null == value ? null : parseFloat(value)\n if (isNaN(props.lock.x)) {\n props.lock.x = null\n }\n return LAYER\n },\n lockY(value) {\n props.lock.y = null == value ? null : parseFloat(value)\n if (isNaN(props.lock.y)) {\n props.lock.y = null\n }\n return LAYER\n }\n}\n\nexport default function ADNDDragLayer() {\n return LAYER\n}\n","import { getScrollX, getScrollY } from '../../ADNDHelpers'\nimport { PRIVATE as ADNDDropTarget_PRIVATE, PUBLIC as ADNDDropTarget_PUBLIC } from '../ADNDDropTarget'\n\nfunction DEFAULT_PROPS() {\n return {\n type: null,\n list: null,\n node: null,\n rect: null,\n edge: null,\n dragLayerClassName: null,\n hidden: false,\n finalizeDragLayerContentHandler: null,\n isLockedHandler: null\n }\n}\n\nconst PRIVATE = {\n fetchRect(scrollX = getScrollX(), scrollY = getScrollY()) {\n return ADNDDropTarget_PRIVATE.fetchRect.call(this, scrollX, scrollY)\n },\n isLocked() {\n return this.props.isLockedHandler ? this.props.isLockedHandler() : false\n }\n}\n\nconst PUBLIC = {\n clone(withProps = {}) {\n return ADNDListItem(Object.assign({}, this.props, withProps))\n },\n connect(node) {\n if (node != this.props.node) {\n if (null != node) {\n if (null != this.props.list) {\n this.props.list.addItem(this)\n }\n } else {\n this.PUBLIC.disconnect()\n }\n this.props.node = node\n }\n return this.PUBLIC\n },\n disconnect() {\n if (null != this.props.node) {\n if (null != this.props.list) {\n if (this.props.hidden) {\n this.PUBLIC.doShow()\n }\n this.props.list.removeItem(this)\n }\n this.props.node = null\n this.props.rect = null\n }\n return this.PUBLIC\n },\n connectedNode() {\n return this.props.node\n },\n setList(list) {\n if (list != this.props.list) {\n if (null != this.props.list) {\n this.props.list.removeItem(this)\n }\n if (null != list) {\n list.addItem(this)\n }\n this.props.list = list\n }\n return this.PUBLIC\n },\n getList() {\n return this.props.list\n },\n getDragLayerClassName() {\n return this.props.dragLayerClassName\n },\n doHide() {\n if (!this.props.hidden) {\n if (null != this.props.list) {\n this.props.list.hideItem(this)\n }\n this.props.hidden = true\n }\n return this.PUBLIC\n },\n doShow() {\n if (this.props.hidden) {\n if (null != this.props.list) {\n this.props.list.showItem(this)\n }\n this.props.hidden = false\n }\n return this.PUBLIC\n },\n isHidden() {\n return this.props.hidden\n },\n onFinalizeDragLayerContent(finalizeDragLayerContentHandler) {\n if ('function' == typeof finalizeDragLayerContentHandler) {\n this.props.finalizeDragLayerContentHandler = finalizeDragLayerContentHandler\n }\n return this.PUBLIC\n },\n doFinalizeDragLayerContent(node) {\n return this.props.finalizeDragLayerContentHandler ? this.props.finalizeDragLayerContentHandler(node) : node\n },\n isLocked(isLockedHandler) {\n if ('function' == typeof isLockedHandler) {\n this.props.isLockedHandler = isLockedHandler\n }\n return this.PUBLIC\n },\n setEdges(top = 0, right = 0, bottom = 0, left = 0) {\n return ADNDDropTarget_PUBLIC.call(this, top, right, bottom, left)\n }\n}\n\nexport default function ADNDListItem(props = {}) {\n const ADNDListItem = {\n props: Object.assign({}, DEFAULT_PROPS(), props)\n }\n\n ADNDListItem.PRIVATE = {\n fetchRect: PRIVATE.fetchRect.bind(ADNDListItem),\n isLocked: PRIVATE.isLocked.bind(ADNDListItem)\n }\n\n ADNDListItem.PUBLIC = {\n clone: PUBLIC.clone.bind(ADNDListItem),\n connect: PUBLIC.connect.bind(ADNDListItem),\n disconnect: PUBLIC.disconnect.bind(ADNDListItem),\n connectedNode: PUBLIC.connectedNode.bind(ADNDListItem),\n setList: PUBLIC.setList.bind(ADNDListItem),\n getList: PUBLIC.getList.bind(ADNDListItem),\n getDragLayerClassName: PUBLIC.getDragLayerClassName.bind(ADNDListItem),\n doHide: PUBLIC.doHide.bind(ADNDListItem),\n doShow: PUBLIC.doShow.bind(ADNDListItem),\n isHidden: PUBLIC.isHidden.bind(ADNDListItem),\n onFinalizeDragLayerContent: PUBLIC.onFinalizeDragLayerContent.bind(ADNDListItem),\n doFinalizeDragLayerContent: PUBLIC.doFinalizeDragLayerContent.bind(ADNDListItem),\n isLocked: PUBLIC.isLocked.bind(ADNDListItem),\n setEdges: PUBLIC.setEdges.bind(ADNDListItem)\n }\n\n return ADNDListItem.PUBLIC\n}\n","import { getScrollX, getScrollY } from '../ADNDHelpers'\nimport {\n extendADNDDropTarget,\n DEFAULT_PROPS as ADNDDropTarget_DEFAULT_PROPS,\n PRIVATE as ADNDDropTarget_PRIVATE\n} from './ADNDDropTarget'\nimport { JSON_TYPE } from '../sources/ADNDDataSource'\nimport { getState } from '../ADNDState'\nimport getADNDDragLayer from '../layers/ADNDDragLayer'\nimport getADNDTargetsLayer from '../layers/ADNDTargetsLayer'\n\nconst ADNDDragLayer = getADNDDragLayer()\nfunction ADNDDragLayerSkipUpdateContent() {}\nconst ADNDTargetsLayer = getADNDTargetsLayer()\n\nexport const PLACEHOLDER_CLASS_NAME = 'adnd-items-list-placeholder'\nexport const DEFAULT_PLACEHOLDER_V_MARGIN = 4\n\nfunction DEFAULT_PROPS() {\n return {\n ...ADNDDropTarget_DEFAULT_PROPS(),\n items: [],\n itemBorders: [],\n lastY: null,\n focusedIndex: null,\n currentPosition: null,\n placeholderNode: null,\n placeholderHeight: 0,\n placeholderFullHeight: 0,\n minPlaceholderHeight: 0,\n onPositionChangeHandler: null,\n onUpdateItemPositionsHandler: null,\n onPlaceholderHeightChangeHandler: null,\n placeholderBuilder: null,\n placeholderVMargin: DEFAULT_PLACEHOLDER_V_MARGIN,\n started: false,\n hiddenItem: null,\n hiddenItemIndex: null,\n hiddenItemStyleDisplay: null\n }\n}\n\nconst PRIVATE = {\n fetchData(state, event) {\n if (null != this.props.currentPosition) {\n if (null != state.source) {\n const data = {\n itemType: state.source.PUBLIC.getType(),\n item: state.source.PUBLIC.getData(),\n position: this.props.currentPosition,\n clone: 'clone' == state.operation.type\n }\n return [data]\n } else if (event.dataTransfer && state.item.type) {\n try {\n const eventData = JSON.parse(event.dataTransfer.getData(JSON_TYPE))\n const data = {\n itemType: state.item.type,\n item: eventData,\n position: this.props.currentPosition,\n clone: true\n }\n return [data]\n } catch {\n //\n }\n }\n }\n return null\n },\n fetchRect(scrollX = getScrollX(), scrollY = getScrollY()) {\n ADNDDropTarget_PRIVATE.fetchRect.call(this, scrollX, scrollY)\n this.PRIVATE.fetchItemBorders(scrollX, scrollY)\n return this.PRIVATE\n },\n fetchItemBorders(scrollX = getScrollX(), scrollY = getScrollY()) {\n // fetch items borders\n this.props.itemBorders = []\n if (null != this.props.rect) {\n const listTop = this.props.rect.top\n for (let i = 0; i < this.props.items.length; i++) {\n const item = this.props.items[i]\n item.PRIVATE.fetchRect(scrollX, scrollY)\n if (null != item.props.rect) {\n this.props.itemBorders.push({\n value: item.props.rect.bottom - listTop,\n locked: item.PRIVATE.isLocked ? item.PRIVATE.isLocked() : false,\n item\n })\n }\n }\n this.props.itemBorders.sort(function (a, b) {\n return a.value - b.value\n })\n }\n return this.PRIVATE\n },\n doEnter(state) {\n ADNDDropTarget_PRIVATE.doEnter.call(this, state)\n return this.PRIVATE\n },\n doLeave(state) {\n ADNDDropTarget_PRIVATE.doLeave.call(this, state)\n this.PRIVATE.doPositionChange(null)\n this.props.lastY = null\n this.props.placeholderNode = null\n this.props.placeholderHeight = 0\n this.props.placeholderFullHeight = 0\n return this.PRIVATE\n },\n doStart() {\n if (!this.props.started) {\n this.props.started = true\n this.props.currentPosition = null\n this.props.focusedIndex = null\n if (null != this.props.hiddenItem) {\n this.PRIVATE.doHideItem()\n }\n }\n return this.PRIVATE\n },\n doStop() {\n if (this.props.started) {\n if (null != this.props.hiddenItem) {\n this.PRIVATE.doShowItem()\n }\n this.props.started = false\n }\n return this.PRIVATE\n },\n doHideItem() {\n if (null != this.props.hiddenItem && this.props.started && null != this.props.hiddenItem.props.node) {\n if (null == this.props.hiddenItem.props.rect) {\n this.props.hiddenItem.PRIVATE.fetchRect()\n }\n this.props.hiddenItemStyleDisplay = this.props.hiddenItem.props.node.style.display\n this.props.hiddenItem.props.node.style.display = 'none'\n this.props.hiddenItemIndex = null\n for (let i = 0; i < this.props.itemBorders.length; i++) {\n if (this.props.itemBorders[i].item == this.props.hiddenItem) {\n this.props.hiddenItemIndex = i\n break\n }\n }\n if (null != this.props.hiddenItem.props.rect) {\n ADNDTargetsLayer.setBlackHole('hiddenItem', {\n top: this.props.hiddenItem.props.rect.top,\n height: this.props.hiddenItem.props.rect.height\n })\n }\n this.PRIVATE.doPositionChange(this.props.focusedIndex, true)\n this.PRIVATE.doUpdateItemPositions()\n }\n return this.PRIVATE\n },\n doShowItem() {\n if (null != this.props.hiddenItem && this.props.started) {\n if (null != this.props.hiddenItem.props.node) {\n this.props.hiddenItem.props.node.style.display = this.props.hiddenItemStyleDisplay\n }\n this.props.hiddenItemStyleDisplay = null\n this.props.hiddenItemIndex = null\n this.PRIVATE.doPositionChange(this.props.focusedIndex, true)\n this.PRIVATE.doUpdateItemPositions()\n ADNDTargetsLayer.removeBlackHole('hiddenItem')\n }\n return this.PRIVATE\n },\n doPositionChange(focusedIndex, force) {\n if (this.props.focusedIndex != focusedIndex || force) {\n const oldPosition = this.props.currentPosition\n const newPosition =\n null != this.props.hiddenItemIndex && null != focusedIndex && focusedIndex > this.props.hiddenItemIndex\n ? focusedIndex - 1\n : focusedIndex\n if (oldPosition != newPosition) {\n if (this.props.onPositionChangeHandler) {\n this.props.onPositionChangeHandler(\n {\n newPosition,\n oldPosition,\n hiddenItemIndex: this.props.hiddenItemIndex,\n node: this.props.node,\n dragItemUpdater: ADNDDragLayer.isActive() ? ADNDDragLayer.updateContent : ADNDDragLayerSkipUpdateContent\n },\n this.PUBLIC\n )\n }\n this.props.currentPosition = newPosition\n }\n this.props.focusedIndex = focusedIndex\n this.PRIVATE.doUpdateItemPositions()\n this.PRIVATE.updatePlaceholder()\n }\n return this.PRIVATE\n },\n doUpdateItemPositions() {\n if (this.props.started && this.props.onUpdateItemPositionsHandler) {\n this.props.onUpdateItemPositionsHandler({\n hiddenItemIndex: this.props.hiddenItemIndex,\n placeholderIndex: this.props.currentPosition\n })\n }\n return this.PRIVATE\n },\n doBuildPlaceholder() {\n const state = getState()\n const width = state.item.width\n this.props.placeholderHeight = state.item.height\n ? Math.max(state.item.height || 0, this.props.minPlaceholderHeight || 0)\n : this.props.minPlaceholderHeight\n this.props.placeholderFullHeight = this.props.placeholderHeight + (this.props.placeholderVMargin << 1)\n if (this.props.placeholderBuilder) {\n this.props.placeholderNode = this.props.placeholderBuilder(\n {\n width,\n height: this.props.placeholderHeight,\n vMargin: this.props.placeholderVMargin,\n className: PLACEHOLDER_CLASS_NAME\n },\n this.PUBLIC\n )\n } else {\n const placeholderNode = document.createElement('div')\n placeholderNode.className = PLACEHOLDER_CLASS_NAME\n placeholderNode.style.height = `${this.props.placeholderFulHeight}px`\n this.props.placeholderNode = placeholderNode\n }\n return this.PRIVATE\n },\n updatePlaceholder() {\n if (null != this.props.node) {\n if (null == this.props.focusedIndex) {\n if (null != this.props.placeholderNode && this.props.placeholderNode.parentNode == this.props.node) {\n this.props.node.removeChild(this.props.placeholderNode)\n }\n // ADNDTargetsLayer.removeBlackHole('placeholder')\n } else {\n if (null == this.props.placeholderNode) {\n this.PRIVATE.doBuildPlaceholder()\n }\n const currentBorder = this.props.itemBorders[this.props.focusedIndex]\n if (null == currentBorder) {\n // add to the end\n const lastBorder = this.props.itemBorders[this.props.itemBorders.length - 1]\n this.props.node.insertBefore(\n this.props.placeholderNode,\n (null == lastBorder ? this.props.node.firstChild : lastBorder.item.props.node.nextSibling) || null\n )\n // // set placeholder correction black hole\n // const placeholderBlackHole = {\n // top: this.props.rect.top + (null == lastBorder ? 0 : lastBorder.value)\n // }\n // placeholderBlackHole.bottom = placeholderBlackHole.top + this.props.placeholderFullHeight\n // ADNDTargetsLayer.setBlackHole('placeholder', placeholderBlackHole)\n } else {\n // add before current item\n if (\n null == currentBorder.item.props.node ||\n (currentBorder.item.props.node && currentBorder.item.props.node.parentNode === this.props.node)\n ) {\n this.props.node.insertBefore(this.props.placeholderNode, currentBorder.item.props.node || null)\n }\n\n // // set placeholder correction black hole\n // const prevBorderValue = (this.props.itemBorders[this.props.focusedIndex - 1] || { value: 0 }).value\n // const itemHeight = currentBorder.value - prevBorderValue\n // if (this.props.placeholderFullHeight > itemHeight) {\n // // shrink extra space\n // const placeholderBlackHole = {\n // top: this.props.rect.top + prevBorderValue + itemHeight\n // }\n // placeholderBlackHole.bottom = placeholderBlackHole.top + (this.props.placeholderFullHeight - itemHeight)\n // ADNDTargetsLayer.setBlackHole('placeholder', placeholderBlackHole)\n // } else if (this.props.placeholderFullHeight < itemHeight) {\n // // expand extra space\n // const placeholderBlackHole = {\n // top: this.props.rect.top + prevBorderValue + itemHeight\n // }\n // placeholderBlackHole.height = itemHeight - this.props.placeholderFullHeight\n // ADNDTargetsLayer.setBlackHole('placeholder', placeholderBlackHole)\n // } else {\n // ADNDTargetsLayer.removeBlackHole('placeholder')\n // }\n }\n }\n }\n return this.PRIVATE\n },\n hitTest(_x, y, force) {\n if (y != this.props.lastY || force) {\n if (0 == this.props.itemBorders.length) {\n this.PRIVATE.doPositionChange(0)\n } else {\n const listY = y - this.props.rect.top\n if (listY < this.props.itemBorders[0].value && !this.props.itemBorders[0].locked) {\n this.PRIVATE.doPositionChange(0)\n } else if (listY >= this.props.itemBorders[this.props.itemBorders.length - 1].value) {\n this.PRIVATE.doPositionChange(this.props.itemBorders.length)\n } else {\n if (null != this.props.focusedIndex) {\n const focusedIndexBorder = this.props.itemBorders[this.props.focusedIndex] || {\n value: Number.POSITIVE_INFINITY\n }\n\n if (listY < focusedIndexBorder.value) {\n // scan up\n let lastBorder = focusedIndexBorder\n for (let i = this.props.focusedIndex - 1; i >= 0; i--) {\n const thisBorder = this.props.itemBorders[i]\n if (listY >= thisBorder.value) {\n if (!lastBorder.locked || !thisBorder.locked) {\n this.PRIVATE.doPositionChange(i + 1)\n }\n break\n }\n lastBorder = thisBorder\n }\n } else {\n // scan down\n let lastBorder = focusedIndexBorder\n for (let i = this.props.focusedIndex + 1; i < this.props.itemBorders.length; i++) {\n const thisBorder = this.props.itemBorders[i]\n if (listY >= lastBorder.value && listY < thisBorder.value) {\n if (!lastBorder.locked || !thisBorder.locked) {\n this.PRIVATE.doPositionChange(i)\n }\n break\n }\n lastBorder = thisBorder\n }\n }\n } else {\n // full scan\n let lastBorder = this.props.itemBorders[0]\n for (let i = 1; i < this.props.itemBorders.length; i++) {\n const thisBorder = this.props.itemBorders[i]\n if (listY >= lastBorder.value && listY < thisBorder.value) {\n if (!lastBorder.locked || !thisBorder.locked) {\n this.PRIVATE.doPositionChange(i)\n }\n break\n }\n lastBorder = thisBorder\n }\n }\n }\n }\n this.props.lastY = y\n }\n return this\n },\n frame(state) {\n if (this.props.started && this.props.placeholderNode && this.props.onPlaceholderHeightChangeHandler) {\n const placeholderHeight = state.item.height\n ? Math.max(state.item.height || 0, this.props.minPlaceholderHeight)\n : this.props.minPlaceholderHeight\n if (placeholderHeight != this.props.placeholderHeight) {\n this.props.onPlaceholderHeightChangeHandler({\n node: this.props.placeholderNode,\n newHeight: placeholderHeight,\n oldHeight: this.props.placeholderHeight\n })\n this.props.placeholderHeight = placeholderHeight\n }\n }\n return state\n },\n getDropEffect(operationType) {\n return null == this.props.currentPosition ? 'none' : 'move' == operationType ? 'move' : 'copy'\n }\n}\n\nconst PUBLIC = {\n clone(withProps = {}, { capture = this.capture } = {}) {\n return ADNDItemsList(Object.assign({}, this.props, withProps), { capture })\n },\n addItem(item) {\n if (!this.props.items.includes(item)) {\n this.props.items.push(item)\n }\n return this.PUBLIC\n },\n removeItem(item) {\n const itemIndex = this.props.items.indexOf(item)\n if (itemIndex >= 0) {\n this.props.items.splice(itemIndex, 1)\n }\n return this.PUBLIC\n },\n onPositionChange(onPositionChangeHandler) {\n if ('function' == typeof onPositionChangeHandler) {\n this.props.onPositionChangeHandler = onPositionChangeHandler\n }\n return this.PUBLIC\n },\n onUpdateItemPositions(onUpdateItemPositionsHandler) {\n if ('function' == typeof onUpdateItemPositionsHandler) {\n this.props.onUpdateItemPositionsHandler = onUpdateItemPositionsHandler\n }\n return this.PUBLIC\n },\n onPlaceholderHeightChange(onPlaceholderHeightChangeHandler) {\n if ('function' == typeof onPlaceholderHeightChangeHandler) {\n this.props.onPlaceholderHeightChangeHandler = onPlaceholderHeightChangeHandler\n }\n return this.PUBLIC\n },\n buildPlaceholder(placeholderBuilder) {\n if ('function' == typeof placeholderBuilder) {\n this.props.placeholderBuilder = placeholderBuilder\n }\n return this.PUBLIC\n },\n hideItem(item) {\n if (this.props.hiddenItem != item) {\n if (null != this.props.hiddenItem) {\n this.PUBLIC.showItem(this.props.hiddenItem)\n }\n this.props.hiddenItem = item\n this.PRIVATE.doHideItem()\n }\n return this.PUBLIC\n },\n showItem(item) {\n if (this.props.hiddenItem == item) {\n this.PRIVATE.doShowItem()\n this.props.hiddenItem = null\n }\n return this.PUBLIC\n }\n}\n\nfunction ADNDItemsList(props, { capture = true } = {}) {\n const ADNDItemsList = extendADNDDropTarget(props, DEFAULT_PROPS())\n\n ADNDItemsList.capture = capture\n\n ADNDItemsList.PRIVATE.fetchData = PRIVATE.fetchData.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.fetchRect = PRIVATE.fetchRect.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.fetchItemBorders = PRIVATE.fetchItemBorders.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.doEnter = PRIVATE.doEnter.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.doLeave = PRIVATE.doLeave.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.doStart = PRIVATE.doStart.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.doStop = PRIVATE.doStop.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.doHideItem = PRIVATE.doHideItem.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.doShowItem = PRIVATE.doShowItem.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.doPositionChange = PRIVATE.doPositionChange.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.doBuildPlaceholder = PRIVATE.doBuildPlaceholder.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.doUpdateItemPositions = PRIVATE.doUpdateItemPositions.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.updatePlaceholder = PRIVATE.updatePlaceholder.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.hitTest = PRIVATE.hitTest.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.frame = PRIVATE.frame.bind(ADNDItemsList)\n ADNDItemsList.PRIVATE.getDropEffect = PRIVATE.getDropEffect.bind(ADNDItemsList)\n\n ADNDItemsList.PUBLIC.clone = PUBLIC.clone.bind(ADNDItemsList)\n ADNDItemsList.PUBLIC.addItem = PUBLIC.addItem.bind(ADNDItemsList)\n ADNDItemsList.PUBLIC.removeItem = PUBLIC.removeItem.bind(ADNDItemsList)\n ADNDItemsList.PUBLIC.onPositionChange = PUBLIC.onPositionChange.bind(ADNDItemsList)\n ADNDItemsList.PUBLIC.onUpdateItemPositions = PUBLIC.onUpdateItemPositions.bind(ADNDItemsList)\n ADNDItemsList.PUBLIC.onPlaceholderHeightChange = PUBLIC.onPlaceholderHeightChange.bind(ADNDItemsList)\n ADNDItemsList.PUBLIC.buildPlaceholder = PUBLIC.buildPlaceholder.bind(ADNDItemsList)\n ADNDItemsList.PUBLIC.hideItem = PUBLIC.hideItem.bind(ADNDItemsList)\n ADNDItemsList.PUBLIC.showItem = PUBLIC.showItem.bind(ADNDItemsList)\n\n return ADNDItemsList.PUBLIC\n}\n\nimport ADNDListItem from './itemsList/ADNDListItem'\n\nADNDItemsList.listItem = ADNDListItem\n\nexport default ADNDItemsList\n","import {\n extendADNDDataSource,\n DEFAULT_PROPS as ADNDDataSource_DEFAULT_PROPS,\n PRIVATE as ADNDDataSource_PRIVATE\n} from './ADNDDataSource'\nimport { getScrollX, getScrollY } from '../ADNDHelpers'\nimport ADND from '../ADND'\nimport { updateState } from '../ADNDState'\nimport ADNDDragLayer from '../layers/ADNDDragLayer'\nimport ADNDTargetsLayer from '../layers/ADNDTargetsLayer'\n\nfunction DEFAULT_PROPS() {\n return {\n ...ADNDDataSource_DEFAULT_PROPS(),\n dragLayer: null,\n dragLayerClassName: null,\n finalizeDragLayerContentHandler: null,\n lockX: false,\n lockY: false,\n hitShift: true,\n parent: 0\n }\n}\n\nconst PRIVATE = {\n doStart(event) {\n if (null == this.props.dragLayer && null != this.props.node) {\n const cursorX = event.pageX || event.clientX\n const cursorY = event.pageY || event.clientY\n\n let node = this.props.node\n for (let i = 0; i < this.props.parent; i++) node = node.parentNode\n if ('undefined' !== typeof this.props.child) node = node.childNodes[this.props.child]\n\n this.props.dragLayer = ADNDDragLayer()\n this.props.dragLayer.start(event)\n this.props.dragLayer.cloneContent({\n cursorX,\n cursorY,\n node,\n lockX: this.props.lockX,\n lockY: this.props.lockY,\n className: this.props.dragLayerClassName,\n finalizeContent: this.props.finalizeDragLayerContentHandler\n })\n ADND().addLayer(this.props.dragLayer)\n\n if (this.props.lockX) {\n ADNDTargetsLayer().lockX(cursorX)\n }\n if (this.props.lockY) {\n ADNDTargetsLayer().lockY(cursorY)\n }\n\n if (false !== this.props.hitShift) {\n if (true === this.props.hitShift && this.props.rect && null != this.props.rect.top) {\n ADNDTargetsLayer().hitShift(0, this.props.rect.top - cursorY)\n } else if ('object' === typeof this.props.hitShift) {\n ADNDTargetsLayer().hitShift(this.props.hitShift.x, this.props.hitShift.y)\n }\n }\n\n updateState(state => {\n state.operation.type = 'move'\n state.operation.enableMove = true\n state.operation.enableClone = false\n return state\n })\n\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'copyMove'\n }\n }\n return ADNDDataSource_PRIVATE.doStart.call(this, event)\n },\n doEnd(event) {\n ADNDTargetsLayer().hitShift(0, 0)\n if (null != this.props.dragLayer) {\n this.props.dragLayer.stop(event)\n ADND().removeLayer(this.props.dragLayer)\n this.props.dragLayer = null\n }\n return ADNDDataSource_PRIVATE.doEnd.call(this, event)\n },\n fetchRect(scrollX = getScrollX(), scrollY = getScrollY()) {\n if (null != this.props.node) {\n const rect = this.props.node.getBoundingClientRect()\n this.props.rect = {\n left: rect.left + scrollX,\n right: rect.right + scrollX,\n top: rect.top + scrollY,\n bottom: rect.bottom + scrollY,\n width: rect.width || rect.right - rect.left,\n height: rect.height || rect.bottom - rect.top\n }\n } else {\n this.props.rect = null\n }\n return this.PRIVATE\n }\n}\n\nconst PUBLIC = {\n getDragLayerClassName() {\n return this.props.dragLayerClassName\n },\n setDragLayerClassName(className) {\n this.props.dragLayerClassName = className\n },\n onFinalizeDragLayerContent(finalizeDragLayerContentHandler) {\n if ('function' == typeof finalizeDragLayerContentHandler) {\n this.props.finalizeDragLayerContentHandler = finalizeDragLayerContentHandler\n }\n return this.PUBLIC\n }\n}\n\nexport default function ADNDDraggableDataSource(props = {}) {\n const ADNDDraggableDataSource = extendADNDDataSource(props, DEFAULT_PROPS())\n\n ADNDDraggableDataSource.PRIVATE.doStart = PRIVATE.doStart.bind(ADNDDraggableDataSource)\n ADNDDraggableDataSource.PRIVATE.doEnd = PRIVATE.doEnd.bind(ADNDDraggableDataSource)\n ADNDDraggableDataSource.PRIVATE.fetchRect = PRIVATE.fetchRect.bind(ADNDDraggableDataSource)\n\n ADNDDraggableDataSource.PUBLIC.getDragLayerClassName = PUBLIC.getDragLayerClassName.bind(ADNDDraggableDataSource)\n ADNDDraggableDataSource.PUBLIC.setDragLayerClassName = PUBLIC.setDragLayerClassName.bind(ADNDDraggableDataSource)\n ADNDDraggableDataSource.PUBLIC.onFinalizeDragLayerContent =\n PUBLIC.onFinalizeDragLayerContent.bind(ADNDDraggableDataSource)\n\n return ADNDDraggableDataSource.PUBLIC\n}\n","import {\n extendADNDDataSource,\n DEFAULT_PROPS as ADNDDataSource_DEFAULT_PROPS,\n PRIVATE as ADNDDataSource_PRIVATE\n} from '../ADNDDataSource'\nimport { getScrollX, getScrollY, isCloningEvent } from '../../ADNDHelpers'\nimport ADND from '../../ADND'\nimport { updateState } from '../../ADNDState'\nimport ADNDDragLayer from '../../layers/ADNDDragLayer'\nimport ADNDTargetsLayer from '../../layers/ADNDTargetsLayer'\n\nfunction DEFAULT_PROPS() {\n return {\n ...ADNDDataSource_DEFAULT_PROPS(),\n item: null,\n dragLayer: null,\n cloneable: true,\n cloneNoteBuilder: null,\n lockX: true,\n lockY: false,\n hitShift: true\n }\n}\n\nconst PRIVATE = {\n doStart(event) {\n if (null == this.props.dragLayer) {\n const itemNode = null != this.props.item ? this.props.item.connectedNode() : null\n if (null != itemNode) {\n const cursorX = event.pageX || event.clientX\n const cursorY = event.pageY || event.clientY\n\n const cloning = this.props.cloneable && isCloningEvent(event)\n\n this.props.dragLayer = ADNDDragLayer()\n this.props.dragLayer.start(event)\n if (this.props.cloneable && this.props.cloneNoteBuilder) {\n const { cloningNode, movingNode } = this.props.cloneNoteBuilder() || {}\n if (null != cloningNode && null != movingNode) {\n this.props.dragLayer.useCloneNote({ cloningNode, movingNode })\n }\n }\n this.props.dragLayer.cloneContent({\n cursorX,\n cursorY,\n node: itemNode,\n lockX: this.props.lockX,\n lockY: this.props.lockY,\n className: this.props.item.getDragLayerClassName(),\n finalizeContent: this.props.item.doFinalizeDragLayerContent\n })\n ADND().addLayer(this.props.dragLayer)\n\n if (this.props.lockX) {\n ADNDTargetsLayer().lockX(cursorX)\n }\n if (this.props.lockY) {\n ADNDTargetsLayer().lockY(cursorY)\n }\n\n if (false !== this.props.hitShift) {\n if (true === this.props.hitShift && this.props.rect && null != this.props.rect.top) {\n ADNDTargetsLayer().hitShift(0, this.props.rect.top - cursorY)\n } else if ('object' === typeof this.props.hitShift) {\n ADNDTargetsLayer().hitShift(this.props.hitShift.x, this.props.hitShift.y)\n }\n }\n\n if (cloning) {\n updateState(state => {\n state.operation.type = 'clone'\n state.operation.enableMove = true\n state.operation.enableClone = true\n return state\n })\n } else {\n this.PRIVATE.doHide()\n updateState(state => {\n state.operation.type = 'move'\n state.operation.enableMove = true\n state.operation.enableClone = this.props.cloneable\n return state\n })\n }\n\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'copyMove'\n }\n }\n }\n return ADNDDataSource_PRIVATE.doStart.call(this, event)\n },\n doEnd(event) {\n ADNDTargetsLayer().hitShift(0, 0)\n if (null != this.props.dragLayer) {\n this.props.dragLayer.stop(event)\n ADND().removeLayer(this.props.dragLayer)\n this.props.dragLayer = null\n }\n this.PRIVATE.doShow()\n return ADNDDataSource_PRIVATE.doEnd.call(this, event)\n },\n fetchRect(scrollX = getScrollX(), scrollY = getScrollY()) {\n if (null != this.props.item) {\n const itemNode = this.props.item.connectedNode()\n if (null != itemNode) {\n const rect = itemNode.getBoundingClientRect()\n this.props.rect = {\n left: rect.left + scrollX,\n right: rect.right + scrollX,\n top: rect.top + scrollY,\n bottom: rect.bottom + scrollY,\n width: rect.width || rect.right - rect.left,\n height: rect.height || rect.bottom - rect.top\n }\n } else {\n this.props.rect = null\n }\n } else {\n this.props.rect = null\n }\n return this.PRIVATE\n },\n doHide() {\n if (null != this.props.item) {\n this.props.item.doHide()\n }\n return this.PRIVATE\n },\n doShow() {\n if (null != this.props.item) {\n this.props.item.doShow()\n }\n return this.PRIVATE\n },\n isHidden() {\n return null != this.props.item ? this.props.item.isHidden() : false\n },\n updateOperationType(operationType) {\n switch (operationType) {\n case 'clone':\n this.PRIVATE.doShow()\n break\n case 'move':\n this.PRIVATE.doHide()\n break\n default:\n break\n }\n return this.PRIVATE\n },\n getDropEffect(operationType) {\n return 'move' == operationType ? 'move' : 'copy'\n }\n}\n\nconst PUBLIC = {\n buildCloneNote(cloneNoteBuilder) {\n if ('function' == typeof cloneNoteBuilder) {\n this.props.cloneNoteBuilder = cloneNoteBuilder\n }\n return this.PUBLIC\n }\n}\n\nexport default function ADNDListItemHandle(props = {}) {\n const ADNDListItemHandle = extendADNDDataSource(props, DEFAULT_PROPS())\n\n ADNDListItemHandle.PRIVATE.doStart = PRIVATE.doStart.bind(ADNDListItemHandle)\n ADNDListItemHandle.PRIVATE.doEnd = PRIVATE.doEnd.bind(ADNDListItemHandle)\n ADNDListItemHandle.PRIVATE.fetchRect = PRIVATE.fetchRect.bind(ADNDListItemHandle)\n ADNDListItemHandle.PRIVATE.doHide = PRIVATE.doHide.bind(ADNDListItemHandle)\n ADNDListItemHandle.PRIVATE.doShow = PRIVATE.doShow.bind(ADNDListItemHandle)\n ADNDListItemHandle.PRIVATE.isHidden = PRIVATE.isHidden.bind(ADNDListItemHandle)\n ADNDListItemHandle.PRIVATE.updateOperationType = PRIVATE.updateOperationType.bind(ADNDListItemHandle)\n ADNDListItemHandle.PRIVATE.getDropEffect = PRIVATE.getDropEffect.bind(ADNDListItemHandle)\n\n ADNDListItemHandle.PUBLIC.buildCloneNote = PUBLIC.buildCloneNote.bind(ADNDListItemHandle)\n\n return ADNDListItemHandle.PUBLIC\n}\n","import { requestAnimationFrame, cancelAnimationFrame, getItemType, isCloningEvent } from './ADNDHelpers'\nimport { updateState, getState, DEFAULT_STATE } from './ADNDState'\n\nimport ADNDTargetsLayer from './layers/ADNDTargetsLayer'\nimport ADNDGlassLayer from './layers/ADNDGlassLayer'\nimport ADNDEdgeScrollingLayer from './layers/ADNDEdgeScrollingLayer'\n\nconst props = {\n connected: false,\n started: false,\n /**\n * @type {Array}\n */\n layers: [],\n /**\n * @type {Array}\n */\n animateLayers: [],\n lastCursor: {\n x: null,\n y: null\n },\n leftDocument: false,\n /**\n * @type {number|null}\n */\n frameRequestID: null\n}\n\nconst CONNECT = {\n drop(event) {\n if (props.started) {\n event.preventDefault()\n }\n ADND().drop(event).stop(event)\n },\n dragOver(event) {\n if (!props.started) {\n ADND().start(event)\n }\n const x = event.pageX || event.clientX\n const y = event.pageY || event.clientY\n updateState(function (state) {\n const operationType =\n state.operation.enableClone && isCloningEvent(event) ? 'clone' : state.operation.enableMove ? 'move' : 'clone'\n if (operationType != state.operation.type) {\n state.operation.type = operationType\n if (null != state.source && state.source.PRIVATE.updateOperationType) {\n state.source.PRIVATE.updateOperationType(operationType)\n }\n }\n if (event.dataTransfer) {\n if (state.target && state.target.current) {\n event.dataTransfer.dropEffect = state.target.current.PRIVATE.getDropEffect\n ? state.target.current.PRIVATE.getDropEffect(operationType)\n : 'move' == operationType\n ? 'move'\n : 'copy'\n } else if (state.source && state.source.PRIVATE.getDropEffect) {\n event.dataTransfer.dropEffect = state.source.PRIVATE.getDropEffect(operationType)\n } else {\n event.dataTransfer.dropEffect = 'none'\n }\n }\n if (x != props.lastCursor.x || y != props.lastCursor.y) {\n state.cursor.x = x\n state.cursor.y = y\n props.lastCursor.x = x\n props.lastCursor.y = y\n }\n return state\n })\n if (props.started) {\n event.preventDefault()\n }\n }\n}\n\nfunction layerFrame(layer) {\n if (layer.updatesState) {\n updateState(layer.frame)\n } else {\n layer.frame(getState())\n }\n}\n\nfunction animationFrame(/*timestamp*/) {\n props.animateLayers.forEach(layerFrame)\n props.frameRequestID = requestAnimationFrame(animationFrame)\n}\n\nconst MODULE = {\n connect() {\n if (!props.connected) {\n document.addEventListener('drop', CONNECT.drop, true)\n document.addEventListener('dragover', CONNECT.dragOver, true)\n props.connected = true\n }\n return MODULE\n },\n disconnect() {\n if (props.connected) {\n document.removeEventListener('drop', CONNECT.drop, true)\n document.removeEventListener('dragover', CONNECT.dragOver, true)\n props.connected = false\n MODULE.stop()\n }\n return MODULE\n },\n isConnected() {\n return props.connected\n },\n start(event) {\n if (!props.started) {\n props.started = true\n props.leftDocument = false\n const state = updateState(function (state) {\n const itemType = getItemType(state, event)\n const defaultState = DEFAULT_STATE()\n return null == itemType\n ? defaultState\n : {\n ...defaultState,\n source: state.source,\n item: {\n ...defaultState.item,\n type: itemType,\n width: state.item.width,\n height: state.item.height\n },\n stage: 'started',\n cursor: {\n ...defaultState.cursor,\n x: state.cursor.x,\n y: state.cursor.y\n },\n layers: {\n ...defaultState.layers,\n glass: state.layers.glass,\n edgeScrolling: state.layers.edgeScrolling\n },\n operation: state.operation\n }\n })\n if (null != state.item.type) {\n if (false !== state.layers.glass) {\n MODULE.addLayer(ADNDGlassLayer())\n }\n MODULE.addLayer(ADNDTargetsLayer())\n if (false !== state.layers.edgeScrolling) {\n MODULE.addLayer(ADNDEdgeScrollingLayer())\n }\n props.layers.forEach(function (layer) {\n layer.start(event)\n })\n props.frameRequestID = requestAnimationFrame(animationFrame)\n } else {\n props.started = false\n }\n }\n return MODULE\n },\n stop(event) {\n if (props.started) {\n props.started = false\n props.leftDocument = false\n updateState(function (state) {\n if ('dropped' != state.stage) {\n state.stage = 'canceled'\n }\n state.operation = DEFAULT_STATE().operation\n return state\n })\n if (null != props.frameRequestID) {\n cancelAnimationFrame(props.frameRequestID)\n props.frameRequestID = null\n }\n props.layers.forEach(function (layer) {\n layer.stop(event)\n })\n props.layers = []\n props.animateLayers = []\n props.lastCursor.x = null\n props.lastCursor.y = null\n }\n return MODULE\n },\n isStarted() {\n return props.started\n },\n addLayer(layer) {\n if (!props.layers.includes(layer)) {\n props.layers.push(layer)\n }\n if (layer.frame && !props.animateLayers.includes(layer)) {\n props.animateLayers.push(layer)\n }\n return MODULE\n },\n removeLayer(layer) {\n const layerIndex = props.layers.indexOf(layer)\n if (layerIndex >= 0) {\n props.layers.splice(layerIndex, 1)\n }\n const animateLayerIndex = props.animateLayers.indexOf(layer)\n if (animateLayerIndex >= 0) {\n props.animateLayers.splice(animateLayerIndex, 1)\n }\n return MODULE\n },\n drop(event) {\n const state = getState()\n props.layers.forEach(function (layer) {\n if (layer.drop) {\n layer.drop(state, event)\n }\n })\n return MODULE\n },\n leftDocument(event) {\n if (!props.leftDocument) {\n props.leftDocument = true\n props.layers.forEach(function (layer) {\n if (layer.leftDocument) {\n layer.leftDocument(event)\n }\n })\n if (null == getState().source) {\n MODULE.stop(event)\n }\n }\n return MODULE\n },\n enteredDocument(event) {\n if (props.leftDocument) {\n props.leftDocument = false\n props.layers.forEach(function (layer) {\n if (layer.enteredDocument) {\n layer.enteredDocument(event)\n }\n })\n }\n return MODULE\n }\n}\n\nfunction ADND() {\n return MODULE\n}\n\n// targets\n\nimport ADNDDropDataTarget from './targets/ADNDDropDataTarget.js'\nimport ADNDDropFilesTarget from './targets/ADNDDropFilesTarget.js'\nimport ADNDItemsList from './targets/ADNDItemsList.js'\n\nADND.targets = {\n data: ADNDDropDataTarget,\n files: ADNDDropFilesTarget,\n itemsList: ADNDItemsList\n}\n\n// sources\nimport ADNDDataSource from './sources/ADNDDataSource.js'\nimport ADNDDraggableDataSource from './sources/ADNDDraggableDataSource.js'\nimport ADNDListItemHandle from './sources/itemsList/ADNDListItemHandle.js'\n\nADND.sources = {\n data: ADNDDataSource,\n draggableData: ADNDDraggableDataSource,\n listItemHandle: ADNDListItemHandle\n}\n\n// module\n\nexport default ADND\n"],"names":["lastCallTime","DATA_ITEM_TYPE_PREFIX","getTime","window","performance","now","bind","Date","requestAnimationFrame","callback","currentTime","nextFrameAfter","Math","max","floor","nextCallTime","setTimeout","cancelAnimationFrame","requestID","clearTimeout","getScrollX","scrollX","pageXOffset","document","documentElement","body","parentNode","scrollLeft","getScrollY","scrollY","pageYOffset","scrollTop","fileTypeRegExp","filePromiseTypeRegExp","getItemType","state","event","source","PUBLIC","getType","dataTransfer","types","i","length","type","test","dragContainsFiles","dataTransferType","slice","itemTypeFromEvent","isMac","navigator","platform","search","isCloningEvent","shiftKey","ctrlKey","stage","cursor","x","y","item","width","height","target","current","operation","enableMove","enableClone","layers","glass","edgeScrolling","getState","updateState","updater","DEFAULT_CELL_WIDTH","DEFAULT_CELL_HEIGHT","add","id","rect","sort","arguments","undefined","_this$props","this","props","table","idMap","cellWidth","cellHeight","startCol","left","startRow","top","endCol","right","endRow","bottom","row","col","push","bake","_ref","_ref$startRow","_ref$endRow","Number","POSITIVE_INFINITY","_ref$startCol","_ref$endCol","realEndRow","min","r","realEndCol","c","cell","a","b","clear","lastRect","update","_this$props2","prevRecord","prevRect","filter","record","_idMap$id","isEmpty","_this$props3","cellCol","cellRow","rects","_step","_iterator","_createForOfIteratorHelper","s","n","done","testRect","value","err","e","f","RectHitTest","_ref2","_ref2$cellWidth","_ref2$cellHeight","Object","assign","DEFAULT_PAGE_SIZE","pages","pageSize","leftBorder","rightBorder","topPageIndex","bottomPageIndex","pageIndex","_ref$topPageIndex","_ref$bottomPageIndex","lastPageIndex","lastRectIndex","testPageIndex","testPage","possibleRect","entries","_ref3","_slicedToArray","_step2","_iterator2","_ref5","STAGE_STARTED","targets","fetched","activeTargets","activeDynamicTargets","updateDynamicTargetsTickCounter","currentTargetIndex","rectHitTest","zIndexRectHitTest","blackHoles","lastCursor","lock","hitShift","started","LAYER","updatesState","start","setStage","stop","isStarted","lockX","lockY","RectVHitTest","currentTarget","PRIVATE","doLeave","forEach","doStop","doStart","getStage","frame","startTime","acceptDrop","fetchRect","dynamicPosition","fetchTargets","index","zIndex","targetsUpdated","dynamicTargetIndex","shiftX","shiftY","blackHoleId","blackHole","hitX","hitY","hitTargetIndex","lastTarget","hitTarget","capture","doEnter","hitTest","drop","_state","doDrop","addTarget","includes","removeTarget","targetIndex","indexOf","splice","parseFloat","isNaN","setBlackHole","removeBlackHole","ADNDTargetsLayer","node","dragLeave","ADND","leftDocument","mouseMoveStopTimeout","mouseMove","buttons","adndModule","CONNECT","dragEnd","createElement","style","position","background","addEventListener","appendChild","removeEventListener","removeChild","active","topEdge","bottomEdge","leftEdge","rightEdge","stepX","stepY","lastX","lastY","scrollHeight","innerHeight","scrollWidth","innerWidth","scrollBy","_state$source$PUBLIC","_state$source","entered","onEnterHandler","onLeaveHandler","acceptDropFetcher","_this$props$edge","_this$props$edge2","_this$props$edge3","_this$props$edge4","getBoundingClientRect","edge","onDropHandler","data","fetchData","apply","clone","withProps","extendADNDDropTarget","ADNDDropTarget","connect","acceptTypes","disconnect","isConnected","connectedNode","onEnter","onLeave","onDrop","setEdges","defaultProps","TEXT_TYPE","JSON_TYPE","dragStart","setData","crossTab","jsonData","JSON","stringify","_unused","_unused2","clearDragImage","setDragImage","transparentImage","src","_unused3","srcElement","transparentDragSource","cloneNode","innerHTML","border","padding","insertBefore","remove","activeElement","blur","preventDefault","doEnd","acceptDrag","acceptDragFetcher","dataFetcher","onStartHandler","onEndHandler","draggable","onStart","onEnd","getData","extendADNDDataSource","ADNDDataSource","eventData","parse","_ref$acceptTypes","_ref$dynamicPosition","ADNDDropDataTarget","_ref2$dynamicPosition","files","ADNDDropFilesTarget","DRAG_LAYER_CLASS_NAME","DRAG_LAYER_HIDDEN_CLASS_NAME","DRAG_LAYER_STYLE","layerNode","styleNode","contentNode","className","hidden","offset","cloneNote","cloningNode","movingNode","styleSheet","cssText","createTextNode","hide","isActive","move","translate","webkitTransform","mozTransform","msTransform","transform","show","visibility","cloneContent","cursorX","cursorY","thisWidth","thisHeight","finalizeContent","nodeRect","round","updateContent","useCloneNote","ADNDDragLayer","ADNDDropTarget_PRIVATE","isLocked","isLockedHandler","ADNDListItem","list","addItem","doShow","removeItem","setList","getList","getDragLayerClassName","dragLayerClassName","doHide","hideItem","showItem","isHidden","onFinalizeDragLayerContent","finalizeDragLayerContentHandler","doFinalizeDragLayerContent","ADNDDropTarget_PUBLIC","call","getADNDDragLayer","ADNDDragLayerSkipUpdateContent","getADNDTargetsLayer","PLACEHOLDER_CLASS_NAME","DEFAULT_PLACEHOLDER_V_MARGIN","currentPosition","itemType","fetchItemBorders","itemBorders","listTop","items","locked","doPositionChange","placeholderNode","placeholderHeight","placeholderFullHeight","focusedIndex","hiddenItem","doHideItem","doShowItem","hiddenItemStyleDisplay","display","hiddenItemIndex","doUpdateItemPositions","force","oldPosition","newPosition","onPositionChangeHandler","dragItemUpdater","updatePlaceholder","onUpdateItemPositionsHandler","placeholderIndex","doBuildPlaceholder","minPlaceholderHeight","placeholderVMargin","placeholderBuilder","vMargin","placeholderFulHeight","currentBorder","lastBorder","firstChild","nextSibling","_x","listY","focusedIndexBorder","thisBorder","onPlaceholderHeightChangeHandler","newHeight","oldHeight","getDropEffect","operationType","_ref$capture","ADNDItemsList","itemIndex","onPositionChange","onUpdateItemPositions","onPlaceholderHeightChange","buildPlaceholder","_ref2$capture","_objectSpread","listItem","dragLayer","pageX","clientX","pageY","clientY","parent","child","childNodes","addLayer","effectAllowed","ADNDDataSource_PRIVATE","removeLayer","setDragLayerClassName","_this","itemNode","cloning","cloneable","cloneNoteBuilder","updateOperationType","buildCloneNote","connected","animateLayers","frameRequestID","dropEffect","layerFrame","layer","animationFrame","MODULE","defaultState","_ref$topEdge","_ref$bottomEdge","_ref$leftEdge","_ref$rightEdge","ADNDEdgeScrollingLayer","layerIndex","animateLayerIndex","enteredDocument","itemsList","sources","draggableData","ADNDDraggableDataSource","listItemHandle","ADNDListItemHandle"],"sourceRoot":""}