UNPKG

@larva.io/webcomponents

Version:

Fentrica SmartUnits WebComponents package

74 lines (73 loc) 2.39 kB
/*! * (C) Fentrica http://fentrica.com - Seee LICENSE.md */ export function hasShadowDom(el) { return !!el.shadowRoot && !!el.attachShadow; } export function now(ev) { return ev.timeStamp || Date.now(); } export const clamp = (min, n, max) => { return Math.max(min, Math.min(n, max)); }; export function renderHiddenInput(container, name, value, disabled) { if (hasShadowDom(container)) { let input = container.querySelector('input.aux-input'); if (!input) { input = container.ownerDocument.createElement('input'); input.type = 'hidden'; input.classList.add('aux-input'); container.appendChild(input); } input.disabled = disabled; input.name = name; input.value = value || ''; } } export function isEmpty(obj) { return [Object, Array].includes((obj || {}).constructor) && !Object.entries((obj || {})).length; } export function pick(object, keys) { return keys.reduce((obj, key) => { if (object && object.hasOwnProperty(key)) { obj[key] = object[key]; } return obj; }, {}); } export function camelCasetoDashed(str) { return str.replace(/[A-Z]/g, m => '-' + m.toLowerCase()); } export async function attachComponent(container, component, componentProps) { if (typeof component !== 'string' && !(component instanceof HTMLElement)) { throw new Error('component is missing'); } if (!container) { throw new Error('container is missing'); } const el = (typeof component === 'string') ? container.ownerDocument && container.ownerDocument.createElement(component) : component; if (componentProps) { assignComponentProps(el, componentProps); } container.appendChild(el); if (el.componentOnReady) { await el.componentOnReady(); } return el; } ; export function assignComponentProps(el, componentProps) { if (componentProps) { Object.assign(el, componentProps); } // append onEventListener props for (const prop of Object.keys(componentProps)) { if (prop.match(/^on[A-Z][a-zA-Z0-9]*$/g)) { const eventName = prop.replace('on', '').toLowerCase(); // onLarChange => larchange el.addEventListener(eventName, componentProps[prop]); } } } //# sourceMappingURL=helpers.js.map