// node_modules/jquery-ui/ui/widgets/draggable.js
(function(factory) {
"use strict";
if (typeof define === "function" && define.amd) {
define([
"jquery",
"./mouse",
"../data",
"../plugin",
"../scroll-parent",
"../version",
"../widget"
], factory);
} else {
factory(jQuery);
}
})(function($) {
"use strict";
$.widget("ui.draggable", $.ui.mouse, {
version: "1.14.1",
widgetEventPrefix: "drag",
options: {
addClasses: true,
appendTo: "parent",
axis: false,
connectToSortable: false,
containment: false,
cursor: "auto",
cursorAt: false,
grid: false,
handle: false,
helper: "original",
iframeFix: false,
opacity: false,
refreshPositions: false,
revert: false,
revertDuration: 500,
scope: "default",
scroll: true,
scrollSensitivity: 20,
scrollSpeed: 20,
snap: false,
snapMode: "both",
snapTolerance: 20,
stack: false,
zIndex: false,
// Callbacks
drag: null,
start: null,
stop: null
},
_create: function() {
if (this.options.helper === "original") {
this._setPositionRelative();
}
if (this.options.addClasses) {
this._addClass("ui-draggable");
}
this._setHandleClassName();
this._mouseInit();
},
_setOption: function(key, value) {
this._super(key, value);
if (key === "handle") {
this._removeHandleClassName();
this._setHandleClassName();
}
},
_destroy: function() {
if ((this.helper || this.element).is(".ui-draggable-dragging")) {
this.destroyOnClear = true;
return;
}
this._removeHandleClassName();
this._mouseDestroy();
},
_mouseCapture: function(event) {
var o = this.options;
if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {
return false;
}
this.handle = this._getHandle(event);
if (!this.handle) {
return false;
}
this._blurActiveElement(event);
this._blockFrames(o.iframeFix === true ? "iframe" : o.iframeFix);
return true;
},
_blockFrames: function(selector) {
this.iframeBlocks = this.document.find(selector).map(function() {
var iframe = $(this);
return $("
").css("position", "absolute").appendTo(iframe.parent()).outerWidth(iframe.outerWidth()).outerHeight(iframe.outerHeight()).offset(iframe.offset())[0];
});
},
_unblockFrames: function() {
if (this.iframeBlocks) {
this.iframeBlocks.remove();
delete this.iframeBlocks;
}
},
_blurActiveElement: function(event) {
var activeElement = this.document[0].activeElement, target = $(event.target);
if (target.closest(activeElement).length) {
return;
}
$(activeElement).trigger("blur");
},
_mouseStart: function(event) {
var o = this.options;
this.helper = this._createHelper(event);
this._addClass(this.helper, "ui-draggable-dragging");
this._cacheHelperProportions();
if ($.ui.ddmanager) {
$.ui.ddmanager.current = this;
}
this._cacheMargins();
this.cssPosition = this.helper.css("position");
this.scrollParent = this.helper.scrollParent(true);
this.offsetParent = this.helper.offsetParent();
this.hasFixedAncestor = this.helper.parents().filter(function() {
return $(this).css("position") === "fixed";
}).length > 0;
this.positionAbs = this.element.offset();
this._refreshOffsets(event);
this.originalPosition = this.position = this._generatePosition(event, false);
this.originalPageX = event.pageX;
this.originalPageY = event.pageY;
if (o.cursorAt) {
this._adjustOffsetFromHelper(o.cursorAt);
}
this._setContainment();
if (this._trigger("start", event) === false) {
this._clear();
return false;
}
this._cacheHelperProportions();
if ($.ui.ddmanager && !o.dropBehaviour) {
$.ui.ddmanager.prepareOffsets(this, event);
}
this._mouseDrag(event, true);
if ($.ui.ddmanager) {
$.ui.ddmanager.dragStart(this, event);
}
return true;
},
_refreshOffsets: function(event) {
this.offset = {
top: this.positionAbs.top - this.margins.top,
left: this.positionAbs.left - this.margins.left,
scroll: false,
parent: this._getParentOffset(),
relative: this._getRelativeOffset()
};
this.offset.click = {
left: event.pageX - this.offset.left,
top: event.pageY - this.offset.top
};
},
_mouseDrag: function(event, noPropagation) {
if (this.hasFixedAncestor) {
this.offset.parent = this._getParentOffset();
}
this.position = this._generatePosition(event, true);
this.positionAbs = this._convertPositionTo("absolute");
if (!noPropagation) {
var ui = this._uiHash();
if (this._trigger("drag", event, ui) === false) {
this._mouseUp(new $.Event("mouseup", event));
return false;
}
this.position = ui.position;
}
this.helper[0].style.left = this.position.left + "px";
this.helper[0].style.top = this.position.top + "px";
if ($.ui.ddmanager) {
$.ui.ddmanager.drag(this, event);
}
return false;
},
_mouseStop: function(event) {
var that = this, dropped = false;
if ($.ui.ddmanager && !this.options.dropBehaviour) {
dropped = $.ui.ddmanager.drop(this, event);
}
if (this.dropped) {
dropped = this.dropped;
this.dropped = false;
}
if (this.options.revert === "invalid" && !dropped || this.options.revert === "valid" && dropped || this.options.revert === true || typeof this.options.revert === "function" && this.options.revert.call(this.element, dropped)) {
$(this.helper).animate(
this.originalPosition,
parseInt(this.options.revertDuration, 10),
function() {
if (that._trigger("stop", event) !== false) {
that._clear();
}
}
);
} else {
if (this._trigger("stop", event) !== false) {
this._clear();
}
}
return false;
},
_mouseUp: function(event) {
this._unblockFrames();
if ($.ui.ddmanager) {
$.ui.ddmanager.dragStop(this, event);
}
if (this.handleElement.is(event.target)) {
this.element.trigger("focus");
}
return $.ui.mouse.prototype._mouseUp.call(this, event);
},
cancel: function() {
if (this.helper.is(".ui-draggable-dragging")) {
this._mouseUp(new $.Event("mouseup", { target: this.element[0] }));
} else {
this._clear();
}
return this;
},
_getHandle: function(event) {
return this.options.handle ? !!$(event.target).closest(this.element.find(this.options.handle)).length : true;
},
_setHandleClassName: function() {
this.handleElement = this.options.handle ? this.element.find(this.options.handle) : this.element;
this._addClass(this.handleElement, "ui-draggable-handle");
},
_removeHandleClassName: function() {
this._removeClass(this.handleElement, "ui-draggable-handle");
},
_createHelper: function(event) {
var o = this.options, helperIsFunction = typeof o.helper === "function", helper = helperIsFunction ? $(o.helper.apply(this.element[0], [event])) : o.helper === "clone" ? this.element.clone().removeAttr("id") : this.element;
if (!helper.parents("body").length) {
helper.appendTo(o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo);
}
if (helperIsFunction && helper[0] === this.element[0]) {
this._setPositionRelative();
}
if (helper[0] !== this.element[0] && !/(fixed|absolute)/.test(helper.css("position"))) {
helper.css("position", "absolute");
}
return helper;
},
_setPositionRelative: function() {
if (!/^(?:r|a|f)/.test(this.element.css("position"))) {
this.element[0].style.position = "relative";
}
},
_adjustOffsetFromHelper: function(obj) {
if (typeof obj === "string") {
obj = obj.split(" ");
}
if (Array.isArray(obj)) {
obj = { left: +obj[0], top: +obj[1] || 0 };
}
if ("left" in obj) {
this.offset.click.left = obj.left + this.margins.left;
}
if ("right" in obj) {
this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
}
if ("top" in obj) {
this.offset.click.top = obj.top + this.margins.top;
}
if ("bottom" in obj) {
this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
}
},
_isRootNode: function(element) {
return /(html|body)/i.test(element.tagName) || element === this.document[0];
},
_getParentOffset: function() {
var po = this.offsetParent.offset(), document = this.document[0];
if (this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
po.left += this.scrollParent.scrollLeft();
po.top += this.scrollParent.scrollTop();
}
if (this._isRootNode(this.offsetParent[0])) {
po = { top: 0, left: 0 };
}
return {
top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
};
},
_getRelativeOffset: function() {
if (this.cssPosition !== "relative") {
return { top: 0, left: 0 };
}
var p = this.element.position(), scrollIsRootNode = this._isRootNode(this.scrollParent[0]);
return {
top: p.top - (parseInt(this.helper.css("top"), 10) || 0) + (!scrollIsRootNode ? this.scrollParent.scrollTop() : 0),
left: p.left - (parseInt(this.helper.css("left"), 10) || 0) + (!scrollIsRootNode ? this.scrollParent.scrollLeft() : 0)
};
},
_cacheMargins: function() {
this.margins = {
left: parseInt(this.element.css("marginLeft"), 10) || 0,
top: parseInt(this.element.css("marginTop"), 10) || 0,
right: parseInt(this.element.css("marginRight"), 10) || 0,
bottom: parseInt(this.element.css("marginBottom"), 10) || 0
};
},
_cacheHelperProportions: function() {
this.helperProportions = {
width: this.helper.outerWidth(),
height: this.helper.outerHeight()
};
},
_setContainment: function() {
var isUserScrollable, c, ce, o = this.options, document = this.document[0];
this.relativeContainer = null;
if (!o.containment) {
this.containment = null;
return;
}
if (o.containment === "window") {
this.containment = [
$(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
$(window).scrollTop() - this.offset.relative.top - this.offset.parent.top,
$(window).scrollLeft() + $(window).width() - this.helperProportions.width - this.margins.left,
$(window).scrollTop() + ($(window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
];
return;
}
if (o.containment === "document") {
this.containment = [
0,
0,
$(document).width() - this.helperProportions.width - this.margins.left,
($(document).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
];
return;
}
if (o.containment.constructor === Array) {
this.containment = o.containment;
return;
}
if (o.containment === "parent") {
o.containment = this.helper[0].parentNode;
}
c = $(o.containment);
ce = c[0];
if (!ce) {
return;
}
isUserScrollable = /(scroll|auto)/.test(c.css("overflow"));
this.containment = [
(parseInt(c.css("borderLeftWidth"), 10) || 0) + (parseInt(c.css("paddingLeft"), 10) || 0),
(parseInt(c.css("borderTopWidth"), 10) || 0) + (parseInt(c.css("paddingTop"), 10) || 0),
(isUserScrollable ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt(c.css("borderRightWidth"), 10) || 0) - (parseInt(c.css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,
(isUserScrollable ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt(c.css("borderBottomWidth"), 10) || 0) - (parseInt(c.css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom
];
this.relativeContainer = c;
},
_convertPositionTo: function(d, pos) {
if (!pos) {
pos = this.position;
}
var mod = d === "absolute" ? 1 : -1, scrollIsRootNode = this._isRootNode(this.scrollParent[0]);
return {
top: (
// The absolute mouse position
pos.top + // Only for relative positioned nodes: Relative offset from element to offset parent
this.offset.relative.top * mod + // The offsetParent's offset without borders (offset + border)
this.offset.parent.top * mod - (this.cssPosition === "fixed" ? -this.offset.scroll.top : scrollIsRootNode ? 0 : this.offset.scroll.top) * mod
),
left: (
// The absolute mouse position
pos.left + // Only for relative positioned nodes: Relative offset from element to offset parent
this.offset.relative.left * mod + // The offsetParent's offset without borders (offset + border)
this.offset.parent.left * mod - (this.cssPosition === "fixed" ? -this.offset.scroll.left : scrollIsRootNode ? 0 : this.offset.scroll.left) * mod
)
};
},
_generatePosition: function(event, constrainPosition) {
var containment, co, top, left, o = this.options, scrollIsRootNode = this._isRootNode(this.scrollParent[0]), pageX = event.pageX, pageY = event.pageY;
if (!scrollIsRootNode || !this.offset.scroll) {
this.offset.scroll = {
top: this.scrollParent.scrollTop(),
left: this.scrollParent.scrollLeft()
};
}
if (constrainPosition) {
if (this.containment) {
if (this.relativeContainer) {
co = this.relativeContainer.offset();
containment = [
this.containment[0] + co.left,
this.containment[1] + co.top,
this.containment[2] + co.left,
this.containment[3] + co.top
];
} else {
containment = this.containment;
}
if (event.pageX - this.offset.click.left < containment[0]) {
pageX = containment[0] + this.offset.click.left;
}
if (event.pageY - this.offset.click.top < containment[1]) {
pageY = containment[1] + this.offset.click.top;
}
if (event.pageX - this.offset.click.left > containment[2]) {
pageX = containment[2] + this.offset.click.left;
}
if (event.pageY - this.offset.click.top > containment[3]) {
pageY = containment[3] + this.offset.click.top;
}
}
if (o.grid) {
top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
pageY = containment ? top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3] ? top : top - this.offset.click.top >= containment[1] ? top - o.grid[1] : top + o.grid[1] : top;
left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
pageX = containment ? left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2] ? left : left - this.offset.click.left >= containment[0] ? left - o.grid[0] : left + o.grid[0] : left;
}
if (o.axis === "y") {
pageX = this.originalPageX;
}
if (o.axis === "x") {
pageY = this.originalPageY;
}
}
return {
top: (
// The absolute mouse position
pageY - // Click offset (relative to the element)
this.offset.click.top - // Only for relative positioned nodes: Relative offset from element to offset parent
this.offset.relative.top - // The offsetParent's offset without borders (offset + border)
this.offset.parent.top + (this.cssPosition === "fixed" ? -this.offset.scroll.top : scrollIsRootNode ? 0 : this.offset.scroll.top)
),
left: (
// The absolute mouse position
pageX - // Click offset (relative to the element)
this.offset.click.left - // Only for relative positioned nodes: Relative offset from element to offset parent
this.offset.relative.left - // The offsetParent's offset without borders (offset + border)
this.offset.parent.left + (this.cssPosition === "fixed" ? -this.offset.scroll.left : scrollIsRootNode ? 0 : this.offset.scroll.left)
)
};
},
_clear: function() {
this._removeClass(this.helper, "ui-draggable-dragging");
if (this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {
this.helper.remove();
}
this.helper = null;
this.cancelHelperRemoval = false;
if (this.destroyOnClear) {
this.destroy();
}
},
// From now on bulk stuff - mainly helpers
_trigger: function(type, event, ui) {
ui = ui || this._uiHash();
$.ui.plugin.call(this, type, [event, ui, this], true);
if (/^(drag|start|stop)/.test(type)) {
this.positionAbs = this._convertPositionTo("absolute");
ui.offset = this.positionAbs;
}
return $.Widget.prototype._trigger.call(this, type, event, ui);
},
plugins: {},
_uiHash: function() {
return {
helper: this.helper,
position: this.position,
originalPosition: this.originalPosition,
offset: this.positionAbs
};
}
});
$.ui.plugin.add("draggable", "connectToSortable", {
start: function(event, ui, draggable) {
var uiSortable = $.extend({}, ui, {
item: draggable.element
});
draggable.sortables = [];
$(draggable.options.connectToSortable).each(function() {
var sortable = $(this).sortable("instance");
if (sortable && !sortable.options.disabled) {
draggable.sortables.push(sortable);
sortable.refreshPositions();
sortable._trigger("activate", event, uiSortable);
}
});
},
stop: function(event, ui, draggable) {
var uiSortable = $.extend({}, ui, {
item: draggable.element
});
draggable.cancelHelperRemoval = false;
$.each(draggable.sortables, function() {
var sortable = this;
if (sortable.isOver) {
sortable.isOver = 0;
draggable.cancelHelperRemoval = true;
sortable.cancelHelperRemoval = false;
sortable._storedCSS = {
position: sortable.placeholder.css("position"),
top: sortable.placeholder.css("top"),
left: sortable.placeholder.css("left")
};
sortable._mouseStop(event);
sortable.options.helper = sortable.options._helper;
} else {
sortable.cancelHelperRemoval = true;
sortable._trigger("deactivate", event, uiSortable);
}
});
},
drag: function(event, ui, draggable) {
$.each(draggable.sortables, function() {
var innermostIntersecting = false, sortable = this;
sortable.positionAbs = draggable.positionAbs;
sortable.helperProportions = draggable.helperProportions;
sortable.offset.click = draggable.offset.click;
if (sortable._intersectsWith(sortable.containerCache)) {
innermostIntersecting = true;
$.each(draggable.sortables, function() {
this.positionAbs = draggable.positionAbs;
this.helperProportions = draggable.helperProportions;
this.offset.click = draggable.offset.click;
if (this !== sortable && this._intersectsWith(this.containerCache) && $.contains(sortable.element[0], this.element[0])) {
innermostIntersecting = false;
}
return innermostIntersecting;
});
}
if (innermostIntersecting) {
if (!sortable.isOver) {
sortable.isOver = 1;
draggable._parent = ui.helper.parent();
sortable.currentItem = ui.helper.appendTo(sortable.element).data("ui-sortable-item", true);
sortable.options._helper = sortable.options.helper;
sortable.options.helper = function() {
return ui.helper[0];
};
event.target = sortable.currentItem[0];
sortable._mouseCapture(event, true);
sortable._mouseStart(event, true, true);
sortable.offset.click.top = draggable.offset.click.top;
sortable.offset.click.left = draggable.offset.click.left;
sortable.offset.parent.left -= draggable.offset.parent.left - sortable.offset.parent.left;
sortable.offset.parent.top -= draggable.offset.parent.top - sortable.offset.parent.top;
draggable._trigger("toSortable", event);
draggable.dropped = sortable.element;
$.each(draggable.sortables, function() {
this.refreshPositions();
});
draggable.currentItem = draggable.element;
sortable.fromOutside = draggable;
}
if (sortable.currentItem) {
sortable._mouseDrag(event);
ui.position = sortable.position;
}
} else {
if (sortable.isOver) {
sortable.isOver = 0;
sortable.cancelHelperRemoval = true;
sortable.options._revert = sortable.options.revert;
sortable.options.revert = false;
sortable._trigger("out", event, sortable._uiHash(sortable));
sortable._mouseStop(event, true);
sortable.options.revert = sortable.options._revert;
sortable.options.helper = sortable.options._helper;
if (sortable.placeholder) {
sortable.placeholder.remove();
}
ui.helper.appendTo(draggable._parent);
draggable._refreshOffsets(event);
ui.position = draggable._generatePosition(event, true);
draggable._trigger("fromSortable", event);
draggable.dropped = false;
$.each(draggable.sortables, function() {
this.refreshPositions();
});
}
}
});
}
});
$.ui.plugin.add("draggable", "cursor", {
start: function(event, ui, instance) {
var t = $("body"), o = instance.options;
if (t.css("cursor")) {
o._cursor = t.css("cursor");
}
t.css("cursor", o.cursor);
},
stop: function(event, ui, instance) {
var o = instance.options;
if (o._cursor) {
$("body").css("cursor", o._cursor);
}
}
});
$.ui.plugin.add("draggable", "opacity", {
start: function(event, ui, instance) {
var t = $(ui.helper), o = instance.options;
if (t.css("opacity")) {
o._opacity = t.css("opacity");
}
t.css("opacity", o.opacity);
},
stop: function(event, ui, instance) {
var o = instance.options;
if (o._opacity) {
$(ui.helper).css("opacity", o._opacity);
}
}
});
$.ui.plugin.add("draggable", "scroll", {
start: function(event, ui, i) {
if (!i.scrollParentNotHidden) {
i.scrollParentNotHidden = i.helper.scrollParent(false);
}
if (i.scrollParentNotHidden[0] !== i.document[0] && i.scrollParentNotHidden[0].tagName !== "HTML") {
i.overflowOffset = i.scrollParentNotHidden.offset();
}
},
drag: function(event, ui, i) {
var o = i.options, scrolled = false, scrollParent = i.scrollParentNotHidden[0], document = i.document[0];
if (scrollParent !== document && scrollParent.tagName !== "HTML") {
if (!o.axis || o.axis !== "x") {
if (i.overflowOffset.top + scrollParent.offsetHeight - event.pageY < o.scrollSensitivity) {
scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;
} else if (event.pageY - i.overflowOffset.top < o.scrollSensitivity) {
scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;
}
}
if (!o.axis || o.axis !== "y") {
if (i.overflowOffset.left + scrollParent.offsetWidth - event.pageX < o.scrollSensitivity) {
scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;
} else if (event.pageX - i.overflowOffset.left < o.scrollSensitivity) {
scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;
}
}
} else {
if (!o.axis || o.axis !== "x") {
if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
} else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
}
}
if (!o.axis || o.axis !== "y") {
if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
scrolled = $(document).scrollLeft(
$(document).scrollLeft() - o.scrollSpeed
);
} else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
scrolled = $(document).scrollLeft(
$(document).scrollLeft() + o.scrollSpeed
);
}
}
}
if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
$.ui.ddmanager.prepareOffsets(i, event);
}
}
});
$.ui.plugin.add("draggable", "snap", {
start: function(event, ui, i) {
var o = i.options;
i.snapElements = [];
$(o.snap.constructor !== String ? o.snap.items || ":data(ui-draggable)" : o.snap).each(function() {
var $t = $(this), $o = $t.offset();
if (this !== i.element[0]) {
i.snapElements.push({
item: this,
width: $t.outerWidth(),
height: $t.outerHeight(),
top: $o.top,
left: $o.left
});
}
});
},
drag: function(event, ui, inst) {
var ts, bs, ls, rs, l, r, t, b, i, first, o = inst.options, d = o.snapTolerance, x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width, y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
for (i = inst.snapElements.length - 1; i >= 0; i--) {
l = inst.snapElements[i].left - inst.margins.left;
r = l + inst.snapElements[i].width;
t = inst.snapElements[i].top - inst.margins.top;
b = t + inst.snapElements[i].height;
if (x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains(
inst.snapElements[i].item.ownerDocument,
inst.snapElements[i].item
)) {
if (inst.snapElements[i].snapping) {
if (inst.options.snap.release) {
inst.options.snap.release.call(
inst.element,
event,
$.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })
);
}
}
inst.snapElements[i].snapping = false;
continue;
}
if (o.snapMode !== "inner") {
ts = Math.abs(t - y2) <= d;
bs = Math.abs(b - y1) <= d;
ls = Math.abs(l - x2) <= d;
rs = Math.abs(r - x1) <= d;
if (ts) {
ui.position.top = inst._convertPositionTo("relative", {
top: t - inst.helperProportions.height,
left: 0
}).top;
}
if (bs) {
ui.position.top = inst._convertPositionTo("relative", {
top: b,
left: 0
}).top;
}
if (ls) {
ui.position.left = inst._convertPositionTo("relative", {
top: 0,
left: l - inst.helperProportions.width
}).left;
}
if (rs) {
ui.position.left = inst._convertPositionTo("relative", {
top: 0,
left: r
}).left;
}
}
first = ts || bs || ls || rs;
if (o.snapMode !== "outer") {
ts = Math.abs(t - y1) <= d;
bs = Math.abs(b - y2) <= d;
ls = Math.abs(l - x1) <= d;
rs = Math.abs(r - x2) <= d;
if (ts) {
ui.position.top = inst._convertPositionTo("relative", {
top: t,
left: 0
}).top;
}
if (bs) {
ui.position.top = inst._convertPositionTo("relative", {
top: b - inst.helperProportions.height,
left: 0
}).top;
}
if (ls) {
ui.position.left = inst._convertPositionTo("relative", {
top: 0,
left: l
}).left;
}
if (rs) {
ui.position.left = inst._convertPositionTo("relative", {
top: 0,
left: r - inst.helperProportions.width
}).left;
}
}
if (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {
if (inst.options.snap.snap) {
inst.options.snap.snap.call(
inst.element,
event,
$.extend(inst._uiHash(), {
snapItem: inst.snapElements[i].item
})
);
}
}
inst.snapElements[i].snapping = ts || bs || ls || rs || first;
}
}
});
$.ui.plugin.add("draggable", "stack", {
start: function(event, ui, instance) {
var min, o = instance.options, group = $.makeArray($(o.stack)).sort(function(a, b) {
return (parseInt($(a).css("zIndex"), 10) || 0) - (parseInt($(b).css("zIndex"), 10) || 0);
});
if (!group.length) {
return;
}
min = parseInt($(group[0]).css("zIndex"), 10) || 0;
$(group).each(function(i) {
$(this).css("zIndex", min + i);
});
this.css("zIndex", min + group.length);
}
});
$.ui.plugin.add("draggable", "zIndex", {
start: function(event, ui, instance) {
var t = $(ui.helper), o = instance.options;
if (t.css("zIndex")) {
o._zIndex = t.css("zIndex");
}
t.css("zIndex", o.zIndex);
},
stop: function(event, ui, instance) {
var o = instance.options;
if (o._zIndex) {
$(ui.helper).css("zIndex", o._zIndex);
}
}
});
return $.ui.draggable;
});
/*! Bundled license information:
jquery-ui/ui/widgets/draggable.js:
(*!
* jQuery UI Draggable 1.14.1
* https://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license.
* https://jquery.org/license
*)
*/
//# sourceMappingURL=jquery-ui_ui_widgets_draggable__js.js.map