mirror of
https://github.com/VTECRM/vtenext.git
synced 2026-02-27 16:48:47 +00:00
178 lines
5.0 KiB
JavaScript
178 lines
5.0 KiB
JavaScript
// Required for Meteor package, the use of window prevents export by Meteor
|
|
(function(window){
|
|
if(window.Package){
|
|
Materialize = {};
|
|
} else {
|
|
window.Materialize = {};
|
|
}
|
|
})(window);
|
|
|
|
if (typeof exports !== 'undefined' && !exports.nodeType) {
|
|
if (typeof module !== 'undefined' && !module.nodeType && module.exports) {
|
|
exports = module.exports = Materialize;
|
|
}
|
|
exports.default = Materialize;
|
|
}
|
|
|
|
/*
|
|
* raf.js
|
|
* https://github.com/ngryman/raf.js
|
|
*
|
|
* original requestAnimationFrame polyfill by Erik Möller
|
|
* inspired from paul_irish gist and post
|
|
*
|
|
* Copyright (c) 2013 ngryman
|
|
* Licensed under the MIT license.
|
|
*/
|
|
(function(window) {
|
|
var lastTime = 0,
|
|
vendors = ['webkit', 'moz'],
|
|
requestAnimationFrame = window.requestAnimationFrame,
|
|
cancelAnimationFrame = window.cancelAnimationFrame,
|
|
i = vendors.length;
|
|
|
|
// try to un-prefix existing raf
|
|
while (--i >= 0 && !requestAnimationFrame) {
|
|
requestAnimationFrame = window[vendors[i] + 'RequestAnimationFrame'];
|
|
cancelAnimationFrame = window[vendors[i] + 'CancelRequestAnimationFrame'];
|
|
}
|
|
|
|
// polyfill with setTimeout fallback
|
|
// heavily inspired from @darius gist mod: https://gist.github.com/paulirish/1579671#comment-837945
|
|
if (!requestAnimationFrame || !cancelAnimationFrame) {
|
|
requestAnimationFrame = function(callback) {
|
|
var now = +Date.now(),
|
|
nextTime = Math.max(lastTime + 16, now);
|
|
return setTimeout(function() {
|
|
callback(lastTime = nextTime);
|
|
}, nextTime - now);
|
|
};
|
|
|
|
cancelAnimationFrame = clearTimeout;
|
|
}
|
|
|
|
// export to window
|
|
window.requestAnimationFrame = requestAnimationFrame;
|
|
window.cancelAnimationFrame = cancelAnimationFrame;
|
|
}(window));
|
|
|
|
/**
|
|
* Generate approximated selector string for a jQuery object
|
|
* @param {jQuery} obj jQuery object to be parsed
|
|
* @returns {string}
|
|
*/
|
|
Materialize.objectSelectorString = function(obj) {
|
|
var tagStr = obj.prop('tagName') || '';
|
|
var idStr = obj.attr('id') || '';
|
|
var classStr = obj.attr('class') || '';
|
|
return (tagStr + idStr + classStr).replace(/\s/g,'');
|
|
};
|
|
|
|
|
|
// Unique Random ID
|
|
Materialize.guid = (function() {
|
|
function s4() {
|
|
return Math.floor((1 + Math.random()) * 0x10000)
|
|
.toString(16)
|
|
.substring(1);
|
|
}
|
|
return function() {
|
|
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
|
|
s4() + '-' + s4() + s4() + s4();
|
|
};
|
|
})();
|
|
|
|
/**
|
|
* Escapes hash from special characters
|
|
* @param {string} hash String returned from this.hash
|
|
* @returns {string}
|
|
*/
|
|
Materialize.escapeHash = function(hash) {
|
|
return hash.replace( /(:|\.|\[|\]|,|=)/g, "\\$1" );
|
|
};
|
|
|
|
Materialize.elementOrParentIsFixed = function(element) {
|
|
var $element = $(element);
|
|
var $checkElements = $element.add($element.parents());
|
|
var isFixed = false;
|
|
$checkElements.each(function(){
|
|
if ($(this).css("position") === "fixed") {
|
|
isFixed = true;
|
|
return false;
|
|
}
|
|
});
|
|
return isFixed;
|
|
};
|
|
|
|
|
|
/**
|
|
* Get time in ms
|
|
* @license https://raw.github.com/jashkenas/underscore/master/LICENSE
|
|
* @type {function}
|
|
* @return {number}
|
|
*/
|
|
var getTime = (Date.now || function () {
|
|
return new Date().getTime();
|
|
});
|
|
|
|
|
|
/**
|
|
* Returns a function, that, when invoked, will only be triggered at most once
|
|
* during a given window of time. Normally, the throttled function will run
|
|
* as much as it can, without ever going more than once per `wait` duration;
|
|
* but if you'd like to disable the execution on the leading edge, pass
|
|
* `{leading: false}`. To disable execution on the trailing edge, ditto.
|
|
* @license https://raw.github.com/jashkenas/underscore/master/LICENSE
|
|
* @param {function} func
|
|
* @param {number} wait
|
|
* @param {Object=} options
|
|
* @returns {Function}
|
|
*/
|
|
Materialize.throttle = function(func, wait, options) {
|
|
var context, args, result;
|
|
var timeout = null;
|
|
var previous = 0;
|
|
options || (options = {});
|
|
var later = function () {
|
|
previous = options.leading === false ? 0 : getTime();
|
|
timeout = null;
|
|
result = func.apply(context, args);
|
|
context = args = null;
|
|
};
|
|
return function () {
|
|
var now = getTime();
|
|
if (!previous && options.leading === false) previous = now;
|
|
var remaining = wait - (now - previous);
|
|
context = this;
|
|
args = arguments;
|
|
if (remaining <= 0) {
|
|
clearTimeout(timeout);
|
|
timeout = null;
|
|
previous = now;
|
|
result = func.apply(context, args);
|
|
context = args = null;
|
|
} else if (!timeout && options.trailing !== false) {
|
|
timeout = setTimeout(later, remaining);
|
|
}
|
|
return result;
|
|
};
|
|
};
|
|
|
|
|
|
// Velocity has conflicts when loaded with jQuery, this will check for it
|
|
// First, check if in noConflict mode
|
|
var Vel;
|
|
if (jQuery) {
|
|
Vel = jQuery.Velocity;
|
|
} else if ($) {
|
|
Vel = $.Velocity;
|
|
} else {
|
|
Vel = Velocity;
|
|
}
|
|
|
|
if (Vel) {
|
|
Materialize.Vel = Vel;
|
|
} else {
|
|
Materialize.Vel = Velocity;
|
|
}
|