diff options
Diffstat (limited to 'module/web/static/js/libs/jquery.animate-enhanced-0.99.js')
-rw-r--r-- | module/web/static/js/libs/jquery.animate-enhanced-0.99.js | 812 |
1 files changed, 0 insertions, 812 deletions
diff --git a/module/web/static/js/libs/jquery.animate-enhanced-0.99.js b/module/web/static/js/libs/jquery.animate-enhanced-0.99.js deleted file mode 100644 index 365ca2460..000000000 --- a/module/web/static/js/libs/jquery.animate-enhanced-0.99.js +++ /dev/null @@ -1,812 +0,0 @@ -/* - jquery.animate-enhanced plugin v0.99 - --- - http://github.com/benbarnett/jQuery-Animate-Enhanced - http://benbarnett.net - @benpbarnett - --- - Copyright (c) 2012 Ben Barnett - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - --- - Extends jQuery.animate() to automatically use CSS3 transformations where applicable. - Tested with jQuery 1.3.2+ - - Supports -moz-transition, -webkit-transition, -o-transition, transition - - Targetted properties (for now): - - left - - top - - opacity - - width - - height - - Usage (exactly the same as it would be normally): - - jQuery(element).animate({left: 200}, 500, function() { - // callback - }); - - Changelog: - 0.99 (5/12/2012): - - PR #109 Added support for list-item nodes. FadeIn on tags was omitting the list-style support. (thx @SeanCannon) - - 0.98 (12/11/2012): - - Merging pull request #106 thx @gboysko - checking for ownerDocument before using getComputedStyle - - 0.97 (6/11/2012): - - Merging pull request #104 thx @gavrochelegnou - .bind instead of .one - - 0.96a (20/08/2012): - - Checking event is from dispatch target (issue #58) - - 0.96 (20/08/2012): - - Fixes for context, all elements returned as context (issue #84) - - Reset position with leaveTransforms !== true fixes (issue #93) - - - 0.95 (20/08/2012): - - If target opacity == current opacity, pass back to jquery native to get callback firing (#94) - - 0.94 (20/08/2012): - - Addresses Firefox callback mechanisms (issue #94) - - using $.one() to bind to CSS callbacks in a more generic way - - 0.93 (6/8/2012): - - Adding other Opera 'transitionend' event (re: issue #90) - - 0.92 (6/8/2012): - - Seperate unbinds into different threads (re: issue #91) - - 0.91 (2/4/2012): - - Merge Pull Request #74 - Unit Management - - 0.90 (7/3/2012): - - Adding public $.toggleDisabledByDefault() feature to disable entire plugin by default (Issue #73) - - 0.89 (24/1/2012): - - Adding 'avoidCSSTransitions' property. Set to true to disable entire plugin. (Issue #47) - - 0.88 (24/1/2012): - - Fix Issue #67 for HighchartsJS compatibility - - 0.87 (24/1/2012): - - Fix Issue #66 selfCSSData.original is undefined - - 0.86 (9/1/2012): - - Strict JS fix for undefined variable - - 0.85 (20/12/2011): - - Merge Pull request #57 from Kronuz - - Codebase cleaned and now passes jshint. - - Fixed a few bugs (it now saves and restores the original css transition properties). - - fadeOut() is fixed, it wasn't restoring the opacity after hiding it. - - 0.80 (13/09/2011): - - Issue #28 - Report $(el).is(':animated') fix - - 0.79 (06/09/2011): - - Issue #42 - Right negative position animation: please see issue notes on Github. - - 0.78 (02/09/2011): - - Issue #18 - jQuery/$ reference joys - - 0.77 (02/09/2011): - - Adding feature on Github issue #44 - Use 3D Transitions by default - - 0.76 (28/06/2011): - - Fixing issue #37 - fixed stop() method (with gotoEnd == false) - - 0.75 (15/06/2011): - - Fixing issue #35 to pass actual object back as context for callback - - 0.74 (28/05/2011): - - Fixing issue #29 to play nice with 1.6+ - - 0.73 (05/03/2011): - - Merged Pull Request #26: Fixed issue with fadeOut() / "hide" shortcut - - 0.72 (05/03/2011): - - Merged Pull Request #23: Added Penner equation approximations from Matthew Lein's Ceaser, and added failsafe fallbacks - - 0.71 (05/03/2011): - - Merged Pull Request #24: Changes translation object to integers instead of strings to fix relative values bug with leaveTransforms = true - - 0.70 (17/03/2011): - - Merged Pull Request from amlw-nyt to add bottom/right handling - - 0.68 (15/02/2011): - - width/height fixes & queue issues resolved. - - 0.67 (15/02/2011): - - Code cleanups & file size improvements for compression. - - 0.66 (15/02/2011): - - Zero second fadeOut(), fadeIn() fixes - - 0.65 (01/02/2011): - - Callbacks with queue() support refactored to support element arrays - - 0.64 (27/01/2011): - - BUGFIX #13: .slideUp(), .slideToggle(), .slideDown() bugfixes in Webkit - - 0.63 (12/01/2011): - - BUGFIX #11: callbacks not firing when new value == old value - - 0.62 (10/01/2011): - - BUGFIX #11: queue is not a function issue fixed - - 0.61 (10/01/2011): - - BUGFIX #10: Negative positions converting to positive - - 0.60 (06/01/2011): - - Animate function rewrite in accordance with new queue system - - BUGFIX #8: Left/top position values always assumed relative rather than absolute - - BUGFIX #9: animation as last item in a chain - the chain is ignored? - - BUGFIX: width/height CSS3 transformation with left/top working - - 0.55 (22/12/2010): - - isEmptyObject function for <jQuery 1.4 (requires 1.3.2) - - 0.54a (22/12/2010): - - License changed to MIT (http://www.opensource.org/licenses/mit-license.php) - - 0.54 (22/12/2010): - - Removed silly check for 'jQuery UI' bailouts. Sorry. - - Scoping issues fixed - Issue #4: $(this) should give you a reference to the selector being animated.. per jquery's core animation funciton. - - 0.53 (17/11/2010): - - New $.translate() method to easily calculate current transformed translation - - Repeater callback bug fix for leaveTransforms:true (was constantly appending properties) - - 0.52 (16/11/2010): - - leaveTransforms: true bug fixes - - 'Applying' user callback function to retain 'this' context - - 0.51 (08/11/2010): - - Bailing out with jQuery UI. This is only so the plugin plays nice with others and is TEMPORARY. - - 0.50 (08/11/2010): - - Support for $.fn.stop() - - Fewer jQuery.fn entries to preserve namespace - - All references $ converted to jQuery - - jsDoc Toolkit style commenting for docs (coming soon) - - 0.49 (19/10/2010): - - Handling of 'undefined' errors for secondary CSS objects - - Support to enhance 'width' and 'height' properties (except shortcuts involving jQuery.fx.step, e.g slideToggle) - - Bugfix: Positioning when using avoidTransforms: true (thanks Ralf Santbergen reports) - - Bugfix: Callbacks and Scope issues - - 0.48 (13/10/2010): - - Checks for 3d support before applying - - 0.47 (12/10/2010); - - Compatible with .fadeIn(), .fadeOut() - - Use shortcuts, no duration for jQuery default or "fast" and "slow" - - Clean up callback event listeners on complete (preventing multiple callbacks) - - 0.46 (07/10/2010); - - Compatible with .slideUp(), .slideDown(), .slideToggle() - - 0.45 (06/10/2010): - - 'Zero' position bug fix (was originally translating by 0 zero pixels, i.e. no movement) - - 0.4 (05/10/2010): - - Iterate over multiple elements and store transforms in jQuery.data per element - - Include support for relative values (+= / -=) - - Better unit sanitization - - Performance tweaks - - Fix for optional callback function (was required) - - Applies data[translateX] and data[translateY] to elements for easy access - - Added 'easeInOutQuint' easing function for CSS transitions (requires jQuery UI for JS anims) - - Less need for leaveTransforms = true due to better position detections - */ - -(function(jQuery, originalAnimateMethod, originalStopMethod) { - - // ---------- - // Plugin variables - // ---------- - var cssTransitionProperties = ['top', 'right', 'bottom', 'left', 'opacity', 'height', 'width'], - directions = ['top', 'right', 'bottom', 'left'], - cssPrefixes = ['-webkit-', '-moz-', '-o-', ''], - pluginOptions = ['avoidTransforms', 'useTranslate3d', 'leaveTransforms'], - rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/, - rupper = /([A-Z])/g, - defaultEnhanceData = { - secondary: {}, - meta: { - top: 0, - right: 0, - bottom: 0, - left: 0 - } - }, - valUnit = 'px', - - DATA_KEY = 'jQe', - CUBIC_BEZIER_OPEN = 'cubic-bezier(', - CUBIC_BEZIER_CLOSE = ')', - - originalAnimatedFilter = null, - pluginDisabledDefault = false; - - // ---------- - // Check if this browser supports CSS3 transitions - // ---------- - var thisBody = document.body || document.documentElement, - thisStyle = thisBody.style, - transitionEndEvent = 'webkitTransitionEnd oTransitionEnd transitionend', - cssTransitionsSupported = thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.OTransition !== undefined || thisStyle.transition !== undefined, - has3D = ('WebKitCSSMatrix' in window && 'm11' in new WebKitCSSMatrix()), - use3DByDefault = has3D; - - // ---------- - // Extended :animated filter - // ---------- - if (jQuery.expr && jQuery.expr.filters) { - originalAnimatedFilter = jQuery.expr.filters.animated; - jQuery.expr.filters.animated = function(elem) { - return jQuery(elem).data('events') && jQuery(elem).data('events')[transitionEndEvent] ? true : originalAnimatedFilter.call(this, elem); - }; - } - - /** - @private - @name _getUnit - @function - @description Return unit value ("px", "%", "em" for re-use correct one when translating) - @param {variant} [val] Target value - */ - function _getUnit(val) { - return val.match(/\D+$/); - } - - /** - @private - @name _interpretValue - @function - @description Interpret value ("px", "+=" and "-=" sanitisation) - @param {object} [element] The Element for current CSS analysis - @param {variant} [val] Target value - @param {string} [prop] The property we're looking at - @param {boolean} [isTransform] Is this a CSS3 transform? - */ - function _interpretValue(e, val, prop, isTransform) { - // this is a nasty fix, but we check for prop == 'd' to see if we're dealing with SVG, and abort - if (prop == "d") return; - if (!_isValidElement(e)) return; - - var parts = rfxnum.exec(val), - start = e.css(prop) === 'auto' ? 0 : e.css(prop), - cleanCSSStart = typeof start == 'string' ? _cleanValue(start) : start, - cleanTarget = typeof val == 'string' ? _cleanValue(val) : val, - cleanStart = isTransform === true ? 0 : cleanCSSStart, - hidden = e.is(':hidden'), - translation = e.translation(); - - if (prop == 'left') cleanStart = parseInt(cleanCSSStart, 10) + translation.x; - if (prop == 'right') cleanStart = parseInt(cleanCSSStart, 10) + translation.x; - if (prop == 'top') cleanStart = parseInt(cleanCSSStart, 10) + translation.y; - if (prop == 'bottom') cleanStart = parseInt(cleanCSSStart, 10) + translation.y; - - // deal with shortcuts - if (!parts && val == 'show') { - cleanStart = 1; - if (hidden) e.css({'display': (e.context.tagName == 'LI') ? 'list-item' : 'block', 'opacity': 0}); - } else if (!parts && val == "hide") { - cleanStart = 0; - } - - if (parts) { - var end = parseFloat(parts[2]); - - // If a +=/-= token was provided, we're doing a relative animation - if (parts[1]) end = ((parts[1] === '-=' ? -1 : 1) * end) + parseInt(cleanStart, 10); - return end; - } else { - return cleanStart; - } - } - - /** - @private - @name _getTranslation - @function - @description Make a translate or translate3d string - @param {integer} [x] - @param {integer} [y] - @param {boolean} [use3D] Use translate3d if available? - */ - function _getTranslation(x, y, use3D) { - return ((use3D === true || (use3DByDefault === true && use3D !== false)) && has3D) ? 'translate3d(' + x + 'px, ' + y + 'px, 0)' : 'translate(' + x + 'px,' + y + 'px)'; - } - - /** - @private - @name _applyCSSTransition - @function - @description Build up the CSS object - @param {object} [e] Element - @param {string} [property] Property we're dealing with - @param {integer} [duration] Duration - @param {string} [easing] Easing function - @param {variant} [value] String/integer for target value - @param {boolean} [isTransform] Is this a CSS transformation? - @param {boolean} [isTranslatable] Is this a CSS translation? - @param {boolean} [use3D] Use translate3d if available? - */ - function _applyCSSTransition(e, property, duration, easing, value, isTransform, isTranslatable, use3D) { - var eCSSData = e.data(DATA_KEY), - enhanceData = eCSSData && !_isEmptyObject(eCSSData) ? eCSSData : jQuery.extend(true, {}, defaultEnhanceData), - offsetPosition = value, - isDirection = jQuery.inArray(property, directions) > -1; - - if (isDirection) { - var meta = enhanceData.meta, - cleanPropertyValue = _cleanValue(e.css(property)) || 0, - stashedProperty = property + '_o'; - - offsetPosition = value - cleanPropertyValue; - - meta[property] = offsetPosition; - meta[stashedProperty] = e.css(property) == 'auto' ? 0 + offsetPosition : cleanPropertyValue + offsetPosition || 0; - enhanceData.meta = meta; - - // fix 0 issue (transition by 0 = nothing) - if (isTranslatable && offsetPosition === 0) { - offsetPosition = 0 - meta[stashedProperty]; - meta[property] = offsetPosition; - meta[stashedProperty] = 0; - } - } - - // reapply data and return - return e.data(DATA_KEY, _applyCSSWithPrefix(e, enhanceData, property, duration, easing, offsetPosition, isTransform, isTranslatable, use3D)); - } - - /** - @private - @name _applyCSSWithPrefix - @function - @description Helper function to build up CSS properties using the various prefixes - @param {object} [cssProperties] Current CSS object to merge with - @param {string} [property] - @param {integer} [duration] - @param {string} [easing] - @param {variant} [value] - @param {boolean} [isTransform] Is this a CSS transformation? - @param {boolean} [isTranslatable] Is this a CSS translation? - @param {boolean} [use3D] Use translate3d if available? - */ - function _applyCSSWithPrefix(e, cssProperties, property, duration, easing, value, isTransform, isTranslatable, use3D) { - var saveOriginal = false, - transform = isTransform === true && isTranslatable === true; - - cssProperties = cssProperties || {}; - if (!cssProperties.original) { - cssProperties.original = {}; - saveOriginal = true; - } - cssProperties.properties = cssProperties.properties || {}; - cssProperties.secondary = cssProperties.secondary || {}; - - var meta = cssProperties.meta, - original = cssProperties.original, - properties = cssProperties.properties, - secondary = cssProperties.secondary; - - for (var i = cssPrefixes.length - 1; i >= 0; i--) { - var tp = cssPrefixes[i] + 'transition-property', - td = cssPrefixes[i] + 'transition-duration', - tf = cssPrefixes[i] + 'transition-timing-function'; - - property = (transform ? cssPrefixes[i] + 'transform' : property); - - if (saveOriginal) { - original[tp] = e.css(tp) || ''; - original[td] = e.css(td) || ''; - original[tf] = e.css(tf) || ''; - } - - secondary[property] = transform ? _getTranslation(meta.left, meta.top, use3D) : value; - - properties[tp] = (properties[tp] ? properties[tp] + ',' : '') + property; - properties[td] = (properties[td] ? properties[td] + ',' : '') + duration + 'ms'; - properties[tf] = (properties[tf] ? properties[tf] + ',' : '') + easing; - } - - return cssProperties; - } - - /** - @private - @name _isBoxShortcut - @function - @description Shortcut to detect if we need to step away from slideToggle, CSS accelerated transitions (to come later with fx.step support) - @param {object} [prop] - */ - function _isBoxShortcut(prop) { - for (var property in prop) { - if ((property == 'width' || property == 'height') && (prop[property] == 'show' || prop[property] == 'hide' || prop[property] == 'toggle')) { - return true; - } - } - return false; - } - - /** - @private - @name _isEmptyObject - @function - @description Check if object is empty (<1.4 compatibility) - @param {object} [obj] - */ - function _isEmptyObject(obj) { - for (var i in obj) { - return false; - } - return true; - } - - /** - @private - @name _cleanValue - @function - @description Remove 'px' and other artifacts - @param {variant} [val] - */ - function _cleanValue(val) { - return parseFloat(val.replace(_getUnit(val), '')); - } - - function _isValidElement(element) { - var allValid = true; - element.each(function(index, el) { - allValid = allValid && el.ownerDocument; - return allValid; - }); - return allValid; - } - - /** - @private - @name _appropriateProperty - @function - @description Function to check if property should be handled by plugin - @param {string} [prop] - @param {variant} [value] - */ - function _appropriateProperty(prop, value, element) { - if (!_isValidElement(element)) { - return false; - } - - var is = jQuery.inArray(prop, cssTransitionProperties) > -1; - if ((prop == 'width' || prop == 'height' || prop == 'opacity') && (parseFloat(value) === parseFloat(element.css(prop)))) is = false; - return is; - } - - jQuery.extend({ - /** - @public - @name toggle3DByDefault - @function - @description Toggle for plugin settings to automatically use translate3d (where available). Usage: $.toggle3DByDefault - */ - toggle3DByDefault: function() { - return use3DByDefault = !use3DByDefault; - }, - - /** - @public - @name toggleEnabledByDefault - @function - @description Toggle the plugin to be disabled by default (can be overridden per animation with avoidCSSTransitions) - */ - toggleDisabledByDefault: function() { - return pluginDisabledDefault = !pluginDisabledDefault; - } - }); - - /** - @public - @name translation - @function - @description Get current X and Y translations - */ - jQuery.fn.translation = function() { - if (!this[0]) { - return null; - } - - var elem = this[0], - cStyle = window.getComputedStyle(elem, null), - translation = { - x: 0, - y: 0 - }; - - if (cStyle) { - for (var i = cssPrefixes.length - 1; i >= 0; i--) { - var transform = cStyle.getPropertyValue(cssPrefixes[i] + 'transform'); - if (transform && (/matrix/i).test(transform)) { - var explodedMatrix = transform.replace(/^matrix\(/i, '').split(/, |\)$/g); - translation = { - x: parseInt(explodedMatrix[4], 10), - y: parseInt(explodedMatrix[5], 10) - }; - - break; - } - } - } - - return translation; - }; - - /** - @public - @name jQuery.fn.animate - @function - @description The enhanced jQuery.animate function - @param {string} [property] - @param {string} [speed] - @param {string} [easing] - @param {function} [callback] - */ - jQuery.fn.animate = function(prop, speed, easing, callback) { - prop = prop || {}; - var isTranslatable = !(typeof prop['bottom'] !== 'undefined' || typeof prop['right'] !== 'undefined'), - optall = jQuery.speed(speed, easing, callback), - elements = this, - callbackQueue = 0, - propertyCallback = function() { - callbackQueue--; - if (callbackQueue === 0) { - // we're done, trigger the user callback - if (typeof optall.complete === 'function') { - optall.complete.apply(elements, arguments); - } - } - }, - bypassPlugin = (typeof prop['avoidCSSTransitions'] !== 'undefined') ? prop['avoidCSSTransitions'] : pluginDisabledDefault; - - if (bypassPlugin === true || !cssTransitionsSupported || _isEmptyObject(prop) || _isBoxShortcut(prop) || optall.duration <= 0 || (jQuery.fn.animate.defaults.avoidTransforms === true && prop['avoidTransforms'] !== false)) { - return originalAnimateMethod.apply(this, arguments); - } - - return this[ optall.queue === true ? 'queue' : 'each' ](function() { - var self = jQuery(this), - opt = jQuery.extend({}, optall), - cssCallback = function(e) { - var selfCSSData = self.data(DATA_KEY) || { original: {} }, - restore = {}; - - if (e.eventPhase != 2) // not at dispatching target (thanks @warappa issue #58) - return; - - // convert translations to left & top for layout - if (prop.leaveTransforms !== true) { - for (var i = cssPrefixes.length - 1; i >= 0; i--) { - restore[cssPrefixes[i] + 'transform'] = ''; - } - if (isTranslatable && typeof selfCSSData.meta !== 'undefined') { - for (var j = 0, dir; (dir = directions[j]); ++j) { - restore[dir] = selfCSSData.meta[dir + '_o'] + valUnit; - jQuery(this).css(dir, restore[dir]); - } - } - } - - // remove transition timing functions - self. - unbind(transitionEndEvent). - css(selfCSSData.original). - css(restore). - data(DATA_KEY, null); - - // if we used the fadeOut shortcut make sure elements are display:none - if (prop.opacity === 'hide') { - self.css({'display': 'none', 'opacity': ''}); - } - - // run the main callback function - propertyCallback.call(this); - }, - easings = { - bounce: CUBIC_BEZIER_OPEN + '0.0, 0.35, .5, 1.3' + CUBIC_BEZIER_CLOSE, - linear: 'linear', - swing: 'ease-in-out', - - // Penner equation approximations from Matthew Lein's Ceaser: http://matthewlein.com/ceaser/ - easeInQuad: CUBIC_BEZIER_OPEN + '0.550, 0.085, 0.680, 0.530' + CUBIC_BEZIER_CLOSE, - easeInCubic: CUBIC_BEZIER_OPEN + '0.550, 0.055, 0.675, 0.190' + CUBIC_BEZIER_CLOSE, - easeInQuart: CUBIC_BEZIER_OPEN + '0.895, 0.030, 0.685, 0.220' + CUBIC_BEZIER_CLOSE, - easeInQuint: CUBIC_BEZIER_OPEN + '0.755, 0.050, 0.855, 0.060' + CUBIC_BEZIER_CLOSE, - easeInSine: CUBIC_BEZIER_OPEN + '0.470, 0.000, 0.745, 0.715' + CUBIC_BEZIER_CLOSE, - easeInExpo: CUBIC_BEZIER_OPEN + '0.950, 0.050, 0.795, 0.035' + CUBIC_BEZIER_CLOSE, - easeInCirc: CUBIC_BEZIER_OPEN + '0.600, 0.040, 0.980, 0.335' + CUBIC_BEZIER_CLOSE, - easeInBack: CUBIC_BEZIER_OPEN + '0.600, -0.280, 0.735, 0.045' + CUBIC_BEZIER_CLOSE, - easeOutQuad: CUBIC_BEZIER_OPEN + '0.250, 0.460, 0.450, 0.940' + CUBIC_BEZIER_CLOSE, - easeOutCubic: CUBIC_BEZIER_OPEN + '0.215, 0.610, 0.355, 1.000' + CUBIC_BEZIER_CLOSE, - easeOutQuart: CUBIC_BEZIER_OPEN + '0.165, 0.840, 0.440, 1.000' + CUBIC_BEZIER_CLOSE, - easeOutQuint: CUBIC_BEZIER_OPEN + '0.230, 1.000, 0.320, 1.000' + CUBIC_BEZIER_CLOSE, - easeOutSine: CUBIC_BEZIER_OPEN + '0.390, 0.575, 0.565, 1.000' + CUBIC_BEZIER_CLOSE, - easeOutExpo: CUBIC_BEZIER_OPEN + '0.190, 1.000, 0.220, 1.000' + CUBIC_BEZIER_CLOSE, - easeOutCirc: CUBIC_BEZIER_OPEN + '0.075, 0.820, 0.165, 1.000' + CUBIC_BEZIER_CLOSE, - easeOutBack: CUBIC_BEZIER_OPEN + '0.175, 0.885, 0.320, 1.275' + CUBIC_BEZIER_CLOSE, - easeInOutQuad: CUBIC_BEZIER_OPEN + '0.455, 0.030, 0.515, 0.955' + CUBIC_BEZIER_CLOSE, - easeInOutCubic: CUBIC_BEZIER_OPEN + '0.645, 0.045, 0.355, 1.000' + CUBIC_BEZIER_CLOSE, - easeInOutQuart: CUBIC_BEZIER_OPEN + '0.770, 0.000, 0.175, 1.000' + CUBIC_BEZIER_CLOSE, - easeInOutQuint: CUBIC_BEZIER_OPEN + '0.860, 0.000, 0.070, 1.000' + CUBIC_BEZIER_CLOSE, - easeInOutSine: CUBIC_BEZIER_OPEN + '0.445, 0.050, 0.550, 0.950' + CUBIC_BEZIER_CLOSE, - easeInOutExpo: CUBIC_BEZIER_OPEN + '1.000, 0.000, 0.000, 1.000' + CUBIC_BEZIER_CLOSE, - easeInOutCirc: CUBIC_BEZIER_OPEN + '0.785, 0.135, 0.150, 0.860' + CUBIC_BEZIER_CLOSE, - easeInOutBack: CUBIC_BEZIER_OPEN + '0.680, -0.550, 0.265, 1.550' + CUBIC_BEZIER_CLOSE - }, - domProperties = {}, - cssEasing = easings[opt.easing || 'swing'] ? easings[opt.easing || 'swing'] : opt.easing || 'swing'; - - // seperate out the properties for the relevant animation functions - for (var p in prop) { - if (jQuery.inArray(p, pluginOptions) === -1) { - var isDirection = jQuery.inArray(p, directions) > -1, - cleanVal = _interpretValue(self, prop[p], p, (isDirection && prop.avoidTransforms !== true)); - - if (prop.avoidTransforms !== true && _appropriateProperty(p, cleanVal, self)) { - _applyCSSTransition( - self, - p, - opt.duration, - cssEasing, - isDirection && prop.avoidTransforms === true ? cleanVal + valUnit : cleanVal, - isDirection && prop.avoidTransforms !== true, - isTranslatable, - prop.useTranslate3d === true); - - } - else { - domProperties[p] = prop[p]; - } - } - } - - self.unbind(transitionEndEvent); - - var selfCSSData = self.data(DATA_KEY); - - if (selfCSSData && !_isEmptyObject(selfCSSData) && !_isEmptyObject(selfCSSData.secondary)) { - callbackQueue++; - - self.css(selfCSSData.properties); - - // store in a var to avoid any timing issues, depending on animation duration - var secondary = selfCSSData.secondary; - - // has to be done in a timeout to ensure transition properties are set - setTimeout(function() { - self.bind(transitionEndEvent, cssCallback).css(secondary); - }); - } - else { - // it won't get fired otherwise - opt.queue = false; - } - - // fire up DOM based animations - if (!_isEmptyObject(domProperties)) { - callbackQueue++; - originalAnimateMethod.apply(self, [domProperties, { - duration: opt.duration, - easing: jQuery.easing[opt.easing] ? opt.easing : (jQuery.easing.swing ? 'swing' : 'linear'), - complete: propertyCallback, - queue: opt.queue - }]); - } - - // strict JS compliance - return true; - }); - }; - - jQuery.fn.animate.defaults = {}; - - /** - @public - @name jQuery.fn.stop - @function - @description The enhanced jQuery.stop function (resets transforms to left/top) - @param {boolean} [clearQueue] - @param {boolean} [gotoEnd] - @param {boolean} [leaveTransforms] Leave transforms/translations as they are? Default: false (reset translations to calculated explicit left/top props) - */ - jQuery.fn.stop = function(clearQueue, gotoEnd, leaveTransforms) { - if (!cssTransitionsSupported) return originalStopMethod.apply(this, [clearQueue, gotoEnd]); - - // clear the queue? - if (clearQueue) this.queue([]); - - // route to appropriate stop methods - this.each(function() { - var self = jQuery(this), - selfCSSData = self.data(DATA_KEY); - - // is this a CSS transition? - if (selfCSSData && !_isEmptyObject(selfCSSData)) { - var i, restore = {}; - - if (gotoEnd) { - // grab end state properties - restore = selfCSSData.secondary; - - if (!leaveTransforms && typeof selfCSSData.meta['left_o'] !== undefined || typeof selfCSSData.meta['top_o'] !== undefined) { - restore['left'] = typeof selfCSSData.meta['left_o'] !== undefined ? selfCSSData.meta['left_o'] : 'auto'; - restore['top'] = typeof selfCSSData.meta['top_o'] !== undefined ? selfCSSData.meta['top_o'] : 'auto'; - - // remove the transformations - for (i = cssPrefixes.length - 1; i >= 0; i--) { - restore[cssPrefixes[i] + 'transform'] = ''; - } - } - } else if (!_isEmptyObject(selfCSSData.secondary)) { - var cStyle = window.getComputedStyle(self[0], null); - if (cStyle) { - // grab current properties - for (var prop in selfCSSData.secondary) { - if (selfCSSData.secondary.hasOwnProperty(prop)) { - prop = prop.replace(rupper, '-$1').toLowerCase(); - restore[prop] = cStyle.getPropertyValue(prop); - - // is this a matrix property? extract left and top and apply - if (!leaveTransforms && (/matrix/i).test(restore[prop])) { - var explodedMatrix = restore[prop].replace(/^matrix\(/i, '').split(/, |\)$/g); - - // apply the explicit left/top props - restore['left'] = (parseFloat(explodedMatrix[4]) + parseFloat(self.css('left')) + valUnit) || 'auto'; - restore['top'] = (parseFloat(explodedMatrix[5]) + parseFloat(self.css('top')) + valUnit) || 'auto'; - - // remove the transformations - for (i = cssPrefixes.length - 1; i >= 0; i--) { - restore[cssPrefixes[i] + 'transform'] = ''; - } - } - } - } - } - } - - // Remove transition timing functions - // Moving to seperate thread (re: Animation reverts when finished in Android - issue #91) - self.unbind(transitionEndEvent); - self. - css(selfCSSData.original). - css(restore). - data(DATA_KEY, null); - } - else { - // dom transition - originalStopMethod.apply(self, [clearQueue, gotoEnd]); - } - }); - - return this; - }; -})(jQuery, jQuery.fn.animate, jQuery.fn.stop); |