{"version":3,"file":"js/5205-cb0874c91893e93eea6a.js","mappings":"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","sources":["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","webpack://AYTM/./app/_stock/webpack/lib/adnd/ADNDHelpers.js"],"sourcesContent":["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.dynamicPosition } = {}) {\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 moveable: true,\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 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 (!this.props.cloneable || !isCloningEvent(event)) {\n this.PRIVATE.doHide()\n }\n\n updateState(state => {\n state.operation.type = 'move'\n state.operation.enableMove = this.props.moveable\n state.operation.enableClone = this.props.cloneable\n return state\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","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"],"names":["state","stage","cursor","x","y","item","type","width","height","target","current","source","operation","enableMove","enableClone","layers","glass","edgeScrolling","getState","updateState","updater","DEFAULT_CELL_WIDTH","DEFAULT_CELL_HEIGHT","PUBLIC","add","id","rect","sort","arguments","length","undefined","_this$props","this","props","table","idMap","cellWidth","cellHeight","startCol","Math","floor","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","test","_this$props3","cellCol","cellRow","rects","_step","_iterator","_createForOfIteratorHelper","s","n","done","testRect","value","err","e","f","RectHitTest","_ref2","_ref2$cellWidth","_ref2$cellHeight","Object","assign","bind","DEFAULT_PAGE_SIZE","pages","pageSize","leftBorder","rightBorder","topPageIndex","bottomPageIndex","pageIndex","max","_ref$topPageIndex","_ref$bottomPageIndex","i","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","getTime","scrollX","getScrollX","scrollY","getScrollY","acceptDrop","fetchRect","dynamicPosition","fetchTargets","index","zIndex","targetsUpdated","dynamicTargetIndex","shiftX","shiftY","blackHoleId","blackHole","hitX","hitY","hitTargetIndex","lastTarget","hitTarget","capture","doEnter","hitTest","drop","_state","event","doDrop","addTarget","includes","removeTarget","targetIndex","indexOf","splice","parseFloat","isNaN","setBlackHole","removeBlackHole","ADNDTargetsLayer","node","dragLeave","ADND","leftDocument","mouseMoveStopTimeout","mouseMove","buttons","requestAnimationFrame","clearTimeout","setTimeout","adndModule","CONNECT","dragEnd","document","createElement","style","position","background","addEventListener","body","appendChild","removeEventListener","parentNode","removeChild","active","topEdge","bottomEdge","leftEdge","rightEdge","stepX","stepY","lastX","lastY","scrollHeight","window","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","dataTransfer","setData","crossTab","jsonData","JSON","stringify","_unused","DATA_ITEM_TYPE_PREFIX","_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","getType","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","cloneable","cloneNoteBuilder","isCloningEvent","moveable","updateOperationType","buildCloneNote","connected","animateLayers","frameRequestID","dropEffect","layerFrame","layer","animationFrame","MODULE","getItemType","defaultState","_ref$topEdge","_ref$bottomEdge","_ref$leftEdge","_ref$rightEdge","ADNDEdgeScrollingLayer","cancelAnimationFrame","layerIndex","animateLayerIndex","enteredDocument","itemsList","sources","draggableData","ADNDDraggableDataSource","listItemHandle","ADNDListItemHandle","lastCallTime","performance","now","Date","callback","currentTime","nextFrameAfter","nextCallTime","requestID","pageXOffset","documentElement","scrollLeft","pageYOffset","scrollTop","fileTypeRegExp","filePromiseTypeRegExp","itemTypeFromEvent","types","dataTransferType","slice","dragContainsFiles","isMac","navigator","platform","search","shiftKey","ctrlKey"],"sourceRoot":""}