Mootools update
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
// MooTools: the javascript framework.
|
||||
// Load this file's selection again by visiting: http://mootools.net/more/1e3edb90c5e02d9b9013b54e6ab001ea
|
||||
// Or build this file again with packager using: packager build More/Element.Forms More/Element.Delegation More/Element.Shortcuts More/Fx.Slide More/Sortables More/Request.JSONP More/Request.Periodical More/Spinner
|
||||
// Load this file's selection again by visiting: http://mootools.net/more/13115b95c0560a5c35a61ccf237f3ed9
|
||||
// Or build this file again with packager using: packager build More/Element.Forms More/Element.Shortcuts More/Fx.Slide More/Sortables More/Request.JSONP More/Request.Periodical More/Spinner
|
||||
/*
|
||||
---
|
||||
|
||||
@@ -31,8 +31,8 @@ provides: [MooTools.More]
|
||||
*/
|
||||
|
||||
MooTools.More = {
|
||||
'version': '1.3.2.1',
|
||||
'build': 'e586bcd2496e9b22acfde32e12f84d49ce09e59d'
|
||||
'version': '1.4.0.1',
|
||||
'build': 'a4244edf2aa97ac8a196fc96082dd35af1abab87'
|
||||
};
|
||||
|
||||
|
||||
@@ -328,368 +328,6 @@ Element.implement({
|
||||
});
|
||||
|
||||
|
||||
/*
|
||||
---
|
||||
|
||||
name: Events.Pseudos
|
||||
|
||||
description: Adds the functionality to add pseudo events
|
||||
|
||||
license: MIT-style license
|
||||
|
||||
authors:
|
||||
- Arian Stolwijk
|
||||
|
||||
requires: [Core/Class.Extras, Core/Slick.Parser, More/MooTools.More]
|
||||
|
||||
provides: [Events.Pseudos]
|
||||
|
||||
...
|
||||
*/
|
||||
|
||||
Events.Pseudos = function(pseudos, addEvent, removeEvent){
|
||||
|
||||
var storeKey = 'monitorEvents:';
|
||||
|
||||
var storageOf = function(object){
|
||||
return {
|
||||
store: object.store ? function(key, value){
|
||||
object.store(storeKey + key, value);
|
||||
} : function(key, value){
|
||||
(object.$monitorEvents || (object.$monitorEvents = {}))[key] = value;
|
||||
},
|
||||
retrieve: object.retrieve ? function(key, dflt){
|
||||
return object.retrieve(storeKey + key, dflt);
|
||||
} : function(key, dflt){
|
||||
if (!object.$monitorEvents) return dflt;
|
||||
return object.$monitorEvents[key] || dflt;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
var splitType = function(type){
|
||||
if (type.indexOf(':') == -1 || !pseudos) return null;
|
||||
|
||||
var parsed = Slick.parse(type).expressions[0][0],
|
||||
parsedPseudos = parsed.pseudos,
|
||||
l = parsedPseudos.length,
|
||||
splits = [];
|
||||
|
||||
while (l--) if (pseudos[parsedPseudos[l].key]){
|
||||
splits.push({
|
||||
event: parsed.tag,
|
||||
value: parsedPseudos[l].value,
|
||||
pseudo: parsedPseudos[l].key,
|
||||
original: type
|
||||
});
|
||||
}
|
||||
|
||||
return splits.length ? splits : null;
|
||||
};
|
||||
|
||||
var mergePseudoOptions = function(split){
|
||||
return Object.merge.apply(this, split.map(function(item){
|
||||
return pseudos[item.pseudo].options || {};
|
||||
}));
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
addEvent: function(type, fn, internal){
|
||||
var split = splitType(type);
|
||||
if (!split) return addEvent.call(this, type, fn, internal);
|
||||
|
||||
var storage = storageOf(this),
|
||||
events = storage.retrieve(type, []),
|
||||
eventType = split[0].event,
|
||||
options = mergePseudoOptions(split),
|
||||
stack = fn,
|
||||
eventOptions = options[eventType] || {},
|
||||
args = Array.slice(arguments, 2),
|
||||
self = this,
|
||||
monitor;
|
||||
|
||||
if (eventOptions.args) args.append(Array.from(eventOptions.args));
|
||||
if (eventOptions.base) eventType = eventOptions.base;
|
||||
if (eventOptions.onAdd) eventOptions.onAdd(this);
|
||||
|
||||
split.each(function(item){
|
||||
var stackFn = stack;
|
||||
stack = function(){
|
||||
(eventOptions.listener || pseudos[item.pseudo].listener).call(self, item, stackFn, arguments, monitor, options);
|
||||
};
|
||||
});
|
||||
monitor = stack.bind(this);
|
||||
|
||||
events.include({event: fn, monitor: monitor});
|
||||
storage.store(type, events);
|
||||
|
||||
addEvent.apply(this, [type, fn].concat(args));
|
||||
return addEvent.apply(this, [eventType, monitor].concat(args));
|
||||
},
|
||||
|
||||
removeEvent: function(type, fn){
|
||||
var split = splitType(type);
|
||||
if (!split) return removeEvent.call(this, type, fn);
|
||||
|
||||
var storage = storageOf(this),
|
||||
events = storage.retrieve(type);
|
||||
if (!events) return this;
|
||||
|
||||
var eventType = split[0].event,
|
||||
options = mergePseudoOptions(split),
|
||||
eventOptions = options[eventType] || {},
|
||||
args = Array.slice(arguments, 2);
|
||||
|
||||
if (eventOptions.args) args.append(Array.from(eventOptions.args));
|
||||
if (eventOptions.base) eventType = eventOptions.base;
|
||||
if (eventOptions.onRemove) eventOptions.onRemove(this);
|
||||
|
||||
removeEvent.apply(this, [type, fn].concat(args));
|
||||
events.each(function(monitor, i){
|
||||
if (!fn || monitor.event == fn) removeEvent.apply(this, [eventType, monitor.monitor].concat(args));
|
||||
delete events[i];
|
||||
}, this);
|
||||
|
||||
storage.store(type, events);
|
||||
return this;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
(function(){
|
||||
|
||||
var pseudos = {
|
||||
|
||||
once: {
|
||||
listener: function(split, fn, args, monitor){
|
||||
fn.apply(this, args);
|
||||
this.removeEvent(split.event, monitor)
|
||||
.removeEvent(split.original, fn);
|
||||
}
|
||||
},
|
||||
|
||||
throttle: {
|
||||
listener: function(split, fn, args){
|
||||
if (!fn._throttled){
|
||||
fn.apply(this, args);
|
||||
fn._throttled = setTimeout(function(){
|
||||
fn._throttled = false;
|
||||
}, split.value || 250);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
pause: {
|
||||
listener: function(split, fn, args){
|
||||
clearTimeout(fn._pause);
|
||||
fn._pause = fn.delay(split.value || 250, this, args);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Events.definePseudo = function(key, listener){
|
||||
pseudos[key] = Type.isFunction(listener) ? {listener: listener} : listener;
|
||||
return this;
|
||||
};
|
||||
|
||||
Events.lookupPseudo = function(key){
|
||||
return pseudos[key];
|
||||
};
|
||||
|
||||
var proto = Events.prototype;
|
||||
Events.implement(Events.Pseudos(pseudos, proto.addEvent, proto.removeEvent));
|
||||
|
||||
['Request', 'Fx'].each(function(klass){
|
||||
if (this[klass]) this[klass].implement(Events.prototype);
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
|
||||
/*
|
||||
---
|
||||
|
||||
name: Element.Event.Pseudos
|
||||
|
||||
description: Adds the functionality to add pseudo events for Elements
|
||||
|
||||
license: MIT-style license
|
||||
|
||||
authors:
|
||||
- Arian Stolwijk
|
||||
|
||||
requires: [Core/Element.Event, Events.Pseudos]
|
||||
|
||||
provides: [Element.Event.Pseudos]
|
||||
|
||||
...
|
||||
*/
|
||||
|
||||
(function(){
|
||||
|
||||
var pseudos = {},
|
||||
copyFromEvents = ['once', 'throttle', 'pause'],
|
||||
count = copyFromEvents.length;
|
||||
|
||||
while (count--) pseudos[copyFromEvents[count]] = Events.lookupPseudo(copyFromEvents[count]);
|
||||
|
||||
Event.definePseudo = function(key, listener){
|
||||
pseudos[key] = Type.isFunction(listener) ? {listener: listener} : listener;
|
||||
return this;
|
||||
};
|
||||
|
||||
var proto = Element.prototype;
|
||||
[Element, Window, Document].invoke('implement', Events.Pseudos(pseudos, proto.addEvent, proto.removeEvent));
|
||||
|
||||
})();
|
||||
|
||||
|
||||
/*
|
||||
---
|
||||
|
||||
script: Element.Delegation.js
|
||||
|
||||
name: Element.Delegation
|
||||
|
||||
description: Extends the Element native object to include the delegate method for more efficient event management.
|
||||
|
||||
credits:
|
||||
- "Event checking based on the work of Daniel Steigerwald. License: MIT-style license. Copyright: Copyright (c) 2008 Daniel Steigerwald, daniel.steigerwald.cz"
|
||||
|
||||
license: MIT-style license
|
||||
|
||||
authors:
|
||||
- Aaron Newton
|
||||
- Daniel Steigerwald
|
||||
|
||||
requires: [/MooTools.More, Element.Event.Pseudos]
|
||||
|
||||
provides: [Element.Delegation]
|
||||
|
||||
...
|
||||
*/
|
||||
|
||||
(function(){
|
||||
|
||||
var eventListenerSupport = !(window.attachEvent && !window.addEventListener),
|
||||
nativeEvents = Element.NativeEvents;
|
||||
|
||||
nativeEvents.focusin = 2;
|
||||
nativeEvents.focusout = 2;
|
||||
|
||||
var check = function(split, target, event){
|
||||
var elementEvent = Element.Events[split.event], condition;
|
||||
if (elementEvent) condition = elementEvent.condition;
|
||||
return Slick.match(target, split.value) && (!condition || condition.call(target, event));
|
||||
};
|
||||
|
||||
var bubbleUp = function(split, event, fn){
|
||||
for (var target = event.target; target && target != this; target = document.id(target.parentNode)){
|
||||
if (target && check(split, target, event)) return fn.call(target, event, target);
|
||||
}
|
||||
};
|
||||
|
||||
var formObserver = function(eventName){
|
||||
|
||||
var $delegationKey = '$delegation:';
|
||||
|
||||
return {
|
||||
base: 'focusin',
|
||||
|
||||
onRemove: function(element){
|
||||
element.retrieve($delegationKey + 'forms', []).each(function(el){
|
||||
el.retrieve($delegationKey + 'listeners', []).each(function(listener){
|
||||
el.removeEvent(eventName, listener);
|
||||
});
|
||||
el.eliminate($delegationKey + eventName + 'listeners')
|
||||
.eliminate($delegationKey + eventName + 'originalFn');
|
||||
});
|
||||
},
|
||||
|
||||
listener: function(split, fn, args, monitor, options){
|
||||
var event = args[0],
|
||||
forms = this.retrieve($delegationKey + 'forms', []),
|
||||
target = event.target,
|
||||
form = (target.get('tag') == 'form') ? target : event.target.getParent('form');
|
||||
|
||||
if (!form) return;
|
||||
|
||||
var formEvents = form.retrieve($delegationKey + 'originalFn', []),
|
||||
formListeners = form.retrieve($delegationKey + 'listeners', []),
|
||||
self = this;
|
||||
|
||||
forms.include(form);
|
||||
this.store($delegationKey + 'forms', forms);
|
||||
|
||||
if (!formEvents.contains(fn)){
|
||||
var formListener = function(event){
|
||||
bubbleUp.call(self, split, event, fn);
|
||||
};
|
||||
form.addEvent(eventName, formListener);
|
||||
|
||||
formEvents.push(fn);
|
||||
formListeners.push(formListener);
|
||||
|
||||
form.store($delegationKey + eventName + 'originalFn', formEvents)
|
||||
.store($delegationKey + eventName + 'listeners', formListeners);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
var inputObserver = function(eventName){
|
||||
return {
|
||||
base: 'focusin',
|
||||
listener: function(split, fn, args){
|
||||
var events = {blur: function(){
|
||||
this.removeEvents(events);
|
||||
}}, self = this;
|
||||
events[eventName] = function(event){
|
||||
bubbleUp.call(self, split, event, fn);
|
||||
};
|
||||
args[0].target.addEvents(events);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
var eventOptions = {
|
||||
mouseenter: {
|
||||
base: 'mouseover'
|
||||
},
|
||||
mouseleave: {
|
||||
base: 'mouseout'
|
||||
},
|
||||
focus: {
|
||||
base: 'focus' + (eventListenerSupport ? '' : 'in'),
|
||||
args: [true]
|
||||
},
|
||||
blur: {
|
||||
base: eventListenerSupport ? 'blur' : 'focusout',
|
||||
args: [true]
|
||||
}
|
||||
};
|
||||
|
||||
if (!eventListenerSupport) Object.append(eventOptions, {
|
||||
submit: formObserver('submit'),
|
||||
reset: formObserver('reset'),
|
||||
change: inputObserver('change'),
|
||||
select: inputObserver('select')
|
||||
});
|
||||
|
||||
Event.definePseudo('relay', {
|
||||
listener: function(split, fn, args){
|
||||
bubbleUp.call(this, split, args[0], fn);
|
||||
},
|
||||
options: eventOptions
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
|
||||
/*
|
||||
---
|
||||
|
||||
@@ -1521,7 +1159,7 @@ var Sortables = new Class({
|
||||
if (
|
||||
!this.idle ||
|
||||
event.rightClick ||
|
||||
['button', 'input', 'a'].contains(event.target.get('tag'))
|
||||
['button', 'input', 'a', 'textarea'].contains(event.target.get('tag'))
|
||||
) return;
|
||||
|
||||
this.idle = false;
|
||||
@@ -2271,7 +1909,7 @@ var local = Element.Position = {
|
||||
Element.implement({
|
||||
|
||||
position: function(options){
|
||||
if (options && (options.x != null || options.y != null)) {
|
||||
if (options && (options.x != null || options.y != null)){
|
||||
return (original ? original.apply(this, arguments) : this);
|
||||
}
|
||||
var position = this.setStyle('position', 'absolute').calculatePosition(options);
|
||||
|
||||
Reference in New Issue
Block a user