You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.2 KiB
JavaScript
88 lines
2.2 KiB
JavaScript
'use strict';
|
|
|
|
// eslint-disable-next-line no-unused-vars
|
|
const WPFormsUtils = window.WPFormsUtils || ( function( document, window, $ ) {
|
|
|
|
/**
|
|
* Public functions and properties.
|
|
*
|
|
* @since 1.7.6
|
|
*
|
|
* @type {object}
|
|
*/
|
|
const app = {
|
|
|
|
/**
|
|
* Wrapper to trigger a native or custom event and return the event object.
|
|
*
|
|
* @since 1.7.6
|
|
*
|
|
* @param {jQuery} $element Element to trigger event on.
|
|
* @param {string} eventName Event name to trigger (custom or native).
|
|
* @param {Array} args Trigger arguments.
|
|
*
|
|
* @returns {Event} Event object.
|
|
*/
|
|
triggerEvent: function( $element, eventName, args = [] ) {
|
|
|
|
let eventObject = new $.Event( eventName );
|
|
|
|
$element.trigger( eventObject, args );
|
|
|
|
return eventObject;
|
|
},
|
|
|
|
/**
|
|
* Debounce.
|
|
*
|
|
* This function comes directly from underscore.js:
|
|
*
|
|
* Returns a function, that, as long as it continues to be invoked, will not
|
|
* be triggered. The function will be called after it stops being called for
|
|
* N milliseconds. If `immediate` is passed, trigger the function on the
|
|
* leading edge, instead of the trailing.
|
|
*
|
|
* Debouncing is removing unwanted input noise from buttons, switches or other user input.
|
|
* Debouncing prevents extra activations or slow functions from triggering too often.
|
|
*
|
|
* @param {Function} func The function to be debounced.
|
|
* @param {int} wait The amount of time to delay calling func.
|
|
* @param {bool} immediate Whether or not to trigger the function on the leading edge.
|
|
*
|
|
* @returns {Function} Returns a function that, as long as it continues to be invoked, will not be triggered.
|
|
*/
|
|
debounce: function( func, wait, immediate ) {
|
|
|
|
var timeout;
|
|
|
|
return function() {
|
|
|
|
var context = this,
|
|
args = arguments;
|
|
var later = function() {
|
|
|
|
timeout = null;
|
|
|
|
if ( ! immediate ) {
|
|
func.apply( context, args );
|
|
}
|
|
};
|
|
|
|
var callNow = immediate && ! timeout;
|
|
|
|
clearTimeout( timeout );
|
|
|
|
timeout = setTimeout( later, wait );
|
|
|
|
if ( callNow ) {
|
|
func.apply( context, args );
|
|
}
|
|
};
|
|
},
|
|
};
|
|
|
|
// Provide access to public functions/properties.
|
|
return app;
|
|
|
|
}( document, window, jQuery ) );
|