foundation-rails 6.4.1.0 → 6.4.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/Rakefile +5 -6
  4. data/lib/foundation/rails/version.rb +1 -1
  5. data/vendor/assets/js/foundation.abide.js +781 -0
  6. data/vendor/assets/js/foundation.accordion.js +511 -0
  7. data/vendor/assets/js/foundation.accordionMenu.js +527 -0
  8. data/vendor/assets/js/foundation.core.js +860 -0
  9. data/vendor/assets/js/foundation.drilldown.js +759 -0
  10. data/vendor/assets/js/foundation.dropdown.js +1131 -0
  11. data/vendor/assets/js/foundation.dropdownMenu.js +678 -0
  12. data/vendor/assets/js/foundation.equalizer.js +542 -0
  13. data/vendor/assets/js/foundation.interchange.js +399 -0
  14. data/vendor/assets/js/{foundation.js.es6 → foundation.js} +11 -12
  15. data/vendor/assets/js/foundation.magellan.js +449 -0
  16. data/vendor/assets/js/foundation.offcanvas.js +1052 -0
  17. data/vendor/assets/js/foundation.orbit.js +767 -0
  18. data/vendor/assets/js/foundation.responsiveAccordionTabs.js +440 -0
  19. data/vendor/assets/js/foundation.responsiveMenu.js +362 -0
  20. data/vendor/assets/js/foundation.responsiveToggle.js +336 -0
  21. data/vendor/assets/js/foundation.reveal.js +1066 -0
  22. data/vendor/assets/js/foundation.slider.js +1236 -0
  23. data/vendor/assets/js/foundation.smoothScroll.js +303 -0
  24. data/vendor/assets/js/foundation.sticky.js +1001 -0
  25. data/vendor/assets/js/foundation.tabs.js +678 -0
  26. data/vendor/assets/js/foundation.toggler.js +602 -0
  27. data/vendor/assets/js/foundation.tooltip.js +1195 -0
  28. data/vendor/assets/js/{foundation.util.box.js.es6 → foundation.util.box.js} +154 -41
  29. data/vendor/assets/js/foundation.util.imageLoader.js +163 -0
  30. data/vendor/assets/js/foundation.util.keyboard.js +298 -0
  31. data/vendor/assets/js/foundation.util.mediaQuery.js +353 -0
  32. data/vendor/assets/js/foundation.util.motion.js +231 -0
  33. data/vendor/assets/js/foundation.util.nest.js +181 -0
  34. data/vendor/assets/js/foundation.util.timer.js +170 -0
  35. data/vendor/assets/js/foundation.util.timerAndImageLoader.js +90 -0
  36. data/vendor/assets/js/foundation.util.touch.js +275 -0
  37. data/vendor/assets/js/foundation.util.triggers.js +399 -0
  38. data/vendor/assets/js/foundation.zf.responsiveAccordionTabs.js +262 -0
  39. metadata +37 -71
  40. data/vendor/assets/js/entries/foundation-plugins.js +0 -25
  41. data/vendor/assets/js/entries/foundation.js +0 -101
  42. data/vendor/assets/js/entries/plugins/foundation.abide.js +0 -4
  43. data/vendor/assets/js/entries/plugins/foundation.accordion.js +0 -4
  44. data/vendor/assets/js/entries/plugins/foundation.accordionMenu.js +0 -5
  45. data/vendor/assets/js/entries/plugins/foundation.core.js +0 -21
  46. data/vendor/assets/js/entries/plugins/foundation.drilldown.js +0 -4
  47. data/vendor/assets/js/entries/plugins/foundation.dropdown.js +0 -5
  48. data/vendor/assets/js/entries/plugins/foundation.dropdownMenu.js +0 -4
  49. data/vendor/assets/js/entries/plugins/foundation.equalizer.js +0 -4
  50. data/vendor/assets/js/entries/plugins/foundation.interchange.js +0 -4
  51. data/vendor/assets/js/entries/plugins/foundation.magellan.js +0 -4
  52. data/vendor/assets/js/entries/plugins/foundation.offcanvas.js +0 -4
  53. data/vendor/assets/js/entries/plugins/foundation.orbit.js +0 -5
  54. data/vendor/assets/js/entries/plugins/foundation.responsiveAccordionTabs.js +0 -5
  55. data/vendor/assets/js/entries/plugins/foundation.responsiveMenu.js +0 -5
  56. data/vendor/assets/js/entries/plugins/foundation.responsiveToggle.js +0 -5
  57. data/vendor/assets/js/entries/plugins/foundation.reveal.js +0 -4
  58. data/vendor/assets/js/entries/plugins/foundation.slider.js +0 -5
  59. data/vendor/assets/js/entries/plugins/foundation.smoothScroll.js +0 -5
  60. data/vendor/assets/js/entries/plugins/foundation.sticky.js +0 -5
  61. data/vendor/assets/js/entries/plugins/foundation.tabs.js +0 -5
  62. data/vendor/assets/js/entries/plugins/foundation.toggler.js +0 -5
  63. data/vendor/assets/js/entries/plugins/foundation.tooltip.js +0 -4
  64. data/vendor/assets/js/entries/plugins/foundation.util.box.js +0 -4
  65. data/vendor/assets/js/entries/plugins/foundation.util.imageLoader.js +0 -5
  66. data/vendor/assets/js/entries/plugins/foundation.util.keyboard.js +0 -4
  67. data/vendor/assets/js/entries/plugins/foundation.util.mediaQuery.js +0 -4
  68. data/vendor/assets/js/entries/plugins/foundation.util.motion.js +0 -5
  69. data/vendor/assets/js/entries/plugins/foundation.util.nest.js +0 -5
  70. data/vendor/assets/js/entries/plugins/foundation.util.timer.js +0 -5
  71. data/vendor/assets/js/entries/plugins/foundation.util.touch.js +0 -7
  72. data/vendor/assets/js/entries/plugins/foundation.util.triggers.js +0 -5
  73. data/vendor/assets/js/foundation.abide.js.es6 +0 -587
  74. data/vendor/assets/js/foundation.accordion.js.es6 +0 -329
  75. data/vendor/assets/js/foundation.accordionMenu.js.es6 +0 -328
  76. data/vendor/assets/js/foundation.core.js.es6 +0 -337
  77. data/vendor/assets/js/foundation.drilldown.js.es6 +0 -536
  78. data/vendor/assets/js/foundation.dropdown.js.es6 +0 -394
  79. data/vendor/assets/js/foundation.dropdownMenu.js.es6 +0 -458
  80. data/vendor/assets/js/foundation.equalizer.js.es6 +0 -318
  81. data/vendor/assets/js/foundation.interchange.js.es6 +0 -210
  82. data/vendor/assets/js/foundation.magellan.js.es6 +0 -257
  83. data/vendor/assets/js/foundation.offcanvas.js.es6 +0 -546
  84. data/vendor/assets/js/foundation.orbit.js.es6 +0 -531
  85. data/vendor/assets/js/foundation.plugin.js.es6 +0 -54
  86. data/vendor/assets/js/foundation.positionable.js.es6 +0 -206
  87. data/vendor/assets/js/foundation.responsiveAccordionTabs.js.es6 +0 -243
  88. data/vendor/assets/js/foundation.responsiveMenu.js.es6 +0 -155
  89. data/vendor/assets/js/foundation.responsiveToggle.js.es6 +0 -156
  90. data/vendor/assets/js/foundation.reveal.js.es6 +0 -585
  91. data/vendor/assets/js/foundation.slider.js.es6 +0 -712
  92. data/vendor/assets/js/foundation.smoothScroll.js.es6 +0 -135
  93. data/vendor/assets/js/foundation.sticky.js.es6 +0 -507
  94. data/vendor/assets/js/foundation.tabs.js.es6 +0 -498
  95. data/vendor/assets/js/foundation.toggler.js.es6 +0 -150
  96. data/vendor/assets/js/foundation.tooltip.js.es6 +0 -462
  97. data/vendor/assets/js/foundation.util.core.js.es6 +0 -52
  98. data/vendor/assets/js/foundation.util.imageLoader.js.es6 +0 -45
  99. data/vendor/assets/js/foundation.util.keyboard.js.es6 +0 -162
  100. data/vendor/assets/js/foundation.util.mediaQuery.js.es6 +0 -234
  101. data/vendor/assets/js/foundation.util.motion.js.es6 +0 -104
  102. data/vendor/assets/js/foundation.util.nest.js.es6 +0 -67
  103. data/vendor/assets/js/foundation.util.timer.js.es6 +0 -48
  104. data/vendor/assets/js/foundation.util.touch.js.es6 +0 -149
  105. data/vendor/assets/js/foundation.util.triggers.js.es6 +0 -268
