{"version":3,"file":"kendo.fx.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendofx","js","this","$","undefined$1","kendo","window","fx","effects","each","extend","support","browser","transforms","transitions","scaleProperties","scale","scalex","scaley","scale3d","translateProperties","translate","translatex","translatey","translate3d","hasZoom","document","documentElement","style","zoom","matrix3dRegExp","cssParamsRegExp","translateXRegExp","oldEffectsRegExp","singleEffectRegExp","unitRegExp","transformProps","transform2d","transform2units","rotate","skew","cssPrefix","css","round","Math","PX","AUTO","WIDTH","HEIGHT","HIDDEN","ORIGIN","ABORT_ID","OVERFLOW","TRANSLATE","POSITION","COMPLETE_CALLBACK","TRANSITION","TRANSFORM","BACKFACE","PERSPECTIVE","DEFAULT_PERSPECTIVE","TRANSFORM_PERSPECTIVE","directions","left","reverse","property","transition","vertical","modifier","right","down","up","top","bottom","in","out","horizontal","fn","kendoStop","clearQueue","gotoEnd","stopQueue","stop","idx","value","val","animationProperty","that","transformValue","replace","cssText","indexOf","RegExp","step","elem","now","curProxy","prototype","cur","prop","parseFloat","apply","arguments","parseInteger","parseInt","parseCSS","element","strip3DTransforms","properties","key","normalizeCSS","lowerKey","isTransformed","transformation","cssValues","toLowerCase","hasHW3D","push","length","join","transform","match","computed","test","atan2","toggleClass","classes","options","add","split","exclusive","duration","ease","setTimeout","parseEffects","input","mirror","redirectedEffect","effect","$1","$2","direction","effectBody","timeoutID","delay","oldKeys","data","complete","stopTransitionCalled","stopTransition","clearTimeout","removeData","dequeue","call","speeds","merge","obj","acc","propertyName","keys","hasOwnProperty","uniqueSort","height","unique","event","one","taskKeys","retainPosition","completeCallback","getComputedStyles","EffectSet","Class","init","restore","run","jdx","target","children","childrenLength","deferred","Deferred","start","end","done","bind","setReverse","setOptions","addRestoreProperties","prepare","effectName","is","display","reset","setup","animate","resolve","promise","i","restoreCallback","hide","teardown","effectClass","effectSet","parsedEffects","capitalize","elements","useTransition","queue","show","multiple","params","currentValue","single","position","isFixed","originalPosition","dX","dY","isNaN","marginLeft","marginTop","msie","animatedPromise","Effect","_direction","_additionalEffects","_reverse","play","additional","_duration","compositeRun","concat","_complete","shouldHide","noop","word","charAt","toUpperCase","substring","createEffect","name","definition","Element","opt1","opt2","opt3","theDirection","FOUR_DIRECTIONS","IN_OUT","createToggleEffect","defaultStart","defaultEnd","startValue","_startValue","endValue","_endValue","_shouldHide","startDataValue","divisor","tmp","outerWidth","_outerWidth","outerHeight","_outerHeight","previous","previousDivisor","dir","slideIn","margin","origin","offset","axis","setLength","oldLength","realLength","overflow","TRANSFER_START_STATE","appendTo","body","outerBox","box","innerBox","currentScale","fillScale","transformOrigin","x","y","CLIPS","ROTATIONS","clipInHalf","container","size","_container","rotation","zIndex","_clipInHalf","clip","append","face","_face","temporary","addClass","opacity","back","temp","reverseDirection","faceClone","clone","removeAttr","backClone","staticPage","turningPage","transformStyle","find","remove","RESTORE_OVERFLOW","mobileOS","android","_before","_after","transitionClass","_previous","_transitionClass","Error","beforeTransition","callback","afterTransition","_both","_element","_containerClass","containerClass","e","removeClass","off","completeProxy","isAbsolute","parents","filter","first","both","parent","on","animationFrame","Animation","_tickProxy","_tick","_started","tick","onEnd","onCancel","enabled","cancel","Transition","timePassed","min","Date","startDate","moveTo","movable","initial","delta","location","_easeProxy","moveAxis","easeOutExpo","t","b","c","d","pow","easeOutBack","s","result","width","inner","outer","fitScale","max","jQuery"],"sources":["kendo.fx.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendofx = global.kendofx || {}, global.kendofx.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"fx\",\n name: \"Effects\",\n category: \"framework\",\n description: \"Required for animation effects in all Kendo UI widgets.\",\n depends: [ \"core\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n fx = kendo.effects,\n each = $.each,\n extend = $.extend,\n support = kendo.support,\n browser = support.browser,\n transforms = support.transforms,\n transitions = support.transitions,\n scaleProperties = { scale: 0, scalex: 0, scaley: 0, scale3d: 0 },\n translateProperties = { translate: 0, translatex: 0, translatey: 0, translate3d: 0 },\n hasZoom = (typeof document.documentElement.style.zoom !== \"undefined\") && !transforms,\n matrix3dRegExp = /matrix3?d?\\s*\\(.*,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?/i,\n cssParamsRegExp = /^(-?[\\d\\.\\-]+)?[\\w\\s]*,?\\s*(-?[\\d\\.\\-]+)?[\\w\\s]*/i,\n translateXRegExp = /translatex?$/i,\n oldEffectsRegExp = /(zoom|fade|expand)(\\w+)/,\n singleEffectRegExp = /(zoom|fade|expand)/,\n unitRegExp = /[xy]$/i,\n transformProps = [\"perspective\", \"rotate\", \"rotatex\", \"rotatey\", \"rotatez\", \"rotate3d\", \"scale\", \"scalex\", \"scaley\", \"scalez\", \"scale3d\", \"skew\", \"skewx\", \"skewy\", \"translate\", \"translatex\", \"translatey\", \"translatez\", \"translate3d\", \"matrix\", \"matrix3d\"],\n transform2d = [\"rotate\", \"scale\", \"scalex\", \"scaley\", \"skew\", \"skewx\", \"skewy\", \"translate\", \"translatex\", \"translatey\", \"matrix\"],\n transform2units = { \"rotate\": \"deg\", scale: \"\", skew: \"px\", translate: \"px\" },\n cssPrefix = transforms.css,\n round = Math.round,\n BLANK = \"\",\n PX = \"px\",\n NONE = \"none\",\n AUTO = \"auto\",\n WIDTH = \"width\",\n HEIGHT = \"height\",\n HIDDEN = \"hidden\",\n ORIGIN = \"origin\",\n ABORT_ID = \"abortId\",\n OVERFLOW = \"overflow\",\n TRANSLATE = \"translate\",\n POSITION = \"position\",\n COMPLETE_CALLBACK = \"completeCallback\",\n TRANSITION = cssPrefix + \"transition\",\n TRANSFORM = cssPrefix + \"transform\",\n BACKFACE = cssPrefix + \"backface-visibility\",\n PERSPECTIVE = cssPrefix + \"perspective\",\n DEFAULT_PERSPECTIVE = \"1500px\",\n TRANSFORM_PERSPECTIVE = \"perspective(\" + DEFAULT_PERSPECTIVE + \")\",\n directions = {\n left: {\n reverse: \"right\",\n property: \"left\",\n transition: \"translatex\",\n vertical: false,\n modifier: -1\n },\n right: {\n reverse: \"left\",\n property: \"left\",\n transition: \"translatex\",\n vertical: false,\n modifier: 1\n },\n down: {\n reverse: \"up\",\n property: \"top\",\n transition: \"translatey\",\n vertical: true,\n modifier: 1\n },\n up: {\n reverse: \"down\",\n property: \"top\",\n transition: \"translatey\",\n vertical: true,\n modifier: -1\n },\n top: {\n reverse: \"bottom\"\n },\n bottom: {\n reverse: \"top\"\n },\n \"in\": {\n reverse: \"out\",\n modifier: -1\n },\n out: {\n reverse: \"in\",\n modifier: 1\n },\n\n vertical: {\n reverse: \"vertical\"\n },\n\n horizontal: {\n reverse: \"horizontal\"\n }\n };\n\n kendo.directions = directions;\n\n extend($.fn, {\n kendoStop: function(clearQueue, gotoEnd) {\n if (transitions) {\n return fx.stopQueue(this, clearQueue || false, gotoEnd || false);\n } else {\n return this.stop(clearQueue, gotoEnd);\n }\n }\n });\n\n /* jQuery support for all transform animations (FF 3.5/3.6, Opera 10.x, IE9 */\n\n if (transforms && !transitions) {\n each(transform2d, function(idx, value) {\n $.fn[value] = function(val) {\n if (typeof val == \"undefined\") {\n return animationProperty(this, value);\n } else {\n var that = $(this)[0],\n transformValue = value + \"(\" + val + transform2units[value.replace(unitRegExp, \"\")] + \")\";\n\n if (that.style.cssText.indexOf(TRANSFORM) == -1) {\n $(this).css(TRANSFORM, transformValue);\n } else {\n that.style.cssText = that.style.cssText.replace(new RegExp(value + \"\\\\(.*?\\\\)\", \"i\"), transformValue);\n }\n }\n return this;\n };\n\n $.fx.step[value] = function(fx) {\n $(fx.elem)[value](fx.now);\n };\n });\n\n var curProxy = $.fx.prototype.cur;\n $.fx.prototype.cur = function() {\n if (transform2d.indexOf(this.prop) != -1) {\n return parseFloat($(this.elem)[this.prop]());\n }\n\n return curProxy.apply(this, arguments);\n };\n }\n\n kendo.toggleClass = function(element, classes, options, add) {\n if (classes) {\n classes = classes.split(\" \");\n\n if (transitions) {\n options = extend({\n exclusive: \"all\",\n duration: 400,\n ease: \"ease-out\"\n }, options);\n\n element.css(TRANSITION, options.exclusive + \" \" + options.duration + \"ms \" + options.ease);\n setTimeout(function() {\n element.css(TRANSITION, \"\").css(HEIGHT);\n }, options.duration); // TODO: this should fire a kendoAnimate session instead.\n }\n\n each(classes, function(idx, value) {\n element.toggleClass(value, add);\n });\n }\n\n return element;\n };\n\n kendo.parseEffects = function(input, mirror) {\n var effects = {};\n\n if (typeof input === \"string\") {\n each(input.split(\" \"), function(idx, value) {\n var redirectedEffect = !singleEffectRegExp.test(value),\n resolved = value.replace(oldEffectsRegExp, function(match, $1, $2) {\n return $1 + \":\" + $2.toLowerCase();\n }), // Support for old zoomIn/fadeOut style, now deprecated.\n effect = resolved.split(\":\"),\n direction = effect[1],\n effectBody = {};\n\n if (effect.length > 1) {\n effectBody.direction = (mirror && redirectedEffect ? directions[direction].reverse : direction);\n }\n\n effects[effect[0]] = effectBody;\n });\n } else {\n each(input, function(idx) {\n var direction = this.direction;\n\n if (direction && mirror && !singleEffectRegExp.test(idx)) {\n this.direction = directions[direction].reverse;\n }\n\n effects[idx] = this;\n });\n }\n\n return effects;\n };\n\n function parseInteger(value) {\n return parseInt(value, 10);\n }\n\n function parseCSS(element, property) {\n return parseInteger(element.css(property));\n }\n\n function keys(obj) {\n var acc = [];\n for (var propertyName in obj) {\n acc.push(propertyName);\n }\n return acc;\n }\n\n function strip3DTransforms(properties) {\n for (var key in properties) {\n if (transformProps.indexOf(key) != -1 && transform2d.indexOf(key) == -1) {\n delete properties[key];\n }\n }\n\n return properties;\n }\n\n function normalizeCSS(element, properties) {\n var transformation = [], cssValues = {}, lowerKey, key, value, isTransformed;\n\n for (key in properties) {\n lowerKey = key.toLowerCase();\n isTransformed = transforms && transformProps.indexOf(lowerKey) != -1;\n\n if (!support.hasHW3D && isTransformed && transform2d.indexOf(lowerKey) == -1) {\n delete properties[key];\n } else {\n value = properties[key];\n\n if (isTransformed) {\n transformation.push(key + \"(\" + value + \")\");\n } else {\n cssValues[key] = value;\n }\n }\n }\n\n if (transformation.length) {\n cssValues[TRANSFORM] = transformation.join(\" \");\n }\n\n return cssValues;\n }\n\n if (transitions) {\n extend(fx, {\n transition: function(element, properties, options) {\n var css,\n delay = 0,\n oldKeys = element.data(\"keys\") || [],\n timeoutID;\n\n options = extend({\n duration: 200,\n ease: \"ease-out\",\n complete: null,\n exclusive: \"all\"\n },\n options\n );\n\n var stopTransitionCalled = false;\n\n var stopTransition = function() {\n if (!stopTransitionCalled) {\n stopTransitionCalled = true;\n\n if (timeoutID) {\n clearTimeout(timeoutID);\n timeoutID = null;\n }\n\n element\n .removeData(ABORT_ID)\n .dequeue()\n .css(TRANSITION, \"\")\n .css(TRANSITION);\n\n options.complete.call(element);\n }\n };\n\n options.duration = $.fx ? $.fx.speeds[options.duration] || options.duration : options.duration;\n\n css = normalizeCSS(element, properties);\n\n $.merge(oldKeys, keys(css));\n\n if ($.hasOwnProperty(\"uniqueSort\")) {\n element\n .data(\"keys\", $.uniqueSort(oldKeys))\n .height();\n } else {\n element\n .data(\"keys\", $.unique(oldKeys))\n .height();\n }\n\n element.css(TRANSITION, options.exclusive + \" \" + options.duration + \"ms \" + options.ease).css(TRANSITION);\n element.css(css).css(TRANSFORM);\n\n /**\n * Use transitionEnd event for browsers who support it - but duplicate it with setTimeout, as the transitionEnd event will not be triggered if no CSS properties change.\n * This should be cleaned up at some point (widget by widget), and refactored to widgets not relying on the complete callback if no transition occurs.\n *\n * For IE9 and below, resort to setTimeout.\n */\n if (transitions.event) {\n element.one(transitions.event, stopTransition);\n if (options.duration !== 0) {\n delay = 500;\n }\n }\n\n timeoutID = setTimeout(stopTransition, options.duration + delay);\n element.data(ABORT_ID, timeoutID);\n element.data(COMPLETE_CALLBACK, stopTransition);\n },\n\n stopQueue: function(element, clearQueue, gotoEnd) {\n var cssValues,\n taskKeys = element.data(\"keys\"),\n retainPosition = (!gotoEnd && taskKeys),\n completeCallback = element.data(COMPLETE_CALLBACK);\n\n if (retainPosition) {\n cssValues = kendo.getComputedStyles(element[0], taskKeys);\n }\n\n if (completeCallback) {\n completeCallback();\n }\n\n if (retainPosition) {\n element.css(cssValues);\n }\n\n return element\n .removeData(\"keys\")\n .stop(clearQueue);\n }\n });\n }\n\n function animationProperty(element, property) {\n if (transforms) {\n var transform = element.css(TRANSFORM);\n if (transform == NONE) {\n return property == \"scale\" ? 1 : 0;\n }\n\n var match = transform.match(new RegExp(property + \"\\\\s*\\\\(([\\\\d\\\\w\\\\.]+)\")),\n computed = 0;\n\n if (match) {\n computed = parseInteger(match[1]);\n } else {\n match = transform.match(matrix3dRegExp) || [0, 0, 0, 0, 0];\n property = property.toLowerCase();\n\n if (translateXRegExp.test(property)) {\n computed = parseFloat(match[3] / match[2]);\n } else if (property == \"translatey\") {\n computed = parseFloat(match[4] / match[2]);\n } else if (property == \"scale\") {\n computed = parseFloat(match[2]);\n } else if (property == \"rotate\") {\n computed = parseFloat(Math.atan2(match[2], match[1]));\n }\n }\n\n return computed;\n } else {\n return parseFloat(element.css(property));\n }\n }\n\n var EffectSet = kendo.Class.extend({\n init: function(element, options) {\n var that = this;\n\n that.element = element;\n that.effects = [];\n that.options = options;\n that.restore = [];\n },\n\n run: function(effects) {\n var that = this,\n effect,\n idx, jdx,\n length = effects.length,\n element = that.element,\n options = that.options,\n deferred = $.Deferred(),\n start = {},\n end = {},\n target,\n children,\n childrenLength;\n\n that.effects = effects;\n\n deferred.done(that.complete.bind(that));\n\n element.data(\"animating\", true);\n\n for (idx = 0; idx < length; idx ++) {\n effect = effects[idx];\n\n effect.setReverse(options.reverse);\n effect.setOptions(options);\n\n that.addRestoreProperties(effect.restore);\n\n effect.prepare(start, end);\n\n children = effect.children();\n\n for (jdx = 0, childrenLength = children.length; jdx < childrenLength; jdx ++) {\n children[jdx].duration(options.duration).run();\n }\n }\n\n // legacy support for options.properties\n for (var effectName in options.effects) {\n extend(end, options.effects[effectName].properties);\n }\n\n // Show the element initially\n if (!element.is(\":visible\")) {\n extend(start, { display: element.data(\"olddisplay\") || \"block\" });\n }\n\n if (transforms && !options.reset) {\n target = element.data(\"targetTransform\");\n\n if (target) {\n start = extend(target, start);\n }\n }\n\n start = normalizeCSS(element, start);\n\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n\n element.css(start)\n .css(TRANSFORM); // Nudge\n\n for (idx = 0; idx < length; idx ++) {\n effects[idx].setup();\n }\n\n if (options.init) {\n options.init();\n }\n\n element.data(\"targetTransform\", end);\n fx.animate(element, end, extend({}, options, { complete: deferred.resolve }));\n\n return deferred.promise();\n },\n\n stop: function() {\n $(this.element).kendoStop(true, true);\n },\n\n addRestoreProperties: function(restore) {\n var element = this.element,\n value,\n i = 0,\n length = restore.length;\n\n for (; i < length; i ++) {\n value = restore[i];\n\n this.restore.push(value);\n\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n },\n\n restoreCallback: function() {\n var element = this.element;\n\n for (var i = 0, length = this.restore.length; i < length; i ++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n\n complete: function() {\n var that = this,\n idx = 0,\n element = that.element,\n options = that.options,\n effects = that.effects,\n length = effects.length;\n\n element\n .removeData(\"animating\")\n .dequeue(); // call next animation from the queue\n\n if (options.hide) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n this.restoreCallback();\n\n if (hasZoom && !transforms) {\n setTimeout(this.restoreCallback.bind(this), 0); // Again jQuery callback in IE8-\n }\n\n for (; idx < length; idx ++) {\n effects[idx].teardown();\n }\n\n if (options.completeCallback) {\n options.completeCallback(element);\n }\n }\n });\n\n fx.promise = function(element, options) {\n var effects = [],\n effectClass,\n effectSet = new EffectSet(element, options),\n parsedEffects = kendo.parseEffects(options.effects),\n effect;\n\n options.effects = parsedEffects;\n\n for (var effectName in parsedEffects) {\n effectClass = fx[capitalize(effectName)];\n\n if (effectClass) {\n effect = new effectClass(element, parsedEffects[effectName].direction);\n effects.push(effect);\n }\n }\n\n if (effects[0]) {\n effectSet.run(effects);\n } else { // Not sure how would an fx promise reach this state - means that you call kendoAnimate with no valid effects? Why?\n if (!element.is(\":visible\")) {\n element.css({ display: element.data(\"olddisplay\") || \"block\" }).css(\"display\");\n }\n\n if (options.init) {\n options.init();\n }\n\n element.dequeue();\n effectSet.complete();\n }\n };\n\n extend(fx, {\n animate: function(elements, properties, options) {\n var useTransition = options.transition !== false;\n delete options.transition;\n\n if (transitions && \"transition\" in fx && useTransition) {\n fx.transition(elements, properties, options);\n } else {\n if (transforms) {\n elements.animate(strip3DTransforms(properties), { queue: false, show: false, hide: false, duration: options.duration, complete: options.complete }); // Stop animate from showing/hiding the element to be able to hide it later on.\n } else {\n elements.each(function() {\n var element = $(this),\n multiple = {};\n\n each(transformProps, function(idx, value) { // remove transforms to avoid IE and older browsers confusion\n var params,\n currentValue = properties ? properties[value] + \" \" : null; // We need to match\n\n if (currentValue) {\n var single = properties;\n\n if (value in scaleProperties && properties[value] !== undefined$1) {\n params = currentValue.match(cssParamsRegExp);\n if (transforms) {\n extend(single, { scale: +params[0] });\n }\n } else {\n if (value in translateProperties && properties[value] !== undefined$1) {\n var position = element.css(POSITION),\n isFixed = (position == \"absolute\" || position == \"fixed\");\n\n if (!element.data(TRANSLATE)) {\n if (isFixed) {\n element.data(TRANSLATE, {\n top: parseCSS(element, \"top\") || 0,\n left: parseCSS(element, \"left\") || 0,\n bottom: parseCSS(element, \"bottom\"),\n right: parseCSS(element, \"right\")\n });\n } else {\n element.data(TRANSLATE, {\n top: parseCSS(element, \"marginTop\") || 0,\n left: parseCSS(element, \"marginLeft\") || 0\n });\n }\n }\n\n var originalPosition = element.data(TRANSLATE);\n\n params = currentValue.match(cssParamsRegExp);\n if (params) {\n\n var dX = value == TRANSLATE + \"y\" ? +null : +params[1],\n dY = value == TRANSLATE + \"y\" ? +params[1] : +params[2];\n\n if (isFixed) {\n if (!isNaN(originalPosition.right)) {\n if (!isNaN(dX)) { extend(single, { right: originalPosition.right - dX }); }\n } else {\n if (!isNaN(dX)) { extend(single, { left: originalPosition.left + dX }); }\n }\n\n if (!isNaN(originalPosition.bottom)) {\n if (!isNaN(dY)) { extend(single, { bottom: originalPosition.bottom - dY }); }\n } else {\n if (!isNaN(dY)) { extend(single, { top: originalPosition.top + dY }); }\n }\n } else {\n if (!isNaN(dX)) { extend(single, { marginLeft: originalPosition.left + dX }); }\n if (!isNaN(dY)) { extend(single, { marginTop: originalPosition.top + dY }); }\n }\n }\n }\n }\n\n if (!transforms && value != \"scale\" && value in single) {\n delete single[value];\n }\n\n if (single) {\n extend(multiple, single);\n }\n }\n });\n\n if (browser.msie) {\n delete multiple.scale;\n }\n\n element.animate(multiple, { queue: false, show: false, hide: false, duration: options.duration, complete: options.complete }); // Stop animate from showing/hiding the element to be able to hide it later on.\n });\n }\n }\n }\n });\n\n fx.animatedPromise = fx.promise;\n\n var Effect = kendo.Class.extend({\n init: function(element, direction) {\n var that = this;\n that.element = element;\n that._direction = direction;\n that.options = {};\n that._additionalEffects = [];\n\n if (!that.restore) {\n that.restore = [];\n }\n },\n\n // Public API\n reverse: function() {\n this._reverse = true;\n return this.run();\n },\n\n play: function() {\n this._reverse = false;\n return this.run();\n },\n\n add: function(additional) {\n this._additionalEffects.push(additional);\n return this;\n },\n\n direction: function(value) {\n this._direction = value;\n return this;\n },\n\n duration: function(duration) {\n this._duration = duration;\n return this;\n },\n\n compositeRun: function() {\n var that = this,\n effectSet = new EffectSet(that.element, { reverse: that._reverse, duration: that._duration }),\n effects = that._additionalEffects.concat([ that ]);\n\n return effectSet.run(effects);\n },\n\n run: function() {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n\n var that = this,\n element = that.element,\n idx = 0,\n restore = that.restore,\n length = restore.length,\n value,\n deferred = $.Deferred(),\n start = {},\n end = {},\n target,\n children = that.children(),\n childrenLength = children.length;\n\n deferred.done(that._complete.bind(that));\n\n element.data(\"animating\", true);\n\n for (idx = 0; idx < length; idx ++) {\n value = restore[idx];\n\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n\n for (idx = 0; idx < childrenLength; idx ++) {\n children[idx].duration(that._duration).run();\n }\n\n that.prepare(start, end);\n\n if (!element.is(\":visible\")) {\n extend(start, { display: element.data(\"olddisplay\") || \"block\" });\n }\n\n if (transforms) {\n target = element.data(\"targetTransform\");\n\n if (target) {\n start = extend(target, start);\n }\n }\n\n start = normalizeCSS(element, start);\n\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n\n element.css(start).css(TRANSFORM); // Trick webkit into re-rendering\n\n that.setup();\n\n element.data(\"targetTransform\", end);\n fx.animate(element, end, { duration: that._duration, complete: deferred.resolve });\n\n return deferred.promise();\n },\n\n stop: function() {\n var idx = 0,\n children = this.children(),\n childrenLength = children.length;\n\n for (idx = 0; idx < childrenLength; idx ++) {\n children[idx].stop();\n }\n\n $(this.element).kendoStop(true, true);\n return this;\n },\n\n restoreCallback: function() {\n var element = this.element;\n\n for (var i = 0, length = this.restore.length; i < length; i ++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n\n _complete: function() {\n var that = this,\n element = that.element;\n\n element\n .removeData(\"animating\")\n .dequeue(); // call next animation from the queue\n\n that.restoreCallback();\n\n if (that.shouldHide()) {\n element.data(\"olddisplay\", element.css(\"display\")).hide();\n }\n\n if (hasZoom && !transforms) {\n setTimeout(that.restoreCallback.bind(that), 0); // Again jQuery callback in IE8-\n }\n\n that.teardown();\n },\n\n /////////////////////////// Support for kendo.animate;\n setOptions: function(options) {\n extend(true, this.options, options);\n },\n\n children: function() {\n return [];\n },\n\n shouldHide: $.noop,\n\n setup: $.noop,\n prepare: $.noop,\n teardown: $.noop,\n directions: [],\n\n setReverse: function(reverse) {\n this._reverse = reverse;\n return this;\n }\n });\n\n function capitalize(word) {\n return word.charAt(0).toUpperCase() + word.substring(1);\n }\n\n function createEffect(name, definition) {\n var effectClass = Effect.extend(definition),\n directions = effectClass.prototype.directions;\n\n fx[capitalize(name)] = effectClass;\n\n fx.Element.prototype[name] = function(direction, opt1, opt2, opt3) {\n return new effectClass(this.element, direction, opt1, opt2, opt3);\n };\n\n each(directions, function(idx, theDirection) {\n fx.Element.prototype[name + capitalize(theDirection)] = function(opt1, opt2, opt3) {\n return new effectClass(this.element, theDirection, opt1, opt2, opt3);\n };\n });\n }\n\n var FOUR_DIRECTIONS = [\"left\", \"right\", \"up\", \"down\"],\n IN_OUT = [\"in\", \"out\"];\n\n createEffect(\"slideIn\", {\n directions: FOUR_DIRECTIONS,\n\n divisor: function(value) {\n this.options.divisor = value;\n return this;\n },\n\n prepare: function(start, end) {\n var that = this,\n tmp,\n element = that.element,\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n direction = directions[that._direction],\n offset = -direction.modifier * (direction.vertical ? outerHeight(element) : outerWidth(element)),\n startValue = offset / (that.options && that.options.divisor || 1) + PX,\n endValue = \"0px\";\n\n if (that._reverse) {\n tmp = start;\n start = end;\n end = tmp;\n }\n\n if (transforms) {\n start[direction.transition] = startValue;\n end[direction.transition] = endValue;\n } else {\n start[direction.property] = startValue;\n end[direction.property] = endValue;\n }\n }\n });\n\n createEffect(\"tile\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, previous) {\n Effect.prototype.init.call(this, element, direction);\n this.options = { previous: previous };\n },\n\n previousDivisor: function(value) {\n this.options.previousDivisor = value;\n return this;\n },\n\n children: function() {\n var that = this,\n reverse = that._reverse,\n previous = that.options.previous,\n divisor = that.options.previousDivisor || 1,\n dir = that._direction;\n\n var children = [ kendo.fx(that.element).slideIn(dir).setReverse(reverse) ];\n\n if (previous) {\n children.push( kendo.fx(previous).slideIn(directions[dir].reverse).divisor(divisor).setReverse(!reverse) );\n }\n\n return children;\n }\n });\n\n function createToggleEffect(name, property, defaultStart, defaultEnd) {\n createEffect(name, {\n directions: IN_OUT,\n\n startValue: function(value) {\n this._startValue = value;\n return this;\n },\n\n endValue: function(value) {\n this._endValue = value;\n return this;\n },\n\n shouldHide: function() {\n return this._shouldHide;\n },\n\n prepare: function(start, end) {\n var that = this,\n startValue,\n endValue,\n out = this._direction === \"out\",\n startDataValue = that.element.data(property),\n startDataValueIsSet = !(isNaN(startDataValue) || startDataValue == defaultStart);\n\n if (startDataValueIsSet) {\n startValue = startDataValue;\n } else if (typeof this._startValue !== \"undefined\") {\n startValue = this._startValue;\n } else {\n startValue = out ? defaultStart : defaultEnd;\n }\n\n if (typeof this._endValue !== \"undefined\") {\n endValue = this._endValue;\n } else {\n endValue = out ? defaultEnd : defaultStart;\n }\n\n if (this._reverse) {\n start[property] = endValue;\n end[property] = startValue;\n } else {\n start[property] = startValue;\n end[property] = endValue;\n }\n\n that._shouldHide = end[property] === defaultEnd;\n }\n });\n }\n\n createToggleEffect(\"fade\", \"opacity\", 1, 0);\n createToggleEffect(\"zoom\", \"scale\", 1, 0.01);\n\n createEffect(\"slideMargin\", {\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n origin = element.data(ORIGIN),\n offset = options.offset,\n margin,\n reverse = that._reverse;\n\n if (!reverse && origin === null) {\n element.data(ORIGIN, parseFloat(element.css(\"margin-\" + options.axis)));\n }\n\n margin = (element.data(ORIGIN) || 0);\n end[\"margin-\" + options.axis] = !reverse ? margin + offset : margin;\n }\n });\n\n createEffect(\"slideTo\", {\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n offset = options.offset.split(\",\"),\n reverse = that._reverse;\n\n if (transforms) {\n end.translatex = !reverse ? offset[0] : 0;\n end.translatey = !reverse ? offset[1] : 0;\n } else {\n end.left = !reverse ? offset[0] : 0;\n end.top = !reverse ? offset[1] : 0;\n }\n element.css(\"left\");\n }\n });\n\n createEffect(\"expand\", {\n directions: [\"horizontal\", \"vertical\"],\n\n restore: [ OVERFLOW ],\n\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n options = that.options,\n reverse = that._reverse,\n property = that._direction === \"vertical\" ? HEIGHT : WIDTH,\n setLength = element[0].style[property],\n oldLength = element.data(property),\n length = parseFloat(oldLength || setLength),\n realLength = round(element.css(property, AUTO)[property]());\n\n start.overflow = HIDDEN;\n\n length = (options && options.reset) ? realLength || length : length || realLength;\n\n end[property] = (reverse ? 0 : length) + PX;\n start[property] = (reverse ? length : 0) + PX;\n\n if (oldLength === undefined$1) {\n element.data(property, setLength);\n }\n },\n\n shouldHide: function() {\n return this._reverse;\n },\n\n teardown: function() {\n var that = this,\n element = that.element,\n property = that._direction === \"vertical\" ? HEIGHT : WIDTH,\n length = element.data(property);\n\n if (length == AUTO || length === BLANK) {\n setTimeout(function() { element.css(property, AUTO).css(property); }, 0); // jQuery animate complete callback in IE is called before the last animation step!\n }\n }\n });\n\n var TRANSFER_START_STATE = { position: \"absolute\", marginLeft: 0, marginTop: 0, scale: 1 };\n /**\n * Intersection point formulas are taken from here - http://zonalandeducation.com/mmts/intersections/intersectionOfTwoLines1/intersectionOfTwoLines1.html\n * Formula for a linear function from two points from here - http://demo.activemath.org/ActiveMath2/search/show.cmd?id=mbase://AC_UK_calculus/functions/ex_linear_equation_two_points\n * The transform origin point is the intersection point of the two lines from the top left corners/top right corners of the element and target.\n * The math and variables below MAY BE SIMPLIFIED (zeroes removed), but this would make the formula too cryptic.\n */\n createEffect(\"transfer\", {\n init: function(element, target) {\n this.element = element;\n this.options = { target: target };\n this.restore = [];\n },\n\n setup: function() {\n this.element.appendTo(document.body);\n },\n\n prepare: function(start, end) {\n var that = this,\n element = that.element,\n outerBox = fx.box(element),\n innerBox = fx.box(that.options.target),\n currentScale = animationProperty(element, \"scale\"),\n scale = fx.fillScale(innerBox, outerBox),\n transformOrigin = fx.transformOrigin(innerBox, outerBox);\n\n extend(start, TRANSFER_START_STATE);\n end.scale = 1;\n\n element.css(TRANSFORM, \"scale(1)\").css(TRANSFORM);\n element.css(TRANSFORM, \"scale(\" + currentScale + \")\");\n\n start.top = outerBox.top;\n start.left = outerBox.left;\n start.transformOrigin = transformOrigin.x + PX + \" \" + transformOrigin.y + PX;\n\n if (that._reverse) {\n start.scale = scale;\n } else {\n end.scale = scale;\n }\n }\n });\n\n\n var CLIPS = {\n top: \"rect(auto auto $size auto)\",\n bottom: \"rect($size auto auto auto)\",\n left: \"rect(auto $size auto auto)\",\n right: \"rect(auto auto auto $size)\"\n };\n\n var ROTATIONS = {\n top: { start: \"rotatex(0deg)\", end: \"rotatex(180deg)\" },\n bottom: { start: \"rotatex(-180deg)\", end: \"rotatex(0deg)\" },\n left: { start: \"rotatey(0deg)\", end: \"rotatey(-180deg)\" },\n right: { start: \"rotatey(180deg)\", end: \"rotatey(0deg)\" }\n };\n\n function clipInHalf(container, direction) {\n var vertical = kendo.directions[direction].vertical,\n size = (container[vertical ? HEIGHT : WIDTH]() / 2) + \"px\";\n\n return CLIPS[direction].replace(\"$size\", size);\n }\n\n createEffect(\"turningPage\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n\n prepare: function(start, end) {\n var that = this,\n reverse = that._reverse,\n direction = reverse ? directions[that._direction].reverse : that._direction,\n rotation = ROTATIONS[direction];\n\n start.zIndex = 1;\n\n if (that._clipInHalf) {\n start.clip = clipInHalf(that._container, kendo.directions[direction].reverse);\n }\n\n start[BACKFACE] = HIDDEN;\n\n end[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.start : rotation.end);\n start[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.end : rotation.start);\n },\n\n setup: function() {\n this._container.append(this.element);\n },\n\n face: function(value) {\n this._face = value;\n return this;\n },\n\n shouldHide: function() {\n var that = this,\n reverse = that._reverse,\n face = that._face;\n\n return (reverse && !face) || (!reverse && face);\n },\n\n clipInHalf: function(value) {\n this._clipInHalf = value;\n return this;\n },\n\n temporary: function() {\n this.element.addClass('temp-page');\n return this;\n }\n });\n\n createEffect(\"staticPage\", {\n directions: FOUR_DIRECTIONS,\n\n init: function(element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n\n restore: [\"clip\"],\n\n prepare: function(start, end) {\n var that = this,\n direction = that._reverse ? directions[that._direction].reverse : that._direction;\n\n start.clip = clipInHalf(that._container, direction);\n start.opacity = 0.999;\n end.opacity = 1;\n },\n\n shouldHide: function() {\n var that = this,\n reverse = that._reverse,\n face = that._face;\n\n return (reverse && !face) || (!reverse && face);\n },\n\n face: function(value) {\n this._face = value;\n return this;\n }\n });\n\n createEffect(\"pageturn\", {\n directions: [\"horizontal\", \"vertical\"],\n\n init: function(element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n\n children: function() {\n var that = this,\n options = that.options,\n direction = that._direction === \"horizontal\" ? \"left\" : \"top\",\n reverseDirection = kendo.directions[direction].reverse,\n reverse = that._reverse,\n temp,\n faceClone = options.face.clone(true).removeAttr(\"id\"),\n backClone = options.back.clone(true).removeAttr(\"id\"),\n element = that.element;\n\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n\n return [\n kendo.fx(options.face).staticPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).staticPage(reverseDirection, element).setReverse(reverse),\n kendo.fx(faceClone).turningPage(direction, element).face(true).clipInHalf(true).temporary().setReverse(reverse),\n kendo.fx(backClone).turningPage(reverseDirection, element).clipInHalf(true).temporary().setReverse(reverse)\n ];\n },\n\n prepare: function(start, end) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = \"preserve-3d\";\n // hack to trigger transition end.\n start.opacity = 0.999;\n end.opacity = 1;\n },\n\n teardown: function() {\n this.element.find(\".temp-page\").remove();\n }\n });\n\n createEffect(\"flip\", {\n directions: [\"horizontal\", \"vertical\"],\n\n init: function(element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n\n children: function() {\n var that = this,\n options = that.options,\n direction = that._direction === \"horizontal\" ? \"left\" : \"top\",\n reverseDirection = kendo.directions[direction].reverse,\n reverse = that._reverse,\n temp,\n element = that.element;\n\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n\n return [\n kendo.fx(options.face).turningPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).turningPage(reverseDirection, element).setReverse(reverse)\n ];\n },\n\n prepare: function(start) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = \"preserve-3d\";\n }\n });\n\n var RESTORE_OVERFLOW = !support.mobileOS.android;\n var IGNORE_TRANSITION_EVENT_SELECTOR = \".km-touch-scrollbar, .km-actionsheet-wrapper\";\n\n createEffect(\"replace\", {\n _before: $.noop,\n _after: $.noop,\n init: function(element, previous, transitionClass) {\n Effect.prototype.init.call(this, element);\n this._previous = $(previous);\n this._transitionClass = transitionClass;\n },\n\n duration: function() {\n throw new Error(\"The replace effect does not support duration setting; the effect duration may be customized through the transition class rule\");\n },\n\n beforeTransition: function(callback) {\n this._before = callback;\n return this;\n },\n\n afterTransition: function(callback) {\n this._after = callback;\n return this;\n },\n\n _both: function() {\n return $().add(this._element).add(this._previous);\n },\n\n _containerClass: function() {\n var direction = this._direction,\n containerClass = \"k-fx k-fx-start k-fx-\" + this._transitionClass;\n\n if (direction) {\n containerClass += \" k-fx-\" + direction;\n }\n\n if (this._reverse) {\n containerClass += \" k-fx-reverse\";\n }\n\n return containerClass;\n },\n\n complete: function(e) {\n if (!this.deferred || (e && $(e.target).is(IGNORE_TRANSITION_EVENT_SELECTOR))) {\n return;\n }\n\n var container = this.container;\n\n container\n .removeClass(\"k-fx-end\")\n .removeClass(this._containerClass())\n .off(transitions.event, this.completeProxy);\n\n this._previous.hide().removeClass(\"k-fx-current\");\n this.element.removeClass(\"k-fx-next\");\n\n if (RESTORE_OVERFLOW) {\n container.css(OVERFLOW, \"\");\n }\n\n if (!this.isAbsolute) {\n this._both().css(POSITION, \"\");\n }\n\n this.deferred.resolve();\n delete this.deferred;\n },\n\n run: function() {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n\n var that = this,\n element = that.element,\n previous = that._previous,\n container = element.parents().filter(previous.parents()).first(),\n both = that._both(),\n deferred = $.Deferred(),\n originalPosition = element.css(POSITION),\n originalOverflow;\n\n // edge case for grid/scheduler, where the previous is already destroyed.\n if (!container.length) {\n container = element.parent();\n }\n\n this.container = container;\n this.deferred = deferred;\n this.isAbsolute = originalPosition == \"absolute\";\n\n if (!this.isAbsolute) {\n both.css(POSITION, \"absolute\");\n }\n\n if (RESTORE_OVERFLOW) {\n originalOverflow = container.css(OVERFLOW);\n container.css(OVERFLOW, \"hidden\");\n }\n\n if (!transitions) {\n this.complete();\n } else {\n element.addClass(\"k-fx-hidden\");\n\n container.addClass(this._containerClass());\n\n this.completeProxy = this.complete.bind(this);\n container.on(transitions.event, this.completeProxy);\n\n kendo.animationFrame(function() {\n element.removeClass(\"k-fx-hidden\").addClass(\"k-fx-next\");\n previous.css(\"display\", \"\").addClass(\"k-fx-current\");\n that._before(previous, element);\n kendo.animationFrame(function() {\n container.removeClass(\"k-fx-start\").addClass(\"k-fx-end\");\n that._after(previous, element);\n });\n });\n }\n\n return deferred.promise();\n },\n\n stop: function() {\n this.complete();\n }\n });\n\n var Animation = kendo.Class.extend({\n init: function() {\n var that = this;\n that._tickProxy = that._tick.bind(that);\n that._started = false;\n },\n\n tick: $.noop,\n done: $.noop,\n onEnd: $.noop,\n onCancel: $.noop,\n\n start: function() {\n if (!this.enabled()) {\n return;\n }\n\n if (!this.done()) {\n this._started = true;\n kendo.animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n },\n\n enabled: function() {\n return true;\n },\n\n cancel: function() {\n this._started = false;\n this.onCancel();\n },\n\n _tick: function() {\n var that = this;\n if (!that._started) { return; }\n\n that.tick();\n\n if (!that.done()) {\n kendo.animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n }\n });\n\n var Transition = Animation.extend({\n init: function(options) {\n var that = this;\n extend(that, options);\n Animation.fn.init.call(that);\n },\n\n done: function() {\n return this.timePassed() >= this.duration;\n },\n\n timePassed: function() {\n return Math.min(this.duration, (new Date()) - this.startDate);\n },\n\n moveTo: function(options) {\n var that = this,\n movable = that.movable;\n\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n\n that.duration = typeof options.duration == \"number\" ? options.duration : 300;\n\n that.tick = that._easeProxy(options.ease);\n\n that.startDate = new Date();\n that.start();\n },\n\n _easeProxy: function(ease) {\n var that = this;\n\n return function() {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n }\n });\n\n extend(Transition, {\n easeOutExpo: function(t, b, c, d) {\n return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n },\n\n easeOutBack: function(t, b, c, d, s) {\n s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n });\n\n fx.Animation = Animation;\n fx.Transition = Transition;\n fx.createEffect = createEffect;\n\n fx.box = function(element) {\n element = $(element);\n var result = element.offset();\n result.width = kendo._outerWidth(element);\n result.height = kendo._outerHeight(element);\n return result;\n };\n\n fx.transformOrigin = function(inner, outer) {\n var x = (inner.left - outer.left) * outer.width / (outer.width - inner.width),\n y = (inner.top - outer.top) * outer.height / (outer.height - inner.height);\n\n return {\n x: isNaN(x) ? 0 : x,\n y: isNaN(y) ? 0 : y\n };\n };\n\n fx.fillScale = function(inner, outer) {\n return Math.min(inner.width / outer.width, inner.height / outer.height);\n };\n\n fx.fitScale = function(inner, outer) {\n return Math.max(inner.width / outer.width, inner.height / outer.height);\n };\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}