UNPKG

11.7 kBJavaScriptView Raw
1(function webpackUniversalModuleDefinition(root, factory) {
2 if(typeof exports === 'object' && typeof module === 'object')
3 module.exports = factory(require("./foundation.core"), require("jquery"));
4 else if(typeof define === 'function' && define.amd)
5 define(["./foundation.core", "jquery"], factory);
6 else if(typeof exports === 'object')
7 exports["foundation.util.motion"] = factory(require("./foundation.core"), require("jquery"));
8 else
9 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]);
10})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
11return /******/ (function(modules) { // webpackBootstrap
12/******/ // The module cache
13/******/ var installedModules = {};
14/******/
15/******/ // The require function
16/******/ function __webpack_require__(moduleId) {
17/******/
18/******/ // Check if module is in cache
19/******/ if(installedModules[moduleId]) {
20/******/ return installedModules[moduleId].exports;
21/******/ }
22/******/ // Create a new module (and put it into the cache)
23/******/ var module = installedModules[moduleId] = {
24/******/ i: moduleId,
25/******/ l: false,
26/******/ exports: {}
27/******/ };
28/******/
29/******/ // Execute the module function
30/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31/******/
32/******/ // Flag the module as loaded
33/******/ module.l = true;
34/******/
35/******/ // Return the exports of the module
36/******/ return module.exports;
37/******/ }
38/******/
39/******/
40/******/ // expose the modules object (__webpack_modules__)
41/******/ __webpack_require__.m = modules;
42/******/
43/******/ // expose the module cache
44/******/ __webpack_require__.c = installedModules;
45/******/
46/******/ // define getter function for harmony exports
47/******/ __webpack_require__.d = function(exports, name, getter) {
48/******/ if(!__webpack_require__.o(exports, name)) {
49/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50/******/ }
51/******/ };
52/******/
53/******/ // define __esModule on exports
54/******/ __webpack_require__.r = function(exports) {
55/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57/******/ }
58/******/ Object.defineProperty(exports, '__esModule', { value: true });
59/******/ };
60/******/
61/******/ // create a fake namespace object
62/******/ // mode & 1: value is a module id, require it
63/******/ // mode & 2: merge all properties of value into the ns
64/******/ // mode & 4: return value when already ns object
65/******/ // mode & 8|1: behave like require
66/******/ __webpack_require__.t = function(value, mode) {
67/******/ if(mode & 1) value = __webpack_require__(value);
68/******/ if(mode & 8) return value;
69/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70/******/ var ns = Object.create(null);
71/******/ __webpack_require__.r(ns);
72/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74/******/ return ns;
75/******/ };
76/******/
77/******/ // getDefaultExport function for compatibility with non-harmony modules
78/******/ __webpack_require__.n = function(module) {
79/******/ var getter = module && module.__esModule ?
80/******/ function getDefault() { return module['default']; } :
81/******/ function getModuleExports() { return module; };
82/******/ __webpack_require__.d(getter, 'a', getter);
83/******/ return getter;
84/******/ };
85/******/
86/******/ // Object.prototype.hasOwnProperty.call
87/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88/******/
89/******/ // __webpack_public_path__
90/******/ __webpack_require__.p = "";
91/******/
92/******/
93/******/ // Load entry module and return exports
94/******/ return __webpack_require__(__webpack_require__.s = 25);
95/******/ })
96/************************************************************************/
97/******/ ({
98
99/***/ "./foundation.core":
100/*!****************************************************************************************************************************************************************!*\
101 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
102 \****************************************************************************************************************************************************************/
103/*! no static exports found */
104/***/ (function(module, exports) {
105
106module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
107
108/***/ }),
109
110/***/ "./js/entries/plugins/foundation.util.motion.js":
111/*!******************************************************!*\
112 !*** ./js/entries/plugins/foundation.util.motion.js ***!
113 \******************************************************/
114/*! exports provided: Foundation, Motion, Move */
115/***/ (function(module, __webpack_exports__, __webpack_require__) {
116
117"use strict";
118__webpack_require__.r(__webpack_exports__);
119/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
120/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
121/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
122
123/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.motion */ "./js/foundation.util.motion.js");
124/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Motion", function() { return _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"]; });
125
126/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Move", function() { return _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Move"]; });
127
128
129
130_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Motion = _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"];
131_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Move = _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Move"];
132
133
134/***/ }),
135
136/***/ "./js/foundation.util.motion.js":
137/*!**************************************!*\
138 !*** ./js/foundation.util.motion.js ***!
139 \**************************************/
140/*! exports provided: Move, Motion */
141/***/ (function(module, __webpack_exports__, __webpack_require__) {
142
143"use strict";
144__webpack_require__.r(__webpack_exports__);
145/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Move", function() { return Move; });
146/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Motion", function() { return Motion; });
147/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
148/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
149/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
150/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);
151
152
153
154
155/**
156 * Motion module.
157 * @module foundation.motion
158 */
159
160var initClasses = ['mui-enter', 'mui-leave'];
161var activeClasses = ['mui-enter-active', 'mui-leave-active'];
162var Motion = {
163 animateIn: function animateIn(element, animation, cb) {
164 animate(true, element, animation, cb);
165 },
166 animateOut: function animateOut(element, animation, cb) {
167 animate(false, element, animation, cb);
168 }
169};
170
171function Move(duration, elem, fn) {
172 var anim,
173 prog,
174 start = null; // console.log('called');
175
176 if (duration === 0) {
177 fn.apply(elem);
178 elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);
179 return;
180 }
181
182 function move(ts) {
183 if (!start) start = ts; // console.log(start, ts);
184
185 prog = ts - start;
186 fn.apply(elem);
187
188 if (prog < duration) {
189 anim = window.requestAnimationFrame(move, elem);
190 } else {
191 window.cancelAnimationFrame(anim);
192 elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);
193 }
194 }
195
196 anim = window.requestAnimationFrame(move);
197}
198/**
199 * Animates an element in or out using a CSS transition class.
200 * @function
201 * @private
202 * @param {Boolean} isIn - Defines if the animation is in or out.
203 * @param {Object} element - jQuery or HTML object to animate.
204 * @param {String} animation - CSS class to use.
205 * @param {Function} cb - Callback to run when animation is finished.
206 */
207
208
209function animate(isIn, element, animation, cb) {
210 element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).eq(0);
211 if (!element.length) return;
212 var initClass = isIn ? initClasses[0] : initClasses[1];
213 var activeClass = isIn ? activeClasses[0] : activeClasses[1]; // Set up the animation
214
215 reset();
216 element.addClass(animation).css('transition', 'none');
217 requestAnimationFrame(function () {
218 element.addClass(initClass);
219 if (isIn) element.show();
220 }); // Start the animation
221
222 requestAnimationFrame(function () {
223 // will trigger the browser to synchronously calculate the style and layout
224 // also called reflow or layout thrashing
225 // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a
226 element[0].offsetWidth;
227 element.css('transition', '').addClass(activeClass);
228 }); // Clean up the animation when it finishes
229
230 element.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(element), finish); // Hides the element (for out animations), resets the element, and runs a callback
231
232 function finish() {
233 if (!isIn) element.hide();
234 reset();
235 if (cb) cb.apply(element);
236 } // Resets transitions and removes motion-specific classes
237
238
239 function reset() {
240 element[0].style.transitionDuration = 0;
241 element.removeClass("".concat(initClass, " ").concat(activeClass, " ").concat(animation));
242 }
243}
244
245
246
247/***/ }),
248
249/***/ 25:
250/*!************************************************************!*\
251 !*** multi ./js/entries/plugins/foundation.util.motion.js ***!
252 \************************************************************/
253/*! no static exports found */
254/***/ (function(module, exports, __webpack_require__) {
255
256module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.motion.js */"./js/entries/plugins/foundation.util.motion.js");
257
258
259/***/ }),
260
261/***/ "jquery":
262/*!********************************************************************************************!*\
263 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
264 \********************************************************************************************/
265/*! no static exports found */
266/***/ (function(module, exports) {
267
268module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
269
270/***/ })
271
272/******/ });
273});
274//# sourceMappingURL=foundation.util.motion.js.map
\No newline at end of file