@@ -0,0 +1,860 @@
1
+ /******/ (function(modules) { // webpackBootstrap
2
+ /******/ // The module cache
3
+ /******/ var installedModules = {};
4
+ /******/
5
+ /******/ // The require function
6
+ /******/ function __webpack_require__(moduleId) {
7
+ /******/
8
+ /******/ // Check if module is in cache
9
+ /******/ if(installedModules[moduleId]) {
10
+ /******/ return installedModules[moduleId].exports;
11
+ /******/ }
12
+ /******/ // Create a new module (and put it into the cache)
13
+ /******/ var module = installedModules[moduleId] = {
14
+ /******/ i: moduleId,
15
+ /******/ l: false,
16
+ /******/ exports: {}
17
+ /******/ };
18
+ /******/
19
+ /******/ // Execute the module function
20
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
+ /******/
22
+ /******/ // Flag the module as loaded
23
+ /******/ module.l = true;
24
+ /******/
25
+ /******/ // Return the exports of the module
26
+ /******/ return module.exports;
27
+ /******/ }
28
+ /******/
29
+ /******/
30
+ /******/ // expose the modules object (__webpack_modules__)
31
+ /******/ __webpack_require__.m = modules;
32
+ /******/
33
+ /******/ // expose the module cache
34
+ /******/ __webpack_require__.c = installedModules;
35
+ /******/
36
+ /******/ // identity function for calling harmony imports with the correct context
37
+ /******/ __webpack_require__.i = function(value) { return value; };
38
+ /******/
39
+ /******/ // define getter function for harmony exports
40
+ /******/ __webpack_require__.d = function(exports, name, getter) {
41
+ /******/ if(!__webpack_require__.o(exports, name)) {
42
+ /******/ Object.defineProperty(exports, name, {
43
+ /******/ configurable: false,
44
+ /******/ enumerable: true,
45
+ /******/ get: getter
46
+ /******/ });
47
+ /******/ }
48
+ /******/ };
49
+ /******/
50
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
51
+ /******/ __webpack_require__.n = function(module) {
52
+ /******/ var getter = module && module.__esModule ?
53
+ /******/ function getDefault() { return module['default']; } :
54
+ /******/ function getModuleExports() { return module; };
55
+ /******/ __webpack_require__.d(getter, 'a', getter);
56
+ /******/ return getter;
57
+ /******/ };
58
+ /******/
59
+ /******/ // Object.prototype.hasOwnProperty.call
60
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
61
+ /******/
62
+ /******/ // __webpack_public_path__
63
+ /******/ __webpack_require__.p = "";
64
+ /******/
65
+ /******/ // Load entry module and return exports
66
+ /******/ return __webpack_require__(__webpack_require__.s = 6);
67
+ /******/ })
68
+ /************************************************************************/
69
+ /******/ ([
70
+ /* 0 */
71
+ /***/ (function(module, exports) {
72
+
73
+ module.exports = jQuery;
74
+
75
+ /***/ }),
76
+ /* 1 */
77
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
78
+
79
+ "use strict";
80
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return rtl; });
81
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return GetYoDigits; });
82
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return transitionend; });
83
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0);
84
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__);
85
+
86
+
87
+
88
+
89
+ // Core Foundation Utilities, utilized in a number of places.
90
+
91
+ /**
92
+ * Returns a boolean for RTL support
93
+ */
94
+ function rtl() {
95
+ return __WEBPACK_IMPORTED_MODULE_0_jquery___default()('html').attr('dir') === 'rtl';
96
+ }
97
+
98
+ /**
99
+ * returns a random base-36 uid with namespacing
100
+ * @function
101
+ * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.
102
+ * @param {String} namespace - name of plugin to be incorporated in uid, optional.
103
+ * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.
104
+ * @returns {String} - unique id
105
+ */
106
+ function GetYoDigits(length, namespace) {
107
+ length = length || 6;
108
+ return Math.round(Math.pow(36, length + 1) - Math.random() * Math.pow(36, length)).toString(36).slice(1) + (namespace ? '-' + namespace : '');
109
+ }
110
+
111
+ function transitionend($elem) {
112
+ var transitions = {
113
+ 'transition': 'transitionend',
114
+ 'WebkitTransition': 'webkitTransitionEnd',
115
+ 'MozTransition': 'transitionend',
116
+ 'OTransition': 'otransitionend'
117
+ };
118
+ var elem = document.createElement('div'),
119
+ end;
120
+
121
+ for (var t in transitions) {
122
+ if (typeof elem.style[t] !== 'undefined') {
123
+ end = transitions[t];
124
+ }
125
+ }
126
+ if (end) {
127
+ return end;
128
+ } else {
129
+ end = setTimeout(function () {
130
+ $elem.triggerHandler('transitionend', [$elem]);
131
+ }, 1);
132
+ return 'transitionend';
133
+ }
134
+ }
135
+
136
+
137
+
138
+ /***/ }),
139
+ /* 2 */
140
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
141
+
142
+ "use strict";
143
+ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
144
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0);
145
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__);
146
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_core__ = __webpack_require__(3);
147
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation_util_core__ = __webpack_require__(1);
148
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation_plugin__ = __webpack_require__(4);
149
+
150
+
151
+
152
+ __WEBPACK_IMPORTED_MODULE_1__foundation_core__["a" /* Foundation */].addToJquery(__WEBPACK_IMPORTED_MODULE_0_jquery___default.a);
153
+
154
+ // These are now separated out, but historically were a part of this module,
155
+ // and since this is here for backwards compatibility we include them in
156
+ // this entry.
157
+
158
+ __WEBPACK_IMPORTED_MODULE_1__foundation_core__["a" /* Foundation */].rtl = __WEBPACK_IMPORTED_MODULE_2__foundation_util_core__["a" /* rtl */];
159
+ __WEBPACK_IMPORTED_MODULE_1__foundation_core__["a" /* Foundation */].GetYoDigits = __WEBPACK_IMPORTED_MODULE_2__foundation_util_core__["b" /* GetYoDigits */];
160
+ __WEBPACK_IMPORTED_MODULE_1__foundation_core__["a" /* Foundation */].transitionend = __WEBPACK_IMPORTED_MODULE_2__foundation_util_core__["c" /* transitionend */];
161
+
162
+ // Every plugin depends on plugin now, we can include that on the core for the
163
+ // script inclusion path.
164
+
165
+
166
+ __WEBPACK_IMPORTED_MODULE_1__foundation_core__["a" /* Foundation */].Plugin = __WEBPACK_IMPORTED_MODULE_3__foundation_plugin__["a" /* Plugin */];
167
+
168
+ window.Foundation = __WEBPACK_IMPORTED_MODULE_1__foundation_core__["a" /* Foundation */];
169
+
170
+ /***/ }),
171
+ /* 3 */
172
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
173
+
174
+ "use strict";
175
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Foundation; });
176
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0);
177
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__);
178
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_core__ = __webpack_require__(1);
179
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation_util_mediaQuery__ = __webpack_require__(5);
180
+
181
+
182
+
183
+
184
+
185
+
186
+ var FOUNDATION_VERSION = '6.4.1';
187
+
188
+ // Global Foundation object
189
+ // This is attached to the window, or used as a module for AMD/Browserify
190
+ var Foundation = {
191
+ version: FOUNDATION_VERSION,
192
+
193
+ /**
194
+ * Stores initialized plugins.
195
+ */
196
+ _plugins: {},
197
+
198
+ /**
199
+ * Stores generated unique ids for plugin instances
200
+ */
201
+ _uuids: [],
202
+
203
+ /**
204
+ * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.
205
+ * @param {Object} plugin - The constructor of the plugin.
206
+ */
207
+ plugin: function (plugin, name) {
208
+ // Object key to use when adding to global Foundation object
209
+ // Examples: Foundation.Reveal, Foundation.OffCanvas
210
+ var className = name || functionName(plugin);
211
+ // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin
212
+ // Examples: data-reveal, data-off-canvas
213
+ var attrName = hyphenate(className);
214
+
215
+ // Add to the Foundation object and the plugins list (for reflowing)
216
+ this._plugins[attrName] = this[className] = plugin;
217
+ },
218
+ /**
219
+ * @function
220
+ * Populates the _uuids array with pointers to each individual plugin instance.
221
+ * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.
222
+ * Also fires the initialization event for each plugin, consolidating repetitive code.
223
+ * @param {Object} plugin - an instance of a plugin, usually `this` in context.
224
+ * @param {String} name - the name of the plugin, passed as a camelCased string.
225
+ * @fires Plugin#init
226
+ */
227
+ registerPlugin: function (plugin, name) {
228
+ var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();
229
+ plugin.uuid = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__foundation_util_core__["b" /* GetYoDigits */])(6, pluginName);
230
+
231
+ if (!plugin.$element.attr('data-' + pluginName)) {
232
+ plugin.$element.attr('data-' + pluginName, plugin.uuid);
233
+ }
234
+ if (!plugin.$element.data('zfPlugin')) {
235
+ plugin.$element.data('zfPlugin', plugin);
236
+ }
237
+ /**
238
+ * Fires when the plugin has initialized.
239
+ * @event Plugin#init
240
+ */
241
+ plugin.$element.trigger('init.zf.' + pluginName);
242
+
243
+ this._uuids.push(plugin.uuid);
244
+
245
+ return;
246
+ },
247
+ /**
248
+ * @function
249
+ * Removes the plugins uuid from the _uuids array.
250
+ * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.
251
+ * Also fires the destroyed event for the plugin, consolidating repetitive code.
252
+ * @param {Object} plugin - an instance of a plugin, usually `this` in context.
253
+ * @fires Plugin#destroyed
254
+ */
255
+ unregisterPlugin: function (plugin) {
256
+ var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));
257
+
258
+ this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);
259
+ plugin.$element.removeAttr('data-' + pluginName).removeData('zfPlugin')
260
+ /**
261
+ * Fires when the plugin has been destroyed.
262
+ * @event Plugin#destroyed
263
+ */
264
+ .trigger('destroyed.zf.' + pluginName);
265
+ for (var prop in plugin) {
266
+ plugin[prop] = null; //clean up script to prep for garbage collection.
267
+ }
268
+ return;
269
+ },
270
+
271
+ /**
272
+ * @function
273
+ * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.
274
+ * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`
275
+ * @default If no argument is passed, reflow all currently active plugins.
276
+ */
277
+ reInit: function (plugins) {
278
+ var isJQ = plugins instanceof __WEBPACK_IMPORTED_MODULE_0_jquery___default.a;
279
+ try {
280
+ if (isJQ) {
281
+ plugins.each(function () {
282
+ __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).data('zfPlugin')._init();
283
+ });
284
+ } else {
285
+ var type = typeof plugins,
286
+ _this = this,
287
+ fns = {
288
+ 'object': function (plgs) {
289
+ plgs.forEach(function (p) {
290
+ p = hyphenate(p);
291
+ __WEBPACK_IMPORTED_MODULE_0_jquery___default()('[data-' + p + ']').foundation('_init');
292
+ });
293
+ },
294
+ 'string': function () {
295
+ plugins = hyphenate(plugins);
296
+ __WEBPACK_IMPORTED_MODULE_0_jquery___default()('[data-' + plugins + ']').foundation('_init');
297
+ },
298
+ 'undefined': function () {
299
+ this['object'](Object.keys(_this._plugins));
300
+ }
301
+ };
302
+ fns[type](plugins);
303
+ }
304
+ } catch (err) {
305
+ console.error(err);
306
+ } finally {
307
+ return plugins;
308
+ }
309
+ },
310
+
311
+ /**
312
+ * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.
313
+ * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.
314
+ * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.
315
+ */
316
+ reflow: function (elem, plugins) {
317
+
318
+ // If plugins is undefined, just grab everything
319
+ if (typeof plugins === 'undefined') {
320
+ plugins = Object.keys(this._plugins);
321
+ }
322
+ // If plugins is a string, convert it to an array with one item
323
+ else if (typeof plugins === 'string') {
324
+ plugins = [plugins];
325
+ }
326
+
327
+ var _this = this;
328
+
329
+ // Iterate through each plugin
330
+ __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.each(plugins, function (i, name) {
331
+ // Get the current plugin
332
+ var plugin = _this._plugins[name];
333
+
334
+ // Localize the search to all elements inside elem, as well as elem itself, unless elem === document
335
+ var $elem = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(elem).find('[data-' + name + ']').addBack('[data-' + name + ']');
336
+
337
+ // For each plugin found, initialize it
338
+ $elem.each(function () {
339
+ var $el = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this),
340
+ opts = {};
341
+ // Don't double-dip on plugins
342
+ if ($el.data('zfPlugin')) {
343
+ console.warn("Tried to initialize " + name + " on an element that already has a Foundation plugin.");
344
+ return;
345
+ }
346
+
347
+ if ($el.attr('data-options')) {
348
+ var thing = $el.attr('data-options').split(';').forEach(function (e, i) {
349
+ var opt = e.split(':').map(function (el) {
350
+ return el.trim();
351
+ });
352
+ if (opt[0]) opts[opt[0]] = parseValue(opt[1]);
353
+ });
354
+ }
355
+ try {
356
+ $el.data('zfPlugin', new plugin(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), opts));
357
+ } catch (er) {
358
+ console.error(er);
359
+ } finally {
360
+ return;
361
+ }
362
+ });
363
+ });
364
+ },
365
+ getFnName: functionName,
366
+
367
+ addToJquery: function ($) {
368
+ // TODO: consider not making this a jQuery function
369
+ // TODO: need way to reflow vs. re-initialize
370
+ /**
371
+ * The Foundation jQuery method.
372
+ * @param {String|Array} method - An action to perform on the current jQuery object.
373
+ */
374
+ var foundation = function (method) {
375
+ var type = typeof method,
376
+ $noJS = $('.no-js');
377
+
378
+ if ($noJS.length) {
379
+ $noJS.removeClass('no-js');
380
+ }
381
+
382
+ if (type === 'undefined') {
383
+ //needs to initialize the Foundation object, or an individual plugin.
384
+ __WEBPACK_IMPORTED_MODULE_2__foundation_util_mediaQuery__["a" /* MediaQuery */]._init();
385
+ Foundation.reflow(this);
386
+ } else if (type === 'string') {
387
+ //an individual method to invoke on a plugin or group of plugins
388
+ var args = Array.prototype.slice.call(arguments, 1); //collect all the arguments, if necessary
389
+ var plugClass = this.data('zfPlugin'); //determine the class of plugin
390
+
391
+ if (plugClass !== undefined && plugClass[method] !== undefined) {
392
+ //make sure both the class and method exist
393
+ if (this.length === 1) {
394
+ //if there's only one, call it directly.
395
+ plugClass[method].apply(plugClass, args);
396
+ } else {
397
+ this.each(function (i, el) {
398
+ //otherwise loop through the jQuery collection and invoke the method on each
399
+ plugClass[method].apply($(el).data('zfPlugin'), args);
400
+ });
401
+ }
402
+ } else {
403
+ //error for no class or no method
404
+ throw new ReferenceError("We're sorry, '" + method + "' is not an available method for " + (plugClass ? functionName(plugClass) : 'this element') + '.');
405
+ }
406
+ } else {
407
+ //error for invalid argument type
408
+ throw new TypeError('We\'re sorry, ' + type + ' is not a valid parameter. You must use a string representing the method you wish to invoke.');
409
+ }
410
+ return this;
411
+ };
412
+ $.fn.foundation = foundation;
413
+ return $;
414
+ }
415
+ };
416
+
417
+ Foundation.util = {
418
+ /**
419
+ * Function for applying a debounce effect to a function call.
420
+ * @function
421
+ * @param {Function} func - Function to be called at end of timeout.
422
+ * @param {Number} delay - Time in ms to delay the call of `func`.
423
+ * @returns function
424
+ */
425
+ throttle: function (func, delay) {
426
+ var timer = null;
427
+
428
+ return function () {
429
+ var context = this,
430
+ args = arguments;
431
+
432
+ if (timer === null) {
433
+ timer = setTimeout(function () {
434
+ func.apply(context, args);
435
+ timer = null;
436
+ }, delay);
437
+ }
438
+ };
439
+ }
440
+ };
441
+
442
+ window.Foundation = Foundation;
443
+
444
+ // Polyfill for requestAnimationFrame
445
+ (function () {
446
+ if (!Date.now || !window.Date.now) window.Date.now = Date.now = function () {
447
+ return new Date().getTime();
448
+ };
449
+
450
+ var vendors = ['webkit', 'moz'];
451
+ for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
452
+ var vp = vendors[i];
453
+ window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];
454
+ window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];
455
+ }
456
+ if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
457
+ var lastTime = 0;
458
+ window.requestAnimationFrame = function (callback) {
459
+ var now = Date.now();
460
+ var nextTime = Math.max(lastTime + 16, now);
461
+ return setTimeout(function () {
462
+ callback(lastTime = nextTime);
463
+ }, nextTime - now);
464
+ };
465
+ window.cancelAnimationFrame = clearTimeout;
466
+ }
467
+ /**
468
+ * Polyfill for performance.now, required by rAF
469
+ */
470
+ if (!window.performance || !window.performance.now) {
471
+ window.performance = {
472
+ start: Date.now(),
473
+ now: function () {
474
+ return Date.now() - this.start;
475
+ }
476
+ };
477
+ }
478
+ })();
479
+ if (!Function.prototype.bind) {
480
+ Function.prototype.bind = function (oThis) {
481
+ if (typeof this !== 'function') {
482
+ // closest thing possible to the ECMAScript 5
483
+ // internal IsCallable function
484
+ throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
485
+ }
486
+
487
+ var aArgs = Array.prototype.slice.call(arguments, 1),
488
+ fToBind = this,
489
+ fNOP = function () {},
490
+ fBound = function () {
491
+ return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
492
+ };
493
+
494
+ if (this.prototype) {
495
+ // native functions don't have a prototype
496
+ fNOP.prototype = this.prototype;
497
+ }
498
+ fBound.prototype = new fNOP();
499
+
500
+ return fBound;
501
+ };
502
+ }
503
+ // Polyfill to get the name of a function in IE9
504
+ function functionName(fn) {
505
+ if (Function.prototype.name === undefined) {
506
+ var funcNameRegex = /function\s([^(]{1,})\(/;
507
+ var results = funcNameRegex.exec(fn.toString());
508
+ return results && results.length > 1 ? results[1].trim() : "";
509
+ } else if (fn.prototype === undefined) {
510
+ return fn.constructor.name;
511
+ } else {
512
+ return fn.prototype.constructor.name;
513
+ }
514
+ }
515
+ function parseValue(str) {
516
+ if ('true' === str) return true;else if ('false' === str) return false;else if (!isNaN(str * 1)) return parseFloat(str);
517
+ return str;
518
+ }
519
+ // Convert PascalCase to kebab-case
520
+ // Thank you: http://stackoverflow.com/a/8955580
521
+ function hyphenate(str) {
522
+ return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
523
+ }
524
+
525
+
526
+
527
+ /***/ }),
528
+ /* 4 */
529
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
530
+
531
+ "use strict";
532
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Plugin; });
533
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0);
534
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__);
535
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_core__ = __webpack_require__(1);
536
+
537
+
538
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
539
+
540
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
541
+
542
+
543
+
544
+
545
+ // Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST
546
+ // {function} _setup (replaces previous constructor),
547
+ // {function} _destroy (replaces previous destroy)
548
+
549
+ var Plugin = function () {
550
+ function Plugin(element, options) {
551
+ _classCallCheck(this, Plugin);
552
+
553
+ this._setup(element, options);
554
+ var pluginName = getPluginName(this);
555
+ this.uuid = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__foundation_util_core__["b" /* GetYoDigits */])(6, pluginName);
556
+
557
+ if (!this.$element.attr('data-' + pluginName)) {
558
+ this.$element.attr('data-' + pluginName, this.uuid);
559
+ }
560
+ if (!this.$element.data('zfPlugin')) {
561
+ this.$element.data('zfPlugin', this);
562
+ }
563
+ /**
564
+ * Fires when the plugin has initialized.
565
+ * @event Plugin#init
566
+ */
567
+ this.$element.trigger('init.zf.' + pluginName);
568
+ }
569
+
570
+ _createClass(Plugin, [{
571
+ key: 'destroy',
572
+ value: function destroy() {
573
+ this._destroy();
574
+ var pluginName = getPluginName(this);
575
+ this.$element.removeAttr('data-' + pluginName).removeData('zfPlugin')
576
+ /**
577
+ * Fires when the plugin has been destroyed.
578
+ * @event Plugin#destroyed
579
+ */
580
+ .trigger('destroyed.zf.' + pluginName);
581
+ for (var prop in this) {
582
+ this[prop] = null; //clean up script to prep for garbage collection.
583
+ }
584
+ }
585
+ }]);
586
+
587
+ return Plugin;
588
+ }();
589
+
590
+ // Convert PascalCase to kebab-case
591
+ // Thank you: http://stackoverflow.com/a/8955580
592
+
593
+
594
+ function hyphenate(str) {
595
+ return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
596
+ }
597
+
598
+ function getPluginName(obj) {
599
+ if (typeof obj.constructor.name !== 'undefined') {
600
+ return hyphenate(obj.constructor.name);
601
+ } else {
602
+ return hyphenate(obj.className);
603
+ }
604
+ }
605
+
606
+
607
+
608
+ /***/ }),
609
+ /* 5 */
610
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
611
+
612
+ "use strict";
613
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MediaQuery; });
614
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0);
615
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__);
616
+
617
+
618
+
619
+
620
+ // Default set of media queries
621
+ var defaultQueries = {
622
+ 'default': 'only screen',
623
+ landscape: 'only screen and (orientation: landscape)',
624
+ portrait: 'only screen and (orientation: portrait)',
625
+ retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)'
626
+ };
627
+
628
+ // matchMedia() polyfill - Test a CSS media type/query in JS.
629
+ // Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license
630
+ var matchMedia = window.matchMedia || function () {
631
+ 'use strict';
632
+
633
+ // For browsers that support matchMedium api such as IE 9 and webkit
634
+
635
+ var styleMedia = window.styleMedia || window.media;
636
+
637
+ // For those that don't support matchMedium
638
+ if (!styleMedia) {
639
+ var style = document.createElement('style'),
640
+ script = document.getElementsByTagName('script')[0],
641
+ info = null;
642
+
643
+ style.type = 'text/css';
644
+ style.id = 'matchmediajs-test';
645
+
646
+ script && script.parentNode && script.parentNode.insertBefore(style, script);
647
+
648
+ // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
649
+ info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle;
650
+
651
+ styleMedia = {
652
+ matchMedium: function (media) {
653
+ var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';
654
+
655
+ // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
656
+ if (style.styleSheet) {
657
+ style.styleSheet.cssText = text;
658
+ } else {
659
+ style.textContent = text;
660
+ }
661
+
662
+ // Test if media query is true or false
663
+ return info.width === '1px';
664
+ }
665
+ };
666
+ }
667
+
668
+ return function (media) {
669
+ return {
670
+ matches: styleMedia.matchMedium(media || 'all'),
671
+ media: media || 'all'
672
+ };
673
+ };
674
+ }();
675
+
676
+ var MediaQuery = {
677
+ queries: [],
678
+
679
+ current: '',
680
+
681
+ /**
682
+ * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.
683
+ * @function
684
+ * @private
685
+ */
686
+ _init: function () {
687
+ var self = this;
688
+ var $meta = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('meta.foundation-mq');
689
+ if (!$meta.length) {
690
+ __WEBPACK_IMPORTED_MODULE_0_jquery___default()('<meta class="foundation-mq">').appendTo(document.head);
691
+ }
692
+
693
+ var extractedStyles = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('.foundation-mq').css('font-family');
694
+ var namedQueries;
695
+
696
+ namedQueries = parseStyleToObject(extractedStyles);
697
+
698
+ for (var key in namedQueries) {
699
+ if (namedQueries.hasOwnProperty(key)) {
700
+ self.queries.push({
701
+ name: key,
702
+ value: 'only screen and (min-width: ' + namedQueries[key] + ')'
703
+ });
704
+ }
705
+ }
706
+
707
+ this.current = this._getCurrentSize();
708
+
709
+ this._watcher();
710
+ },
711
+
712
+
713
+ /**
714
+ * Checks if the screen is at least as wide as a breakpoint.
715
+ * @function
716
+ * @param {String} size - Name of the breakpoint to check.
717
+ * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.
718
+ */
719
+ atLeast: function (size) {
720
+ var query = this.get(size);
721
+
722
+ if (query) {
723
+ return matchMedia(query).matches;
724
+ }
725
+
726
+ return false;
727
+ },
728
+
729
+
730
+ /**
731
+ * Checks if the screen matches to a breakpoint.
732
+ * @function
733
+ * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.
734
+ * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.
735
+ */
736
+ is: function (size) {
737
+ size = size.trim().split(' ');
738
+ if (size.length > 1 && size[1] === 'only') {
739
+ if (size[0] === this._getCurrentSize()) return true;
740
+ } else {
741
+ return this.atLeast(size[0]);
742
+ }
743
+ return false;
744
+ },
745
+
746
+
747
+ /**
748
+ * Gets the media query of a breakpoint.
749
+ * @function
750
+ * @param {String} size - Name of the breakpoint to get.
751
+ * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.
752
+ */
753
+ get: function (size) {
754
+ for (var i in this.queries) {
755
+ if (this.queries.hasOwnProperty(i)) {
756
+ var query = this.queries[i];
757
+ if (size === query.name) return query.value;
758
+ }
759
+ }
760
+
761
+ return null;
762
+ },
763
+
764
+
765
+ /**
766
+ * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).
767
+ * @function
768
+ * @private
769
+ * @returns {String} Name of the current breakpoint.
770
+ */
771
+ _getCurrentSize: function () {
772
+ var matched;
773
+
774
+ for (var i = 0; i < this.queries.length; i++) {
775
+ var query = this.queries[i];
776
+
777
+ if (matchMedia(query.value).matches) {
778
+ matched = query;
779
+ }
780
+ }
781
+
782
+ if (typeof matched === 'object') {
783
+ return matched.name;
784
+ } else {
785
+ return matched;
786
+ }
787
+ },
788
+
789
+
790
+ /**
791
+ * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.
792
+ * @function
793
+ * @private
794
+ */
795
+ _watcher: function () {
796
+ var _this = this;
797
+
798
+ __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', function () {
799
+ var newSize = _this._getCurrentSize(),
800
+ currentSize = _this.current;
801
+
802
+ if (newSize !== currentSize) {
803
+ // Change the current media query
804
+ _this.current = newSize;
805
+
806
+ // Broadcast the media query change on the window
807
+ __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);
808
+ }
809
+ });
810
+ }
811
+ };
812
+
813
+ // Thank you: https://github.com/sindresorhus/query-string
814
+ function parseStyleToObject(str) {
815
+ var styleObject = {};
816
+
817
+ if (typeof str !== 'string') {
818
+ return styleObject;
819
+ }
820
+
821
+ str = str.trim().slice(1, -1); // browsers re-quote string style values
822
+
823
+ if (!str) {
824
+ return styleObject;
825
+ }
826
+
827
+ styleObject = str.split('&').reduce(function (ret, param) {
828
+ var parts = param.replace(/\+/g, ' ').split('=');
829
+ var key = parts[0];
830
+ var val = parts[1];
831
+ key = decodeURIComponent(key);
832
+
833
+ // missing `=` should be `null`:
834
+ // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
835
+ val = val === undefined ? null : decodeURIComponent(val);
836
+
837
+ if (!ret.hasOwnProperty(key)) {
838
+ ret[key] = val;
839
+ } else if (Array.isArray(ret[key])) {
840
+ ret[key].push(val);
841
+ } else {
842
+ ret[key] = [ret[key], val];
843
+ }
844
+ return ret;
845
+ }, {});
846
+
847
+ return styleObject;
848
+ }
849
+
850
+
851
+
852
+ /***/ }),
853
+ /* 6 */
854
+ /***/ (function(module, exports, __webpack_require__) {
855
+
856
+ module.exports = __webpack_require__(2);
857
+
858
+
859
+ /***/ })
860
+ /******/ ]);