// 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