{"version":3,"sources":["webpack:///./node_modules/@fnando/cnpj/src/cnpj.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.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","_arrayWithHoles","arr","Array","isArray","_iterableToArrayLimit","i","_arr","_n","_d","_e","undefined","_s","_i","Symbol","iterator","next","done","push","value","err","_nonIterableRest","TypeError","_slicedToArray","$export","defined","quot","createHTML","string","tag","attribute","S","String","p1","NAME","exec","O","P","F","test","toLowerCase","anObject","sameValue","regExpExec","SEARCH","$search","maybeCallNative","regexp","this","fn","RegExp","res","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","_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","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","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","_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","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-2fbfe43e.aa9612a7.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","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\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":""}