1 line
No EOL
95 KiB
Text
1 line
No EOL
95 KiB
Text
{"version":3,"file":"vue-easy-dnd.min.js","sources":["../../src/vue-easy-dnd/vue-easy-dnd.js"],"sourcesContent":["/* eslint-disable */\r\n/*eslint no-unused-vars: \"off\" */\r\n/* Miqra Engineering: (c) 2020 added modifications to work as es6 module and preserve vue tag names during minification\r\n*/\r\nimport './reflect-metadata';\r\nimport { Vue, Component, Prop } from './vue-property-decorator';\r\n\r\n/*MIT License\r\n\r\nCopyright (c) 2019 Régis Lemaigre\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n*/\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\n/**\r\n * This is the class of the global object that holds the state of the drag and drop during its progress. It emits events\r\n * reporting its state evolution during the progress of the drag and drop. Its data is reactive and listeners can be\r\n * attachted to it using the method on.\r\n */\r\nvar DnD = function DnD() {\r\n this.inProgress = false;\r\n this.type = null;\r\n this.data = null;\r\n this.source = null;\r\n this.top = null;\r\n this.position = null;\r\n this.eventBus = new Vue();\r\n this.sourceListeners = null;\r\n this.success = null;\r\n};\r\nDnD.prototype.startDrag = function startDrag (source, event, x, y, type, data) {\r\n this.type = type;\r\n this.data = data;\r\n this.source = source;\r\n this.position = {\r\n x: x,\r\n y: y\r\n };\r\n this.top = null;\r\n this.sourceListeners = source.$listeners;\r\n this.inProgress = true;\r\n this.emit(event, \"dragstart\");\r\n this.emit(event, \"dragtopchanged\", { previousTop: null });\r\n};\r\nDnD.prototype.stopDrag = function stopDrag (event) {\r\n this.success = this.top !== null && this.top['compatibleMode'] && this.top['dropAllowed'];\r\n if (this.top !== null) {\r\n this.emit(event, \"drop\");\r\n }\r\n this.emit(event, \"dragend\");\r\n this.inProgress = false;\r\n this.data = null;\r\n this.source = null;\r\n this.position = null;\r\n this.success = null;\r\n};\r\nDnD.prototype.mouseMove = function mouseMove (event, comp) {\r\n if (this.inProgress) {\r\n var prevent = false;\r\n var previousTop = this.top;\r\n if (comp === null) {\r\n // The mouse move event reached the top of the document without hitting a drop component.\r\n this.top = null;\r\n prevent = true;\r\n }\r\n else if (comp['isDropMask']) {\r\n // The mouse move event bubbled until it reached a drop mask.\r\n this.top = null;\r\n prevent = true;\r\n }\r\n else if (comp['candidate'](this.type, this.data, this.source)) {\r\n // The mouse move event bubbled until it reached a drop component that participates in the current drag operation.\r\n this.top = comp;\r\n prevent = true;\r\n }\r\n if (prevent) {\r\n // We prevent the mouse move event from bubbling further up the tree because it reached the foremost drop component and that component is all that matters.\r\n event.stopPropagation();\r\n }\r\n if (this.top !== previousTop) {\r\n this.emit(event.detail.native, 'dragtopchanged', { previousTop: previousTop });\r\n }\r\n this.position = {\r\n x: event.detail.x,\r\n y: event.detail.y\r\n };\r\n this.emit(event.detail.native, 'dragpositionchanged');\r\n }\r\n};\r\nDnD.prototype.emit = function emit (native, event, data) {\r\n this.eventBus.$emit(event, Object.assign({}, {type: this.type,\r\n data: this.data,\r\n top: this.top,\r\n source: this.source,\r\n position: this.position,\r\n success: this.success,\r\n native: native},\r\n data));\r\n};\r\nDnD.prototype.on = function on (event, callback) {\r\n this.eventBus.$on(event, callback);\r\n};\r\nDnD.prototype.off = function off (event, callback) {\r\n this.eventBus.$off(event, callback);\r\n};\r\nvar dnd = new DnD();\r\ndnd = Vue.observable(dnd);\r\n\r\nvar DragAwareMixin = /*@__PURE__*/(function (Vue) {\r\n function DragAwareMixin () {\r\n Vue.apply(this, arguments);\r\n }\r\n\r\n if ( Vue ) DragAwareMixin.__proto__ = Vue;\r\n DragAwareMixin.prototype = Object.create( Vue && Vue.prototype );\r\n DragAwareMixin.prototype.constructor = DragAwareMixin;\r\n\r\n var prototypeAccessors = { dragInProgress: { configurable: true },dragData: { configurable: true },dragType: { configurable: true },dragPosition: { configurable: true },dragSource: { configurable: true },dragTop: { configurable: true } };\r\n\r\n prototypeAccessors.dragInProgress.get = function () {\r\n return dnd.inProgress;\r\n };\r\n prototypeAccessors.dragData.get = function () {\r\n return dnd.data;\r\n };\r\n prototypeAccessors.dragType.get = function () {\r\n return dnd.type;\r\n };\r\n prototypeAccessors.dragPosition.get = function () {\r\n return dnd.position;\r\n };\r\n prototypeAccessors.dragSource.get = function () {\r\n return dnd.source;\r\n };\r\n prototypeAccessors.dragTop.get = function () {\r\n return dnd.top;\r\n };\r\n\r\n Object.defineProperties( DragAwareMixin.prototype, prototypeAccessors );\r\n\r\n return DragAwareMixin;\r\n}(Vue));\r\nDragAwareMixin = __decorate([\r\n Component({ name: \"DragAwareMixin\",})\r\n], DragAwareMixin);\r\nvar DragAwareMixin$1 = DragAwareMixin;\r\n\r\n/**\r\n * This files contains the primitives required to create drag images from HTML elements that serve as models. A snapshot\r\n * of the computed styles of the model elements is taken when creating the drag image, so that it will look the same as\r\n * the model, no matter where the drag images is grafted into the DOM.\r\n */\r\n/**\r\n * Creates a drag image using the given element as model.\r\n */\r\nfunction createDragImage(el) {\r\n var clone = deepClone(el);\r\n clone.style.position = 'fixed';\r\n clone.style.margin = '0';\r\n clone.style[\"z-index\"] = '1000';\r\n clone.style.transition = 'opacity 0.2s';\r\n return clone;\r\n}\r\n/**\r\n * Clones the given element and all its descendants.\r\n */\r\nfunction deepClone(el) {\r\n var clone = el.cloneNode(true);\r\n copyStyle(el, clone);\r\n var vSrcElements = el.getElementsByTagName(\"*\");\r\n var vDstElements = clone.getElementsByTagName(\"*\");\r\n for (var i = vSrcElements.length; i--;) {\r\n var vSrcElement = vSrcElements[i];\r\n var vDstElement = vDstElements[i];\r\n copyStyle(vSrcElement, vDstElement);\r\n }\r\n return clone;\r\n}\r\n/**\r\n * Copy the computed styles from src to destination.\r\n */\r\nfunction copyStyle(src, destination) {\r\n var computedStyle = window.getComputedStyle(src);\r\n Array.from(computedStyle).forEach(function (key) {\r\n destination.style.setProperty(key, computedStyle.getPropertyValue(key), computedStyle.getPropertyPriority(key));\r\n });\r\n destination.style.pointerEvents = 'none';\r\n}\r\n\r\nvar DragMixin = /*@__PURE__*/(function (DragAwareMixin) {\r\n function DragMixin() {\r\n DragAwareMixin.apply(this, arguments);\r\n this.isDrag = true;\r\n this.mouseIn = null;\r\n }\r\n\r\n if ( DragAwareMixin ) DragMixin.__proto__ = DragAwareMixin;\r\n DragMixin.prototype = Object.create( DragAwareMixin && DragAwareMixin.prototype );\r\n DragMixin.prototype.constructor = DragMixin;\r\n\r\n var prototypeAccessors = { dragIn: { configurable: true },cssClasses: { configurable: true },currentDropMode: { configurable: true } };\r\n DragMixin.prototype.created = function created () {\r\n this.reEmit(\"dragstart\");\r\n this.reEmit(\"dragend\");\r\n };\r\n DragMixin.prototype.reEmit = function reEmit (eventName) {\r\n var this$1 = this;\r\n\r\n dnd.on(eventName, function (ev) {\r\n if (ev.source === this$1) {\r\n this$1.$emit(eventName, ev);\r\n }\r\n });\r\n };\r\n DragMixin.prototype.mounted = function mounted () {\r\n var isNodeList = function (el) {\r\n return 'item' in el;\r\n };\r\n var comp = this;\r\n var el = this.$el;\r\n var dragStarted = false;\r\n var initialUserSelect;\r\n var downEvent = null;\r\n var startPosition = null;\r\n if (this.handle) {\r\n el = this.$el.querySelectorAll(this.handle);\r\n }\r\n if (isNodeList(el)) {\r\n el.forEach(function (element) {\r\n element.addEventListener('mousedown', onMouseDown);\r\n element.addEventListener('touchstart', onMouseDown);\r\n element.addEventListener('mouseenter', onMouseEnter);\r\n element.addEventListener('mouseleave', onMouseLeave);\r\n });\r\n }\r\n else {\r\n el.addEventListener('mousedown', onMouseDown);\r\n el.addEventListener('touchstart', onMouseDown);\r\n el.addEventListener('mouseenter', onMouseEnter);\r\n el.addEventListener('mouseleave', onMouseLeave);\r\n }\r\n function onMouseEnter() {\r\n comp.mouseIn = true;\r\n }\r\n function onMouseLeave() {\r\n comp.mouseIn = false;\r\n }\r\n function noop(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n function onMouseDown(e) {\r\n if (!comp.disabled && downEvent === null) {\r\n initialUserSelect = document.body.style.userSelect;\r\n document.documentElement.style.userSelect = 'none'; // Permet au drag de se poursuivre normalement même\r\n // quand on quitte un élémént avec overflow: hidden.\r\n dragStarted = false;\r\n downEvent = e;\r\n if (downEvent.type === 'mousedown') {\r\n var mouse = event;\r\n startPosition = {\r\n x: mouse.clientX,\r\n y: mouse.clientY\r\n };\r\n }\r\n else {\r\n var touch = event;\r\n startPosition = {\r\n x: touch.touches[0].clientX,\r\n y: touch.touches[0].clientY\r\n };\r\n }\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('touchmove', onMouseMove, { passive: false });\r\n document.addEventListener('easy-dnd-move', onEasyDnDMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n document.addEventListener('touchend', onMouseUp);\r\n document.addEventListener('selectstart', noop);\r\n // Prevents event from bubbling to ancestor drag components and initiate several drags at the same time\r\n e.stopPropagation();\r\n // Prevents touchstart event to be converted to mousedown\r\n //e.preventDefault();\r\n }\r\n }\r\n function onMouseMove(e) {\r\n // We ignore the mousemove event that follows touchend :\r\n if (downEvent === null)\r\n { return; }\r\n // On touch devices, we ignore fake mouse events and deal with touch events only.\r\n if (downEvent.type === 'touchstart' && e.type === 'mousemove')\r\n { return; }\r\n // Find out event target and pointer position :\r\n var target;\r\n var x;\r\n var y;\r\n if (e.type === 'touchmove') {\r\n var touch = e;\r\n x = touch.touches[0].clientX;\r\n y = touch.touches[0].clientY;\r\n target = document.elementFromPoint(x, y);\r\n }\r\n else {\r\n var mouse = e;\r\n x = mouse.clientX;\r\n y = mouse.clientY;\r\n target = mouse.target;\r\n }\r\n // Distance between current event and start position :\r\n var dist = Math.sqrt(Math.pow(startPosition.x - x, 2) + Math.pow(startPosition.y - y, 2));\r\n // If the drag has not begun yet and distance from initial point is greater than delta, we start the drag :\r\n if (!dragStarted && dist > comp.delta) {\r\n dragStarted = true;\r\n dnd.startDrag(comp, downEvent, startPosition.x, startPosition.y, comp.type, comp.data);\r\n document.documentElement.classList.add('drag-in-progress');\r\n }\r\n // Dispatch custom easy-dnd-move event :\r\n if (dragStarted) {\r\n var custom = new CustomEvent(\"easy-dnd-move\", {\r\n bubbles: true,\r\n cancelable: true,\r\n detail: {\r\n x: x,\r\n y: y,\r\n native: e\r\n }\r\n });\r\n target.dispatchEvent(custom);\r\n }\r\n // Prevent scroll on touch devices :\r\n e.preventDefault();\r\n }\r\n function onEasyDnDMove(e) {\r\n dnd.mouseMove(e, null);\r\n }\r\n function onMouseUp(e) {\r\n // On touch devices, we ignore fake mouse events and deal with touch events only.\r\n if (downEvent.type === 'touchstart' && e.type === 'mouseup')\r\n { return; }\r\n downEvent = null;\r\n // This delay makes sure that when the click event that results from the mouseup is produced, the drag is still\r\n // in progress. So by checking the flag dnd.inProgress, one can tell appart true clicks from drag and drop artefacts.\r\n setTimeout(function () {\r\n if (dragStarted) {\r\n document.documentElement.classList.remove('drag-in-progress');\r\n dnd.stopDrag(e);\r\n }\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('touchmove', onMouseMove);\r\n document.removeEventListener('easy-dnd-move', onEasyDnDMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n document.removeEventListener('touchend', onMouseUp);\r\n document.removeEventListener('selectstart', noop);\r\n document.documentElement.style.userSelect = initialUserSelect;\r\n }, 0);\r\n }\r\n };\r\n prototypeAccessors.dragIn.get = function () {\r\n return !this.dragInProgress && this.mouseIn;\r\n };\r\n prototypeAccessors.cssClasses.get = function () {\r\n if (!this.disabled) {\r\n return {\r\n 'drag-source': this.dragInProgress && this.dragSource === this,\r\n 'drag-in': this.dragIn,\r\n 'drag-out': !this.dragIn,\r\n 'drag-mode-copy': this.currentDropMode === 'copy',\r\n 'drag-mode-cut': this.currentDropMode === 'cut',\r\n 'drag-mode-reordering': this.currentDropMode === 'reordering',\r\n };\r\n }\r\n else {\r\n return {};\r\n }\r\n };\r\n prototypeAccessors.currentDropMode.get = function () {\r\n if (this.dragInProgress && this.dragSource === this) {\r\n if (this.dragTop && this.dragTop['dropAllowed']) {\r\n if (this.dragTop['reordering'])\r\n { return 'reordering'; }\r\n else\r\n { return this.dragTop['mode']; }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n DragMixin.prototype.createDragImage = function createDragImage$1 (selfTransform) {\r\n var image;\r\n if (this.$scopedSlots['drag-image']) {\r\n var el = this.$refs['drag-image'];\r\n if (el.childElementCount !== 1) {\r\n image = createDragImage(el);\r\n }\r\n else {\r\n image = createDragImage(el.children.item(0));\r\n }\r\n }\r\n else {\r\n image = createDragImage(this.$el);\r\n image.style.transform = selfTransform;\r\n }\r\n image['__opacity'] = this.dragImageOpacity;\r\n return image;\r\n };\r\n\r\n Object.defineProperties( DragMixin.prototype, prototypeAccessors );\r\n\r\n return DragMixin;\r\n}(DragAwareMixin$1));\r\n__decorate([\r\n Prop({ default: null, type: null }),\r\n __metadata(\"design:type\", String)\r\n], DragMixin.prototype, \"type\", void 0);\r\n__decorate([\r\n Prop({ default: null, type: null }),\r\n __metadata(\"design:type\", Object)\r\n], DragMixin.prototype, \"data\", void 0);\r\n__decorate([\r\n Prop({ default: 0.7, type: Number }),\r\n __metadata(\"design:type\", Object)\r\n], DragMixin.prototype, \"dragImageOpacity\", void 0);\r\n__decorate([\r\n Prop({ default: false, type: Boolean }),\r\n __metadata(\"design:type\", Boolean)\r\n], DragMixin.prototype, \"disabled\", void 0);\r\n__decorate([\r\n Prop({ default: false, type: Boolean }),\r\n __metadata(\"design:type\", Boolean)\r\n], DragMixin.prototype, \"goBack\", void 0);\r\n__decorate([\r\n Prop({ required: false, type: String }),\r\n __metadata(\"design:type\", String)\r\n], DragMixin.prototype, \"handle\", void 0);\r\n__decorate([\r\n Prop({ type: Number, default: 3 }),\r\n __metadata(\"design:type\", Number)\r\n], DragMixin.prototype, \"delta\", void 0);\r\nDragMixin = __decorate([\r\n Component({ name: \"DragMixin\",})\r\n], DragMixin);\r\nvar DragMixin$1 = DragMixin;\r\n\r\nvar Drag = /*@__PURE__*/(function (DragMixin) {\r\n function Drag () {\r\n DragMixin.apply(this, arguments);\r\n }if ( DragMixin ) Drag.__proto__ = DragMixin;\r\n Drag.prototype = Object.create( DragMixin && DragMixin.prototype );\r\n Drag.prototype.constructor = Drag;\r\n\r\n \r\n\r\n return Drag;\r\n}(DragMixin$1));\r\n__decorate([\r\n Prop({ default: 'div', type: [String, Object, Function] }),\r\n __metadata(\"design:type\", Object)\r\n], Drag.prototype, \"tag\", void 0);\r\nDrag = __decorate([\r\n Component({ name: \"Drag\",})\r\n], Drag);\r\nvar script = Drag;\r\n\r\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\r\n/* server only */\r\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n } // Vue.extend constructor export interop.\r\n\r\n\r\n var options = typeof script === 'function' ? script.options : script; // render functions\r\n\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true; // functional template\r\n\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n } // scopedId\r\n\r\n\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n\r\n var hook;\r\n\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function hook(context) {\r\n // 2.3 injection\r\n context = context || // cached call\r\n this.$vnode && this.$vnode.ssrContext || // stateful\r\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\r\n // 2.2 with runInNewContext: true\r\n\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n } // inject component styles\r\n\r\n\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n } // register component module identifier for async chunk inference\r\n\r\n\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n }; // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n\r\n\r\n options._ssrRegister = hook;\r\n } else if (style) {\r\n hook = shadowMode ? function () {\r\n style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));\r\n } : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n var originalRender = options.render;\r\n\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n } else {\r\n // inject component registration as beforeCreate hook\r\n var existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n\r\n return script;\r\n}\r\n\r\nvar normalizeComponent_1 = normalizeComponent;\r\n\r\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\r\nfunction createInjector(context) {\r\n return function (id, style) {\r\n return addStyle(id, style);\r\n };\r\n}\r\nvar HEAD;\r\nvar styles = {};\r\n\r\nfunction addStyle(id, css) {\r\n var group = isOldIE ? css.media || 'default' : id;\r\n var style = styles[group] || (styles[group] = {\r\n ids: new Set(),\r\n styles: []\r\n });\r\n\r\n if (!style.ids.has(id)) {\r\n style.ids.add(id);\r\n var code = css.source;\r\n\r\n if (css.map) {\r\n // https://developer.chrome.com/devtools/docs/javascript-debugging\r\n // this makes source maps inside style tags work properly in Chrome\r\n code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */'; // http://stackoverflow.com/a/26603875\r\n\r\n code += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */';\r\n }\r\n\r\n if (!style.element) {\r\n style.element = document.createElement('style');\r\n style.element.type = 'text/css';\r\n if (css.media) { style.element.setAttribute('media', css.media); }\r\n\r\n if (HEAD === undefined) {\r\n HEAD = document.head || document.getElementsByTagName('head')[0];\r\n }\r\n\r\n HEAD.appendChild(style.element);\r\n }\r\n\r\n if ('styleSheet' in style.element) {\r\n style.styles.push(code);\r\n style.element.styleSheet.cssText = style.styles.filter(Boolean).join('\\n');\r\n } else {\r\n var index = style.ids.size - 1;\r\n var textNode = document.createTextNode(code);\r\n var nodes = style.element.childNodes;\r\n if (nodes[index]) { style.element.removeChild(nodes[index]); }\r\n if (nodes.length) { style.element.insertBefore(textNode, nodes[index]); }else { style.element.appendChild(textNode); }\r\n }\r\n }\r\n}\r\n\r\nvar browser = createInjector;\r\n\r\n/* script */\r\nvar __vue_script__ = script;\r\n\r\n/* template */\r\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.tag,_vm._g(_vm._b({tag:\"component\",class:_vm.cssClasses,style:({cursor: _vm.disabled || _vm.handle ? null : 'grab'}),scopedSlots:_vm._u([_vm._l((_vm.$scopedSlots),function(_,slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'component',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\"),_vm._v(\" \"),_vm._v(\" \"),_c('div',{ref:\"drag-image\",staticClass:\"__drag-image\"},[_vm._t(\"drag-image\")],2)],2)};\r\nvar __vue_staticRenderFns__ = [];\r\n\r\n /* style */\r\n var __vue_inject_styles__ = function (inject) {\r\n if (!inject) { return }\r\n inject(\"data-v-15f89b5d_0\", { source: \".drop-allowed.drop-in *{cursor:inherit!important}.drop-forbidden.drop-in,.drop-forbidden.drop-in *{cursor:no-drop!important}\", map: undefined, media: undefined })\r\n,inject(\"data-v-15f89b5d_1\", { source: \"html.drag-in-progress *{cursor:grabbing!important}\", map: undefined, media: undefined })\r\n,inject(\"data-v-15f89b5d_2\", { source: \".__drag-image[data-v-15f89b5d]{position:fixed;top:-10000px;left:-10000px;will-change:left,top}\", map: undefined, media: undefined });\r\n\r\n };\r\n /* scoped */\r\n var __vue_scope_id__ = \"data-v-15f89b5d\";\r\n /* module identifier */\r\n var __vue_module_identifier__ = undefined;\r\n /* functional template */\r\n var __vue_is_functional_template__ = false;\r\n /* style inject SSR */\r\n \r\n\r\n \r\n var Drag$1 = normalizeComponent_1(\r\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\r\n __vue_inject_styles__,\r\n __vue_script__,\r\n __vue_scope_id__,\r\n __vue_is_functional_template__,\r\n __vue_module_identifier__,\r\n browser,\r\n undefined\r\n );\r\n\r\nvar DropMixin = /*@__PURE__*/(function (DragAwareMixin) {\r\n function DropMixin() {\r\n DragAwareMixin.call(this);\r\n this.isDrop = true;\r\n }\r\n\r\n if ( DragAwareMixin ) DropMixin.__proto__ = DragAwareMixin;\r\n DropMixin.prototype = Object.create( DragAwareMixin && DragAwareMixin.prototype );\r\n DropMixin.prototype.constructor = DropMixin;\r\n\r\n var prototypeAccessors = { compatibleMode: { configurable: true },dropIn: { configurable: true },typeAllowed: { configurable: true },dropAllowed: { configurable: true },cssClasses: { configurable: true },cssStyle: { configurable: true } };\r\n DropMixin.prototype.effectiveAcceptsType = function effectiveAcceptsType (type) {\r\n if (this.acceptsType === null)\r\n { return true; }\r\n else if (typeof (this.acceptsType) === 'string')\r\n { return this.acceptsType === type; }\r\n else if (typeof (this.acceptsType) === 'object' && Array.isArray(this.acceptsType)) {\r\n return this.acceptsType.includes(type);\r\n }\r\n else {\r\n return this.acceptsType(type);\r\n }\r\n };\r\n DropMixin.prototype.effectiveAcceptsData = function effectiveAcceptsData (data, type) {\r\n return this.acceptsData(data, type);\r\n };\r\n DropMixin.prototype.created = function created () {\r\n dnd.on(\"dragpositionchanged\", this.onDragPositionChanged);\r\n dnd.on(\"dragtopchanged\", this.onDragTopChanged);\r\n dnd.on(\"drop\", this.onDrop);\r\n };\r\n DropMixin.prototype.destroyed = function destroyed () {\r\n dnd.off(\"dragpositionchanged\", this.onDragPositionChanged);\r\n dnd.off(\"dragtopchanged\", this.onDragTopChanged);\r\n dnd.off(\"drop\", this.onDrop);\r\n };\r\n DropMixin.prototype.onDragPositionChanged = function onDragPositionChanged (event) {\r\n if (this === event.top) {\r\n this.$emit(\"dragover\", event);\r\n }\r\n };\r\n DropMixin.prototype.onDragTopChanged = function onDragTopChanged (event) {\r\n if (this === event.top) {\r\n this.$emit(\"dragenter\", event);\r\n }\r\n if (this === event.previousTop) {\r\n this.$emit(\"dragleave\", event);\r\n }\r\n };\r\n DropMixin.prototype.onDrop = function onDrop (event) {\r\n if (this.dropIn && this.compatibleMode && this.dropAllowed) {\r\n this.doDrop(event);\r\n }\r\n };\r\n DropMixin.prototype.doDrop = function doDrop (event) {\r\n this.$emit('drop', event);\r\n event.source.$emit(this.mode, event);\r\n };\r\n DropMixin.prototype.mounted = function mounted () {\r\n var el = this.$el;\r\n var comp = this;\r\n el.addEventListener('easy-dnd-move', onMouseMove);\r\n function onMouseMove(e) {\r\n dnd.mouseMove(e, comp);\r\n }\r\n };\r\n prototypeAccessors.compatibleMode.get = function () {\r\n if (this.dragInProgress) {\r\n return this.mode === 'copy' || dnd.sourceListeners.hasOwnProperty(this.mode);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n prototypeAccessors.dropIn.get = function () {\r\n if (this.dragInProgress) {\r\n return this.dragTop === this;\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n prototypeAccessors.typeAllowed.get = function () {\r\n if (this.dragInProgress) {\r\n return this.effectiveAcceptsType(this.dragType);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n prototypeAccessors.dropAllowed.get = function () {\r\n if (this.dragInProgress) {\r\n if (this.typeAllowed) {\r\n return this.compatibleMode && this.effectiveAcceptsData(this.dragData, this.dragType);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n prototypeAccessors.cssClasses.get = function () {\r\n var clazz = {\r\n 'dnd-drop': true\r\n };\r\n if (this.dropIn !== null) {\r\n clazz = Object.assign({}, clazz,\r\n {\"drop-in\": this.dropIn,\r\n \"drop-out\": !this.dropIn});\r\n }\r\n if (this.typeAllowed !== null) {\r\n clazz = Object.assign({}, clazz,\r\n {\"type-allowed\": this.typeAllowed,\r\n \"type-forbidden\": !this.typeAllowed});\r\n }\r\n if (this.dropAllowed !== null) {\r\n clazz = Object.assign({}, clazz,\r\n {\"drop-allowed\": this.dropAllowed,\r\n \"drop-forbidden\": !this.dropAllowed});\r\n }\r\n return clazz;\r\n };\r\n prototypeAccessors.cssStyle.get = function () {\r\n if (this.dropAllowed && this.dropIn) {\r\n return { cursor: this.cursor + ' !important' };\r\n }\r\n else {\r\n return { cursor: 'inherit' };\r\n }\r\n };\r\n /**\r\n * Returns true if the current drop area participates in the current drag operation.\r\n */\r\n DropMixin.prototype.candidate = function candidate (type, data, source) {\r\n return this.effectiveAcceptsType(type);\r\n };\r\n DropMixin.prototype.createDragImage = function createDragImage$1 () {\r\n var image;\r\n if (this.$refs['drag-image']) {\r\n var el = this.$refs['drag-image'];\r\n if (el.childElementCount !== 1) {\r\n image = createDragImage(el);\r\n }\r\n else {\r\n image = createDragImage(el.children.item(0));\r\n }\r\n image['__opacity'] = this.dragImageOpacity;\r\n }\r\n else {\r\n image = 'source';\r\n }\r\n return image;\r\n };\r\n\r\n Object.defineProperties( DropMixin.prototype, prototypeAccessors );\r\n\r\n return DropMixin;\r\n}(DragAwareMixin$1));\r\n__decorate([\r\n Prop({ default: function () { return function () { return true; }; }, type: [String, Array, Function] }),\r\n __metadata(\"design:type\", Object)\r\n], DropMixin.prototype, \"acceptsType\", void 0);\r\n__decorate([\r\n Prop({ default: function () { return true; }, type: Function }),\r\n __metadata(\"design:type\", Object)\r\n], DropMixin.prototype, \"acceptsData\", void 0);\r\n__decorate([\r\n Prop({ default: 'pointer' }),\r\n __metadata(\"design:type\", String)\r\n], DropMixin.prototype, \"cursor\", void 0);\r\n__decorate([\r\n Prop({ default: 'copy' }),\r\n __metadata(\"design:type\", String)\r\n], DropMixin.prototype, \"mode\", void 0);\r\n__decorate([\r\n Prop({ default: 0.7, type: Number }),\r\n __metadata(\"design:type\", Object)\r\n], DropMixin.prototype, \"dragImageOpacity\", void 0);\r\nDropMixin = __decorate([\r\n Component({ name: \"DropMixin\",}),\r\n __metadata(\"design:paramtypes\", [])\r\n], DropMixin);\r\nvar DropMixin$1 = DropMixin;\r\n\r\nvar Drop = /*@__PURE__*/(function (DropMixin) {\r\n function Drop () {\r\n DropMixin.apply(this, arguments);\r\n }\r\n\r\n if ( DropMixin ) Drop.__proto__ = DropMixin;\r\n Drop.prototype = Object.create( DropMixin && DropMixin.prototype );\r\n Drop.prototype.constructor = Drop;\r\n\r\n var prototypeAccessors = { showDragImage: { configurable: true } };\r\n\r\n prototypeAccessors.showDragImage.get = function () {\r\n return this.dragInProgress && this.typeAllowed && this.$scopedSlots['drag-image'];\r\n };\r\n\r\n Object.defineProperties( Drop.prototype, prototypeAccessors );\r\n\r\n return Drop;\r\n}(DropMixin$1));\r\n__decorate([\r\n Prop({ default: 'div', type: [String, Object, Function] }),\r\n __metadata(\"design:type\", Object)\r\n], Drop.prototype, \"tag\", void 0);\r\nDrop = __decorate([\r\n Component({ name: \"Drop\",})\r\n], Drop);\r\nvar script$1 = Drop;\r\n\r\n/* script */\r\nvar __vue_script__$1 = script$1;\r\n\r\n/* template */\r\nvar __vue_render__$1 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.tag,_vm._g(_vm._b({tag:\"component\",class:_vm.cssClasses,style:(_vm.cssStyle),scopedSlots:_vm._u([_vm._l((_vm.$scopedSlots),function(_,slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'component',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\"),_vm._v(\" \"),_vm._v(\" \"),(_vm.showDragImage)?_c('div',{ref:\"drag-image\",staticClass:\"__drag-image\"},[_vm._t(\"drag-image\",null,{\"type\":_vm.dragType,\"data\":_vm.dragData})],2):_vm._e()],2)};\r\nvar __vue_staticRenderFns__$1 = [];\r\n\r\n /* style */\r\n var __vue_inject_styles__$1 = function (inject) {\r\n if (!inject) { return }\r\n inject(\"data-v-4eedfece_0\", { source: \".drop-allowed.drop-in *{cursor:inherit!important}.drop-forbidden.drop-in,.drop-forbidden.drop-in *{cursor:no-drop!important}\", map: undefined, media: undefined })\r\n,inject(\"data-v-4eedfece_1\", { source: \".__drag-image[data-v-4eedfece]{position:fixed;top:-10000px;left:-10000px;will-change:left,top}\", map: undefined, media: undefined });\r\n\r\n };\r\n /* scoped */\r\n var __vue_scope_id__$1 = \"data-v-4eedfece\";\r\n /* module identifier */\r\n var __vue_module_identifier__$1 = undefined;\r\n /* functional template */\r\n var __vue_is_functional_template__$1 = false;\r\n /* style inject SSR */\r\n \r\n\r\n \r\n var Drop$1 = normalizeComponent_1(\r\n { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },\r\n __vue_inject_styles__$1,\r\n __vue_script__$1,\r\n __vue_scope_id__$1,\r\n __vue_is_functional_template__$1,\r\n __vue_module_identifier__$1,\r\n browser,\r\n undefined\r\n );\r\n\r\nvar DropMask = /*@__PURE__*/(function (DragAwareMixin) {\r\n function DropMask() {\r\n DragAwareMixin.apply(this, arguments);\r\n this.isDropMask = true;\r\n }\r\n\r\n if ( DragAwareMixin ) DropMask.__proto__ = DragAwareMixin;\r\n DropMask.prototype = Object.create( DragAwareMixin && DragAwareMixin.prototype );\r\n DropMask.prototype.constructor = DropMask;\r\n DropMask.prototype.mounted = function mounted () {\r\n var el = this.$el;\r\n var comp = this;\r\n el.addEventListener('easy-dnd-move', onMouseMove);\r\n function onMouseMove(e) {\r\n dnd.mouseMove(e, comp);\r\n }\r\n };\r\n DropMask.prototype.createDragImage = function createDragImage () {\r\n return 'source';\r\n };\r\n\r\n return DropMask;\r\n}(DragAwareMixin$1));\r\n__decorate([\r\n Prop({ default: 'div', type: [String, Object, Function] }),\r\n __metadata(\"design:type\", Object)\r\n], DropMask.prototype, \"tag\", void 0);\r\nDropMask = __decorate([\r\n Component({ name: \"DropMask\",})\r\n], DropMask);\r\nvar script$2 = DropMask;\r\n\r\n/* script */\r\nvar __vue_script__$2 = script$2;\r\n\r\n/* template */\r\nvar __vue_render__$2 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.tag,_vm._g(_vm._b({tag:\"component\",scopedSlots:_vm._u([_vm._l((_vm.$scopedSlots),function(_,slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'component',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\r\nvar __vue_staticRenderFns__$2 = [];\r\n\r\n /* style */\r\n var __vue_inject_styles__$2 = undefined;\r\n /* scoped */\r\n var __vue_scope_id__$2 = undefined;\r\n /* module identifier */\r\n var __vue_module_identifier__$2 = undefined;\r\n /* functional template */\r\n var __vue_is_functional_template__$2 = false;\r\n /* style inject */\r\n \r\n /* style inject SSR */\r\n \r\n\r\n \r\n var DropMask$1 = normalizeComponent_1(\r\n { render: __vue_render__$2, staticRenderFns: __vue_staticRenderFns__$2 },\r\n __vue_inject_styles__$2,\r\n __vue_script__$2,\r\n __vue_scope_id__$2,\r\n __vue_is_functional_template__$2,\r\n __vue_module_identifier__$2,\r\n undefined,\r\n undefined\r\n );\r\n\r\n/**\r\n * This class reacts to drag events emitted by the dnd object to manage a sequence of drag images and fade from one to the\r\n * other as the drag progresses.\r\n */\r\nvar DragImagesManager = /*@__PURE__*/(function (Vue) {\r\n function DragImagesManager() {\r\n Vue.call(this);\r\n this.selfTransform = null;\r\n this.clones = null;\r\n this.source = null;\r\n this.sourcePos = null;\r\n this.sourceClone = null;\r\n dnd.on('dragstart', this.onDragStart);\r\n dnd.on('dragtopchanged', this.onDragTopChanged);\r\n dnd.on('dragpositionchanged', this.onDragPositionChanged);\r\n dnd.on('dragend', this.onDragEnd);\r\n }\r\n\r\n if ( Vue ) DragImagesManager.__proto__ = Vue;\r\n DragImagesManager.prototype = Object.create( Vue && Vue.prototype );\r\n DragImagesManager.prototype.constructor = DragImagesManager;\r\n DragImagesManager.prototype.onDragStart = function onDragStart (event) {\r\n this.sourcePos = {\r\n x: event.source.$el.getBoundingClientRect().left,\r\n y: event.source.$el.getBoundingClientRect().top\r\n };\r\n this.selfTransform = \"translate(-\" + (event.position.x - this.sourcePos.x) + \"px, -\" + (event.position.y - this.sourcePos.y) + \"px)\";\r\n this.clones = new Map();\r\n this.source = event.source;\r\n };\r\n DragImagesManager.prototype.onDragEnd = function onDragEnd (event) {\r\n var this$1 = this;\r\n\r\n Vue.nextTick(function () {\r\n if (!event.success && this$1.source['goBack']) {\r\n // Restore the drag image that is active when hovering outside any drop zone :\r\n var img = this$1.switch(null);\r\n // Move it back to its original place :\r\n window.requestAnimationFrame(function () {\r\n img.style.transition = \"all 0.5s\";\r\n window.requestAnimationFrame(function () {\r\n img.style.left = this$1.sourcePos.x + \"px\";\r\n img.style.top = this$1.sourcePos.y + \"px\";\r\n img.style.transform = \"translate(0,0)\";\r\n var handler = function () {\r\n this$1.cleanUp();\r\n img.removeEventListener(\"transitionend\", handler);\r\n };\r\n img.addEventListener(\"transitionend\", handler);\r\n });\r\n });\r\n }\r\n else {\r\n this$1.cleanUp();\r\n }\r\n });\r\n };\r\n DragImagesManager.prototype.cleanUp = function cleanUp () {\r\n this.clones.forEach(function (clone) {\r\n clone.remove();\r\n });\r\n if (this.sourceClone !== null) {\r\n this.sourceClone.remove();\r\n }\r\n this.selfTransform = null;\r\n this.clones = null;\r\n this.source = null;\r\n this.sourceClone = null;\r\n this.sourcePos = null;\r\n };\r\n DragImagesManager.prototype.onDragTopChanged = function onDragTopChanged (event) {\r\n this.switch(event.top);\r\n };\r\n DragImagesManager.prototype.switch = function switch$1 (top) {\r\n this.clones.forEach(function (clone) {\r\n clone.style.opacity = \"0\";\r\n });\r\n if (this.sourceClone) {\r\n this.sourceClone.style.opacity = \"0\";\r\n }\r\n var activeClone;\r\n if (top === null) {\r\n activeClone = this.getSourceClone();\r\n }\r\n else {\r\n if (!this.clones.has(top)) {\r\n var clone = top['createDragImage'](this.selfTransform);\r\n if (clone === 'source') {\r\n clone = this.getSourceClone();\r\n }\r\n else if (clone !== null) {\r\n clone.style.opacity = '0';\r\n document.body.append(clone);\r\n }\r\n this.clones.set(top, clone);\r\n }\r\n activeClone = this.clones.get(top);\r\n }\r\n if (activeClone !== null) {\r\n activeClone.offsetWidth; // Forces broswer reflow\r\n activeClone.style.opacity = activeClone['__opacity'];\r\n activeClone.style.visibility = 'visible';\r\n }\r\n return activeClone;\r\n };\r\n DragImagesManager.prototype.getSourceClone = function getSourceClone () {\r\n if (this.sourceClone === null) {\r\n this.sourceClone = this.source['createDragImage'](this.selfTransform);\r\n this.sourceClone.style.opacity = '0';\r\n document.body.append(this.sourceClone);\r\n }\r\n return this.sourceClone;\r\n };\r\n DragImagesManager.prototype.onDragPositionChanged = function onDragPositionChanged (event) {\r\n this.clones.forEach(function (clone) {\r\n clone.style.left = dnd.position.x + \"px\";\r\n clone.style.top = dnd.position.y + \"px\";\r\n });\r\n if (this.sourceClone) {\r\n this.sourceClone.style.left = dnd.position.x + \"px\";\r\n this.sourceClone.style.top = dnd.position.y + \"px\";\r\n }\r\n };\r\n\r\n return DragImagesManager;\r\n}(Vue));\r\nDragImagesManager = __decorate([\r\n Component({ name: \"DragImagesManager\",}) // Necessary to set proper \"this\" context in event listeners.\r\n ,\r\n __metadata(\"design:paramtypes\", [])\r\n], DragImagesManager);\r\nnew DragImagesManager();\r\n\r\nvar DragFeedback = /*@__PURE__*/(function (Vue) {\r\n function DragFeedback () {\r\n Vue.apply(this, arguments);\r\n }if ( Vue ) DragFeedback.__proto__ = Vue;\r\n DragFeedback.prototype = Object.create( Vue && Vue.prototype );\r\n DragFeedback.prototype.constructor = DragFeedback;\r\n\r\n \r\n\r\n return DragFeedback;\r\n}(Vue));\r\nDragFeedback = __decorate([\r\n Component({ name: \"DragFeedback\",})\r\n], DragFeedback);\r\nvar script$3 = DragFeedback;\r\n\r\n/* script */\r\nvar __vue_script__$3 = script$3;\r\n\r\n/* template */\r\nvar __vue_render__$3 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"DragFeedback\"},[_vm._t(\"default\")],2)};\r\nvar __vue_staticRenderFns__$3 = [];\r\n\r\n /* style */\r\n var __vue_inject_styles__$3 = undefined;\r\n /* scoped */\r\n var __vue_scope_id__$3 = \"data-v-0589f3cb\";\r\n /* module identifier */\r\n var __vue_module_identifier__$3 = undefined;\r\n /* functional template */\r\n var __vue_is_functional_template__$3 = false;\r\n /* style inject */\r\n \r\n /* style inject SSR */\r\n \r\n\r\n \r\n var DragFeedback$1 = normalizeComponent_1(\r\n { render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 },\r\n __vue_inject_styles__$3,\r\n __vue_script__$3,\r\n __vue_scope_id__$3,\r\n __vue_is_functional_template__$3,\r\n __vue_module_identifier__$3,\r\n undefined,\r\n undefined\r\n );\r\n\r\nvar Grid = function Grid(collection, upToIndex, row, fromIndex) {\r\n this.magnets = [];\r\n var index = 0;\r\n for (var i = 0, list = collection; i < list.length; i += 1) {\r\n var child = list[i];\r\n\r\n if (index > upToIndex)\r\n { break; }\r\n var rect = child.getBoundingClientRect();\r\n var hasNestedDrop = child.classList.contains(\"dnd-drop\") || child.getElementsByClassName(\"dnd-drop\").length > 0;\r\n var horizontal = null;\r\n if (hasNestedDrop) {\r\n if (row === 'auto') {\r\n // Auto mode not supported for now. Row or column must be defined explicitly if there are nested drop lists.\r\n throw new Error(\"Easy-DnD error : a drop list is missing one of these attributes : 'row' or 'column'.\");\r\n }\r\n else {\r\n horizontal = row === 'row';\r\n }\r\n }\r\n if (fromIndex === null) {\r\n // Inserting mode.\r\n this.magnets.push(hasNestedDrop ? this.before(rect, horizontal) : this.center(rect));\r\n }\r\n else {\r\n // Reordering mode.\r\n this.magnets.push(hasNestedDrop ? (fromIndex < index ? this.after : this.before)(rect, horizontal) : this.center(rect));\r\n }\r\n // Debug : show magnets :\r\n //document.body.insertAdjacentHTML(\"beforeend\", \"<div style='background-color: red; position: fixed; width: 1px; height: 1px; top:\" + this.magnets[index].y + \"px; left:\" + this.magnets[index].x + \"px;' ></div>\")\r\n index++;\r\n }\r\n};\r\n/**\r\n * Returns the center of the rectangle.\r\n */\r\nGrid.prototype.center = function center (rect) {\r\n return {\r\n x: rect.left + rect.width / 2,\r\n y: rect.top + rect.height / 2\r\n };\r\n};\r\n/**\r\n * When horizontal is true / false, returns middle of the left / top side of the rectangle.\r\n */\r\nGrid.prototype.before = function before (rect, horizontal) {\r\n return horizontal ? {\r\n x: rect.left,\r\n y: rect.top + rect.height / 2\r\n } : {\r\n x: rect.left + rect.width / 2,\r\n y: rect.top\r\n };\r\n};\r\n/**\r\n * When horizontal is true / false, returns middle of the right / bottom side of the rectangle.\r\n */\r\nGrid.prototype.after = function after (rect, horizontal) {\r\n return horizontal ? {\r\n x: rect.left + rect.width,\r\n y: rect.top + rect.height / 2\r\n } : {\r\n x: rect.left + rect.width / 2,\r\n y: rect.top + rect.height\r\n };\r\n};\r\nGrid.prototype.closestIndex = function closestIndex (position) {\r\n var minDist = 999999;\r\n var index = -1;\r\n for (var i = 0; i < this.magnets.length; i++) {\r\n var magnet = this.magnets[i];\r\n var dist = Math.sqrt(Math.pow(magnet.x - position.x, 2) + Math.pow(magnet.y - position.y, 2));\r\n if (dist < minDist) {\r\n minDist = dist;\r\n index = i;\r\n }\r\n }\r\n return index;\r\n};\r\n\r\nvar DnDEvent = function DnDEvent () {};\r\nvar ReorderEvent = function ReorderEvent(from, to) {\r\n this.from = from;\r\n this.to = to;\r\n};\r\nReorderEvent.prototype.apply = function apply (array) {\r\n var tmp = array[this.from];\r\n array.splice(this.from, 1);\r\n array.splice(this.to, 0, tmp);\r\n};\r\nvar InsertEvent = function InsertEvent(type, data, index) {\r\n this.type = type;\r\n this.data = data;\r\n this.index = index;\r\n};\r\n\r\nvar DropList = /*@__PURE__*/(function (DropMixin) {\r\n function DropList() {\r\n DropMixin.apply(this, arguments);\r\n this.grid = null;\r\n this.forbiddenKeys = [];\r\n this.feedbackKey = null;\r\n this.fromIndex = null;\r\n }\r\n\r\n if ( DropMixin ) DropList.__proto__ = DropMixin;\r\n DropList.prototype = Object.create( DropMixin && DropMixin.prototype );\r\n DropList.prototype.constructor = DropList;\r\n\r\n var prototypeAccessors = { rootTag: { configurable: true },rootProps: { configurable: true },rootListeners: { configurable: true },direction: { configurable: true },reordering: { configurable: true },closestIndex: { configurable: true },dropAllowed: { configurable: true },itemsBeforeFeedback: { configurable: true },itemsAfterFeedback: { configurable: true },itemsBeforeReorderingFeedback: { configurable: true },itemsAfterReorderingFeedback: { configurable: true },reorderedItems: { configurable: true },clazz: { configurable: true },style: { configurable: true },showDragFeedback: { configurable: true },showInsertingDragImage: { configurable: true },showReorderingDragImage: { configurable: true },hasReorderingFeedback: { configurable: true } };\r\n prototypeAccessors.rootTag.get = function () {\r\n if (this.noAnimations) {\r\n return this.tag ? this.tag : 'div';\r\n }\r\n else {\r\n return \"transition-group\";\r\n }\r\n };\r\n prototypeAccessors.rootProps.get = function () {\r\n if (this.noAnimations) {\r\n return this.$attrs;\r\n }\r\n else {\r\n return {\r\n tag: this.tag,\r\n duration: { enter: 0, leave: 0 },\r\n css: false\r\n };\r\n }\r\n };\r\n prototypeAccessors.rootListeners.get = function () {\r\n if (this.noAnimations) {\r\n return this.$listeners;\r\n }\r\n else {\r\n return {};\r\n }\r\n };\r\n DropList.prototype.created = function created () {\r\n dnd.on(\"dragstart\", this.onDragStart);\r\n dnd.on(\"dragend\", this.onDragEnd);\r\n };\r\n prototypeAccessors.direction.get = function () {\r\n if (this.row)\r\n { return 'row'; }\r\n if (this.column)\r\n { return 'column'; }\r\n return 'auto';\r\n };\r\n DropList.prototype.destroyed = function destroyed () {\r\n dnd.off(\"dragstart\", this.onDragStart);\r\n dnd.off(\"dragend\", this.onDragEnd);\r\n };\r\n DropList.prototype.onDragStart = function onDragStart (event) {\r\n var this$1 = this;\r\n\r\n if (this.candidate(dnd.type, dnd.data, dnd.source)) {\r\n if (this.reordering) {\r\n this.fromIndex = Array.prototype.indexOf.call(event.source.$el.parentElement.children, event.source.$el);\r\n this.grid = this.computeReorderingGrid();\r\n }\r\n else {\r\n this.$nextTick(function () {\r\n // Presence of feedback node in the DOM and of keys in the virtual DOM required => delayed until what\r\n // depends on drag data has been processed.\r\n this$1.grid = this$1.computeInsertingGrid();\r\n this$1.feedbackKey = this$1.computeFeedbackKey();\r\n this$1.forbiddenKeys = this$1.computeForbiddenKeys();\r\n });\r\n }\r\n }\r\n };\r\n DropList.prototype.onDragEnd = function onDragEnd () {\r\n this.fromIndex = null;\r\n this.feedbackKey = null;\r\n this.forbiddenKeys = null;\r\n this.grid = null;\r\n };\r\n prototypeAccessors.reordering.get = function () {\r\n if (dnd.inProgress) {\r\n return dnd.source.$el.parentElement === this.$el && this.$listeners.hasOwnProperty('reorder');\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n prototypeAccessors.closestIndex.get = function () {\r\n if (this.grid) {\r\n return this.grid.closestIndex(dnd.position);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n prototypeAccessors.dropAllowed.get = function () {\r\n if (this.dragInProgress) {\r\n if (this.reordering) {\r\n return this.items.length > 1;\r\n }\r\n else {\r\n var superDropAllowed = DropMixin['options'].computed.dropAllowed.get.call(this);\r\n if (!superDropAllowed) {\r\n return false;\r\n }\r\n else {\r\n if (this.forbiddenKeys !== null && this.feedbackKey !== null) {\r\n return !this.forbiddenKeys.includes(this.feedbackKey);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n prototypeAccessors.itemsBeforeFeedback.get = function () {\r\n if (this.closestIndex === 0) {\r\n return [];\r\n }\r\n else {\r\n return this.items.slice(0, this.closestIndex);\r\n }\r\n };\r\n prototypeAccessors.itemsAfterFeedback.get = function () {\r\n if (this.closestIndex === this.items.length) {\r\n return [];\r\n }\r\n else {\r\n return this.items.slice(this.closestIndex);\r\n }\r\n };\r\n prototypeAccessors.itemsBeforeReorderingFeedback.get = function () {\r\n if (this.closestIndex <= this.fromIndex) {\r\n return this.items.slice(0, this.closestIndex);\r\n }\r\n else {\r\n return this.items.slice(0, this.closestIndex + 1);\r\n }\r\n };\r\n prototypeAccessors.itemsAfterReorderingFeedback.get = function () {\r\n if (this.closestIndex <= this.fromIndex) {\r\n return this.items.slice(this.closestIndex);\r\n }\r\n else {\r\n return this.items.slice(this.closestIndex + 1);\r\n }\r\n };\r\n prototypeAccessors.reorderedItems.get = function () {\r\n var toIndex = this.closestIndex;\r\n var reordered = [].concat( this.items );\r\n var temp = reordered[this.fromIndex];\r\n reordered.splice(this.fromIndex, 1);\r\n reordered.splice(toIndex, 0, temp);\r\n return reordered;\r\n };\r\n prototypeAccessors.clazz.get = function () {\r\n return Object.assign({}, {'drop-list': true,\r\n 'reordering': this.reordering === true,\r\n 'inserting': this.reordering === false},\r\n (this.reordering === false ? this.cssClasses : { 'dnd-drop': true }));\r\n };\r\n prototypeAccessors.style.get = function () {\r\n return Object.assign({}, (this.reordering === false ? this.cssStyle : {}));\r\n };\r\n prototypeAccessors.showDragFeedback.get = function () {\r\n return this.dragInProgress && this.typeAllowed && !this.reordering;\r\n };\r\n prototypeAccessors.showInsertingDragImage.get = function () {\r\n return this.dragInProgress && this.typeAllowed && !this.reordering && this.$scopedSlots.hasOwnProperty(\"drag-image\");\r\n };\r\n prototypeAccessors.showReorderingDragImage.get = function () {\r\n return this.dragInProgress && this.reordering && this.$scopedSlots.hasOwnProperty(\"reordering-drag-image\");\r\n };\r\n DropList.prototype.doDrop = function doDrop (event) {\r\n if (this.reordering) {\r\n if (this.fromIndex !== this.closestIndex) {\r\n this.$emit('reorder', new ReorderEvent(this.fromIndex, this.closestIndex));\r\n }\r\n }\r\n else {\r\n DropMixin['options'].methods.doDrop.call(this, event);\r\n this.$emit('insert', new InsertEvent(event.type, event.data, this.closestIndex));\r\n }\r\n };\r\n DropList.prototype.candidate = function candidate (type, data, source) {\r\n var i = arguments.length, argsArray = Array(i);\r\n while ( i-- ) argsArray[i] = arguments[i];\r\n var ref;\r\n\r\n var superCandidate = (ref = DropMixin['options'].methods.candidate).call.apply(ref, [ this ].concat( argsArray ));\r\n return (superCandidate && (this.$listeners.hasOwnProperty(\"insert\") || this.$listeners.hasOwnProperty(\"drop\"))) || this.reordering;\r\n };\r\n DropList.prototype.computeForbiddenKeys = function computeForbiddenKeys () {\r\n var vnodes = this.noAnimations ? [] : this.$children[0].$vnode.context.$children[0].$slots.default;\r\n return vnodes\r\n .map(function (vn) { return vn.key; })\r\n .filter(function (k) { return k !== undefined && k !== 'drag-image' && k !== 'drag-feedback'; });\r\n };\r\n DropList.prototype.computeFeedbackKey = function computeFeedbackKey () {\r\n return this.$refs['feedback']['$slots']['default'][0]['key'];\r\n };\r\n prototypeAccessors.hasReorderingFeedback.get = function () {\r\n return this.$scopedSlots.hasOwnProperty(\"reordering-feedback\");\r\n };\r\n DropList.prototype.computeInsertingGrid = function computeInsertingGrid () {\r\n var feedbackParent = this.$refs['feedback']['$el'];\r\n if(feedbackParent.children.length == 0){\r\n console.warn(\"Feedback template has no children\",$feedbackParent,this);\r\n }\r\n var feedback = feedbackParent.children[0];\r\n var clone = feedback.cloneNode(true);\r\n var tg = this.$el;\r\n if (tg.children.length > this.items.length) {\r\n tg.insertBefore(clone, tg.children[this.items.length]);\r\n }\r\n else {\r\n tg.append(clone);\r\n }\r\n var grid = new Grid(tg.children, this.items.length, this.direction, null);\r\n clone.remove();\r\n return grid;\r\n };\r\n DropList.prototype.computeReorderingGrid = function computeReorderingGrid () {\r\n var tg = this.$el;\r\n return new Grid(tg.children, this.items.length - 1, this.direction, this.fromIndex);\r\n };\r\n DropList.prototype.createDragImage = function createDragImage$1 () {\r\n var image;\r\n if (this.$refs['drag-image']) {\r\n var el = this.$refs['drag-image'];\r\n var model;\r\n if (el.childElementCount !== 1) {\r\n model = el;\r\n }\r\n else {\r\n model = el.children.item(0);\r\n }\r\n var clone = model.cloneNode(true);\r\n var tg = this.$el;\r\n tg.append(clone);\r\n image = createDragImage(clone);\r\n clone.remove();\r\n image['__opacity'] = this.dragImageOpacity;\r\n }\r\n else {\r\n image = 'source';\r\n }\r\n return image;\r\n };\r\n\r\n Object.defineProperties( DropList.prototype, prototypeAccessors );\r\n\r\n return DropList;\r\n}(DropMixin$1));\r\n__decorate([\r\n Prop({ default: 'div', type: [String, Object, Function] }),\r\n __metadata(\"design:type\", Object)\r\n], DropList.prototype, \"tag\", void 0);\r\n__decorate([\r\n Prop(),\r\n __metadata(\"design:type\", Array)\r\n], DropList.prototype, \"items\", void 0);\r\n__decorate([\r\n Prop({ default: null }),\r\n __metadata(\"design:type\", Boolean)\r\n], DropList.prototype, \"row\", void 0);\r\n__decorate([\r\n Prop({ default: null, type: Boolean }),\r\n __metadata(\"design:type\", Boolean)\r\n], DropList.prototype, \"column\", void 0);\r\n__decorate([\r\n Prop({ default: false, type: Boolean }),\r\n __metadata(\"design:type\", Boolean)\r\n], DropList.prototype, \"noAnimations\", void 0);\r\nDropList = __decorate([\r\n Component({\r\n components: { DragFeedback: DragFeedback$1 },\r\n name: \"DropList\",\r\n })\r\n], DropList);\r\nvar script$4 = DropList;\r\n\r\n/* script */\r\nvar __vue_script__$4 = script$4;\r\n\r\n/* template */\r\nvar __vue_render__$4 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.rootTag,_vm._g(_vm._b({tag:\"component\",class:_vm.clazz,style:(_vm.style)},'component',_vm.rootProps,false),_vm.rootListeners),[(_vm.dropIn && _vm.dropAllowed)?[(_vm.reordering)?[(_vm.hasReorderingFeedback)?[_vm._l((_vm.itemsBeforeReorderingFeedback),function(item){return _vm._t(\"item\",null,{\"item\":item})}),_vm._v(\" \"),_vm._t(\"reordering-feedback\",null,{\"item\":_vm.items[_vm.fromIndex]}),_vm._v(\" \"),_vm._l((_vm.itemsAfterReorderingFeedback),function(item){return _vm._t(\"item\",null,{\"item\":item})})]:[_vm._l((_vm.reorderedItems),function(item,index){return _vm._t(\"item\",null,{\"item\":item,\"reorder\":index === _vm.closestIndex})})]]:[_vm._l((_vm.itemsBeforeFeedback),function(item){return _vm._t(\"item\",null,{\"item\":item,\"reorder\":false})}),_vm._v(\" \"),_vm._t(\"feedback\",null,{\"data\":_vm.dragData,\"type\":_vm.dragType}),_vm._v(\" \"),_vm._l((_vm.itemsAfterFeedback),function(item){return _vm._t(\"item\",null,{\"item\":item,\"reorder\":false})})]]:[_vm._l((_vm.items),function(item){return _vm._t(\"item\",null,{\"item\":item,\"reorder\":false})})],_vm._v(\" \"),(_vm.showDragFeedback)?_c('drag-feedback',{key:\"drag-feedback\",ref:\"feedback\",staticClass:\"__feedback\"},[_vm._t(\"feedback\",null,{\"data\":_vm.dragData,\"type\":_vm.dragType})],2):_vm._e(),_vm._v(\" \"),(_vm.showInsertingDragImage)?_c('div',{key:\"inserting-drag-image\",ref:\"drag-image\",staticClass:\"__drag-image\"},[_vm._t(\"drag-image\",null,{\"type\":_vm.dragType,\"data\":_vm.dragData})],2):_vm._e(),_vm._v(\" \"),(_vm.showReorderingDragImage)?_c('div',{key:\"reordering-drag-image\",ref:\"drag-image\",staticClass:\"__drag-image\"},[_vm._t(\"reordering-drag-image\",null,{\"item\":_vm.items[_vm.fromIndex]})],2):_vm._e(),_vm._v(\" \"),_c('div',{key:\"drop-list-content\"},[_vm._t(\"default\")],2)],2)};\r\nvar __vue_staticRenderFns__$4 = [];\r\n\r\n /* style */\r\n var __vue_inject_styles__$4 = function (inject) {\r\n if (!inject) { return }\r\n inject(\"data-v-56f28757_0\", { source: \".drop-list[data-v-56f28757]>*{transition:transform .2s}.__feedback[data-v-56f28757]{display:none}.__drag-image[data-v-56f28757]{position:fixed;top:-10000px;left:-10000px;will-change:left,top}\", map: undefined, media: undefined })\r\n,inject(\"data-v-56f28757_1\", { source: \".drop-allowed.drop-in *{cursor:inherit!important}.drop-forbidden.drop-in,.drop-forbidden.drop-in *{cursor:no-drop!important}\", map: undefined, media: undefined });\r\n\r\n };\r\n /* scoped */\r\n var __vue_scope_id__$4 = \"data-v-56f28757\";\r\n /* module identifier */\r\n var __vue_module_identifier__$4 = undefined;\r\n /* functional template */\r\n var __vue_is_functional_template__$4 = false;\r\n /* style inject SSR */\r\n \r\n\r\n \r\n var DropList$1 = normalizeComponent_1(\r\n { render: __vue_render__$4, staticRenderFns: __vue_staticRenderFns__$4 },\r\n __vue_inject_styles__$4,\r\n __vue_script__$4,\r\n __vue_scope_id__$4,\r\n __vue_is_functional_template__$4,\r\n __vue_module_identifier__$4,\r\n browser,\r\n undefined\r\n );\r\n\r\n// minor modifications to handle minification in moodle - the reflected property name does not survive minification. Do not want all our components to be known as 'b'\r\n\r\nexport { DnDEvent, Drag$1 as Drag, DragAwareMixin$1 as DragAwareMixin, DragImagesManager, DragMixin$1 as DragMixin, Drop$1 as Drop, DropList$1 as DropList, DropMask$1 as DropMask, DropMixin$1 as DropMixin, InsertEvent, ReorderEvent, createDragImage, dnd };\r\n"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","metadataKey","metadataValue","metadata","DnD","inProgress","type","data","source","top","position","eventBus","Vue","sourceListeners","success","prototype","startDrag","event","x","y","$listeners","emit","previousTop","stopDrag","this","mouseMove","comp","prevent","stopPropagation","detail","native","$emit","assign","on","callback","$on","off","$off","dnd","observable","DragAwareMixin","apply","__proto__","create","constructor","prototypeAccessors","dragInProgress","configurable","dragData","dragType","dragPosition","dragSource","dragTop","get","defineProperties","DragAwareMixin$1","name","createDragImage","el","clone","cloneNode","copyStyle","vSrcElements","getElementsByTagName","vDstElements","deepClone","style","margin","transition","src","destination","computedStyle","window","getComputedStyle","Array","from","forEach","setProperty","getPropertyValue","getPropertyPriority","pointerEvents","DragMixin","isDrag","mouseIn","dragIn","cssClasses","currentDropMode","created","reEmit","eventName","this$1","ev","mounted","initialUserSelect","$el","dragStarted","downEvent","startPosition","onMouseEnter","onMouseLeave","noop","e","preventDefault","onMouseDown","disabled","document","body","userSelect","documentElement","mouse","clientX","clientY","touch","touches","addEventListener","onMouseMove","passive","onEasyDnDMove","onMouseUp","elementFromPoint","dist","Math","sqrt","pow","delta","classList","add","custom","CustomEvent","bubbles","cancelable","dispatchEvent","setTimeout","remove","removeEventListener","handle","querySelectorAll","isNodeList","element","selfTransform","image","$scopedSlots","$refs","childElementCount","children","item","transform","dragImageOpacity","default","String","Number","Boolean","required","DragMixin$1","Drag","Function","script","HEAD","normalizeComponent_1","template","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","options","render","staticRenderFns","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","concat","isOldIE","navigator","test","userAgent","toLowerCase","styles","browser","id","css","group","media","ids","Set","has","code","map","sources","btoa","unescape","encodeURIComponent","JSON","stringify","createElement","setAttribute","undefined","head","appendChild","push","styleSheet","cssText","filter","join","index","size","textNode","createTextNode","nodes","childNodes","removeChild","insertBefore","addStyle","Drag$1","_vm","_h","$createElement","_c","_self","tag","_g","_b","class","cursor","scopedSlots","_u","_l","_","slot","fn","scope","_t","$attrs","_v","ref","staticClass","inject","DropMixin","isDrop","compatibleMode","dropIn","typeAllowed","dropAllowed","cssStyle","effectiveAcceptsType","acceptsType","_typeof","isArray","includes","effectiveAcceptsData","acceptsData","onDragPositionChanged","onDragTopChanged","onDrop","destroyed","doDrop","mode","hasOwnProperty","clazz","candidate","DropMixin$1","Drop","showDragImage","Drop$1","_e","DropMask","isDropMask","DropMask$1","DragImagesManager","clones","sourcePos","sourceClone","onDragStart","onDragEnd","getBoundingClientRect","left","Map","nextTick","img","switch","requestAnimationFrame","handler","cleanUp","activeClone","opacity","getSourceClone","append","set","offsetWidth","visibility","DragFeedback","DragFeedback$1","Grid","collection","upToIndex","row","fromIndex","magnets","list","child","rect","hasNestedDrop","contains","getElementsByClassName","horizontal","Error","before","center","after","width","height","closestIndex","minDist","magnet","ReorderEvent","to","array","tmp","splice","InsertEvent","DropList","grid","forbiddenKeys","feedbackKey","rootTag","rootProps","rootListeners","direction","reordering","itemsBeforeFeedback","itemsAfterFeedback","itemsBeforeReorderingFeedback","itemsAfterReorderingFeedback","reorderedItems","showDragFeedback","showInsertingDragImage","showReorderingDragImage","hasReorderingFeedback","noAnimations","duration","enter","leave","column","indexOf","parentElement","computeReorderingGrid","$nextTick","computeInsertingGrid","computeFeedbackKey","computeForbiddenKeys","items","computed","slice","toIndex","reordered","temp","methods","argsArray","$children","$slots","vn","k","feedbackParent","console","warn","$feedbackParent","tg","DropList$1","components"],"mappings":"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"} |