UNPKG

imask

Version:

vanilla javascript input mask

83 lines (73 loc) 2.54 kB
/** Checks if value is string */ function isString(str) { return typeof str === 'string' || str instanceof String; } /** Checks if value is object */ function isObject(obj) { var _obj$constructor; return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object'; } function pick(obj, keys) { if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k)); return Object.entries(obj).reduce((acc, _ref) => { let [k, v] = _ref; if (keys(v, k)) acc[k] = v; return acc; }, {}); } /** Direction */ const DIRECTION = { NONE: 'NONE', LEFT: 'LEFT', FORCE_LEFT: 'FORCE_LEFT', RIGHT: 'RIGHT', FORCE_RIGHT: 'FORCE_RIGHT' }; /** Direction */ function forceDirection(direction) { switch (direction) { case DIRECTION.LEFT: return DIRECTION.FORCE_LEFT; case DIRECTION.RIGHT: return DIRECTION.FORCE_RIGHT; default: return direction; } } /** Escapes regular expression control chars */ function escapeRegExp(str) { return str.replace(/([.*+?^=!:${}()|[\]/\\])/g, '\\$1'); } // cloned from https://github.com/epoberezkin/fast-deep-equal with small changes function objectIncludes(b, a) { if (a === b) return true; const arrA = Array.isArray(a), arrB = Array.isArray(b); let i; if (arrA && arrB) { if (a.length != b.length) return false; for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false; return true; } if (arrA != arrB) return false; if (a && b && typeof a === 'object' && typeof b === 'object') { const dateA = a instanceof Date, dateB = b instanceof Date; if (dateA && dateB) return a.getTime() == b.getTime(); if (dateA != dateB) return false; const regexpA = a instanceof RegExp, regexpB = b instanceof RegExp; if (regexpA && regexpB) return a.toString() == b.toString(); if (regexpA != regexpB) return false; const keys = Object.keys(a); // if (keys.length !== Object.keys(b).length) return false; for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false; return true; } else if (a && b && typeof a === 'function' && typeof b === 'function') { return a.toString() === b.toString(); } return false; } /** Selection range */ export { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };