{"version":3,"sources":["jsdelivr-header.js","/npm/vue-pickdrop@1.1.1/src/vue-pickdrop.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aACA,IAAI,YAAc,CACV,QAAS,SAAS,EAAK,GACnB,IAAI,EAAO,KAEX,SAAS,iBAAiB,aAAa,SAAS,GAC5C,GAAI,EAAM,CACN,EAAE,iBACF,IAAI,EAAiB,SAAS,YAAY,eAC1C,EAAe,gBAAgB,iBAAiB,GAAM,EAAM,GAC5D,EAAK,cAAc,EACvB,CACJ,IAWA,EAAI,UAAU,WAAY,CACtB,UAAW,GACX,KAAM,SAAS,EAAI,EAAS,GAExB,IAAI,GAAU,EACV,EAAO,OAAO,KAAK,EAAQ,WAC3B,EAAO,EAAQ,OAAS,EAAQ,WAChC,EAAS,EACT,EAAS,EACT,EAAe,EACf,EAAe,EACf,EAAa,GACb,GAAc,EACd,EAAW,SAAS,iBAEpB,EAA0B,GAE1B,EAAkB,KAIlB,EAAiB,SAAS,YAAY,SAC1C,EAAe,UAAU,iBAAiB,GAAM,GAEhD,IAAI,EAAkB,SAAS,YAAY,eAC3C,EAAgB,gBAAgB,kBAAkB,GAAM,EAAM,CAAE,KAAM,IAEtE,IAAI,EAAkB,SAAS,YAAY,SAC3C,EAAgB,UAAU,kBAAkB,GAAM,GAElD,IAAI,EAAiB,SAAS,YAAY,eAyF1C,SAAS,EAAQ,EAAG,GAChB,EAAG,UAAU,IAAI,YACjB,EAAG,MAAM,OAAS,MAClB,EAAG,MAAM,SAAW,WACpB,EAAS,EACT,EAAS,EACT,EAAe,EAAS,WACxB,EAAe,EAAS,SAC5B,CAEA,SAAS,EAAO,EAAG,GACf,IAAI,EAAS,EAAI,EACb,EAAS,EAAI,EACb,EAAe,EAAe,EAAS,WACvC,EAAe,EAAe,EAAS,WA0C/C,SAAoB,EAAG,GACnB,IAAI,EAAY,EAAS,YACrB,EAAa,EAAS,aACtB,EAAc,EACd,EAAe,EAAY,EAC3B,EAAa,EACb,EAAgB,EAAa,EAE7B,EAAI,EACJ,EAAO,EAAI,EAAc,GAClB,EAAI,GACX,EAAO,EAAI,EAAa,GAGxB,EAAI,EACJ,EAAO,EAAG,EAAI,GACP,EAAI,GACX,EAAO,EAAG,EAAI,EAEtB,CA5DI,CAAW,EAAG,GACd,EAAY,EAAS,EAAc,EAAS,GAE5C,IAAI,EAAe,SAAS,kBAAkB,EAAG,GAC5C,QAAO,SAAS,GACb,GAAI,IAAQ,GAAM,EAAI,aAAa,aAO/B,OANI,EAAW,QAAQ,GAAO,IAC1B,EAAI,cAAc,GAClB,EAAW,KAAK,IAGpB,EAAI,cAAc,IACX,CAEf,IAEJ,EAAa,EAAW,QAAO,SAAS,GACpC,QAAI,EAAa,QAAQ,GAAK,KAC1B,EAAE,cAAc,IACT,EAGf,GAEJ,CAEA,SAAS,IACL,EAAG,UAAU,OAAO,YACpB,EAAG,MAAM,OAAS,KAClB,EAAY,EAAG,GACf,EAAa,EAAW,QAAO,SAAS,GAGpC,OAFA,EAAE,cAAc,GAChB,EAAE,cAAc,IACT,CACX,GACJ,CAEA,SAAS,EAAY,EAAG,GACpB,EAAG,MAAM,UAAY,eAAiB,EAAI,OAAS,EAAI,UAC3D,CAuBA,SAAS,EAAO,EAAG,GACX,IACA,EAAS,YAAc,KAAK,IAAI,EAAS,YAAc,EAAS,WAAY,EAxL/D,KA0Lb,IACA,EAAS,WAAa,KAAK,IAAI,EAAS,aAAe,EAAS,UAAW,EA3L9D,IA6LrB,CA5KA,EAAe,gBAAgB,iBAAiB,GAAM,EAAM,CAAE,KAAM,EAAM,KAAM,IAIhF,EAAG,aAAa,aAAa,GAE7B,EAAG,YAAc,WACb,OAAO,CACX,EAKA,EAAQ,IAAI,UAAY,CACpB,CAAC,aAcL,SAAqB,GAEjB,EAAkB,YAAW,WACzB,GAAU,EACV,EAAQ,EAAE,eAAe,GAAG,QAAS,EAAE,eAAe,GAAG,QAC7D,GAhDa,IAiDjB,EApBgC,CAAE,SAAS,IACvC,CAAC,YAqBL,SAAqB,GACb,IACA,aAAa,GACb,EAAkB,MAElB,GACA,EAAE,iBACF,EAAO,EAAE,eAAe,GAAG,QAAS,EAAE,eAAe,GAAG,UAExD,GAAU,CAElB,EAhC+B,CAAE,SAAS,IACtC,CAAC,WAiCL,SAAoB,GAChB,GAAU,EACV,aAAa,GACb,GACJ,GApCI,CAAC,YAsCL,SAAqB,IACZ,GAAQ,IACT,EAAO,EAAE,OACT,EAAQ,EAAE,QAAS,EAAE,SAE7B,GA1CI,CAAC,UA4CL,SAAmB,GACC,IAAZ,EAAE,QACF,GAAc,GAElB,EAAO,KACP,GACJ,GAjDI,CAAC,YAmDL,SAAqB,GACD,IAAZ,EAAE,QACF,GAAc,EACd,EAAQ,EAAE,QAAS,EAAE,SAE7B,GAvDI,CAAC,gBAyDL,SAAwB,GACpB,EAAE,iBACF,EAAO,EAAE,OAAO,QAAS,EAAE,OAAO,QACtC,GA3DI,CAAC,cA6DL,SAAuB,GAGnB,OAFA,EAAE,iBACF,EAAE,mBACK,CACX,IA9DA,EAAQ,IAAI,UAAU,SAAQ,SAAS,GACnC,EAAG,iBAAiB,MAAM,EAAI,EAClC,GAmJJ,EACA,OAAQ,SAAS,EAAI,GACjB,EAAQ,IAAI,UAAU,SAAQ,SAAS,GACnC,EAAG,oBAAoB,MAAM,EAAI,EACrC,GACJ,IAGJ,EAAI,UAAU,WAAY,CACtB,UAAW,GACX,KAAM,SAAS,EAAI,EAAS,GAExB,IAAI,EAAO,OAAO,KAAK,EAAQ,WAC3B,EAAO,EAAQ,OAAS,EAAQ,WA8BpC,SAAS,EAAU,GACf,OAAuB,IAAhB,EAAK,QAAgB,EAAK,MAAK,GAAK,EAAE,OAAO,KAAK,QAAQ,IAAM,GAC3E,CA9BA,EAAG,aAAa,aAAa,GAE7B,EAAQ,IAAI,UAAY,CACpB,CAAC,iBASL,SAAyB,GACjB,EAAU,IACV,EAAG,UAAU,IAAI,WAEzB,GAZI,CAAC,iBAcL,SAA0B,GACtB,EAAG,UAAU,OAAO,WACxB,GAfI,CAAC,gBAiBL,SAAwB,GAChB,EAAU,IA3P1B,SAAc,EAAO,EAAM,GACvB,IAAI,EAAY,EAAM,MAAQ,EAAM,KAAK,IACpC,EAAM,kBAAoB,EAAM,iBAAiB,UAElD,GAAY,EAAS,IACrB,EAAS,GAAM,IAAI,EAE3B,CAqPgB,CAAK,EAAO,OAAQ,CAAE,SAAU,EAAE,OAAO,KAAM,SAAU,GAEjE,IAlBA,EAAQ,IAAI,UAAU,SAAQ,SAAS,GACnC,EAAG,iBAAiB,MAAM,EAAI,EAClC,GAqBJ,EACA,OAAQ,SAAS,EAAI,GACjB,EAAQ,IAAI,UAAU,SAAQ,SAAS,GACnC,EAAG,oBAAoB,MAAM,EAAI,EACrC,GACJ,GAER,kBAGO","file":"/npm/vue-pickdrop@1.1.1/src/vue-pickdrop.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/vue-pickdrop@1.1.1/src/vue-pickdrop.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\r\nvar VuePickdrop = {\r\n        install: function(Vue, options) {\r\n            var drag = null;\r\n\r\n            document.addEventListener('mousemove', function(e) {\r\n                if (drag) {\r\n                    e.preventDefault();\r\n                    var mouseMoveEvent = document.createEvent('CustomEvent');\r\n                    mouseMoveEvent.initCustomEvent('pickdrag:move', true, true, e);\r\n                    drag.dispatchEvent(mouseMoveEvent);\r\n                }\r\n            })\r\n\r\n            function emit(vnode, name, data) {\r\n                var handlers = (vnode.data && vnode.data.on) ||\r\n                    (vnode.componentOptions && vnode.componentOptions.listeners);\r\n\r\n                if (handlers && handlers[name]) {\r\n                    handlers[name].fns(data);\r\n                }\r\n            }\r\n\r\n            Vue.directive('pickdrag', {\r\n                listeners: [],\r\n                bind: function(el, binding, vnode) {\r\n\r\n                    var started = false;\r\n                    var tags = Object.keys(binding.modifiers);\r\n                    var data = binding.value || binding.expression;\r\n                    var startX = 0;\r\n                    var startY = 0;\r\n                    var startScrollX = 0;\r\n                    var startScrollY = 0;\r\n                    var underTouch = [];\r\n                    var isMouseDown = false;\r\n                    var scroller = document.scrollingElement;\r\n                    var maxScrollSpeed = 20;\r\n                    var autoScrollTriggerOffset = 50;\r\n                    var startDelay = 100;\r\n                    var startDelayTimer = null;\r\n\r\n                    /* CUSTOM EVENTS */\r\n\r\n                    var touchOverEvent = document.createEvent('Event');\r\n                    touchOverEvent.initEvent('pickdrop:over', true, true);\r\n\r\n                    var touchEnterEvent = document.createEvent('CustomEvent');\r\n                    touchEnterEvent.initCustomEvent('pickdrop:enter', true, true, { tags: tags });\r\n\r\n                    var touchLeaveEvent = document.createEvent('Event');\r\n                    touchLeaveEvent.initEvent('pickdrop:leave', true, true);\r\n\r\n                    var touchDropEvent = document.createEvent('CustomEvent');\r\n                    touchDropEvent.initCustomEvent('pickdrop:drop', true, true, { tags: tags, data: data });\r\n\r\n                    /* INITIAL STATE */\r\n\r\n                    el.setAttribute('draggable', true);\r\n\r\n                    el.ondragstart = function() {\r\n                        return false;\r\n                    };\r\n\r\n\r\n                    /* EVENT LISTENERS */\r\n\r\n                    binding.def.listeners = [\r\n                        ['touchstart', onTochStart, { passive: false }],\r\n                        ['touchmove', onTouchMove, { passive: false }],\r\n                        ['touchend', onTouchEnd],\r\n                        ['mousemove', onMouseMove],\r\n                        ['mouseup', onMouseUp],\r\n                        ['mousedown', onMouseDown],\r\n                        ['pickdrag:move', onPickdragMove],\r\n                        ['contextmenu', onContextMenu]\r\n                    ];\r\n                    \r\n                    binding.def.listeners.forEach(function(args) {\r\n                        el.addEventListener.apply(el, args);\r\n                    });\r\n\r\n                    function onTochStart(e) {\r\n                        // e.preventDefault();\r\n                        startDelayTimer = setTimeout(function() {\r\n                            started = true;\r\n                            onStart(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\r\n                        }, startDelay)\r\n                    }\r\n\r\n                    function onTouchMove(e) {\r\n                        if (startDelayTimer) {\r\n                            clearTimeout(startDelayTimer);\r\n                            startDelayTimer = null;\r\n                        }\r\n                        if (started) {\r\n                            e.preventDefault();\r\n                            onMove(e.changedTouches[0].clientX, e.changedTouches[0].clientY);\r\n                        } else {\r\n                            started = false;\r\n                        }\r\n                    }\r\n\r\n                    function onTouchEnd(e) {\r\n                        started = false;\r\n                        clearTimeout(startDelayTimer);\r\n                        onEnd();\r\n                    }\r\n\r\n                    function onMouseMove(e) {\r\n                        if (!drag && isMouseDown) {\r\n                            drag = e.target;\r\n                            onStart(e.clientX, e.clientY);\r\n                        }\r\n                    }\r\n                    \r\n                    function onMouseUp(e) {\r\n                        if (e.which === 1) {\r\n                            isMouseDown = false;\r\n                        }\r\n                        drag = null;\r\n                        onEnd();\r\n                    }\r\n\r\n                    function onMouseDown(e) {\r\n                        if (e.which === 1) {\r\n                            isMouseDown = true;\r\n                            onStart(e.clientX, e.clientY);\r\n                        }\r\n                    }\r\n\r\n                    function onPickdragMove(e) {\r\n                        e.preventDefault();\r\n                        onMove(e.detail.clientX, e.detail.clientY);\r\n                    }\r\n\r\n                    function onContextMenu(e) {\r\n                        e.preventDefault();\r\n                        e.stopPropagation();\r\n                        return false;\r\n                    }\r\n\r\n                    function onStart(x, y) {\r\n                        el.classList.add('pickdrag');\r\n                        el.style.zIndex = 99999;\r\n                        el.style.position = 'relative';\r\n                        startX = x;\r\n                        startY = y;\r\n                        startScrollX = scroller.scrollLeft;\r\n                        startScrollY = scroller.scrollTop\r\n                    }\r\n\r\n                    function onMove(x, y) {\r\n                        var deltaX = x - startX;\r\n                        var deltaY = y - startY;\r\n                        var delatScrollX = startScrollX - scroller.scrollLeft;\r\n                        var delatScrollY = startScrollY - scroller.scrollTop;\r\n                        autoScroll(x, y);\r\n                        setPosition(deltaX - delatScrollX, deltaY - delatScrollY);\r\n\r\n                        var currentDrops = document.elementsFromPoint(x, y)\r\n                            .filter(function(elm) {\r\n                                if (elm !== el && elm.getAttribute('droppable')) {\r\n                                    if (underTouch.indexOf(elm) < 0) {\r\n                                        elm.dispatchEvent(touchEnterEvent);\r\n                                        underTouch.push(elm);\r\n                                    }\r\n\r\n                                    elm.dispatchEvent(touchOverEvent);\r\n                                    return true;\r\n                                }\r\n                            });\r\n\r\n                        underTouch = underTouch.filter(function(u) {\r\n                            if (currentDrops.indexOf(u) < 0) {\r\n                                u.dispatchEvent(touchLeaveEvent);\r\n                                return false;\r\n                            }\r\n                            return true;\r\n                        })\r\n\r\n                    }\r\n\r\n                    function onEnd() {\r\n                        el.classList.remove('pickdrag');\r\n                        el.style.zIndex = null;\r\n                        setPosition(0, 0);\r\n                        underTouch = underTouch.filter(function(u) {\r\n                            u.dispatchEvent(touchLeaveEvent);\r\n                            u.dispatchEvent(touchDropEvent);\r\n                            return false;\r\n                        })\r\n                    }\r\n\r\n                    function setPosition(x, y) {\r\n                        el.style.transform = \"translate3d(\" + x + \"px, \" + y + \"px, 0px)\";\r\n                    }\r\n\r\n                    function autoScroll(x, y) {\r\n                        var viewWidth = scroller.clientWidth;\r\n                        var viewHeight = scroller.clientHeight;\r\n                        var leftOverlap = autoScrollTriggerOffset;\r\n                        var rightOverlap = viewWidth - autoScrollTriggerOffset;\r\n                        var topOverlap = autoScrollTriggerOffset;\r\n                        var bottomOverlap = viewHeight - autoScrollTriggerOffset;\r\n                        \r\n                        if (x > rightOverlap) {                          \r\n                            scroll(x - rightOverlap, 0);\r\n                        } else if (x < leftOverlap) {\r\n                            scroll(x - leftOverlap, 0);\r\n                        }\r\n\r\n                        if (y > bottomOverlap) {                         \r\n                            scroll(0, y - bottomOverlap);\r\n                        } else if (y < topOverlap) {\r\n                            scroll(0, y - topOverlap);\r\n                        }\r\n                    }\r\n\r\n                    function scroll(x, y) {\r\n                        if (x) {\r\n                            scroller.scrollLeft += Math.min(scroller.scrollWidth - scroller.scrollLeft, x, maxScrollSpeed);\r\n                        }\r\n                        if (y) {\r\n                            scroller.scrollTop += Math.min(scroller.scrollHeight - scroller.scrollTop, y, maxScrollSpeed);\r\n                        }\r\n                    }\r\n                },\r\n                unbind: function(el, binding) {\r\n                    binding.def.listeners.forEach(function(args) {\r\n                        el.removeEventListener.apply(el, args);\r\n                    })\r\n                }\r\n            })\r\n\r\n            Vue.directive('pickdrop', {\r\n                listeners: [],\r\n                bind: function(el, binding, vnode) {\r\n\r\n                    var tags = Object.keys(binding.modifiers);\r\n                    var data = binding.value || binding.expression;\r\n\r\n                    el.setAttribute('droppable', true);\r\n\r\n                    binding.def.listeners = [\r\n                        ['pickdrop:enter', onPickdropEnter],\r\n                        ['pickdrop:leave', onPickdropLeave],\r\n                        ['pickdrop:drop', onPickdropDrop]\r\n                    ];\r\n                    \r\n                    binding.def.listeners.forEach(function(args) {\r\n                        el.addEventListener.apply(el, args);\r\n                    });\r\n\r\n                    function onPickdropEnter(e) {\r\n                        if (checkTags(e)) {\r\n                            el.classList.add('pickdrop')\r\n                        }\r\n                    }\r\n\r\n                    function onPickdropLeave (e) {\r\n                        el.classList.remove('pickdrop')\r\n                    }\r\n\r\n                    function onPickdropDrop(e) {\r\n                        if (checkTags(e)) {\r\n                            emit(vnode, 'drop', { dragData: e.detail.data, dropData: data });\r\n                        }\r\n                    }\r\n\r\n                    function checkTags(e) {\r\n                        return tags.length === 0 || tags.some(t => e.detail.tags.indexOf(t) >= 0);\r\n                    }\r\n                },\r\n                unbind: function(el, binding) {\r\n                    binding.def.listeners.forEach(function(args) {\r\n                        el.removeEventListener.apply(el, args);\r\n                    })\r\n                }\r\n            })\r\n        }\r\n}\r\n\r\nexport default VuePickdrop;"]}