{"version":3,"sources":["webpack:///./packages/jqueryui/sortable.js"],"names":["widget","ui","mouse","version","widgetEventPrefix","ready","options","appendTo","axis","connectWith","containment","cursor","cursorAt","dropOnEmpty","forcePlaceholderSize","forceHelperSize","grid","handle","helper","items","opacity","placeholder","revert","scroll","scrollSensitivity","scrollSpeed","scope","tolerance","zIndex","_create","o","this","containerCache","element","addClass","refresh","floating","length","test","item","css","offset","_mouseInit","_destroy","removeClass","_mouseDestroy","i","removeData","widgetName","_setOption","key","value","toggleClass","Widget","prototype","apply","arguments","_mouseCapture","event","overrideHandle","that","reverting","disabled","type","_refreshItems","currentItem","target","parents","each","data","validHandle","find","andSelf","_removeCurrentsFromItems","_mouseStart","noActivation","currentContainer","refreshPositions","_createHelper","_cacheHelperProportions","_cacheMargins","scrollParent","top","margins","left","extend","click","pageX","pageY","parent","_getParentOffset","relative","_getRelativeOffset","cssPosition","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","domPosition","prev","hide","_createPlaceholder","_setContainment","_storedCursor","_storedOpacity","_storedZIndex","document","tagName","overflowOffset","_trigger","_uiHash","_preserveHelperProportions","containers","ddmanager","current","dropBehaviour","prepareOffsets","dragging","_mouseDrag","position","positionAbs","_convertPositionTo","lastPositionAbs","scrolled","offsetHeight","scrollTop","offsetWidth","scrollLeft","window","height","width","style","itemElement","intersection","_intersectsWithPointer","contains","direction","_intersectsWithSides","_rearrange","_contactContainers","drag","_mouseStop","noPropagation","drop","cur","animate","offsetParent","body","parseInt","_clear","cancel","_mouseUp","_storedCSS","show","over","parentNode","removeChild","remove","_noFinalSort","after","prepend","serialize","_getItemsAsjQuery","connected","str","res","attr","attribute","match","expression","push","join","toArray","ret","_intersectsWith","x1","x2","helperProportions","y1","y2","l","r","t","b","dyClick","dxClick","isOverElement","forcePointerForContainers","isOverElementHeight","isOverAxis","isOverElementWidth","verticalDirection","_getDragVerticalDirection","horizontalDirection","_getDragHorizontalDirection","isOverBottomHalf","isOverRightHalf","delta","_connectWith","constructor","String","queries","j","inst","isFunction","call","not","list","splice","targetData","_queries","queriesLength","instance","fast","toleranceElement","outerWidth","outerHeight","p","custom","refreshContainers","className","el","createElement","nodeName","visibility","update","container","innerHeight","innerWidth","innermostContainer","innermostIndex","dist","itemWithLeastDistance","base","Math","abs","clone","appendChild","obj","split","isArray","right","bottom","po","toLowerCase","browser","msie","scrollHeight","ce","co","max","scrollWidth","d","pos","mod","scrollIsRootNode","round","a","hardRefresh","insertBefore","nextSibling","counter","_delay","delayedTriggers","before","fromOutside","c","cancelHelperRemoval","_inst","sender"],"mappings":"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","file":"32-c-5a482fa1e6.js","sourcesContent":["/*!\n * jQuery UI Sortable @VERSION\n *\n * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n * http://jquery.org/license\n *\n * http://docs.jquery.com/UI/Sortables\n *\n * Depends:\n *\tjquery.ui.core.js\n *\tjquery.ui.mouse.js\n *\tjquery.ui.widget.js\n */\nimport $ from 'jquery'\nimport './core'\nimport './mouse'\nimport './widget'\n\n$.widget(\"ui.sortable\", $.ui.mouse, {\n\tversion: \"@VERSION\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: 'auto',\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: '> *',\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000\n\t},\n\t_create: function() {\n\n\t\tvar o = this.options;\n\t\tthis.containerCache = {};\n\t\tthis.element.addClass(\"ui-sortable\");\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine if the items are being displayed horizontally\n\t\tthis.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\t//We're ready to go\n\t\tthis.ready = true\n\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass(\"ui-sortable ui-sortable-disabled\");\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- )\n\t\t\tthis.items[i].item.removeData(this.widgetName + \"-item\");\n\n\t\treturn this;\n\t},\n\n\t_setOption: function(key, value){\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.options[ key ] = value;\n\n\t\t\tthis.widget().toggleClass( \"ui-sortable-disabled\", !!value );\n\t\t} else {\n\t\t\t// Don't call widget base _setOption for disable as it adds ui-state-disabled class\n\t\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t\t}\n\t},\n\n\t_mouseCapture: function(event, overrideHandle) {\n\t\tvar that = this;\n\n\t\tif (this.reverting) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif(this.options.disabled || this.options.type == 'static') return false;\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems(event);\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\tvar currentItem = null, nodes = $(event.target).parents().each(function() {\n\t\t\tif($.data(this, that.widgetName + '-item') == that) {\n\t\t\t\tcurrentItem = $(this);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif($.data(event.target, that.widgetName + '-item') == that) currentItem = $(event.target);\n\n\t\tif(!currentItem) return false;\n\t\tif(this.options.handle && !overrideHandle) {\n\t\t\tvar validHandle = false;\n\n\t\t\t$(this.options.handle, currentItem).find(\"*\").andSelf().each(function() { if(this == event.target) validHandle = true; });\n\t\t\tif(!validHandle) return false;\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event, overrideHandle, noActivation) {\n\n\t\tvar o = this.options;\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css(\"position\", \"absolute\");\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n\n\t\t//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way\n\t\tif(this.helper[0] != this.currentItem[0]) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment)\n\t\t\tthis._setContainment();\n\n\t\tif(o.cursor) { // cursor option\n\t\t\tif ($('body').css(\"cursor\")) this._storedCursor = $('body').css(\"cursor\");\n\t\t\t$('body').css(\"cursor\", o.cursor);\n\t\t}\n\n\t\tif(o.opacity) { // opacity option\n\t\t\tif (this.helper.css(\"opacity\")) this._storedOpacity = this.helper.css(\"opacity\");\n\t\t\tthis.helper.css(\"opacity\", o.opacity);\n\t\t}\n\n\t\tif(o.zIndex) { // zIndex option\n\t\t\tif (this.helper.css(\"zIndex\")) this._storedZIndex = this.helper.css(\"zIndex\");\n\t\t\tthis.helper.css(\"zIndex\", o.zIndex);\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML')\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"start\", event, this._uiHash());\n\n\t\t//Recache the helper size\n\t\tif(!this._preserveHelperProportions)\n\t\t\tthis._cacheHelperProportions();\n\n\n\t\t//Post 'activate' events to possible containers\n\t\tif(!noActivation) {\n\t\t\t for (var i = this.containers.length - 1; i >= 0; i--) { this.containers[i]._trigger(\"activate\", event, this._uiHash(this)); }\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif($.ui.ddmanager)\n\t\t\t$.ui.ddmanager.current = this;\n\n\t\tif ($.ui.ddmanager && !o.dropBehaviour)\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\n\t\tthis.dragging = true;\n\n\t\tthis.helper.addClass(\"ui-sortable-helper\");\n\t\tthis._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\tif (!this.lastPositionAbs) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif(this.options.scroll) {\n\t\t\tvar o = this.options, scrolled = false;\n\t\t\tif(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') {\n\n\t\t\t\tif((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\telse if(event.pageY - this.overflowOffset.top < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n\n\t\t\t\tif((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\telse if(event.pageX - this.overflowOffset.left < o.scrollSensitivity)\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n\n\t\t\t} else {\n\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\telse if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\telse if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\n\t\t\t}\n\n\t\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)\n\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Set the helper position\n\t\tif(!this.options.axis || this.options.axis != \"y\") this.helper[0].style.left = this.position.left+'px';\n\t\tif(!this.options.axis || this.options.axis != \"x\") this.helper[0].style.top = this.position.top+'px';\n\n\t\t//Rearrange\n\t\tfor (var i = this.items.length - 1; i >= 0; i--) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\tvar item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item);\n\t\t\tif (!intersection) continue;\n\n\t\t\tif(itemElement != this.currentItem[0] //cannot intersect with itself\n\t\t\t\t&&\tthis.placeholder[intersection == 1 ? \"next\" : \"prev\"]()[0] != itemElement //no useless actions that have been done before\n\t\t\t\t&&\t!$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked\n\t\t\t\t&& (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true)\n\t\t\t\t//&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection == 1 ? \"down\" : \"up\";\n\n\t\t\t\tif (this.options.tolerance == \"pointer\" || this._intersectsWithSides(item)) {\n\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers(event);\n\n\t\t//Interconnect with droppables\n\t\tif($.ui.ddmanager) $.ui.ddmanager.drag(this, event);\n\n\t\t//Call callbacks\n\t\tthis._trigger('sort', event, this._uiHash());\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function(event, noPropagation) {\n\n\t\tif(!event) return;\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour)\n\t\t\t$.ui.ddmanager.drop(this, event);\n\n\t\tif(this.options.revert) {\n\t\t\tvar that = this;\n\t\t\tvar cur = this.placeholder.offset();\n\n\t\t\tthis.reverting = true;\n\n\t\t\t$(this.helper).animate({\n\t\t\t\tleft: cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),\n\t\t\t\ttop: cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)\n\t\t\t}, parseInt(this.options.revert, 10) || 500, function() {\n\t\t\t\tthat._clear(event);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._clear(event, noPropagation);\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.dragging) {\n\n\t\t\tthis._mouseUp({ target: null });\n\n\t\t\tif(this.options.helper == \"original\")\n\t\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t\telse\n\t\t\t\tthis.currentItem.show();\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tthis.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", null, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (this.placeholder) {\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\t\tif(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\t\t\tif(this.options.helper != \"original\" && this.helper && this.helper[0].parentNode) this.helper.remove();\n\n\t\t\t$.extend(this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t});\n\n\t\t\tif(this.domPosition.prev) {\n\t\t\t\t$(this.domPosition.prev).after(this.currentItem);\n\t\t\t} else {\n\t\t\t\t$(this.domPosition.parent).prepend(this.currentItem);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar str = []; o = o || {};\n\n\t\t$(items).each(function() {\n\t\t\tvar res = ($(o.item || this).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/));\n\t\t\tif(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));\n\t\t});\n\n\t\tif(!str.length && o.key) {\n\t\t\tstr.push(o.key + '=');\n\t\t}\n\n\t\treturn str.join('&');\n\n\t},\n\n\ttoArray: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected);\n\t\tvar ret = []; o = o || {};\n\n\t\titems.each(function() { ret.push($(o.item || this).attr(o.attribute || 'id') || ''); });\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function(item) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height;\n\n\t\tvar l = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height;\n\n\t\tvar dyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left;\n\n\t\tvar isOverElement = (y1 + dyClick) > t && (y1 + dyClick) < b && (x1 + dxClick) > l && (x1 + dxClick) < r;\n\n\t\tif(\t this.options.tolerance == \"pointer\"\n\t\t\t|| this.options.forcePointerForContainers\n\t\t\t|| (this.options.tolerance != \"pointer\" && this.helperProportions[this.floating ? 'width' : 'height'] > item[this.floating ? 'width' : 'height'])\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn (l < x1 + (this.helperProportions.width / 2) // Right Half\n\t\t\t\t&& x2 - (this.helperProportions.width / 2) < r // Left Half\n\t\t\t\t&& t < y1 + (this.helperProportions.height / 2) // Bottom Half\n\t\t\t\t&& y2 - (this.helperProportions.height / 2) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function(item) {\n\n\t\tvar isOverElementHeight = (this.options.axis === 'x') || $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n\t\t\tisOverElementWidth = (this.options.axis === 'y') || $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth,\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (!isOverElement)\n\t\t\treturn false;\n\n\t\treturn this.floating ?\n\t\t\t( ((horizontalDirection && horizontalDirection == \"right\") || verticalDirection == \"down\") ? 2 : 1 )\n\t\t\t: ( verticalDirection && (verticalDirection == \"down\" ? 2 : 1) );\n\n\t},\n\n\t_intersectsWithSides: function(item) {\n\n\t\tvar isOverBottomHalf = $.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),\n\t\t\tisOverRightHalf = $.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (this.floating && horizontalDirection) {\n\t\t\treturn ((horizontalDirection == \"right\" && isOverRightHalf) || (horizontalDirection == \"left\" && !isOverRightHalf));\n\t\t} else {\n\t\t\treturn verticalDirection && ((verticalDirection == \"down\" && isOverBottomHalf) || (verticalDirection == \"up\" && !isOverBottomHalf));\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta != 0 && (delta > 0 ? \"down\" : \"up\");\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta != 0 && (delta > 0 ? \"right\" : \"left\");\n\t},\n\n\trefresh: function(event) {\n\t\tthis._refreshItems(event);\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor == String\n\t\t\t? [options.connectWith]\n\t\t\t: options.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function(connected) {\n\n\t\tvar items = [];\n\t\tvar queries = [];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && connected) {\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), inst]);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tqueries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not('.ui-sortable-placeholder'), this]);\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--){\n\t\t\tqueries[i][0].each(function() {\n\t\t\t\titems.push(this);\n\t\t\t});\n\t\t};\n\n\t\treturn $(items);\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n\n\t\tfor (var i=0; i < this.items.length; i++) {\n\n\t\t\tfor (var j=0; j < list.length; j++) {\n\t\t\t\tif(list[j] == this.items[i].item[0])\n\t\t\t\t\tthis.items.splice(i,1);\n\t\t\t};\n\n\t\t};\n\n\t},\n\n\t_refreshItems: function(event) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [this];\n\t\tvar items = this.items;\n\t\tvar queries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]];\n\t\tvar connectWith = this._connectWith();\n\n\t\tif(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down\n\t\t\tfor (var i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tvar cur = $(connectWith[i]);\n\t\t\t\tfor (var j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tvar inst = $.data(cur[j], this.widgetName);\n\t\t\t\t\tif(inst && inst != this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n\t\t\t\t\t\tthis.containers.push(inst);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\tfor (var i = queries.length - 1; i >= 0; i--) {\n\t\t\tvar targetData = queries[i][1];\n\t\t\tvar _queries = queries[i][0];\n\n\t\t\tfor (var j=0, queriesLength = _queries.length; j < queriesLength; j++) {\n\t\t\t\tvar item = $(_queries[j]);\n\n\t\t\t\titem.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager)\n\n\t\t\t\titems.push({\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t});\n\t\t\t};\n\t\t};\n\n\t},\n\n\trefreshPositions: function(fast) {\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change\n\t\tif(this.offsetParent && this.helper) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tfor (var i = this.items.length - 1; i >= 0; i--){\n\t\t\tvar item = this.items[i];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0])\n\t\t\t\tcontinue;\n\n\t\t\tvar t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n\n\t\t\tif (!fast) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tvar p = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t};\n\n\t\tif(this.options.custom && this.options.custom.refreshContainers) {\n\t\t\tthis.options.custom.refreshContainers.call(this);\n\t\t} else {\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tvar p = this.containers[i].element.offset();\n\t\t\t\tthis.containers[i].containerCache.left = p.left;\n\t\t\t\tthis.containers[i].containerCache.top = p.top;\n\t\t\t\tthis.containers[i].containerCache.width\t= this.containers[i].element.outerWidth();\n\t\t\t\tthis.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n\t\t\t};\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function(that) {\n\t\tthat = that || this;\n\t\tvar o = that.options;\n\n\t\tif(!o.placeholder || o.placeholder.constructor == String) {\n\t\t\tvar className = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar el = $(document.createElement(that.currentItem[0].nodeName))\n\t\t\t\t\t\t.addClass(className || that.currentItem[0].className+\" ui-sortable-placeholder\")\n\t\t\t\t\t\t.removeClass(\"ui-sortable-helper\")[0];\n\n\t\t\t\t\tif(!className)\n\t\t\t\t\t\tel.style.visibility = \"hidden\";\n\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t\tupdate: function(container, p) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified\n\t\t\t\t\tif(className && !o.forcePlaceholderSize) return;\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css('paddingTop')||0, 10) - parseInt(that.currentItem.css('paddingBottom')||0, 10)); };\n\t\t\t\t\tif(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css('paddingLeft')||0, 10) - parseInt(that.currentItem.css('paddingRight')||0, 10)); };\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after(that.placeholder);\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update(that, that.placeholder);\n\n\t},\n\n\t_contactContainers: function(event) {\n\n\t\t// get innermost container that intersects with item\n\t\tvar innermostContainer = null, innermostIndex = null;\n\n\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\n\t\t\t// never consider a container that's located within the item itself\n\t\t\tif($.contains(this.currentItem[0], this.containers[i].element[0]))\n\t\t\t\tcontinue;\n\n\t\t\tif(this._intersectsWith(this.containers[i].containerCache)) {\n\n\t\t\t\t// if we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0]))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tinnermostContainer = this.containers[i];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", event, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// if no intersecting containers found, return\n\t\tif(!innermostContainer) return;\n\n\t\t// move the item into the container if it's not there already\n\t\tif(this.containers.length === 1) {\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t} else if(this.currentContainer != this.containers[innermostIndex]) {\n\n\t\t\t//When entering a new container, we will find the item with the least distance and append our item near it\n\t\t\tvar dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top'];\n\t\t\tfor (var j = this.items.length - 1; j >= 0; j--) {\n\t\t\t\tif(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;\n\t\t\t\tvar cur = this.containers[innermostIndex].floating ? this.items[j].item.offset().left : this.items[j].item.offset().top;\n\t\t\t\tif(Math.abs(cur - base) < dist) {\n\t\t\t\t\tdist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];\n\t\t\t\t\tthis.direction = (cur - base > 0) ? 'down' : 'up';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled\n\t\t\t\treturn;\n\n\t\t\tthis.currentContainer = this.containers[innermostIndex];\n\t\t\titemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\tthis.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update(this.currentContainer, this.placeholder);\n\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t}\n\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options;\n\t\tvar helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper == 'clone' ? this.currentItem.clone() : this.currentItem);\n\n\t\tif(!helper.parents('body').length) //Add the helper to the DOM if that didn't happen already\n\t\t\t$(o.appendTo != 'parent' ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n\n\t\tif(helper[0] == this.currentItem[0])\n\t\t\tthis._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css(\"position\"), top: this.currentItem.css(\"top\"), left: this.currentItem.css(\"left\") };\n\n\t\tif(helper[0].style.width == '' || o.forceHelperSize) helper.width(this.currentItem.width());\n\t\tif(helper[0].style.height == '' || o.forceHelperSize) helper.height(this.currentItem.height());\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj == 'string') {\n\t\t\tobj = obj.split(' ');\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif ('left' in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ('right' in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ('top' in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ('bottom' in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t// the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix\n\t\t\tpo = { top: 0, left: 0 };\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition == \"relative\") {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.currentItem.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.currentItem.css(\"marginTop\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar o = this.options;\n\t\tif(o.containment == 'parent') o.containment = this.helper[0].parentNode;\n\t\tif(o.containment == 'document' || o.containment == 'window') this.containment = [\n\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t$(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t];\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment)) {\n\t\t\tvar ce = $(o.containment)[0];\n\t\t\tvar co = $(o.containment).offset();\n\t\t\tvar over = ($(ce).css(\"overflow\") != 'hidden');\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0) - this.margins.left,\n\t\t\t\tco.top + (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0) - this.margins.top,\n\t\t\t\tco.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left,\n\t\t\t\tco.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) pos = this.position;\n\t\tvar mod = d == \"absolute\" ? 1 : -1;\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.top * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.top * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t+ this.offset.relative.left * mod\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t+ this.offset.parent.left * mod\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t- ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\tvar pageX = event.pageX;\n\t\tvar pageY = event.pageY;\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif(this.containment) {\n\t\t\t\tif(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;\n\t\t\t\tif(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;\n\t\t\t\tif(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\tvar top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n\t\t\t\tpageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tvar left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n\t\t\t\tpageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.top\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.top\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.top\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\t- this.offset.click.left\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\t- this.offset.relative.left\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\t- this.offset.parent.left\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t+ ( ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function(event, i, a, hardRefresh) {\n\n\t\ta ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction == 'down' ? i.item[0] : i.item[0].nextSibling));\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay(function() {\n\t\t\tif(counter == this.counter) this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n\t\t});\n\n\t},\n\n\t_clear: function(event, noPropagation) {\n\n\t\tthis.reverting = false;\n\t\t// We delay all events that have to be triggered to after the point where the placeholder has been removed and\n\t\t// everything else normalized again\n\t\tvar delayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n\t\tif(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem);\n\t\tthis._noFinalSort = null;\n\n\t\tif(this.helper[0] == this.currentItem[0]) {\n\t\t\tfor(var i in this._storedCSS) {\n\t\t\t\tif(this._storedCSS[i] == 'auto' || this._storedCSS[i] == 'static') this._storedCSS[i] = '';\n\t\t\t}\n\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif(this.fromOutside && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"receive\", event, this._uiHash(this.fromOutside)); });\n\t\tif((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !noPropagation) delayedTriggers.push(function(event) { this._trigger(\"update\", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n\t\tif(!$.contains(this.element[0], this.currentItem[0])) { //Node was moved out of the current element\n\t\t\tif(!noPropagation) delayedTriggers.push(function(event) { this._trigger(\"remove\", event, this._uiHash()); });\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tif($.contains(this.containers[i].element[0], this.currentItem[0]) && !noPropagation) {\n\t\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"receive\", event, this._uiHash(this)); }; }).call(this, this.containers[i]));\n\t\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"update\", event, this._uiHash(this)); }; }).call(this, this.containers[i]));\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\n\t\t//Post events to containers\n\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\tif(!noPropagation) delayedTriggers.push((function(c) { return function(event) { c._trigger(\"deactivate\", event, this._uiHash(this)); }; }).call(this, this.containers[i]));\n\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"out\", event, this._uiHash(this)); }; }).call(this, this.containers[i]));\n\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif(this._storedCursor) $('body').css(\"cursor\", this._storedCursor); //Reset cursor\n\t\tif(this._storedOpacity) this.helper.css(\"opacity\", this._storedOpacity); //Reset opacity\n\t\tif(this._storedZIndex) this.helper.css(\"zIndex\", this._storedZIndex == 'auto' ? '' : this._storedZIndex); //Reset z-index\n\n\t\tthis.dragging = false;\n\t\tif(this.cancelHelperRemoval) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tthis._trigger(\"beforeStop\", event, this._uiHash());\n\t\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tif(!noPropagation) this._trigger(\"beforeStop\", event, this._uiHash());\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\n\t\tif(this.helper[0] != this.currentItem[0]) this.helper.remove(); this.helper = null;\n\n\t\tif(!noPropagation) {\n\t\t\tfor (var i=0; i < delayedTriggers.length; i++) { delayedTriggers[i].call(this, event); }; //Trigger all delayed events\n\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn true;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function(_inst) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $([]),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n});\n\n\n"],"sourceRoot":""}