UNPKG

@twobirds/microcomponents

Version:

Micro Components Organization Class

113 lines 3.7 kB
'use strict'; export function isNativeObject(value) { return value && value['constructor'] && value.constructor === Object; } export function sortObject(o) { let result = {}, keys = [...Object.keys(o)].sort(); keys.forEach((key) => { if (isNativeObject(o[key])) { result[key] = sortObject(o[key]); } else { result[key] = o[key]; } }); return result; } export function flattenObject(o, doSort = true) { let result = {}; [...Object.getOwnPropertyNames(o)].forEach((propName) => { if (o[propName] && o[propName]['constructor'] && o[propName].constructor === Object) { const temp = flattenObject(o[propName], false); for (const j in temp) { result[propName + '.' + j] = temp[j]; } } else { result[propName] = o[propName]; } }); return doSort ? sortObject(result) : result; } export function deepEqual(o1, o2) { return (JSON.stringify(flattenObject(o1)) === JSON.stringify(flattenObject(o2))); } export function nameSpace(ns, obj = {}) { let nsa = ns.constructor === String ? ns.split('.') : ns; if (!obj || !nsa[0] || !obj[nsa[0]]) { console.warn('ns', nsa[0], 'not in', obj); return; } if (obj[nsa[0]].constructor === Object && nsa.length > 1) { return nameSpace(nsa.splice(1), obj[nsa[0]]); } return obj[nsa[0]]; } export function parse(what, parseThis) { var args = Array.from(arguments); if (args.length > 2) { while (args.length > 1) { args[0] = parse(args[0], args[1]); args.splice(1, 1); } return args[0]; } if (typeof what === 'string') { what.match(/\{[^\{\}]*\}/g)?.forEach(function (pPropname) { var propname = pPropname.substring(1, pPropname.length - 1), value = nameSpace(propname, parseThis); if (typeof value !== 'undefined') { what = what.replace(pPropname, value); } }); } else if (isNativeObject(what)) { switch (what.constructor) { case Object: Object.keys(what).forEach(function (pKey) { if (what.hasOwnProperty(pKey)) { what[pKey] = parse(what[pKey], parseThis); } }); break; case Array: what.forEach(function (pValue, pKey, original) { original[pKey] = parse(what[pKey], parseThis); }); break; } } return what; } export function kebabToPascal(str) { return str .split('-') .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) .join(''); } export function debounce(func, milliseconds) { let timeout; return () => { clearTimeout(timeout); timeout = setTimeout(function () { func(...arguments); }, milliseconds); }; } export function htmlToElements(html) { let template = document.createElement('template'); html = html.replace(/<([A-Za-z0-9\-]*)([^>\/]*)(\/>)/gi, '<$1$2></$1>'); template.innerHTML = html; template.content.normalize(); return Array.from(template.content.childNodes); } export function copyGettersSetters(source, target) { const descriptors = Object.getOwnPropertyDescriptors(source); for (const [key, descriptor] of Object.entries(descriptors)) { if ('get' in descriptor || 'set' in descriptor) { Object.defineProperty(target, key, descriptor); } } } //# sourceMappingURL=helpers.js.map