PageSourceSearch

https://www.petitstvincent.com/wp-content/themes/cn-core-theme/bow…/js/plugins/foundation.util.triggers.js

js petitstvincent.com collected 2026-10-02 11:47:38 UTC 14,972 bytes, 398 lines download raw bytes

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 = 108);
67/******/ })
68/************************************************************************/
69/******/ ({
70
71/***/ 0:
72/***/ (function(module, exports) {
73
74module.exports = jQuery;
75
76/***/ }),
77
78/***/ 1:
79/***/ (function(module, exports) {
80
81module.exports = {Foundation: window.Foundation};
82
83/***/ }),
84
85/***/ 108:
86/***/ (function(module, exports, __webpack_require__) {
87
88module.exports = __webpack_require__(42);
89
90
91/***/ }),
92
93/***/ 4:
94/***/ (function(module, exports) {
95
96module.exports = {Motion: window.Foundation.Motion, Move: window.Foundation.Move};
97
98/***/ }),
99
100/***/ 42:
101/***/ (function(module, __webpack_exports__, __webpack_require__) {
102
103"use strict";
104Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
105/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation_core__ = __webpack_require__(1);
106/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation_core___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__foundation_core__);
107/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_jquery__ = __webpack_require__(0);
108/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_jquery__);
109/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation_util_triggers__ = __webpack_require__(7);
110
111
112
113
114__WEBPACK_IMPORTED_MODULE_2__foundation_util_triggers__["a" /* Triggers */].init(__WEBPACK_IMPORTED_MODULE_1_jquery___default.a, __WEBPACK_IMPORTED_MODULE_0__foundation_core__["Foundation"]);
115
116/***/ }),
117
118/***/ 7:
119/***/ (function(module, __webpack_exports__, __webpack_require__) {
120
121"use strict";
122/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Triggers; });
123/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0);
124/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__);
125/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_motion__ = __webpack_require__(4);
126/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_motion___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__foundation_util_motion__);
127
128
129
130
131
132var MutationObserver = function () {
133  var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
134  for (var i = 0; i < prefixes.length; i++) {
135    if (prefixes[i] + 'MutationObserver' in window) {
136      return window[prefixes[i] + 'MutationObserver'];
137    }
138  }
139  return false;
140}();
141
142var triggers = function (el, type) {
143  el.data(type).split(' ').forEach(function (id) {
144    __WEBPACK_IMPORTED_MODULE_0_jquery___default()('#' + id)[type === 'close' ? 'trigger' : 'triggerHandler'](type + '.zf.trigger', [el]);
145  });
146};
147
148var Triggers = {
149  Listeners: {
150    Basic: {},
151    Global: {}
152  },
153  Initializers: {}
154};
155
156Triggers.Listeners.Basic = {
157  openListener: function () {
158    triggers(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), 'open');
159  },
160  closeListener: function () {
161    var id = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).data('close');
162    if (id) {
163      triggers(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), 'close');
164    } else {
165      __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).trigger('close.zf.trigger');
166    }
167  },
168  toggleListener: function () {
169    var id = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).data('toggle');
170    if (id) {
171      triggers(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), 'toggle');
172    } else {
173      __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).trigger('toggle.zf.trigger');
174    }
175  },
176  closeableListener: function (e) {
177    e.stopPropagation();
178    var animation = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).data('closable');
179
180    if (animation !== '') {
181      __WEBPACK_IMPORTED_MODULE_1__foundation_util_motion__["Motion"].animateOut(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), animation, function () {
182        __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).trigger('closed.zf');
183      });
184    } else {
185      __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).fadeOut().trigger('closed.zf');
186    }
187  },
188  toggleFocusListener: function () {
189    var id = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).data('toggle-focus');
190    __WEBPACK_IMPORTED_MODULE_0_jquery___default()('#' + id).triggerHandler('toggle.zf.trigger', [__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this)]);
191  }
192};
193
194// Elements with [data-open] will reveal a plugin that supports it when clicked.
195Triggers.Initializers.addOpenListener = function ($elem) {
196  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);
197  $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);
198};
199
200// Elements with [data-close] will close a plugin that supports it when clicked.
201// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
202Triggers.Initializers.addCloseListener = function ($elem) {
203  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);
204  $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);
205};
206
207// Elements with [data-toggle] will toggle a plugin that supports it when clicked.
208Triggers.Initializers.addToggleListener = function ($elem) {
209  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);
210  $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);
211};
212
213// Elements with [data-closable] will respond to close.zf.trigger events.
214Triggers.Initializers.addCloseableListener = function ($elem) {
215  $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);
216  $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);
217};
218
219// Elements with [data-toggle-focus] will respond to coming in and out of focus
220Triggers.Initializers.addToggleFocusListener = function ($elem) {
221  $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);
222  $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);
223};
224
225// More Global/complex listeners and triggers
226Triggers.Listeners.Global = {
227  resizeListener: function ($nodes) {
228    if (!MutationObserver) {
229      //fallback for IE 9
230      $nodes.each(function () {
231        __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).triggerHandler('resizeme.zf.trigger');
232      });
233    }
234    //trigger all listening elements and signal a resize event
235    $nodes.attr('data-events', "resize");
236  },
237  scrollListener: function ($nodes) {
238    if (!MutationObserver) {
239      //fallback for IE 9
240      $nodes.each(function () {
241        __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).triggerHandler('scrollme.zf.trigger');
242      });
243    }
244    //trigger all listening elements and signal a scroll event
245    $nodes.attr('data-events', "scroll");
246  },
247  closeMeListener: function (e, pluginId) {
248    var plugin = e.namespace.split('.')[0];
249    var plugins = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('[data-' + plugin + ']').not('[data-yeti-box="' + pluginId + '"]');
250
251    plugins.each(function () {
252      var _this = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this);
253      _this.triggerHandler('close.zf.trigger', [_this]);
254    });
255  }
256
257  // Global, parses whole document.
258};
vendor: 4,101 bytes, lines 258-361
258Triggers.Initializers.addClosemeListener = function (pluginName) {
259  var yetiBoxes = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('[data-yeti-box]'),
260      plugNames = ['dropdown', 'tooltip', 'reveal'];
261
262  if (pluginName) {
263    if (typeof pluginName === 'string') {
264      plugNames.push(pluginName);
265    } else if (typeof pluginName === 'object' && typeof pluginName[0] === 'string') {
266      plugNames.concat(pluginName);
267    } else {
268      console.error('Plugin names must be strings');
269    }
270  }
271  if (yetiBoxes.length) {
272    var listeners = plugNames.map(function (name) {
273      return 'closeme.zf.' + name;
274    }).join(' ');
275
276    __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);
277  }
278};
279
280function debounceGlobalListener(debounce, trigger, listener) {
281  var timer = void 0,
282      args = Array.prototype.slice.call(arguments, 3);
283  __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).off(trigger).on(trigger, function (e) {
284    if (timer) {
285      clearTimeout(timer);
286    }
287    timer = setTimeout(function () {
288      listener.apply(null, args);
289    }, debounce || 10); //default time to emit scroll event
290  });
291}
292
293Triggers.Initializers.addResizeListener = function (debounce) {
294  var $nodes = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('[data-resize]');
295  if ($nodes.length) {
296    debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);
297  }
298};
299
300Triggers.Initializers.addScrollListener = function (debounce) {
301  var $nodes = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('[data-scroll]');
302  if ($nodes.length) {
303    debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);
304  }
305};
306
307Triggers.Initializers.addMutationEventsListener = function ($elem) {
308  if (!MutationObserver) {
309    return false;
310  }
311  var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');
312
313  //element callback
314  var listeningElementsMutation = function (mutationRecordsList) {
315    var $target = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(mutationRecordsList[0].target);
316
317    //trigger the event handler for the element depending on type
318    switch (mutationRecordsList[0].type) {
319      case "attributes":
320        if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") {
321          $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
322        }
323        if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") {
324          $target.triggerHandler('resizeme.zf.trigger', [$target]);
325        }
326        if (mutationRecordsList[0].attributeName === "style") {
327          $target.closest("[data-mutate]").attr("data-events", "mutate");
328          $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
329        }
330        break;
331
332      case "childList":
333        $target.closest("[data-mutate]").attr("data-events", "mutate");
334        $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
335        break;
336
337      default:
338        return false;
339      //nothing
340    }
341  };
342
343  if ($nodes.length) {
344    //for each element that needs to listen for resizing, scrolling, or mutation add a single observer
345    for (var i = 0; i <= $nodes.length - 1; i++) {
346      var elementObserver = new MutationObserver(listeningElementsMutation);
347      elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: ["data-events", "style"] });
348    }
349  }
350};
351
352Triggers.Initializers.addSimpleListeners = function () {
353  var $document = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(document);
354
355  Triggers.Initializers.addOpenListener($document);
356  Triggers.Initializers.addCloseListener($document);
357  Triggers.Initializers.addToggleListener($document);
358  Triggers.Initializers.addCloseableListener($document);
359  Triggers.Initializers.addToggleFocusListener($document);
360};
361
362Triggers.Initializers.addGlobalListeners = function () {
363  var $document = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(document);
364  Triggers.Initializers.addMutationEventsListener($document);
365  Triggers.Initializers.addResizeListener();
366  Triggers.Initializers.addScrollListener();
367  Triggers.Initializers.addClosemeListener();
368};
369
370Triggers.init = function ($, Foundation) {
371  if (typeof $.triggersInitialized === 'undefined') {
372    var $document = $(document);
373
374    if (document.readyState === "complete") {
375      Triggers.Initializers.addSimpleListeners();
376      Triggers.Initializers.addGlobalListeners();
377    } else {
378      $(window).on('load', function () {
379        Triggers.Initializers.addSimpleListeners();
380        Triggers.Initializers.addGlobalListeners();
381      });
382    }
383
384    $.triggersInitialized = true;
385  }
386
387  if (Foundation) {
388    Foundation.Triggers = Triggers;
389    // Legacy included to be backwards compatible for now.
390    Foundation.IHearYou = Triggers.Initializers.addGlobalListeners;
391  }
392};
393
394
395
396/***/ })
397
398/******/ });

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.