/*! * jQuery UI Effects Fold - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/fold-effect/ */ define([ 'jquery', 'jquery-ui-modules/effect' ], function ($, undefined) { $.effects.effect.fold = function (o, done) { // Create element var el = $(this), props = ["position", "top", "bottom", "left", "right", "height", "width"], mode = $.effects.setMode(el, o.mode || "hide"), show = mode === "show", hide = mode === "hide", size = o.size || 15, percent = /([0-9]+)%/.exec(size), horizFirst = !!o.horizFirst, widthFirst = show !== horizFirst, ref = widthFirst ? ["width", "height"] : ["height", "width"], duration = o.duration / 2, wrapper, distance, animation1 = {}, animation2 = {}; $.effects.save(el, props); el.show(); // Create Wrapper wrapper = $.effects.createWrapper(el).css({ overflow: "hidden" }); distance = widthFirst ? [wrapper.width(), wrapper.height()] : [wrapper.height(), wrapper.width()]; if (percent) { size = parseInt(percent[1], 10) / 100 * distance[hide ? 0 : 1]; } if (show) { wrapper.css(horizFirst ? { height: 0, width: size } : { height: size, width: 0 }); } // Animation animation1[ref[0]] = show ? distance[0] : size; animation2[ref[1]] = show ? distance[1] : 0; // Animate wrapper .animate(animation1, duration, o.easing) .animate(animation2, duration, o.easing, function () { if (hide) { el.hide(); } $.effects.restore(el, props); $.effects.removeWrapper(el); done(); }); }; });