File Manager

Current Directory: /home/astoriaah/www/templates/yootheme/vendor/assets/uikit/src/js/util
Viewing File: /home/astoriaah/www/templates/yootheme/vendor/assets/uikit/src/js/util/lang.js
export function bind(fn, context) { return function (a) { const l = arguments.length; return l ? l > 1 ? fn.apply(context, arguments) : fn.call(context, a) : fn.call(context); }; } const {hasOwnProperty} = Object.prototype; export function hasOwn(obj, key) { return hasOwnProperty.call(obj, key); } const hyphenateCache = {}; const hyphenateRe = /([a-z\d])([A-Z])/g; export function hyphenate(str) { if (!(str in hyphenateCache)) { hyphenateCache[str] = str .replace(hyphenateRe, '$1-$2') .toLowerCase(); } return hyphenateCache[str]; } const camelizeRe = /-(\w)/g; export function camelize(str) { return str.replace(camelizeRe, toUpper); } function toUpper(_, c) { return c ? c.toUpperCase() : ''; } export function ucfirst(str) { return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : ''; } const strPrototype = String.prototype; const startsWithFn = strPrototype.startsWith || function (search) { return this.lastIndexOf(search, 0) === 0; }; export function startsWith(str, search) { return startsWithFn.call(str, search); } const endsWithFn = strPrototype.endsWith || function (search) { return this.substr(-search.length) === search; }; export function endsWith(str, search) { return endsWithFn.call(str, search); } const includesFn = function (search) { return ~this.indexOf(search); }; const includesStr = strPrototype.includes || includesFn; const includesArray = Array.prototype.includes || includesFn; export function includes(obj, search) { return obj && (isString(obj) ? includesStr : includesArray).call(obj, search); } export const {isArray} = Array; export function isFunction(obj) { return typeof obj === 'function'; } export function isObject(obj) { return obj !== null && typeof obj === 'object'; } export function isPlainObject(obj) { return isObject(obj) && Object.getPrototypeOf(obj) === Object.prototype; } export function isWindow(obj) { return isObject(obj) && obj === obj.window; } export function isDocument(obj) { return isObject(obj) && obj.nodeType === 9; } export function isJQuery(obj) { return isObject(obj) && !!obj.jquery; } export function isNode(element) { return element instanceof Node || isObject(element) && element.nodeType === 1; } export function isNodeCollection(element) { return element instanceof NodeList || element instanceof HTMLCollection; } export function isBoolean(value) { return typeof value === 'boolean'; } export function isString(value) { return typeof value === 'string'; } export function isNumber(value) { return typeof value === 'number'; } export function isNumeric(value) { return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value)); } export function isUndefined(value) { return value === void 0; } export function toBoolean(value) { return isBoolean(value) ? value : value === 'true' || value === '1' || value === '' ? true : value === 'false' || value === '0' ? false : value; } export function toNumber(value) { const number = Number(value); return !isNaN(number) ? number : false; } export function toFloat(value) { return parseFloat(value) || 0; } export function toNode(element) { return isNode(element) || isWindow(element) || isDocument(element) ? element : isNodeCollection(element) || isJQuery(element) ? element[0] : isArray(element) ? toNode(element[0]) : null; } const arrayProto = Array.prototype; export function toNodes(element) { return isNode(element) ? [element] : isNodeCollection(element) ? arrayProto.slice.call(element) : isArray(element) ? element.map(toNode).filter(Boolean) : isJQuery(element) ? element.toArray() : []; } export function toList(value) { return isArray(value) ? value : isString(value) ? value.split(/,(?![^(]*\))/).map(value => isNumeric(value) ? toNumber(value) : toBoolean(value.trim())) : [value]; } export function toMs(time) { return !time ? 0 : endsWith(time, 'ms') ? toFloat(time) : toFloat(time) * 1000; } export function swap(value, a, b) { return value.replace(new RegExp(`${a}|${b}`, 'mg'), match => { return match === a ? b : a; }); } export const assign = Object.assign || function (target, ...args) { target = Object(target); for (let i = 0; i < args.length; i++) { const source = args[i]; if (source !== null) { for (const key in source) { if (hasOwn(source, key)) { target[key] = source[key]; } } } } return target; }; export function each(obj, cb) { for (const key in obj) { cb.call(obj[key], obj[key], key); } } export function sortBy(collection, prop) { return collection.sort((a, b) => a[prop] > b[prop] ? 1 : b[prop] > a[prop] ? -1 : 0 ); } export function clamp(number, min = 0, max = 1) { return Math.min(Math.max(number, min), max); } export function noop() {} export function intersectRect(r1, r2) { return r1.left <= r2.right && r2.left <= r1.right && r1.top <= r2.bottom && r2.top <= r1.bottom; } export function pointInRect(point, rect) { return intersectRect({top: point.y, bottom: point.y, left: point.x, right: point.x}, rect); } export const Dimensions = { ratio(dimensions, prop, value) { const aProp = prop === 'width' ? 'height' : 'width'; return { [aProp]: dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp], [prop]: value }; }, contain(dimensions, maxDimensions) { dimensions = assign({}, dimensions); each(dimensions, (_, prop) => dimensions = dimensions[prop] > maxDimensions[prop] ? this.ratio(dimensions, prop, maxDimensions[prop]) : dimensions ); return dimensions; }, cover(dimensions, maxDimensions) { dimensions = this.contain(dimensions, maxDimensions); each(dimensions, (_, prop) => dimensions = dimensions[prop] < maxDimensions[prop] ? this.ratio(dimensions, prop, maxDimensions[prop]) : dimensions ); return dimensions; } };