{"version":3,"sources":["webpack:///./node_modules/@fnando/cnpj/src/cnpj.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/sortablejs/Sortable.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/@fnando/cpf/src/cpf.js","webpack:///./node_modules/v-money/dist/v-money.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/es6.string.link.js"],"names":["BLACKLIST","STRICT_STRIP_REGEX","LOOSE_STRIP_REGEX","verifierDigit","numbers","index","reverse","split","reduce","buffer","number","parseInt","concat","sum","mod","strip","cnpj","isStrict","regex","toString","replace","isValid","stripped","length","includes","substr","fails","module","exports","method","arg","call","$export","defined","quot","createHTML","string","tag","attribute","value","S","String","p1","NAME","exec","O","P","F","test","toLowerCase","anObject","sameValue","regExpExec","SEARCH","$search","maybeCallNative","regexp","this","fn","undefined","RegExp","res","done","rx","previousLastIndex","lastIndex","result","factory","window","document","Error","dragEl","parentEl","ghostEl","cloneEl","rootEl","nextEl","lastDownEl","scrollEl","scrollParentEl","scrollCustomFn","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","activeGroup","putSortable","pointerElemChangedInterval","lastPointerElemX","lastPointerElemY","tapEvt","touchEvt","moved","lastTarget","lastDirection","lastMode","targetMoveDistance","ghostRelativeParent","realDragElRect","autoScrolls","scrolling","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","R_SPACE","expando","Date","getTime","win","setTimeout","$","jQuery","Zepto","Polymer","captureMode","capture","passive","IE11OrLess","navigator","userAgent","match","Edge","FireFox","Safari","IOS","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","el","style","cssText","pointerEvents","_silent","_alignedSilent","abs","Math","min","max","savedInputChecked","_detectDirection","options","elCSS","_css","elWidth","width","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","_getChild","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","_getRect","secondChildWidth","display","flexDirection","gridTemplateColumns","float","touchingSideChild2","clear","_detectNearestEmptySortable","x","y","i","_lastChild","rect","threshold","emptyInsertThreshold","insideHorizontally","left","right","insideVertically","top","bottom","_isClientInRowColumn","axis","targetRect","targetS1Opp","targetS2Opp","mouseOnOppAxis","_isElInRowColumn","el1","el2","el1Rect","el2Rect","el1S1Opp","el1S2Opp","el1OppLength","height","el2S1Opp","el2S2Opp","el2OppLength","_getParentAutoScrollElement","includeSelf","getBoundingClientRect","_getWindowScrollingElement","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","body","parentNode","documentElement","scrollingElement","_scrollBy","scrollLeft","scrollTop","_autoScroll","_throttle","evt","isFallback","scroll","_this","sens","scrollSensitivity","speed","scrollSpeed","clientX","clientY","winScroller","scrollThisInstance","_clearAutoScrolls","scrollFn","layersOut","currentParent","css","vx","vy","canScrollX","canScrollY","scrollPosX","scrollPosY","clearInterval","pid","setInterval","layer","Sortable","active","_emulateDragOver","_onTouchMove","scrollOffsetY","scrollOffsetX","bind","bubbleScroll","forEach","autoScroll","_prepareGroup","toFn","pull","to","from","sameGroup","group","name","otherGroup","join","indexOf","originalGroup","checkPull","checkPut","put","revertClone","_checkAlignment","_computeIsAligned","_hideGhostForTarget","_unhideGhostForTarget","addEventListener","preventDefault","stopPropagation","stopImmediatePropagation","_throttleTimeout","nearestEmptyInsertDetectEvent","touches","nearest","event","target","_onDragOver","nodeType","_extend","defaults","sort","disabled","store","handle","draggable","nodeName","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","filter","preventOnFilter","animation","easing","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","charAt","nativeDraggable","_on","_onTapStart","push","get","_closest","selector","ctx","includeCTX","_matches","_getParentOrHost","host","_globalDragOver","dropEffect","cancelable","_off","removeEventListener","_toggleClass","state","classList","className","prop","val","defaultView","getComputedStyle","currentStyle","_matrix","appliedTransforms","transform","DOMMatrix","WebKitCSSMatrix","CSSMatrix","_find","tagName","iterator","list","getElementsByTagName","n","_dispatchEvent","sortable","targetEl","toEl","fromEl","startIndex","startDraggableIndex","originalEvt","onName","toUpperCase","CustomEvent","createEvent","initEvent","bubbles","item","clone","originalEvent","pullMode","lastPutMode","dispatchEvent","_onMove","dragRect","willInsertAfter","retVal","onMoveFn","onMove","dragged","draggedRect","related","relatedRect","_disableDraggable","_unsilent","childNum","currentChild","children","last","lastElementChild","previousElementSibling","_ghostIsLast","elRect","mouseOnAxis","targetS2","spacer","_getSwapDirection","isLastTarget","targetLength","targetS1","invert","_getInsertDirection","dragElIndex","_index","targetIndex","_generateId","str","src","href","charCodeAt","substring","matches","msMatchesSelector","webkitMatchesSelector","_","callback","ms","args","arguments","apply","_cancelThrottle","clearTimeout","dst","key","hasOwnProperty","_clone","dom","cloneNode","_saveInputCheckedState","root","inputs","idx","checked","_nextTick","_cancelNextTick","id","adjustForTransform","container","adjustForFixed","innerHeight","innerWidth","containerRect","matrix","scaleX","a","scaleY","d","_isScrolledPast","side","parent","elSide","visible","parentSide","_getRelativeScrollOffset","offsetLeft","offsetTop","prototype","constructor","elementFromPoint","sortableMouseAligned","_getDirection","type","touch","originalTarget","shadowRoot","path","composedPath","button","isContentEditable","some","criteria","trim","_prepareDragStart","_handleAutoScroll","fallback","ogElemScroller","newElem","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","transition","_disableDelayedDragEvents","_triggerDragStart","_onDrop","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","e","floor","pointerType","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","_appendGhost","_nulling","forAutoScroll","inserted","relativeScrollOffset","dx","dy","translate3d","ghostRelativeParentRect","appendChild","_hideClone","_cloneId","insertBefore","_loopId","effectAllowed","_dragStartId","revert","activeSortable","isOwner","canSort","contains","animated","completed","elLastChild","_showClone","changed","targetBeforeFirstSwap","aligned","differentLevel","side1","scrolledPastTop","scrollBefore","nextElementSibling","after","moveVector","insertion","_animate","prevRect","currentRect","_repaint","offsetWidth","_offMoveEvents","_offUpEvents","removeChild","save","handleEvent","toArray","order","getAttribute","items","set","closest","option","destroy","Array","querySelectorAll","removeAttribute","splice","cloneHidden","utils","on","off","find","is","extend","throttle","toggleClass","nextTick","cancelNextTick","detectDirection","getChild","create","version","aFunction","toObject","$sort","comparefn","map","modulus","multiplied","cpf","t","r","l","m","c","o","Object","defineProperty","configurable","enumerable","__esModule","default","p","s","prefix","suffix","thousands","decimal","precision","u","toLocaleUpperCase","oninput","selectionEnd","b","onfocus","toFixed","f","parseFloat","pow","setSelectionRange","activeElement","keys","directive","component","Vue","use","props","required","Number","masked","Boolean","directives","money","data","formattedValue","watch","immediate","handler","$props","methods","change","$emit","render","staticRenderFns","_scopeId","computed","esModule","$createElement","_self","_c","rawName","expression","staticClass","attrs","domProps","url"],"mappings":"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","file":"js/chunk-8b42f36c.dca00cd4.js","sourcesContent":["// Blacklist common values.\nconst BLACKLIST = [\n \"00000000000000\",\n \"11111111111111\",\n \"22222222222222\",\n \"33333333333333\",\n \"44444444444444\",\n \"55555555555555\",\n \"66666666666666\",\n \"77777777777777\",\n \"88888888888888\",\n \"99999999999999\"\n];\n\nconst STRICT_STRIP_REGEX = /[-\\/.]/g;\nconst LOOSE_STRIP_REGEX = /[^\\d]/g;\n\n/**\n * Compute the Verifier Digit (or \"Dígito Verificador (DV)\" in portuguese) for CNPJ.\n *\n * You can learn more about this on [wikipedia (pt-br)](https://pt.wikipedia.org/wiki/D%C3%ADgito_verificador)\n *\n * @export\n * @param {string} numbers the CNPJ string with only numbers.\n * @returns {number} the verifier digit.\n */\nexport function verifierDigit(numbers) {\n let index = 2;\n const reverse = numbers.split(\"\").reduce(function(buffer, number) {\n return [parseInt(number, 10)].concat(buffer);\n }, []);\n\n const sum = reverse.reduce(function(buffer, number) {\n buffer += number * index;\n index = (index === 9 ? 2 : index + 1);\n return buffer;\n }, 0);\n\n const mod = sum % 11;\n return (mod < 2 ? 0 : 11 - mod);\n}\n\n/**\n * Transform the input into a pretty CNPJ format.\n *\n * Example:\n * ```\n * format('54550752000155');\n * // Result: '54.550.752/0001-55'\n * ```\n *\n * @export\n * @param {string} cnpj the CNPJ.\n * @returns {string} the formatted CNPJ.\n */\nexport function format(cnpj) {\n return strip(cnpj).replace(/^(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})$/, \"$1.$2.$3/$4-$5\");\n}\n\n\n/**\n * Remove some characters from the input.\n *\n * Example:\n * ```\n * strip('54550[752#0001..$55'); // Result: '54550752000155'\n * strip('54550[752#0001..$55', true); // Result: '54550[752#0001..$55' - Atention!\n * ```\n *\n * @export\n * @param {string} cnpj the CNPJ text.\n * @param {boolean} [isStrict] if `true`, it will remove only `.` and `-` characters.\n * Otherwise, it will remove all non-digit (`[^\\d]`) characters. Optional.\n * @returns {string} the stripped CNPJ.\n */\nexport function strip(cnpj, isStrict) {\n const regex = isStrict ? STRICT_STRIP_REGEX : LOOSE_STRIP_REGEX;\n return (cnpj || \"\").toString().replace(regex, \"\");\n}\n\n/**\n * Validate the CNPJ.\n *\n * @export\n * @param {string} cnpj the CNPJ number.\n * @param {boolean} [isStrict] if `true`, it will accept only `digits`, `.` and `-` characters. Optional.\n * @returns {boolean} `true` if CNPJ is valid. Otherwise, `false`.\n */\nexport function isValid(cnpj, isStrict) {\n const stripped = strip(cnpj, isStrict);\n\n // CNPJ must be defined\n if (!stripped) { return false; }\n\n // CNPJ must have 14 chars\n if (stripped.length !== 14) { return false; }\n\n // CNPJ can't be blacklisted\n if (BLACKLIST.includes(stripped)) { return false; }\n\n let numbers = stripped.substr(0, 12);\n numbers += verifierDigit(numbers);\n numbers += verifierDigit(numbers);\n\n return numbers.substr(-2) === stripped.substr(-2);\n}\n\n\n/**\n * Generate a random CNPJ.\n *\n * @export\n * @param {boolean} [useFormat] if `true`, it will format using `.` and `-`. Optional.\n * @returns {string} the CNPJ.\n */\nexport function generate(useFormat) {\n let numbers = \"\";\n\n for (let i = 0; i < 12; i += 1) {\n numbers += Math.floor(Math.random() * 9);\n }\n\n numbers += verifierDigit(numbers);\n numbers += verifierDigit(numbers);\n\n return (useFormat ? format(numbers) : numbers);\n}\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","/**!\n * Sortable\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\n\n(function sortableModule(factory) {\n\t\"use strict\";\n\n\tif (typeof define === \"function\" && define.amd) {\n\t\tdefine(factory);\n\t}\n\telse if (typeof module != \"undefined\" && typeof module.exports != \"undefined\") {\n\t\tmodule.exports = factory();\n\t}\n\telse {\n\t\t/* jshint sub:true */\n\t\twindow[\"Sortable\"] = factory();\n\t}\n})(function sortableFactory() {\n\t\"use strict\";\n\n\tif (typeof window === \"undefined\" || !window.document) {\n\t\treturn function sortableError() {\n\t\t\tthrow new Error(\"Sortable.js requires a window with a document\");\n\t\t};\n\t}\n\n\tvar dragEl,\n\t\tparentEl,\n\t\tghostEl,\n\t\tcloneEl,\n\t\trootEl,\n\t\tnextEl,\n\t\tlastDownEl,\n\n\t\tscrollEl,\n\t\tscrollParentEl,\n\t\tscrollCustomFn,\n\n\t\toldIndex,\n\t\tnewIndex,\n\t\toldDraggableIndex,\n\t\tnewDraggableIndex,\n\n\t\tactiveGroup,\n\t\tputSortable,\n\n\t\tautoScrolls = [],\n\t\tscrolling = false,\n\n\t\tawaitingDragStarted = false,\n\t\tignoreNextClick = false,\n\t\tsortables = [],\n\n\t\tpointerElemChangedInterval,\n\t\tlastPointerElemX,\n\t\tlastPointerElemY,\n\n\t\ttapEvt,\n\t\ttouchEvt,\n\n\t\tmoved,\n\n\n\t\tlastTarget,\n\t\tlastDirection,\n\t\tpastFirstInvertThresh = false,\n\t\tisCircumstantialInvert = false,\n\t\tlastMode, // 'swap' or 'insert'\n\n\t\ttargetMoveDistance,\n\n\t\t// For positioning ghost absolutely\n\t\tghostRelativeParent,\n\t\tghostRelativeParentInitialScroll = [], // (left, top)\n\n\t\trealDragElRect, // dragEl rect after current animation\n\n\t\t/** @const */\n\t\tR_SPACE = /\\s+/g,\n\n\t\texpando = 'Sortable' + (new Date).getTime(),\n\n\t\twin = window,\n\t\tdocument = win.document,\n\t\tparseInt = win.parseInt,\n\t\tsetTimeout = win.setTimeout,\n\n\t\t$ = win.jQuery || win.Zepto,\n\t\tPolymer = win.Polymer,\n\n\t\tcaptureMode = {\n\t\t\tcapture: false,\n\t\t\tpassive: false\n\t\t},\n\n\t\tIE11OrLess = !!navigator.userAgent.match(/(?:Trident.*rv[ :]?11\\.|msie|iemobile)/i),\n\t\tEdge = !!navigator.userAgent.match(/Edge/i),\n\t\tFireFox = !!navigator.userAgent.match(/firefox/i),\n\t\tSafari = !!(navigator.userAgent.match(/safari/i) && !navigator.userAgent.match(/chrome/i) && !navigator.userAgent.match(/android/i)),\n\t\tIOS = !!(navigator.userAgent.match(/iP(ad|od|hone)/i)),\n\n\t\tPositionGhostAbsolutely = IOS,\n\n\t\tCSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n\n\t\t// This will not pass for IE9, because IE9 DnD only works on anchors\n\t\tsupportDraggable = ('draggable' in document.createElement('div')),\n\n\t\tsupportCssPointerEvents = (function() {\n\t\t\t// false when <= IE11\n\t\t\tif (IE11OrLess) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar el = document.createElement('x');\n\t\t\tel.style.cssText = 'pointer-events:auto';\n\t\t\treturn el.style.pointerEvents === 'auto';\n\t\t})(),\n\n\t\t_silent = false,\n\t\t_alignedSilent = false,\n\n\t\tabs = Math.abs,\n\t\tmin = Math.min,\n\t\tmax = Math.max,\n\n\t\tsavedInputChecked = [],\n\n\t\t_detectDirection = function(el, options) {\n\t\t\tvar elCSS = _css(el),\n\t\t\t\telWidth = parseInt(elCSS.width)\n\t\t\t\t\t- parseInt(elCSS.paddingLeft)\n\t\t\t\t\t- parseInt(elCSS.paddingRight)\n\t\t\t\t\t- parseInt(elCSS.borderLeftWidth)\n\t\t\t\t\t- parseInt(elCSS.borderRightWidth),\n\t\t\t\tchild1 = _getChild(el, 0, options),\n\t\t\t\tchild2 = _getChild(el, 1, options),\n\t\t\t\tfirstChildCSS = child1 && _css(child1),\n\t\t\t\tsecondChildCSS = child2 && _css(child2),\n\t\t\t\tfirstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + _getRect(child1).width,\n\t\t\t\tsecondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + _getRect(child2).width;\n\n\t\t\tif (elCSS.display === 'flex') {\n\t\t\t\treturn elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse'\n\t\t\t\t? 'vertical' : 'horizontal';\n\t\t\t}\n\n\t\t\tif (elCSS.display === 'grid') {\n\t\t\t\treturn elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n\t\t\t}\n\n\t\t\tif (child1 && firstChildCSS.float !== 'none') {\n\t\t\t\tvar touchingSideChild2 = firstChildCSS.float === 'left' ? 'left' : 'right';\n\n\t\t\t\treturn child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ?\n\t\t\t\t\t'vertical' : 'horizontal';\n\t\t\t}\n\n\t\t\treturn (child1 &&\n\t\t\t\t(\n\t\t\t\t\tfirstChildCSS.display === 'block' ||\n\t\t\t\t\tfirstChildCSS.display === 'flex' ||\n\t\t\t\t\tfirstChildCSS.display === 'table' ||\n\t\t\t\t\tfirstChildCSS.display === 'grid' ||\n\t\t\t\t\tfirstChildWidth >= elWidth &&\n\t\t\t\t\telCSS[CSSFloatProperty] === 'none' ||\n\t\t\t\t\tchild2 &&\n\t\t\t\t\telCSS[CSSFloatProperty] === 'none' &&\n\t\t\t\t\tfirstChildWidth + secondChildWidth > elWidth\n\t\t\t\t) ?\n\t\t\t\t'vertical' : 'horizontal'\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n\t\t * @param {Number} x X position\n\t\t * @param {Number} y Y position\n\t\t * @return {HTMLElement} Element of the first found nearest Sortable\n\t\t */\n\t\t_detectNearestEmptySortable = function(x, y) {\n\t\t\tfor (var i = 0; i < sortables.length; i++) {\n\t\t\t\tif (_lastChild(sortables[i])) continue;\n\n\t\t\t\tvar rect = _getRect(sortables[i]),\n\t\t\t\t\tthreshold = sortables[i][expando].options.emptyInsertThreshold,\n\t\t\t\t\tinsideHorizontally = x >= (rect.left - threshold) && x <= (rect.right + threshold),\n\t\t\t\t\tinsideVertically = y >= (rect.top - threshold) && y <= (rect.bottom + threshold);\n\n\t\t\t\tif (threshold && insideHorizontally && insideVertically) {\n\t\t\t\t\treturn sortables[i];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_isClientInRowColumn = function(x, y, el, axis, options) {\n\t\t\tvar targetRect = _getRect(el),\n\t\t\t\ttargetS1Opp = axis === 'vertical' ? targetRect.left : targetRect.top,\n\t\t\t\ttargetS2Opp = axis === 'vertical' ? targetRect.right : targetRect.bottom,\n\t\t\t\tmouseOnOppAxis = axis === 'vertical' ? x : y;\n\n\t\t\treturn targetS1Opp < mouseOnOppAxis && mouseOnOppAxis < targetS2Opp;\n\t\t},\n\n\t\t_isElInRowColumn = function(el1, el2, axis) {\n\t\t\tvar el1Rect = el1 === dragEl && realDragElRect || _getRect(el1),\n\t\t\t\tel2Rect = el2 === dragEl && realDragElRect || _getRect(el2),\n\t\t\t\tel1S1Opp = axis === 'vertical' ? el1Rect.left : el1Rect.top,\n\t\t\t\tel1S2Opp = axis === 'vertical' ? el1Rect.right : el1Rect.bottom,\n\t\t\t\tel1OppLength = axis === 'vertical' ? el1Rect.width : el1Rect.height,\n\t\t\t\tel2S1Opp = axis === 'vertical' ? el2Rect.left : el2Rect.top,\n\t\t\t\tel2S2Opp = axis === 'vertical' ? el2Rect.right : el2Rect.bottom,\n\t\t\t\tel2OppLength = axis === 'vertical' ? el2Rect.width : el2Rect.height;\n\n\t\t\treturn (\n\t\t\t\tel1S1Opp === el2S1Opp ||\n\t\t\t\tel1S2Opp === el2S2Opp ||\n\t\t\t\t(el1S1Opp + el1OppLength / 2) === (el2S1Opp + el2OppLength / 2)\n\t\t\t);\n\t\t},\n\n\t\t_getParentAutoScrollElement = function(el, includeSelf) {\n\t\t\t// skip to window\n\t\t\tif (!el || !el.getBoundingClientRect) return _getWindowScrollingElement();\n\n\t\t\tvar elem = el;\n\t\t\tvar gotSelf = false;\n\t\t\tdo {\n\t\t\t\t// we don't need to get elem css if it isn't even overflowing in the first place (performance)\n\t\t\t\tif (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n\t\t\t\t\tvar elemCSS = _css(elem);\n\t\t\t\t\tif (\n\t\t\t\t\t\telem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') ||\n\t\t\t\t\t\telem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (!elem || !elem.getBoundingClientRect || elem === document.body) return _getWindowScrollingElement();\n\n\t\t\t\t\t\tif (gotSelf || includeSelf) return elem;\n\t\t\t\t\t\tgotSelf = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t/* jshint boss:true */\n\t\t\t} while (elem = elem.parentNode);\n\n\t\t\treturn _getWindowScrollingElement();\n\t\t},\n\n\t\t_getWindowScrollingElement = function() {\n\t\t\tif (IE11OrLess) {\n\t\t\t\treturn document.documentElement;\n\t\t\t} else {\n\t\t\t\treturn document.scrollingElement;\n\t\t\t}\n\t\t},\n\n\t\t_scrollBy = function(el, x, y) {\n\t\t\tel.scrollLeft += x;\n\t\t\tel.scrollTop += y;\n\t\t},\n\n\t\t_autoScroll = _throttle(function (/**Event*/evt, /**Object*/options, /**HTMLElement*/rootEl, /**Boolean*/isFallback) {\n\t\t\t// Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n\t\t\tif (options.scroll) {\n\t\t\t\tvar _this = rootEl ? rootEl[expando] : window,\n\t\t\t\t\tsens = options.scrollSensitivity,\n\t\t\t\t\tspeed = options.scrollSpeed,\n\n\t\t\t\t\tx = evt.clientX,\n\t\t\t\t\ty = evt.clientY,\n\n\t\t\t\t\twinScroller = _getWindowScrollingElement(),\n\n\t\t\t\t\tscrollThisInstance = false;\n\n\t\t\t\t// Detect scrollEl\n\t\t\t\tif (scrollParentEl !== rootEl) {\n\t\t\t\t\t_clearAutoScrolls();\n\n\t\t\t\t\tscrollEl = options.scroll;\n\t\t\t\t\tscrollCustomFn = options.scrollFn;\n\n\t\t\t\t\tif (scrollEl === true) {\n\t\t\t\t\t\tscrollEl = _getParentAutoScrollElement(rootEl, true);\n\t\t\t\t\t\tscrollParentEl = scrollEl;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t\tvar layersOut = 0;\n\t\t\t\tvar currentParent = scrollEl;\n\t\t\t\tdo {\n\t\t\t\t\tvar\tel = currentParent,\n\t\t\t\t\t\trect = _getRect(el),\n\n\t\t\t\t\t\ttop = rect.top,\n\t\t\t\t\t\tbottom = rect.bottom,\n\t\t\t\t\t\tleft = rect.left,\n\t\t\t\t\t\tright = rect.right,\n\n\t\t\t\t\t\twidth = rect.width,\n\t\t\t\t\t\theight = rect.height,\n\n\t\t\t\t\t\tscrollWidth,\n\t\t\t\t\t\tscrollHeight,\n\n\t\t\t\t\t\tcss,\n\n\t\t\t\t\t\tvx,\n\t\t\t\t\t\tvy,\n\n\t\t\t\t\t\tcanScrollX,\n\t\t\t\t\t\tcanScrollY,\n\n\t\t\t\t\t\tscrollPosX,\n\t\t\t\t\t\tscrollPosY;\n\n\n\t\t\t\t\tscrollWidth = el.scrollWidth;\n\t\t\t\t\tscrollHeight = el.scrollHeight;\n\n\t\t\t\t\tcss = _css(el);\n\n\t\t\t\t\tscrollPosX = el.scrollLeft;\n\t\t\t\t\tscrollPosY = el.scrollTop;\n\n\t\t\t\t\tif (el === winScroller) {\n\t\t\t\t\t\tcanScrollX = width < scrollWidth && (css.overflowX === 'auto' || css.overflowX === 'scroll' || css.overflowX === 'visible');\n\t\t\t\t\t\tcanScrollY = height < scrollHeight && (css.overflowY === 'auto' || css.overflowY === 'scroll' || css.overflowY === 'visible');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcanScrollX = width < scrollWidth && (css.overflowX === 'auto' || css.overflowX === 'scroll');\n\t\t\t\t\t\tcanScrollY = height < scrollHeight && (css.overflowY === 'auto' || css.overflowY === 'scroll');\n\t\t\t\t\t}\n\n\t\t\t\t\tvx = canScrollX && (abs(right - x) <= sens && (scrollPosX + width) < scrollWidth) - (abs(left - x) <= sens && !!scrollPosX);\n\n\t\t\t\t\tvy = canScrollY && (abs(bottom - y) <= sens && (scrollPosY + height) < scrollHeight) - (abs(top - y) <= sens && !!scrollPosY);\n\n\n\t\t\t\t\tif (!autoScrolls[layersOut]) {\n\t\t\t\t\t\tfor (var i = 0; i <= layersOut; i++) {\n\t\t\t\t\t\t\tif (!autoScrolls[i]) {\n\t\t\t\t\t\t\t\tautoScrolls[i] = {};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n\t\t\t\t\t\tautoScrolls[layersOut].el = el;\n\t\t\t\t\t\tautoScrolls[layersOut].vx = vx;\n\t\t\t\t\t\tautoScrolls[layersOut].vy = vy;\n\n\t\t\t\t\t\tclearInterval(autoScrolls[layersOut].pid);\n\n\t\t\t\t\t\tif (el && (vx != 0 || vy != 0)) {\n\t\t\t\t\t\t\tscrollThisInstance = true;\n\t\t\t\t\t\t\t/* jshint loopfunc:true */\n\t\t\t\t\t\t\tautoScrolls[layersOut].pid = setInterval((function () {\n\t\t\t\t\t\t\t\t// emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n\t\t\t\t\t\t\t\tif (isFallback && this.layer === 0) {\n\t\t\t\t\t\t\t\t\tSortable.active._emulateDragOver(true);\n\t\t\t\t\t\t\t\t\tSortable.active._onTouchMove(touchEvt, true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvar scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n\t\t\t\t\t\t\t\tvar scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n\t\t\t\t\t\t\t\tif ('function' === typeof(scrollCustomFn)) {\n\t\t\t\t\t\t\t\t\tif (scrollCustomFn.call(_this, scrollOffsetX, scrollOffsetY, evt, touchEvt, autoScrolls[this.layer].el) !== 'continue') {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t_scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n\t\t\t\t\t\t\t}).bind({layer: layersOut}), 24);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlayersOut++;\n\t\t\t\t} while (options.bubbleScroll && currentParent !== winScroller && (currentParent = _getParentAutoScrollElement(currentParent, false)));\n\t\t\t\tscrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n\t\t\t}\n\t\t}, 30),\n\n\t\t_clearAutoScrolls = function () {\n\t\t\tautoScrolls.forEach(function(autoScroll) {\n\t\t\t\tclearInterval(autoScroll.pid);\n\t\t\t});\n\t\t\tautoScrolls = [];\n\t\t},\n\n\t\t_prepareGroup = function (options) {\n\t\t\tfunction toFn(value, pull) {\n\t\t\t\treturn function(to, from, dragEl, evt) {\n\t\t\t\t\tvar sameGroup = to.options.group.name &&\n\t\t\t\t\t\t\t\t\tfrom.options.group.name &&\n\t\t\t\t\t\t\t\t\tto.options.group.name === from.options.group.name;\n\n\t\t\t\t\tif (value == null && (pull || sameGroup)) {\n\t\t\t\t\t\t// Default pull value\n\t\t\t\t\t\t// Default pull and put value if same group\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else if (value == null || value === false) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (pull && value === 'clone') {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t} else if (typeof value === 'function') {\n\t\t\t\t\t\treturn toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar otherGroup = (pull ? to : from).options.group.name;\n\n\t\t\t\t\t\treturn (value === true ||\n\t\t\t\t\t\t(typeof value === 'string' && value === otherGroup) ||\n\t\t\t\t\t\t(value.join && value.indexOf(otherGroup) > -1));\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar group = {};\n\t\t\tvar originalGroup = options.group;\n\n\t\t\tif (!originalGroup || typeof originalGroup != 'object') {\n\t\t\t\toriginalGroup = {name: originalGroup};\n\t\t\t}\n\n\t\t\tgroup.name = originalGroup.name;\n\t\t\tgroup.checkPull = toFn(originalGroup.pull, true);\n\t\t\tgroup.checkPut = toFn(originalGroup.put);\n\t\t\tgroup.revertClone = originalGroup.revertClone;\n\n\t\t\toptions.group = group;\n\t\t},\n\n\t\t_checkAlignment = function(evt) {\n\t\t\tif (!dragEl || !dragEl.parentNode) return;\n\t\t\tdragEl.parentNode[expando] && dragEl.parentNode[expando]._computeIsAligned(evt);\n\t\t},\n\n\t\t_hideGhostForTarget = function() {\n\t\t\tif (!supportCssPointerEvents && ghostEl) {\n\t\t\t\t_css(ghostEl, 'display', 'none');\n\t\t\t}\n\t\t},\n\n\t\t_unhideGhostForTarget = function() {\n\t\t\tif (!supportCssPointerEvents && ghostEl) {\n\t\t\t\t_css(ghostEl, 'display', '');\n\t\t\t}\n\t\t};\n\n\n\t// #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\tdocument.addEventListener('click', function(evt) {\n\t\tif (ignoreNextClick) {\n\t\t\tevt.preventDefault();\n\t\t\tevt.stopPropagation && evt.stopPropagation();\n\t\t\tevt.stopImmediatePropagation && evt.stopImmediatePropagation();\n\t\t\tignoreNextClick = false;\n\t\t\treturn false;\n\t\t}\n\t}, true);\n\n\tvar nearestEmptyInsertDetectEvent = function(evt) {\n\t\tif (dragEl) {\n\t\t\tevt = evt.touches ? evt.touches[0] : evt;\n\t\t\tvar nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n\t\t\tif (nearest) {\n\t\t\t\t// Create imitation event\n\t\t\t\tvar event = {};\n\t\t\t\tfor (var i in evt) {\n\t\t\t\t\tevent[i] = evt[i];\n\t\t\t\t}\n\t\t\t\tevent.target = event.rootEl = nearest;\n\t\t\t\tevent.preventDefault = void 0;\n\t\t\t\tevent.stopPropagation = void 0;\n\t\t\t\tnearest[expando]._onDragOver(event);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * @class Sortable\n\t * @param {HTMLElement} el\n\t * @param {Object} [options]\n\t */\n\tfunction Sortable(el, options) {\n\t\tif (!(el && el.nodeType && el.nodeType === 1)) {\n\t\t\tthrow 'Sortable: `el` must be HTMLElement, not ' + {}.toString.call(el);\n\t\t}\n\n\t\tthis.el = el; // root element\n\t\tthis.options = options = _extend({}, options);\n\n\n\t\t// Export instance\n\t\tel[expando] = this;\n\n\t\t// Default options\n\t\tvar defaults = {\n\t\t\tgroup: null,\n\t\t\tsort: true,\n\t\t\tdisabled: false,\n\t\t\tstore: null,\n\t\t\thandle: null,\n\t\t\tscroll: true,\n\t\t\tscrollSensitivity: 30,\n\t\t\tscrollSpeed: 10,\n\t\t\tbubbleScroll: true,\n\t\t\tdraggable: /[uo]l/i.test(el.nodeName) ? '>li' : '>*',\n\t\t\tswapThreshold: 1, // percentage; 0 <= x <= 1\n\t\t\tinvertSwap: false, // invert always\n\t\t\tinvertedSwapThreshold: null, // will be set to same as swapThreshold if default\n\t\t\tremoveCloneOnHide: true,\n\t\t\tdirection: function() {\n\t\t\t\treturn _detectDirection(el, this.options);\n\t\t\t},\n\t\t\tghostClass: 'sortable-ghost',\n\t\t\tchosenClass: 'sortable-chosen',\n\t\t\tdragClass: 'sortable-drag',\n\t\t\tignore: 'a, img',\n\t\t\tfilter: null,\n\t\t\tpreventOnFilter: true,\n\t\t\tanimation: 0,\n\t\t\teasing: null,\n\t\t\tsetData: function (dataTransfer, dragEl) {\n\t\t\t\tdataTransfer.setData('Text', dragEl.textContent);\n\t\t\t},\n\t\t\tdropBubble: false,\n\t\t\tdragoverBubble: false,\n\t\t\tdataIdAttr: 'data-id',\n\t\t\tdelay: 0,\n\t\t\tdelayOnTouchOnly: false,\n\t\t\ttouchStartThreshold: parseInt(window.devicePixelRatio, 10) || 1,\n\t\t\tforceFallback: false,\n\t\t\tfallbackClass: 'sortable-fallback',\n\t\t\tfallbackOnBody: false,\n\t\t\tfallbackTolerance: 0,\n\t\t\tfallbackOffset: {x: 0, y: 0},\n\t\t\tsupportPointer: Sortable.supportPointer !== false && ('PointerEvent' in window),\n\t\t\temptyInsertThreshold: 5\n\t\t};\n\n\n\t\t// Set default options\n\t\tfor (var name in defaults) {\n\t\t\t!(name in options) && (options[name] = defaults[name]);\n\t\t}\n\n\t\t_prepareGroup(options);\n\n\t\t// Bind all private methods\n\t\tfor (var fn in this) {\n\t\t\tif (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n\t\t\t\tthis[fn] = this[fn].bind(this);\n\t\t\t}\n\t\t}\n\n\t\t// Setup drag mode\n\t\tthis.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n\t\tif (this.nativeDraggable) {\n\t\t\t// Touch start threshold cannot be greater than the native dragstart threshold\n\t\t\tthis.options.touchStartThreshold = 1;\n\t\t}\n\n\t\t// Bind events\n\t\tif (options.supportPointer) {\n\t\t\t_on(el, 'pointerdown', this._onTapStart);\n\t\t} else {\n\t\t\t_on(el, 'mousedown', this._onTapStart);\n\t\t\t_on(el, 'touchstart', this._onTapStart);\n\t\t}\n\n\t\tif (this.nativeDraggable) {\n\t\t\t_on(el, 'dragover', this);\n\t\t\t_on(el, 'dragenter', this);\n\t\t}\n\n\t\tsortables.push(this.el);\n\n\t\t// Restore sorting\n\t\toptions.store && options.store.get && this.sort(options.store.get(this) || []);\n\t}\n\n\tSortable.prototype = /** @lends Sortable.prototype */ {\n\t\tconstructor: Sortable,\n\n\t\t_computeIsAligned: function(evt) {\n\t\t\tvar target;\n\n\t\t\tif (ghostEl && !supportCssPointerEvents) {\n\t\t\t\t_hideGhostForTarget();\n\t\t\t\ttarget = document.elementFromPoint(evt.clientX, evt.clientY);\n\t\t\t\t_unhideGhostForTarget();\n\t\t\t} else {\n\t\t\t\ttarget = evt.target;\n\t\t\t}\n\n\t\t\ttarget = _closest(target, this.options.draggable, this.el, false);\n\t\t\tif (_alignedSilent) return;\n\t\t\tif (!dragEl || dragEl.parentNode !== this.el) return;\n\n\t\t\tvar children = this.el.children;\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t// Don't change for target in case it is changed to aligned before onDragOver is fired\n\t\t\t\tif (_closest(children[i], this.options.draggable, this.el, false) && children[i] !== target) {\n\t\t\t\t\tchildren[i].sortableMouseAligned = _isClientInRowColumn(evt.clientX, evt.clientY, children[i], this._getDirection(evt, null), this.options);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Used for nulling last target when not in element, nothing to do with checking if aligned\n\t\t\tif (!_closest(target, this.options.draggable, this.el, true)) {\n\t\t\t\tlastTarget = null;\n\t\t\t}\n\n\t\t\t_alignedSilent = true;\n\t\t\tsetTimeout(function() {\n\t\t\t\t_alignedSilent = false;\n\t\t\t}, 30);\n\n\t\t},\n\n\t\t_getDirection: function(evt, target) {\n\t\t\treturn (typeof this.options.direction === 'function') ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n\t\t},\n\n\t\t_onTapStart: function (/** Event|TouchEvent */evt) {\n\t\t\tif (!evt.cancelable) return;\n\t\t\tvar _this = this,\n\t\t\t\tel = this.el,\n\t\t\t\toptions = this.options,\n\t\t\t\tpreventOnFilter = options.preventOnFilter,\n\t\t\t\ttype = evt.type,\n\t\t\t\ttouch = evt.touches && evt.touches[0],\n\t\t\t\ttarget = (touch || evt).target,\n\t\t\t\toriginalTarget = evt.target.shadowRoot && ((evt.path && evt.path[0]) || (evt.composedPath && evt.composedPath()[0])) || target,\n\t\t\t\tfilter = options.filter,\n\t\t\t\tstartIndex,\n\t\t\t\tstartDraggableIndex;\n\n\t\t\t_saveInputCheckedState(el);\n\n\t\t\t// Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\t\t\tif (dragEl) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n\t\t\t\treturn; // only left button and enabled\n\t\t\t}\n\n\t\t\t// cancel dnd if original target is content editable\n\t\t\tif (originalTarget.isContentEditable) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttarget = _closest(target, options.draggable, el, false);\n\n\n\t\t\tif (lastDownEl === target) {\n\t\t\t\t// Ignoring duplicate `down`\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get the index of the dragged element within its parent\n\t\t\tstartIndex = _index(target);\n\t\t\tstartDraggableIndex = _index(target, options.draggable);\n\n\t\t\t// Check filter\n\t\t\tif (typeof filter === 'function') {\n\t\t\t\tif (filter.call(this, evt, target, this)) {\n\t\t\t\t\t_dispatchEvent(_this, originalTarget, 'filter', target, el, el, startIndex, undefined, startDraggableIndex);\n\t\t\t\t\tpreventOnFilter && evt.cancelable && evt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (filter) {\n\t\t\t\tfilter = filter.split(',').some(function (criteria) {\n\t\t\t\t\tcriteria = _closest(originalTarget, criteria.trim(), el, false);\n\n\t\t\t\t\tif (criteria) {\n\t\t\t\t\t\t_dispatchEvent(_this, criteria, 'filter', target, el, el, startIndex, undefined, startDraggableIndex);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (filter) {\n\t\t\t\t\tpreventOnFilter && evt.cancelable && evt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.handle && !_closest(originalTarget, options.handle, el, false)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Prepare `dragstart`\n\t\t\tthis._prepareDragStart(evt, touch, target, startIndex, startDraggableIndex);\n\t\t},\n\n\n\t\t_handleAutoScroll: function(evt, fallback) {\n\t\t\tif (!dragEl || !this.options.scroll) return;\n\t\t\tvar x = evt.clientX,\n\t\t\t\ty = evt.clientY,\n\n\t\t\t\telem = document.elementFromPoint(x, y),\n\t\t\t\t_this = this;\n\n\t\t\t// IE does not seem to have native autoscroll,\n\t\t\t// Edge's autoscroll seems too conditional,\n\t\t\t// MACOS Safari does not have autoscroll,\n\t\t\t// Firefox and Chrome are good\n\t\t\tif (fallback || Edge || IE11OrLess || Safari) {\n\t\t\t\t_autoScroll(evt, _this.options, elem, fallback);\n\n\t\t\t\t// Listener for pointer element change\n\t\t\t\tvar ogElemScroller = _getParentAutoScrollElement(elem, true);\n\t\t\t\tif (\n\t\t\t\t\tscrolling &&\n\t\t\t\t\t(\n\t\t\t\t\t\t!pointerElemChangedInterval ||\n\t\t\t\t\t\tx !== lastPointerElemX ||\n\t\t\t\t\t\ty !== lastPointerElemY\n\t\t\t\t\t)\n\t\t\t\t) {\n\n\t\t\t\t\tpointerElemChangedInterval && clearInterval(pointerElemChangedInterval);\n\t\t\t\t\t// Detect for pointer elem change, emulating native DnD behaviour\n\t\t\t\t\tpointerElemChangedInterval = setInterval(function() {\n\t\t\t\t\t\tif (!dragEl) return;\n\t\t\t\t\t\t// could also check if scroll direction on newElem changes due to parent autoscrolling\n\t\t\t\t\t\tvar newElem = _getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\t\t\t\t\t\tif (newElem !== ogElemScroller) {\n\t\t\t\t\t\t\togElemScroller = newElem;\n\t\t\t\t\t\t\t_clearAutoScrolls();\n\t\t\t\t\t\t\t_autoScroll(evt, _this.options, ogElemScroller, fallback);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 10);\n\t\t\t\t\tlastPointerElemX = x;\n\t\t\t\t\tlastPointerElemY = y;\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n\t\t\t\tif (!_this.options.bubbleScroll || _getParentAutoScrollElement(elem, true) === _getWindowScrollingElement()) {\n\t\t\t\t\t_clearAutoScrolls();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t_autoScroll(evt, _this.options, _getParentAutoScrollElement(elem, false), false);\n\t\t\t}\n\t\t},\n\n\t\t_prepareDragStart: function (/** Event */evt, /** Touch */touch, /** HTMLElement */target, /** Number */startIndex, /** Number */startDraggableIndex) {\n\t\t\tvar _this = this,\n\t\t\t\tel = _this.el,\n\t\t\t\toptions = _this.options,\n\t\t\t\townerDocument = el.ownerDocument,\n\t\t\t\tdragStartFn;\n\n\t\t\tif (target && !dragEl && (target.parentNode === el)) {\n\t\t\t\trootEl = el;\n\t\t\t\tdragEl = target;\n\t\t\t\tparentEl = dragEl.parentNode;\n\t\t\t\tnextEl = dragEl.nextSibling;\n\t\t\t\tlastDownEl = target;\n\t\t\t\tactiveGroup = options.group;\n\t\t\t\toldIndex = startIndex;\n\t\t\t\toldDraggableIndex = startDraggableIndex;\n\n\t\t\t\ttapEvt = {\n\t\t\t\t\ttarget: dragEl,\n\t\t\t\t\tclientX: (touch || evt).clientX,\n\t\t\t\t\tclientY: (touch || evt).clientY\n\t\t\t\t};\n\n\t\t\t\tthis._lastX = (touch || evt).clientX;\n\t\t\t\tthis._lastY = (touch || evt).clientY;\n\n\t\t\t\tdragEl.style['will-change'] = 'all';\n\t\t\t\t// undo animation if needed\n\t\t\t\tdragEl.style.transition = '';\n\t\t\t\tdragEl.style.transform = '';\n\n\t\t\t\tdragStartFn = function () {\n\t\t\t\t\t// Delayed drag has been triggered\n\t\t\t\t\t// we can re-enable the events: touchmove/mousemove\n\t\t\t\t\t_this._disableDelayedDragEvents();\n\n\t\t\t\t\tif (!FireFox && _this.nativeDraggable) {\n\t\t\t\t\t\tdragEl.draggable = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Bind the events: dragstart/dragend\n\t\t\t\t\t_this._triggerDragStart(evt, touch);\n\n\t\t\t\t\t// Drag start event\n\t\t\t\t\t_dispatchEvent(_this, rootEl, 'choose', dragEl, rootEl, rootEl, oldIndex, undefined, oldDraggableIndex);\n\n\t\t\t\t\t// Chosen item\n\t\t\t\t\t_toggleClass(dragEl, options.chosenClass, true);\n\t\t\t\t};\n\n\t\t\t\t// Disable \"draggable\"\n\t\t\t\toptions.ignore.split(',').forEach(function (criteria) {\n\t\t\t\t\t_find(dragEl, criteria.trim(), _disableDraggable);\n\t\t\t\t});\n\n\t\t\t\t_on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n\t\t\t\t_on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n\t\t\t\t_on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n\n\t\t\t\t_on(ownerDocument, 'mouseup', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchend', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchcancel', _this._onDrop);\n\n\t\t\t\t// Make dragEl draggable (must be before delay for FireFox)\n\t\t\t\tif (FireFox && this.nativeDraggable) {\n\t\t\t\t\tthis.options.touchStartThreshold = 4;\n\t\t\t\t\tdragEl.draggable = true;\n\t\t\t\t}\n\n\t\t\t\t// Delay is impossible for native DnD in Edge or IE\n\t\t\t\tif (options.delay && (options.delayOnTouchOnly ? touch : true) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n\t\t\t\t\t// If the user moves the pointer or let go the click or touch\n\t\t\t\t\t// before the delay has been reached:\n\t\t\t\t\t// disable the delayed drag\n\t\t\t\t\t_on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n\t\t\t\t\t_on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n\t\t\t\t\toptions.supportPointer && _on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n\n\t\t\t\t\t_this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n\t\t\t\t} else {\n\t\t\t\t\tdragStartFn();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_delayedDragTouchMoveHandler: function (/** TouchEvent|PointerEvent **/e) {\n\t\t\tvar touch = e.touches ? e.touches[0] : e;\n\t\t\tif (max(abs(touch.clientX - this._lastX), abs(touch.clientY - this._lastY))\n\t\t\t\t\t>= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))\n\t\t\t) {\n\t\t\t\tthis._disableDelayedDrag();\n\t\t\t}\n\t\t},\n\n\t\t_disableDelayedDrag: function () {\n\t\t\tdragEl && _disableDraggable(dragEl);\n\t\t\tclearTimeout(this._dragStartTimer);\n\n\t\t\tthis._disableDelayedDragEvents();\n\t\t},\n\n\t\t_disableDelayedDragEvents: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\t\t\t_off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchend', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n\t\t\t_off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n\t\t\t_off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n\t\t},\n\n\t\t_triggerDragStart: function (/** Event */evt, /** Touch */touch) {\n\t\t\ttouch = touch || (evt.pointerType == 'touch' ? evt : null);\n\n\t\t\tif (!this.nativeDraggable || touch) {\n\t\t\t\tif (this.options.supportPointer) {\n\t\t\t\t\t_on(document, 'pointermove', this._onTouchMove);\n\t\t\t\t} else if (touch) {\n\t\t\t\t\t_on(document, 'touchmove', this._onTouchMove);\n\t\t\t\t} else {\n\t\t\t\t\t_on(document, 'mousemove', this._onTouchMove);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t_on(dragEl, 'dragend', this);\n\t\t\t\t_on(rootEl, 'dragstart', this._onDragStart);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (document.selection) {\n\t\t\t\t\t// Timeout neccessary for IE9\n\t\t\t\t\t_nextTick(function () {\n\t\t\t\t\t\tdocument.selection.empty();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t}\n\t\t},\n\n\t\t_dragStarted: function (fallback, evt) {\n\t\t\tawaitingDragStarted = false;\n\t\t\tif (rootEl && dragEl) {\n\t\t\t\tif (this.nativeDraggable) {\n\t\t\t\t\t_on(document, 'dragover', this._handleAutoScroll);\n\t\t\t\t\t_on(document, 'dragover', _checkAlignment);\n\t\t\t\t}\n\t\t\t\tvar options = this.options;\n\n\t\t\t\t// Apply effect\n\t\t\t\t!fallback && _toggleClass(dragEl, options.dragClass, false);\n\t\t\t\t_toggleClass(dragEl, options.ghostClass, true);\n\n\t\t\t\t// In case dragging an animated element\n\t\t\t\t_css(dragEl, 'transform', '');\n\n\t\t\t\tSortable.active = this;\n\n\t\t\t\tfallback && this._appendGhost();\n\n\t\t\t\t// Drag start event\n\t\t\t\t_dispatchEvent(this, rootEl, 'start', dragEl, rootEl, rootEl, oldIndex, undefined, oldDraggableIndex, undefined, evt);\n\t\t\t} else {\n\t\t\t\tthis._nulling();\n\t\t\t}\n\t\t},\n\n\t\t_emulateDragOver: function (forAutoScroll) {\n\t\t\tif (touchEvt) {\n\t\t\t\tif (this._lastX === touchEvt.clientX && this._lastY === touchEvt.clientY && !forAutoScroll) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._lastX = touchEvt.clientX;\n\t\t\t\tthis._lastY = touchEvt.clientY;\n\n\t\t\t\t_hideGhostForTarget();\n\n\t\t\t\tvar target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n\t\t\t\tvar parent = target;\n\n\t\t\t\twhile (target && target.shadowRoot) {\n\t\t\t\t\ttarget = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n\t\t\t\t\tif (target === parent) break;\n\t\t\t\t\tparent = target;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tdo {\n\t\t\t\t\t\tif (parent[expando]) {\n\t\t\t\t\t\t\tvar inserted;\n\n\t\t\t\t\t\t\tinserted = parent[expando]._onDragOver({\n\t\t\t\t\t\t\t\tclientX: touchEvt.clientX,\n\t\t\t\t\t\t\t\tclientY: touchEvt.clientY,\n\t\t\t\t\t\t\t\ttarget: target,\n\t\t\t\t\t\t\t\trootEl: parent\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (inserted && !this.options.dragoverBubble) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttarget = parent; // store last element\n\t\t\t\t\t}\n\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t\twhile (parent = parent.parentNode);\n\t\t\t\t}\n\t\t\t\tdragEl.parentNode[expando]._computeIsAligned(touchEvt);\n\n\t\t\t\t_unhideGhostForTarget();\n\t\t\t}\n\t\t},\n\n\n\t\t_onTouchMove: function (/**TouchEvent*/evt, forAutoScroll) {\n\t\t\tif (tapEvt) {\n\t\t\t\tvar\toptions = this.options,\n\t\t\t\t\tfallbackTolerance = options.fallbackTolerance,\n\t\t\t\t\tfallbackOffset = options.fallbackOffset,\n\t\t\t\t\ttouch = evt.touches ? evt.touches[0] : evt,\n\t\t\t\t\tmatrix = ghostEl && _matrix(ghostEl),\n\t\t\t\t\tscaleX = ghostEl && matrix && matrix.a,\n\t\t\t\t\tscaleY = ghostEl && matrix && matrix.d,\n\t\t\t\t\trelativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && _getRelativeScrollOffset(ghostRelativeParent),\n\t\t\t\t\tdx = ((touch.clientX - tapEvt.clientX)\n\t\t\t\t\t\t\t+ fallbackOffset.x) / (scaleX || 1)\n\t\t\t\t\t\t\t+ (relativeScrollOffset ? (relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0]) : 0) / (scaleX || 1),\n\t\t\t\t\tdy = ((touch.clientY - tapEvt.clientY)\n\t\t\t\t\t\t\t+ fallbackOffset.y) / (scaleY || 1)\n\t\t\t\t\t\t\t+ (relativeScrollOffset ? (relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1]) : 0) / (scaleY || 1),\n\t\t\t\t\ttranslate3d = evt.touches ? 'translate3d(' + dx + 'px,' + dy + 'px,0)' : 'translate(' + dx + 'px,' + dy + 'px)';\n\n\t\t\t\t// only set the status to dragging, when we are actually dragging\n\t\t\t\tif (!Sortable.active && !awaitingDragStarted) {\n\t\t\t\t\tif (fallbackTolerance &&\n\t\t\t\t\t\tmin(abs(touch.clientX - this._lastX), abs(touch.clientY - this._lastY)) < fallbackTolerance\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis._onDragStart(evt, true);\n\t\t\t\t}\n\n\t\t\t\t!forAutoScroll && this._handleAutoScroll(touch, true);\n\n\t\t\t\tmoved = true;\n\t\t\t\ttouchEvt = touch;\n\n\t\t\t\t_css(ghostEl, 'webkitTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'mozTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'msTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'transform', translate3d);\n\n\t\t\t\tevt.cancelable && evt.preventDefault();\n\t\t\t}\n\t\t},\n\n\t\t_appendGhost: function () {\n\t\t\t// Bug if using scale(): https://stackoverflow.com/questions/2637058\n\t\t\t// Not being adjusted for\n\t\t\tif (!ghostEl) {\n\t\t\t\tvar container = this.options.fallbackOnBody ? document.body : rootEl,\n\t\t\t\t\trect = _getRect(dragEl, true, container, !PositionGhostAbsolutely),\n\t\t\t\t\tcss = _css(dragEl),\n\t\t\t\t\toptions = this.options;\n\n\t\t\t\t// Position absolutely\n\t\t\t\tif (PositionGhostAbsolutely) {\n\t\t\t\t\t// Get relatively positioned parent\n\t\t\t\t\tghostRelativeParent = container;\n\n\t\t\t\t\twhile (\n\t\t\t\t\t\t_css(ghostRelativeParent, 'position') === 'static' &&\n\t\t\t\t\t\t_css(ghostRelativeParent, 'transform') === 'none' &&\n\t\t\t\t\t\tghostRelativeParent !== document\n\t\t\t\t\t) {\n\t\t\t\t\t\tghostRelativeParent = ghostRelativeParent.parentNode;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ghostRelativeParent !== document) {\n\t\t\t\t\t\tvar ghostRelativeParentRect = _getRect(ghostRelativeParent, true);\n\n\t\t\t\t\t\trect.top -= ghostRelativeParentRect.top;\n\t\t\t\t\t\trect.left -= ghostRelativeParentRect.left;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n\t\t\t\t\t\tif (ghostRelativeParent === document) ghostRelativeParent = _getWindowScrollingElement();\n\n\t\t\t\t\t\trect.top += ghostRelativeParent.scrollTop;\n\t\t\t\t\t\trect.left += ghostRelativeParent.scrollLeft;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tghostRelativeParent = _getWindowScrollingElement();\n\t\t\t\t\t}\n\t\t\t\t\tghostRelativeParentInitialScroll = _getRelativeScrollOffset(ghostRelativeParent);\n\t\t\t\t}\n\n\n\t\t\t\tghostEl = dragEl.cloneNode(true);\n\n\t\t\t\t_toggleClass(ghostEl, options.ghostClass, false);\n\t\t\t\t_toggleClass(ghostEl, options.fallbackClass, true);\n\t\t\t\t_toggleClass(ghostEl, options.dragClass, true);\n\n\t\t\t\t_css(ghostEl, 'box-sizing', 'border-box');\n\t\t\t\t_css(ghostEl, 'margin', 0);\n\t\t\t\t_css(ghostEl, 'top', rect.top);\n\t\t\t\t_css(ghostEl, 'left', rect.left);\n\t\t\t\t_css(ghostEl, 'width', rect.width);\n\t\t\t\t_css(ghostEl, 'height', rect.height);\n\t\t\t\t_css(ghostEl, 'opacity', '0.8');\n\t\t\t\t_css(ghostEl, 'position', (PositionGhostAbsolutely ? 'absolute' : 'fixed'));\n\t\t\t\t_css(ghostEl, 'zIndex', '100000');\n\t\t\t\t_css(ghostEl, 'pointerEvents', 'none');\n\n\t\t\t\tcontainer.appendChild(ghostEl);\n\t\t\t}\n\t\t},\n\n\t\t_onDragStart: function (/**Event*/evt, /**boolean*/fallback) {\n\t\t\tvar _this = this;\n\t\t\tvar dataTransfer = evt.dataTransfer;\n\t\t\tvar options = _this.options;\n\n\t\t\t// Setup clone\n\t\t\tcloneEl = _clone(dragEl);\n\n\t\t\tcloneEl.draggable = false;\n\t\t\tcloneEl.style['will-change'] = '';\n\n\t\t\tthis._hideClone();\n\n\t\t\t_toggleClass(cloneEl, _this.options.chosenClass, false);\n\n\n\t\t\t// #1143: IFrame support workaround\n\t\t\t_this._cloneId = _nextTick(function () {\n\t\t\t\tif (!_this.options.removeCloneOnHide) {\n\t\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\n\t\t\t\t}\n\t\t\t\t_dispatchEvent(_this, rootEl, 'clone', dragEl);\n\t\t\t});\n\n\n\t\t\t!fallback && _toggleClass(dragEl, options.dragClass, true);\n\n\t\t\t// Set proper drop events\n\t\t\tif (fallback) {\n\t\t\t\tignoreNextClick = true;\n\t\t\t\t_this._loopId = setInterval(_this._emulateDragOver, 50);\n\t\t\t} else {\n\t\t\t\t// Undo what was set in _prepareDragStart before drag started\n\t\t\t\t_off(document, 'mouseup', _this._onDrop);\n\t\t\t\t_off(document, 'touchend', _this._onDrop);\n\t\t\t\t_off(document, 'touchcancel', _this._onDrop);\n\n\t\t\t\tif (dataTransfer) {\n\t\t\t\t\tdataTransfer.effectAllowed = 'move';\n\t\t\t\t\toptions.setData && options.setData.call(_this, dataTransfer, dragEl);\n\t\t\t\t}\n\n\t\t\t\t_on(document, 'drop', _this);\n\n\t\t\t\t// #1276 fix:\n\t\t\t\t_css(dragEl, 'transform', 'translateZ(0)');\n\t\t\t}\n\n\t\t\tawaitingDragStarted = true;\n\n\t\t\t_this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n\t\t\t_on(document, 'selectstart', _this);\n\t\t\tif (Safari) {\n\t\t\t\t_css(document.body, 'user-select', 'none');\n\t\t\t}\n\t\t},\n\n\n\t\t// Returns true - if no further action is needed (either inserted or another condition)\n\t\t_onDragOver: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\ttarget = evt.target,\n\t\t\t\tdragRect,\n\t\t\t\ttargetRect,\n\t\t\t\trevert,\n\t\t\t\toptions = this.options,\n\t\t\t\tgroup = options.group,\n\t\t\t\tactiveSortable = Sortable.active,\n\t\t\t\tisOwner = (activeGroup === group),\n\t\t\t\tcanSort = options.sort,\n\t\t\t\t_this = this;\n\n\t\t\tif (_silent) return;\n\n\t\t\t// Return invocation when dragEl is inserted (or completed)\n\t\t\tfunction completed(insertion) {\n\t\t\t\tif (insertion) {\n\t\t\t\t\tif (isOwner) {\n\t\t\t\t\t\tactiveSortable._hideClone();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactiveSortable._showClone(_this);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (activeSortable) {\n\t\t\t\t\t\t// Set ghost class to new sortable's ghost class\n\t\t\t\t\t\t_toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n\t\t\t\t\t\t_toggleClass(dragEl, options.ghostClass, true);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (putSortable !== _this && _this !== Sortable.active) {\n\t\t\t\t\t\tputSortable = _this;\n\t\t\t\t\t} else if (_this === Sortable.active) {\n\t\t\t\t\t\tputSortable = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Animation\n\t\t\t\t\tdragRect && _this._animate(dragRect, dragEl);\n\t\t\t\t\ttarget && targetRect && _this._animate(targetRect, target);\n\t\t\t\t}\n\n\n\t\t\t\t// Null lastTarget if it is not inside a previously swapped element\n\t\t\t\tif ((target === dragEl && !dragEl.animated) || (target === el && !target.animated)) {\n\t\t\t\t\tlastTarget = null;\n\t\t\t\t}\n\n\t\t\t\t// no bubbling and not fallback\n\t\t\t\tif (!options.dragoverBubble && !evt.rootEl && target !== document) {\n\t\t\t\t\t_this._handleAutoScroll(evt);\n\t\t\t\t\tdragEl.parentNode[expando]._computeIsAligned(evt);\n\n\t\t\t\t\t// Do not detect for empty insert if already inserted\n\t\t\t\t\t!insertion && nearestEmptyInsertDetectEvent(evt);\n\t\t\t\t}\n\n\t\t\t\t!options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Call when dragEl has been inserted\n\t\t\tfunction changed() {\n\t\t\t\t_dispatchEvent(_this, rootEl, 'change', target, el, rootEl, oldIndex, _index(dragEl), oldDraggableIndex, _index(dragEl, options.draggable), evt);\n\t\t\t}\n\n\n\t\t\tif (evt.preventDefault !== void 0) {\n\t\t\t\tevt.cancelable && evt.preventDefault();\n\t\t\t}\n\n\n\t\t\tmoved = true;\n\n\t\t\ttarget = _closest(target, options.draggable, el, true);\n\n\t\t\t// target is dragEl or target is animated\n\t\t\tif (dragEl.contains(evt.target) || target.animated) {\n\t\t\t\treturn completed(false);\n\t\t\t}\n\n\t\t\tif (target !== dragEl) {\n\t\t\t\tignoreNextClick = false;\n\t\t\t}\n\n\t\t\tif (activeSortable && !options.disabled &&\n\t\t\t\t(isOwner\n\t\t\t\t\t? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n\t\t\t\t\t: (\n\t\t\t\t\t\tputSortable === this ||\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) &&\n\t\t\t\t\t\t\tgroup.checkPut(this, activeSortable, dragEl, evt)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tvar axis = this._getDirection(evt, target);\n\n\t\t\t\tdragRect = _getRect(dragEl);\n\n\t\t\t\tif (revert) {\n\t\t\t\t\tthis._hideClone();\n\t\t\t\t\tparentEl = rootEl; // actualization\n\n\t\t\t\t\tif (nextEl) {\n\t\t\t\t\t\trootEl.insertBefore(dragEl, nextEl);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trootEl.appendChild(dragEl);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn completed(true);\n\t\t\t\t}\n\n\t\t\t\tvar elLastChild = _lastChild(el);\n\n\t\t\t\tif (!elLastChild || _ghostIsLast(evt, axis, el) && !elLastChild.animated) {\n\t\t\t\t\t// assign target only if condition is true\n\t\t\t\t\tif (elLastChild && el === evt.target) {\n\t\t\t\t\t\ttarget = elLastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (target) {\n\t\t\t\t\t\ttargetRect = _getRect(target);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isOwner) {\n\t\t\t\t\t\tactiveSortable._hideClone();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactiveSortable._showClone(this);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\tparentEl = el; // actualization\n\t\t\t\t\t\trealDragElRect = null;\n\n\t\t\t\t\t\tchanged();\n\t\t\t\t\t\treturn completed(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (target && target !== dragEl && target.parentNode === el) {\n\t\t\t\t\tvar direction = 0,\n\t\t\t\t\t\ttargetBeforeFirstSwap,\n\t\t\t\t\t\taligned = target.sortableMouseAligned,\n\t\t\t\t\t\tdifferentLevel = dragEl.parentNode !== el,\n\t\t\t\t\t\tside1 = axis === 'vertical' ? 'top' : 'left',\n\t\t\t\t\t\tscrolledPastTop = _isScrolledPast(target, 'top') || _isScrolledPast(dragEl, 'top'),\n\t\t\t\t\t\tscrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n\n\t\t\t\t\tif (lastTarget !== target) {\n\t\t\t\t\t\tlastMode = null;\n\t\t\t\t\t\ttargetBeforeFirstSwap = _getRect(target)[side1];\n\t\t\t\t\t\tpastFirstInvertThresh = false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Reference: https://www.lucidchart.com/documents/view/10fa0e93-e362-4126-aca2-b709ee56bd8b/0\n\t\t\t\t\tif (\n\t\t\t\t\t\t_isElInRowColumn(dragEl, target, axis) && aligned ||\n\t\t\t\t\t\tdifferentLevel ||\n\t\t\t\t\t\tscrolledPastTop ||\n\t\t\t\t\t\toptions.invertSwap ||\n\t\t\t\t\t\tlastMode === 'insert' ||\n\t\t\t\t\t\t// Needed, in the case that we are inside target and inserted because not aligned... aligned will stay false while inside\n\t\t\t\t\t\t// and lastMode will change to 'insert', but we must swap\n\t\t\t\t\t\tlastMode === 'swap'\n\t\t\t\t\t) {\n\t\t\t\t\t\t// New target that we will be inside\n\t\t\t\t\t\tif (lastMode !== 'swap') {\n\t\t\t\t\t\t\tisCircumstantialInvert = options.invertSwap || differentLevel;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdirection = _getSwapDirection(evt, target, axis,\n\t\t\t\t\t\t\toptions.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold,\n\t\t\t\t\t\t\tisCircumstantialInvert,\n\t\t\t\t\t\t\tlastTarget === target);\n\t\t\t\t\t\tlastMode = 'swap';\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Insert at position\n\t\t\t\t\t\tdirection = _getInsertDirection(target);\n\t\t\t\t\t\tlastMode = 'insert';\n\t\t\t\t\t}\n\t\t\t\t\tif (direction === 0) return completed(false);\n\n\t\t\t\t\trealDragElRect = null;\n\t\t\t\t\tlastTarget = target;\n\n\t\t\t\t\tlastDirection = direction;\n\n\t\t\t\t\ttargetRect = _getRect(target);\n\n\t\t\t\t\tvar nextSibling = target.nextElementSibling,\n\t\t\t\t\t\tafter = false;\n\n\t\t\t\t\tafter = direction === 1;\n\n\t\t\t\t\tvar moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n\t\t\t\t\tif (moveVector !== false) {\n\t\t\t\t\t\tif (moveVector === 1 || moveVector === -1) {\n\t\t\t\t\t\t\tafter = (moveVector === 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_silent = true;\n\t\t\t\t\t\tsetTimeout(_unsilent, 30);\n\n\t\t\t\t\t\tif (isOwner) {\n\t\t\t\t\t\t\tactiveSortable._hideClone();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tactiveSortable._showClone(this);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (after && !nextSibling) {\n\t\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttarget.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Undo chrome's scroll adjustment\n\t\t\t\t\t\tif (scrolledPastTop) {\n\t\t\t\t\t\t\t_scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparentEl = dragEl.parentNode; // actualization\n\n\t\t\t\t\t\t// must be done before animation\n\t\t\t\t\t\tif (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n\t\t\t\t\t\t\ttargetMoveDistance = abs(targetBeforeFirstSwap - _getRect(target)[side1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchanged();\n\n\t\t\t\t\t\treturn completed(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (el.contains(dragEl)) {\n\t\t\t\t\treturn completed(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\t_animate: function (prevRect, target) {\n\t\t\tvar ms = this.options.animation;\n\n\t\t\tif (ms) {\n\t\t\t\tvar currentRect = _getRect(target);\n\n\t\t\t\tif (target === dragEl) {\n\t\t\t\t\trealDragElRect = currentRect;\n\t\t\t\t}\n\n\t\t\t\tif (prevRect.nodeType === 1) {\n\t\t\t\t\tprevRect = _getRect(prevRect);\n\t\t\t\t}\n\n\t\t\t\t// Check if actually moving position\n\t\t\t\tif ((prevRect.left + prevRect.width / 2) !== (currentRect.left + currentRect.width / 2)\n\t\t\t\t\t|| (prevRect.top + prevRect.height / 2) !== (currentRect.top + currentRect.height / 2)\n\t\t\t\t) {\n\t\t\t\t\tvar matrix = _matrix(this.el),\n\t\t\t\t\t\tscaleX = matrix && matrix.a,\n\t\t\t\t\t\tscaleY = matrix && matrix.d;\n\n\t\t\t\t\t_css(target, 'transition', 'none');\n\t\t\t\t\t_css(target, 'transform', 'translate3d('\n\t\t\t\t\t\t+ (prevRect.left - currentRect.left) / (scaleX ? scaleX : 1) + 'px,'\n\t\t\t\t\t\t+ (prevRect.top - currentRect.top) / (scaleY ? scaleY : 1) + 'px,0)'\n\t\t\t\t\t);\n\n\t\t\t\t\tthis._repaint(target);\n\t\t\t\t\t_css(target, 'transition', 'transform ' + ms + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n\t\t\t\t\t_css(target, 'transform', 'translate3d(0,0,0)');\n\t\t\t\t}\n\n\t\t\t\t(typeof target.animated === 'number') && clearTimeout(target.animated);\n\t\t\t\ttarget.animated = setTimeout(function () {\n\t\t\t\t\t_css(target, 'transition', '');\n\t\t\t\t\t_css(target, 'transform', '');\n\t\t\t\t\ttarget.animated = false;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t},\n\n\t\t_repaint: function(target) {\n\t\t\treturn target.offsetWidth;\n\t\t},\n\n\t\t_offMoveEvents: function() {\n\t\t\t_off(document, 'touchmove', this._onTouchMove);\n\t\t\t_off(document, 'pointermove', this._onTouchMove);\n\t\t\t_off(document, 'dragover', nearestEmptyInsertDetectEvent);\n\t\t\t_off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n\t\t\t_off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n\t\t},\n\n\t\t_offUpEvents: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\n\t\t\t_off(ownerDocument, 'mouseup', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchend', this._onDrop);\n\t\t\t_off(ownerDocument, 'pointerup', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchcancel', this._onDrop);\n\t\t\t_off(document, 'selectstart', this);\n\t\t},\n\n\t\t_onDrop: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\toptions = this.options;\n\t\t\tawaitingDragStarted = false;\n\t\t\tscrolling = false;\n\t\t\tisCircumstantialInvert = false;\n\t\t\tpastFirstInvertThresh = false;\n\n\t\t\tclearInterval(this._loopId);\n\n\t\t\tclearInterval(pointerElemChangedInterval);\n\t\t\t_clearAutoScrolls();\n\t\t\t_cancelThrottle();\n\n\t\t\tclearTimeout(this._dragStartTimer);\n\n\t\t\t_cancelNextTick(this._cloneId);\n\t\t\t_cancelNextTick(this._dragStartId);\n\n\t\t\t// Unbind events\n\t\t\t_off(document, 'mousemove', this._onTouchMove);\n\n\n\t\t\tif (this.nativeDraggable) {\n\t\t\t\t_off(document, 'drop', this);\n\t\t\t\t_off(el, 'dragstart', this._onDragStart);\n\t\t\t\t_off(document, 'dragover', this._handleAutoScroll);\n\t\t\t\t_off(document, 'dragover', _checkAlignment);\n\t\t\t}\n\n\t\t\tif (Safari) {\n\t\t\t\t_css(document.body, 'user-select', '');\n\t\t\t}\n\n\t\t\tthis._offMoveEvents();\n\t\t\tthis._offUpEvents();\n\n\t\t\tif (evt) {\n\t\t\t\tif (moved) {\n\t\t\t\t\tevt.cancelable && evt.preventDefault();\n\t\t\t\t\t!options.dropBubble && evt.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n\t\t\t\tif (rootEl === parentEl || (putSortable && putSortable.lastPutMode !== 'clone')) {\n\t\t\t\t\t// Remove clone\n\t\t\t\t\tcloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n\t\t\t\t}\n\n\t\t\t\tif (dragEl) {\n\t\t\t\t\tif (this.nativeDraggable) {\n\t\t\t\t\t\t_off(dragEl, 'dragend', this);\n\t\t\t\t\t}\n\n\t\t\t\t\t_disableDraggable(dragEl);\n\t\t\t\t\tdragEl.style['will-change'] = '';\n\n\t\t\t\t\t// Remove class's\n\t\t\t\t\t_toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n\t\t\t\t\t_toggleClass(dragEl, this.options.chosenClass, false);\n\n\t\t\t\t\t// Drag stop event\n\t\t\t\t\t_dispatchEvent(this, rootEl, 'unchoose', dragEl, parentEl, rootEl, oldIndex, null, oldDraggableIndex, null, evt);\n\n\t\t\t\t\tif (rootEl !== parentEl) {\n\t\t\t\t\t\tnewIndex = _index(dragEl);\n\t\t\t\t\t\tnewDraggableIndex = _index(dragEl, options.draggable);\n\n\t\t\t\t\t\tif (newIndex >= 0) {\n\t\t\t\t\t\t\t// Add event\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'add', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\n\t\t\t\t\t\t\t// Remove event\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'remove', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\n\t\t\t\t\t\t\t// drag from one list and drop into another\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tputSortable && putSortable.save();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (dragEl.nextSibling !== nextEl) {\n\t\t\t\t\t\t\t// Get the index of the dragged element within its parent\n\t\t\t\t\t\t\tnewIndex = _index(dragEl);\n\t\t\t\t\t\t\tnewDraggableIndex = _index(dragEl, options.draggable);\n\n\t\t\t\t\t\t\tif (newIndex >= 0) {\n\t\t\t\t\t\t\t\t// drag & drop within the same list\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'update', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Sortable.active) {\n\t\t\t\t\t\t/* jshint eqnull:true */\n\t\t\t\t\t\tif (newIndex == null || newIndex === -1) {\n\t\t\t\t\t\t\tnewIndex = oldIndex;\n\t\t\t\t\t\t\tnewDraggableIndex = oldDraggableIndex;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'end', dragEl, parentEl, rootEl, oldIndex, newIndex, oldDraggableIndex, newDraggableIndex, evt);\n\n\t\t\t\t\t\t// Save sorting\n\t\t\t\t\t\tthis.save();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tthis._nulling();\n\t\t},\n\n\t\t_nulling: function() {\n\t\t\trootEl =\n\t\t\tdragEl =\n\t\t\tparentEl =\n\t\t\tghostEl =\n\t\t\tnextEl =\n\t\t\tcloneEl =\n\t\t\tlastDownEl =\n\n\t\t\tscrollEl =\n\t\t\tscrollParentEl =\n\t\t\tautoScrolls.length =\n\n\t\t\tpointerElemChangedInterval =\n\t\t\tlastPointerElemX =\n\t\t\tlastPointerElemY =\n\n\t\t\ttapEvt =\n\t\t\ttouchEvt =\n\n\t\t\tmoved =\n\t\t\tnewIndex =\n\t\t\toldIndex =\n\n\t\t\tlastTarget =\n\t\t\tlastDirection =\n\n\t\t\trealDragElRect =\n\n\t\t\tputSortable =\n\t\t\tactiveGroup =\n\t\t\tSortable.active = null;\n\n\t\t\tsavedInputChecked.forEach(function (el) {\n\t\t\t\tel.checked = true;\n\t\t\t});\n\n\t\t\tsavedInputChecked.length = 0;\n\t\t},\n\n\t\thandleEvent: function (/**Event*/evt) {\n\t\t\tswitch (evt.type) {\n\t\t\t\tcase 'drop':\n\t\t\t\tcase 'dragend':\n\t\t\t\t\tthis._onDrop(evt);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'dragenter':\n\t\t\t\tcase 'dragover':\n\t\t\t\t\tif (dragEl) {\n\t\t\t\t\t\tthis._onDragOver(evt);\n\t\t\t\t\t\t_globalDragOver(evt);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'selectstart':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Serializes the item into an array of string.\n\t\t * @returns {String[]}\n\t\t */\n\t\ttoArray: function () {\n\t\t\tvar order = [],\n\t\t\t\tel,\n\t\t\t\tchildren = this.el.children,\n\t\t\t\ti = 0,\n\t\t\t\tn = children.length,\n\t\t\t\toptions = this.options;\n\n\t\t\tfor (; i < n; i++) {\n\t\t\t\tel = children[i];\n\t\t\t\tif (_closest(el, options.draggable, this.el, false)) {\n\t\t\t\t\torder.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn order;\n\t\t},\n\n\n\t\t/**\n\t\t * Sorts the elements according to the array.\n\t\t * @param {String[]} order order of the items\n\t\t */\n\t\tsort: function (order) {\n\t\t\tvar items = {}, rootEl = this.el;\n\n\t\t\tthis.toArray().forEach(function (id, i) {\n\t\t\t\tvar el = rootEl.children[i];\n\n\t\t\t\tif (_closest(el, this.options.draggable, rootEl, false)) {\n\t\t\t\t\titems[id] = el;\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\torder.forEach(function (id) {\n\t\t\t\tif (items[id]) {\n\t\t\t\t\trootEl.removeChild(items[id]);\n\t\t\t\t\trootEl.appendChild(items[id]);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n\t\t * Save the current sorting\n\t\t */\n\t\tsave: function () {\n\t\t\tvar store = this.options.store;\n\t\t\tstore && store.set && store.set(this);\n\t\t},\n\n\n\t\t/**\n\t\t * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n\t\t * @param {HTMLElement} el\n\t\t * @param {String} [selector] default: `options.draggable`\n\t\t * @returns {HTMLElement|null}\n\t\t */\n\t\tclosest: function (el, selector) {\n\t\t\treturn _closest(el, selector || this.options.draggable, this.el, false);\n\t\t},\n\n\n\t\t/**\n\t\t * Set/get option\n\t\t * @param {string} name\n\t\t * @param {*} [value]\n\t\t * @returns {*}\n\t\t */\n\t\toption: function (name, value) {\n\t\t\tvar options = this.options;\n\n\t\t\tif (value === void 0) {\n\t\t\t\treturn options[name];\n\t\t\t} else {\n\t\t\t\toptions[name] = value;\n\n\t\t\t\tif (name === 'group') {\n\t\t\t\t\t_prepareGroup(options);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Destroy\n\t\t */\n\t\tdestroy: function () {\n\t\t\tvar el = this.el;\n\n\t\t\tel[expando] = null;\n\n\t\t\t_off(el, 'mousedown', this._onTapStart);\n\t\t\t_off(el, 'touchstart', this._onTapStart);\n\t\t\t_off(el, 'pointerdown', this._onTapStart);\n\n\t\t\tif (this.nativeDraggable) {\n\t\t\t\t_off(el, 'dragover', this);\n\t\t\t\t_off(el, 'dragenter', this);\n\t\t\t}\n\t\t\t// Remove draggable attributes\n\t\t\tArray.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n\t\t\t\tel.removeAttribute('draggable');\n\t\t\t});\n\n\t\t\tthis._onDrop();\n\n\t\t\tsortables.splice(sortables.indexOf(this.el), 1);\n\n\t\t\tthis.el = el = null;\n\t\t},\n\n\t\t_hideClone: function() {\n\t\t\tif (!cloneEl.cloneHidden) {\n\t\t\t\t_css(cloneEl, 'display', 'none');\n\t\t\t\tcloneEl.cloneHidden = true;\n\t\t\t\tif (cloneEl.parentNode && this.options.removeCloneOnHide) {\n\t\t\t\t\tcloneEl.parentNode.removeChild(cloneEl);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_showClone: function(putSortable) {\n\t\t\tif (putSortable.lastPutMode !== 'clone') {\n\t\t\t\tthis._hideClone();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (cloneEl.cloneHidden) {\n\t\t\t\t// show clone at dragEl or original position\n\t\t\t\tif (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n\t\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\n\t\t\t\t} else if (nextEl) {\n\t\t\t\t\trootEl.insertBefore(cloneEl, nextEl);\n\t\t\t\t} else {\n\t\t\t\t\trootEl.appendChild(cloneEl);\n\t\t\t\t}\n\n\t\t\t\tif (this.options.group.revertClone) {\n\t\t\t\t\tthis._animate(dragEl, cloneEl);\n\t\t\t\t}\n\t\t\t\t_css(cloneEl, 'display', '');\n\t\t\t\tcloneEl.cloneHidden = false;\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction _closest(/**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n\t\tif (el) {\n\t\t\tctx = ctx || document;\n\n\t\t\tdo {\n\t\t\t\tif (\n\t\t\t\t\tselector != null &&\n\t\t\t\t\t(\n\t\t\t\t\t\tselector[0] === '>' ?\n\t\t\t\t\t\tel.parentNode === ctx && _matches(el, selector) :\n\t\t\t\t\t\t_matches(el, selector)\n\t\t\t\t\t) ||\n\t\t\t\t\tincludeCTX && el === ctx\n\t\t\t\t) {\n\t\t\t\t\treturn el;\n\t\t\t\t}\n\n\t\t\t\tif (el === ctx) break;\n\t\t\t\t/* jshint boss:true */\n\t\t\t} while (el = _getParentOrHost(el));\n\t\t}\n\n\t\treturn null;\n\t}\n\n\n\tfunction _getParentOrHost(el) {\n\t\treturn (el.host && el !== document && el.host.nodeType)\n\t\t\t? el.host\n\t\t\t: el.parentNode;\n\t}\n\n\n\tfunction _globalDragOver(/**Event*/evt) {\n\t\tif (evt.dataTransfer) {\n\t\t\tevt.dataTransfer.dropEffect = 'move';\n\t\t}\n\t\tevt.cancelable && evt.preventDefault();\n\t}\n\n\n\tfunction _on(el, event, fn) {\n\t\tel.addEventListener(event, fn, IE11OrLess ? false : captureMode);\n\t}\n\n\n\tfunction _off(el, event, fn) {\n\t\tel.removeEventListener(event, fn, IE11OrLess ? false : captureMode);\n\t}\n\n\n\tfunction _toggleClass(el, name, state) {\n\t\tif (el && name) {\n\t\t\tif (el.classList) {\n\t\t\t\tel.classList[state ? 'add' : 'remove'](name);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n\t\t\t\tel.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction _css(el, prop, val) {\n\t\tvar style = el && el.style;\n\n\t\tif (style) {\n\t\t\tif (val === void 0) {\n\t\t\t\tif (document.defaultView && document.defaultView.getComputedStyle) {\n\t\t\t\t\tval = document.defaultView.getComputedStyle(el, '');\n\t\t\t\t}\n\t\t\t\telse if (el.currentStyle) {\n\t\t\t\t\tval = el.currentStyle;\n\t\t\t\t}\n\n\t\t\t\treturn prop === void 0 ? val : val[prop];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!(prop in style) && prop.indexOf('webkit') === -1) {\n\t\t\t\t\tprop = '-webkit-' + prop;\n\t\t\t\t}\n\n\t\t\t\tstyle[prop] = val + (typeof val === 'string' ? '' : 'px');\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _matrix(el) {\n\t\tvar appliedTransforms = '';\n\t\tdo {\n\t\t\tvar transform = _css(el, 'transform');\n\n\t\t\tif (transform && transform !== 'none') {\n\t\t\t\tappliedTransforms = transform + ' ' + appliedTransforms;\n\t\t\t}\n\t\t\t/* jshint boss:true */\n\t\t} while (el = el.parentNode);\n\n\t\tif (window.DOMMatrix) {\n\t\t\treturn new DOMMatrix(appliedTransforms);\n\t\t} else if (window.WebKitCSSMatrix) {\n\t\t\treturn new WebKitCSSMatrix(appliedTransforms);\n\t\t} else if (window.CSSMatrix) {\n\t\t\treturn new CSSMatrix(appliedTransforms);\n\t\t}\n\t}\n\n\n\tfunction _find(ctx, tagName, iterator) {\n\t\tif (ctx) {\n\t\t\tvar list = ctx.getElementsByTagName(tagName), i = 0, n = list.length;\n\n\t\t\tif (iterator) {\n\t\t\t\tfor (; i < n; i++) {\n\t\t\t\t\titerator(list[i], i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\n\n\tfunction _dispatchEvent(\n\t\tsortable, rootEl, name,\n\t\ttargetEl, toEl, fromEl,\n\t\tstartIndex, newIndex,\n\t\tstartDraggableIndex, newDraggableIndex,\n\t\toriginalEvt\n\t) {\n\t\tsortable = (sortable || rootEl[expando]);\n\t\tvar evt,\n\t\t\toptions = sortable.options,\n\t\t\tonName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n\t\t// Support for new CustomEvent feature\n\t\tif (window.CustomEvent && !IE11OrLess && !Edge) {\n\t\t\tevt = new CustomEvent(name, {\n\t\t\t\tbubbles: true,\n\t\t\t\tcancelable: true\n\t\t\t});\n\t\t} else {\n\t\t\tevt = document.createEvent('Event');\n\t\t\tevt.initEvent(name, true, true);\n\t\t}\n\n\t\tevt.to = toEl || rootEl;\n\t\tevt.from = fromEl || rootEl;\n\t\tevt.item = targetEl || rootEl;\n\t\tevt.clone = cloneEl;\n\n\t\tevt.oldIndex = startIndex;\n\t\tevt.newIndex = newIndex;\n\n\t\tevt.oldDraggableIndex = startDraggableIndex;\n\t\tevt.newDraggableIndex = newDraggableIndex;\n\n\t\tevt.originalEvent = originalEvt;\n\t\tevt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n\t\tif (rootEl) {\n\t\t\trootEl.dispatchEvent(evt);\n\t\t}\n\n\t\tif (options[onName]) {\n\t\t\toptions[onName].call(sortable, evt);\n\t\t}\n\t}\n\n\n\tfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvt, willInsertAfter) {\n\t\tvar evt,\n\t\t\tsortable = fromEl[expando],\n\t\t\tonMoveFn = sortable.options.onMove,\n\t\t\tretVal;\n\t\t// Support for new CustomEvent feature\n\t\tif (window.CustomEvent && !IE11OrLess && !Edge) {\n\t\t\tevt = new CustomEvent('move', {\n\t\t\t\tbubbles: true,\n\t\t\t\tcancelable: true\n\t\t\t});\n\t\t} else {\n\t\t\tevt = document.createEvent('Event');\n\t\t\tevt.initEvent('move', true, true);\n\t\t}\n\n\t\tevt.to = toEl;\n\t\tevt.from = fromEl;\n\t\tevt.dragged = dragEl;\n\t\tevt.draggedRect = dragRect;\n\t\tevt.related = targetEl || toEl;\n\t\tevt.relatedRect = targetRect || _getRect(toEl);\n\t\tevt.willInsertAfter = willInsertAfter;\n\n\t\tevt.originalEvent = originalEvt;\n\n\t\tfromEl.dispatchEvent(evt);\n\n\t\tif (onMoveFn) {\n\t\t\tretVal = onMoveFn.call(sortable, evt, originalEvt);\n\t\t}\n\n\t\treturn retVal;\n\t}\n\n\tfunction _disableDraggable(el) {\n\t\tel.draggable = false;\n\t}\n\n\tfunction _unsilent() {\n\t\t_silent = false;\n\t}\n\n\t/**\n\t * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n\t * and non-draggable elements\n\t * @param {HTMLElement} el The parent element\n\t * @param {Number} childNum The index of the child\n\t * @param {Object} options Parent Sortable's options\n\t * @return {HTMLElement} The child at index childNum, or null if not found\n\t */\n\tfunction _getChild(el, childNum, options) {\n\t\tvar currentChild = 0,\n\t\t\ti = 0,\n\t\t\tchildren = el.children;\n\n\t\twhile (i < children.length) {\n\t\t\tif (\n\t\t\t\tchildren[i].style.display !== 'none' &&\n\t\t\t\tchildren[i] !== ghostEl &&\n\t\t\t\tchildren[i] !== dragEl &&\n\t\t\t\t_closest(children[i], options.draggable, el, false)\n\t\t\t) {\n\t\t\t\tif (currentChild === childNum) {\n\t\t\t\t\treturn children[i];\n\t\t\t\t}\n\t\t\t\tcurrentChild++;\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n\t * @param {HTMLElement} el Parent element\n\t * @return {HTMLElement} The last child, ignoring ghostEl\n\t */\n\tfunction _lastChild(el) {\n\t\tvar last = el.lastElementChild;\n\n\t\twhile (last && (last === ghostEl || _css(last, 'display') === 'none')) {\n\t\t\tlast = last.previousElementSibling;\n\t\t}\n\n\t\treturn last || null;\n\t}\n\n\tfunction _ghostIsLast(evt, axis, el) {\n\t\tvar elRect = _getRect(_lastChild(el)),\n\t\t\tmouseOnAxis = axis === 'vertical' ? evt.clientY : evt.clientX,\n\t\t\tmouseOnOppAxis = axis === 'vertical' ? evt.clientX : evt.clientY,\n\t\t\ttargetS2 = axis === 'vertical' ? elRect.bottom : elRect.right,\n\t\t\ttargetS1Opp = axis === 'vertical' ? elRect.left : elRect.top,\n\t\t\ttargetS2Opp = axis === 'vertical' ? elRect.right : elRect.bottom,\n\t\t\tspacer = 10;\n\n\t\treturn (\n\t\t\taxis === 'vertical' ?\n\t\t\t\t(mouseOnOppAxis > targetS2Opp + spacer || mouseOnOppAxis <= targetS2Opp && mouseOnAxis > targetS2 && mouseOnOppAxis >= targetS1Opp) :\n\t\t\t\t(mouseOnAxis > targetS2 && mouseOnOppAxis > targetS1Opp || mouseOnAxis <= targetS2 && mouseOnOppAxis > targetS2Opp + spacer)\n\t\t);\n\t}\n\n\tfunction _getSwapDirection(evt, target, axis, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n\t\tvar targetRect = _getRect(target),\n\t\t\tmouseOnAxis = axis === 'vertical' ? evt.clientY : evt.clientX,\n\t\t\ttargetLength = axis === 'vertical' ? targetRect.height : targetRect.width,\n\t\t\ttargetS1 = axis === 'vertical' ? targetRect.top : targetRect.left,\n\t\t\ttargetS2 = axis === 'vertical' ? targetRect.bottom : targetRect.right,\n\t\t\tdragRect = _getRect(dragEl),\n\t\t\tinvert = false;\n\n\n\t\tif (!invertSwap) {\n\t\t\t// Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n\t\t\tif (isLastTarget && targetMoveDistance < targetLength * swapThreshold) { // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n\t\t\t\t// check if past first invert threshold on side opposite of lastDirection\n\t\t\t\tif (!pastFirstInvertThresh &&\n\t\t\t\t\t(lastDirection === 1 ?\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tmouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2\n\t\t\t\t\t\t) :\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tmouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\t// past first invert threshold, do not restrict inverted threshold to dragEl shadow\n\t\t\t\t\tpastFirstInvertThresh = true;\n\t\t\t\t}\n\n\t\t\t\tif (!pastFirstInvertThresh) {\n\t\t\t\t\tvar dragS1 = axis === 'vertical' ? dragRect.top : dragRect.left,\n\t\t\t\t\t\tdragS2 = axis === 'vertical' ? dragRect.bottom : dragRect.right;\n\t\t\t\t\t// dragEl shadow (target move distance shadow)\n\t\t\t\t\tif (\n\t\t\t\t\t\tlastDirection === 1 ?\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tmouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n\t\t\t\t\t\t) :\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\tmouseOnAxis > targetS2 - targetMoveDistance\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn lastDirection * -1;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tinvert = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Regular\n\t\t\t\tif (\n\t\t\t\t\tmouseOnAxis > targetS1 + (targetLength * (1 - swapThreshold) / 2) &&\n\t\t\t\t\tmouseOnAxis < targetS2 - (targetLength * (1 - swapThreshold) / 2)\n\t\t\t\t) {\n\t\t\t\t\treturn _getInsertDirection(target);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinvert = invert || invertSwap;\n\n\t\tif (invert) {\n\t\t\t// Invert of regular\n\t\t\tif (\n\t\t\t\tmouseOnAxis < targetS1 + (targetLength * invertedSwapThreshold / 2) ||\n\t\t\t\tmouseOnAxis > targetS2 - (targetLength * invertedSwapThreshold / 2)\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn ((mouseOnAxis > targetS1 + targetLength / 2) ? 1 : -1);\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Gets the direction dragEl must be swapped relative to target in order to make it\n\t * seem that dragEl has been \"inserted\" into that element's position\n\t * @param {HTMLElement} target The target whose position dragEl is being inserted at\n\t * @return {Number} Direction dragEl must be swapped\n\t */\n\tfunction _getInsertDirection(target) {\n\t\tvar dragElIndex = _index(dragEl),\n\t\t\ttargetIndex = _index(target);\n\n\t\tif (dragElIndex < targetIndex) {\n\t\t\treturn 1;\n\t\t} else {\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\n\t/**\n\t * Generate id\n\t * @param {HTMLElement} el\n\t * @returns {String}\n\t * @private\n\t */\n\tfunction _generateId(el) {\n\t\tvar str = el.tagName + el.className + el.src + el.href + el.textContent,\n\t\t\ti = str.length,\n\t\t\tsum = 0;\n\n\t\twhile (i--) {\n\t\t\tsum += str.charCodeAt(i);\n\t\t}\n\n\t\treturn sum.toString(36);\n\t}\n\n\t/**\n\t * Returns the index of an element within its parent for a selected set of\n\t * elements\n\t * @param {HTMLElement} el\n\t * @param {selector} selector\n\t * @return {number}\n\t */\n\tfunction _index(el, selector) {\n\t\tvar index = 0;\n\n\t\tif (!el || !el.parentNode) {\n\t\t\treturn -1;\n\t\t}\n\n\t\twhile (el && (el = el.previousElementSibling)) {\n\t\t\tif ((el.nodeName.toUpperCase() !== 'TEMPLATE') && el !== cloneEl && (!selector || _matches(el, selector))) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\n\t\treturn index;\n\t}\n\n\tfunction _matches(/**HTMLElement*/el, /**String*/selector) {\n\t\tif (!selector) return;\n\n\t\tselector[0] === '>' && (selector = selector.substring(1));\n\n\t\tif (el) {\n\t\t\ttry {\n\t\t\t\tif (el.matches) {\n\t\t\t\t\treturn el.matches(selector);\n\t\t\t\t} else if (el.msMatchesSelector) {\n\t\t\t\t\treturn el.msMatchesSelector(selector);\n\t\t\t\t} else if (el.webkitMatchesSelector) {\n\t\t\t\t\treturn el.webkitMatchesSelector(selector);\n\t\t\t\t}\n\t\t\t} catch(_) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tvar _throttleTimeout;\n\tfunction _throttle(callback, ms) {\n\t\treturn function () {\n\t\t\tif (!_throttleTimeout) {\n\t\t\t\tvar args = arguments,\n\t\t\t\t\t_this = this;\n\n\t\t\t\t_throttleTimeout = setTimeout(function () {\n\t\t\t\t\tif (args.length === 1) {\n\t\t\t\t\t\tcallback.call(_this, args[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback.apply(_this, args);\n\t\t\t\t\t}\n\n\t\t\t\t\t_throttleTimeout = void 0;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction _cancelThrottle() {\n\t\tclearTimeout(_throttleTimeout);\n\t\t_throttleTimeout = void 0;\n\t}\n\n\tfunction _extend(dst, src) {\n\t\tif (dst && src) {\n\t\t\tfor (var key in src) {\n\t\t\t\tif (src.hasOwnProperty(key)) {\n\t\t\t\t\tdst[key] = src[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn dst;\n\t}\n\n\tfunction _clone(el) {\n\t\tif (Polymer && Polymer.dom) {\n\t\t\treturn Polymer.dom(el).cloneNode(true);\n\t\t}\n\t\telse if ($) {\n\t\t\treturn $(el).clone(true)[0];\n\t\t}\n\t\telse {\n\t\t\treturn el.cloneNode(true);\n\t\t}\n\t}\n\n\tfunction _saveInputCheckedState(root) {\n\t\tsavedInputChecked.length = 0;\n\n\t\tvar inputs = root.getElementsByTagName('input');\n\t\tvar idx = inputs.length;\n\n\t\twhile (idx--) {\n\t\t\tvar el = inputs[idx];\n\t\t\tel.checked && savedInputChecked.push(el);\n\t\t}\n\t}\n\n\tfunction _nextTick(fn) {\n\t\treturn setTimeout(fn, 0);\n\t}\n\n\tfunction _cancelNextTick(id) {\n\t\treturn clearTimeout(id);\n\t}\n\n\n\t/**\n\t * Returns the \"bounding client rect\" of given element\n\t * @param {HTMLElement} el The element whose boundingClientRect is wanted\n\t * @param {[HTMLElement]} container the parent the element will be placed in\n\t * @param {[Boolean]} adjustForTransform Whether the rect should compensate for parent's transform\n\t * @return {Object} The boundingClientRect of el\n\t */\n\tfunction _getRect(el, adjustForTransform, container, adjustForFixed) {\n\t\tif (!el.getBoundingClientRect && el !== win) return;\n\n\t\tvar elRect,\n\t\t\ttop,\n\t\t\tleft,\n\t\t\tbottom,\n\t\t\tright,\n\t\t\theight,\n\t\t\twidth;\n\n\t\tif (el !== win && el !== _getWindowScrollingElement()) {\n\t\t\telRect = el.getBoundingClientRect();\n\t\t\ttop = elRect.top;\n\t\t\tleft = elRect.left;\n\t\t\tbottom = elRect.bottom;\n\t\t\tright = elRect.right;\n\t\t\theight = elRect.height;\n\t\t\twidth = elRect.width;\n\t\t} else {\n\t\t\ttop = 0;\n\t\t\tleft = 0;\n\t\t\tbottom = window.innerHeight;\n\t\t\tright = window.innerWidth;\n\t\t\theight = window.innerHeight;\n\t\t\twidth = window.innerWidth;\n\t\t}\n\n\t\tif (adjustForFixed && el !== win) {\n\t\t\t// Adjust for translate()\n\t\t\tcontainer = container || el.parentNode;\n\n\t\t\t// solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n\t\t\t// Not needed on <= IE11\n\t\t\tif (!IE11OrLess) {\n\t\t\t\tdo {\n\t\t\t\t\tif (container && container.getBoundingClientRect && _css(container, 'transform') !== 'none') {\n\t\t\t\t\t\tvar containerRect = container.getBoundingClientRect();\n\n\t\t\t\t\t\t// Set relative to edges of padding box of container\n\t\t\t\t\t\ttop -= containerRect.top + parseInt(_css(container, 'border-top-width'));\n\t\t\t\t\t\tleft -= containerRect.left + parseInt(_css(container, 'border-left-width'));\n\t\t\t\t\t\tbottom = top + elRect.height;\n\t\t\t\t\t\tright = left + elRect.width;\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t} while (container = container.parentNode);\n\t\t\t}\n\t\t}\n\n\t\tif (adjustForTransform && el !== win) {\n\t\t\t// Adjust for scale()\n\t\t\tvar matrix = _matrix(container || el),\n\t\t\t\tscaleX = matrix && matrix.a,\n\t\t\t\tscaleY = matrix && matrix.d;\n\n\t\t\tif (matrix) {\n\t\t\t\ttop /= scaleY;\n\t\t\t\tleft /= scaleX;\n\n\t\t\t\twidth /= scaleX;\n\t\t\t\theight /= scaleY;\n\n\t\t\t\tbottom = top + height;\n\t\t\t\tright = left + width;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttop: top,\n\t\t\tleft: left,\n\t\t\tbottom: bottom,\n\t\t\tright: right,\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\t}\n\n\n\t/**\n\t * Checks if a side of an element is scrolled past a side of it's parents\n\t * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n\t * @param {String} side Side of the element in question ('top', 'left', 'right', 'bottom')\n\t * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n\t */\n\tfunction _isScrolledPast(el, side) {\n\t\tvar parent = _getParentAutoScrollElement(el, true),\n\t\t\telSide = _getRect(el)[side];\n\n\t\t/* jshint boss:true */\n\t\twhile (parent) {\n\t\t\tvar parentSide = _getRect(parent)[side],\n\t\t\t\tvisible;\n\n\t\t\tif (side === 'top' || side === 'left') {\n\t\t\t\tvisible = elSide >= parentSide;\n\t\t\t} else {\n\t\t\t\tvisible = elSide <= parentSide;\n\t\t\t}\n\n\t\t\tif (!visible) return parent;\n\n\t\t\tif (parent === _getWindowScrollingElement()) break;\n\n\t\t\tparent = _getParentAutoScrollElement(parent, false);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n\t * The value is returned in real pixels.\n\t * @param {HTMLElement} el\n\t * @return {Array} Offsets in the format of [left, top]\n\t */\n\tfunction _getRelativeScrollOffset(el) {\n\t\tvar offsetLeft = 0,\n\t\t\toffsetTop = 0,\n\t\t\twinScroller = _getWindowScrollingElement();\n\n\t\tif (el) {\n\t\t\tdo {\n\t\t\t\tvar matrix = _matrix(el),\n\t\t\t\t\tscaleX = matrix.a,\n\t\t\t\t\tscaleY = matrix.d;\n\n\t\t\t\toffsetLeft += el.scrollLeft * scaleX;\n\t\t\t\toffsetTop += el.scrollTop * scaleY;\n\t\t\t} while (el !== winScroller && (el = el.parentNode));\n\t\t}\n\n\t\treturn [offsetLeft, offsetTop];\n\t}\n\n\t// Fixed #973:\n\t_on(document, 'touchmove', function(evt) {\n\t\tif ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n\t\t\tevt.preventDefault();\n\t\t}\n\t});\n\n\n\t// Export utils\n\tSortable.utils = {\n\t\ton: _on,\n\t\toff: _off,\n\t\tcss: _css,\n\t\tfind: _find,\n\t\tis: function (el, selector) {\n\t\t\treturn !!_closest(el, selector, el, false);\n\t\t},\n\t\textend: _extend,\n\t\tthrottle: _throttle,\n\t\tclosest: _closest,\n\t\ttoggleClass: _toggleClass,\n\t\tclone: _clone,\n\t\tindex: _index,\n\t\tnextTick: _nextTick,\n\t\tcancelNextTick: _cancelNextTick,\n\t\tdetectDirection: _detectDirection,\n\t\tgetChild: _getChild\n\t};\n\n\n\t/**\n\t * Create sortable instance\n\t * @param {HTMLElement} el\n\t * @param {Object} [options]\n\t */\n\tSortable.create = function (el, options) {\n\t\treturn new Sortable(el, options);\n\t};\n\n\n\t// Export\n\tSortable.version = '1.9.0';\n\treturn Sortable;\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","// Blacklist common values.\nconst BLACKLIST = [\n \"00000000000\",\n \"11111111111\",\n \"22222222222\",\n \"33333333333\",\n \"44444444444\",\n \"55555555555\",\n \"66666666666\",\n \"77777777777\",\n \"88888888888\",\n \"99999999999\",\n \"12345678909\"\n];\n\nconst STRICT_STRIP_REGEX = /[.-]/g;\nconst LOOSE_STRIP_REGEX = /[^\\d]/g;\n\n/**\n * Compute the Verifier Digit (or \"Dígito Verificador (DV)\" in PT-BR).\n *\n * You can learn more about the algorithm on [wikipedia (pt-br)](https://pt.wikipedia.org/wiki/D%C3%ADgito_verificador)\n *\n * @export\n * @param {string} numbers a string with only numbers.\n * @returns {number} the verifier digit.\n */\nexport function verifierDigit(numbers) {\n numbers = numbers\n .split(\"\")\n .map(function(number){ return parseInt(number, 10); })\n ;\n\n const modulus = numbers.length + 1;\n\n const multiplied = numbers.map(function(number, index) {\n return number * (modulus - index);\n });\n\n const mod = multiplied.reduce(function(buffer, number){\n return buffer + number;\n }) % 11;\n\n return (mod < 2 ? 0 : 11 - mod);\n}\n\n/**\n * Transform the input into a pretty CPF format.\n *\n * Example:\n * ```\n * format('12345678901');\n * // Result: '123.456.789-01'\n * ```\n *\n * @export\n * @param {string} cpf the CPF.\n * @returns {string} the formatted CPF.\n */\nexport function format(cpf) {\n return strip(cpf).replace(/^(\\d{3})(\\d{3})(\\d{3})(\\d{2})$/, \"$1.$2.$3-$4\");\n}\n\n/**\n * Remove some characters from the `number` input.\n *\n * Example:\n * ```\n * strip('29537995593'); // Result: '29537995593'\n * strip('295.379.955-93'); // Result: '29537995593'\n * strip('295a379b9c5d59e3'); // Result: '29537995593'\n * strip('295a379b9c5d59e3', true); // Result: '295a379b9c5d59e3' - Atention!\n * ```\n *\n * @export\n * @param {string} cpf the CPF text.\n * @param {boolean} [isStrict] if `true`, it will remove only `.` and `-` characters.\n * Otherwise, it will remove all non-digit (`[^\\d]`) characters. Optional.\n * @returns {string} the stripped CPF.\n */\nexport function strip(cpf, isStrict) {\n const regex = isStrict ? STRICT_STRIP_REGEX : LOOSE_STRIP_REGEX;\n return (cpf || \"\").toString().replace(regex, \"\");\n}\n\n/**\n * Validate the CPF.\n *\n * @export\n * @param {string} cpf the CPF number.\n * @param {boolean} [isStrict] if `true`, it will accept only `digits`, `.` and `-` characters. Optional.\n * @returns {boolean} `true` if CPF is valid. Otherwise, `false`.\n */\nexport function isValid(cpf, isStrict) {\n const stripped = strip(cpf, isStrict);\n\n // CPF must be defined\n if (!stripped) { return false; }\n\n // CPF must have 11 chars\n if (stripped.length !== 11) { return false; }\n\n // CPF can't be blacklisted\n if (BLACKLIST.includes(stripped)) { return false; }\n\n let numbers = stripped.substr(0, 9);\n numbers += verifierDigit(numbers);\n numbers += verifierDigit(numbers);\n\n return numbers.substr(-2) === stripped.substr(-2);\n}\n\n/**\n * Generate a random CPF.\n *\n * @export\n * @param {boolean} [useFormat] if `true`, it will format using `.` and `-`. Optional.\n * @returns {string} the CPF.\n */\nexport function generate(useFormat) {\n let numbers = \"\";\n\n for (let i = 0; i < 9; i += 1) {\n numbers += Math.floor(Math.random() * 9);\n }\n\n numbers += verifierDigit(numbers);\n numbers += verifierDigit(numbers);\n\n return (useFormat ? format(numbers) : numbers);\n}\n","(function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.VMoney=t():e.VMoney=t()})(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\".\",t(t.s=9)}([function(e,t,n){\"use strict\";t.a={prefix:\"\",suffix:\"\",thousands:\",\",decimal:\".\",precision:2}},function(e,t,n){\"use strict\";var r=n(2),i=n(5),u=n(0);t.a=function(e,t){if(t.value){var o=n.i(i.a)(u.a,t.value);if(\"INPUT\"!==e.tagName.toLocaleUpperCase()){var a=e.getElementsByTagName(\"input\");1!==a.length||(e=a[0])}e.oninput=function(){var t=e.value.length-e.selectionEnd;e.value=n.i(r.a)(e.value,o),t=Math.max(t,o.suffix.length),t=e.value.length-t,t=Math.max(t,o.prefix.length+1),n.i(r.b)(e,t),e.dispatchEvent(n.i(r.c)(\"change\"))},e.onfocus=function(){n.i(r.b)(e,e.value.length-o.suffix.length)},e.oninput(),e.dispatchEvent(n.i(r.c)(\"input\"))}}},function(e,t,n){\"use strict\";function r(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:m.a;\"number\"==typeof e&&(e=e.toFixed(o(t.precision)));var n=e.indexOf(\"-\")>=0?\"-\":\"\",r=u(e),i=c(r,t.precision),a=d(i).split(\".\"),p=a[0],l=a[1];return p=f(p,t.thousands),t.prefix+n+s(p,l,t.decimal)+t.suffix}function i(e,t){var n=e.indexOf(\"-\")>=0?-1:1,r=u(e),i=c(r,t);return parseFloat(i)*n}function u(e){return d(e).replace(/\\D+/g,\"\")||\"0\"}function o(e){return a(0,e,20)}function a(e,t,n){return Math.max(e,Math.min(t,n))}function c(e,t){var n=Math.pow(10,t);return(parseFloat(e)/n).toFixed(o(t))}function f(e,t){return e.replace(/(\\d)(?=(?:\\d{3})+\\b)/gm,\"$1\"+t)}function s(e,t,n){return t?e+n+t:e}function d(e){return e?e.toString():\"\"}function p(e,t){var n=function(){e.setSelectionRange(t,t)};e===document.activeElement&&(n(),setTimeout(n,1))}function l(e){var t=document.createEvent(\"Event\");return t.initEvent(e,!0,!0),t}var m=n(0);n.d(t,\"a\",function(){return r}),n.d(t,\"d\",function(){return i}),n.d(t,\"b\",function(){return p}),n.d(t,\"c\",function(){return l})},function(e,t,n){\"use strict\";function r(e,t){t&&Object.keys(t).map(function(e){a.a[e]=t[e]}),e.directive(\"money\",o.a),e.component(\"money\",u.a)}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(6),u=n.n(i),o=n(1),a=n(0);n.d(t,\"Money\",function(){return u.a}),n.d(t,\"VMoney\",function(){return o.a}),n.d(t,\"options\",function(){return a.a}),n.d(t,\"VERSION\",function(){return c});var c=\"0.8.1\";t.default=r,\"undefined\"!=typeof window&&window.Vue&&window.Vue.use(r)},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(1),i=n(0),u=n(2);t.default={name:\"Money\",props:{value:{required:!0,type:[Number,String],default:0},masked:{type:Boolean,default:!1},precision:{type:Number,default:function(){return i.a.precision}},decimal:{type:String,default:function(){return i.a.decimal}},thousands:{type:String,default:function(){return i.a.thousands}},prefix:{type:String,default:function(){return i.a.prefix}},suffix:{type:String,default:function(){return i.a.suffix}}},directives:{money:r.a},data:function(){return{formattedValue:\"\"}},watch:{value:{immediate:!0,handler:function(e,t){var r=n.i(u.a)(e,this.$props);r!==this.formattedValue&&(this.formattedValue=r)}}},methods:{change:function(e){this.$emit(\"input\",this.masked?e.target.value:n.i(u.d)(e.target.value,this.precision))}}}},function(e,t,n){\"use strict\";t.a=function(e,t){return e=e||{},t=t||{},Object.keys(e).concat(Object.keys(t)).reduce(function(n,r){return n[r]=void 0===t[r]?e[r]:t[r],n},{})}},function(e,t,n){var r=n(7)(n(4),n(8),null,null);e.exports=r.exports},function(e,t){e.exports=function(e,t,n,r){var i,u=e=e||{},o=typeof e.default;\"object\"!==o&&\"function\"!==o||(i=e,u=e.default);var a=\"function\"==typeof u?u.options:u;if(t&&(a.render=t.render,a.staticRenderFns=t.staticRenderFns),n&&(a._scopeId=n),r){var c=a.computed||(a.computed={});Object.keys(r).forEach(function(e){var t=r[e];c[e]=function(){return t}})}return{esModule:i,exports:u,options:a}}},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement;return(e._self._c||t)(\"input\",{directives:[{name:\"money\",rawName:\"v-money\",value:{precision:e.precision,decimal:e.decimal,thousands:e.thousands,prefix:e.prefix,suffix:e.suffix},expression:\"{precision, decimal, thousands, prefix, suffix}\"}],staticClass:\"v-money\",attrs:{type:\"tel\"},domProps:{value:e.formattedValue},on:{change:e.change}})},staticRenderFns:[]}},function(e,t,n){e.exports=n(3)}])});","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n"],"sourceRoot":""}