UNPKG

@ionic/core

Version:
86 lines (85 loc) 2.56 kB
export function rIC(callback) { if ('requestIdleCallback' in window) { window.requestIdleCallback(callback); } else { setTimeout(callback, 32); } } export function hasShadowDom(el) { return !!el.shadowRoot && !!el.attachShadow; } export function findItemLabel(componentEl) { const itemEl = componentEl.closest('ion-item'); if (itemEl) { return itemEl.querySelector('ion-label'); } return null; } export function renderHiddenInput(always, container, name, value, disabled) { if (always || 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 clamp(min, n, max) { return Math.max(min, Math.min(n, max)); } export function assert(actual, reason) { if (!actual) { const message = 'ASSERT: ' + reason; console.error(message); debugger; throw new Error(message); } } export function now(ev) { return ev.timeStamp || Date.now(); } export function pointerCoord(ev) { if (ev) { const changedTouches = ev.changedTouches; if (changedTouches && changedTouches.length > 0) { const touch = changedTouches[0]; return { x: touch.clientX, y: touch.clientY }; } if (ev.pageX !== undefined) { return { x: ev.pageX, y: ev.pageY }; } } return { x: 0, y: 0 }; } export function isEndSide(win, side) { const isRTL = win.document.dir === 'rtl'; switch (side) { case 'start': return isRTL; case 'end': return !isRTL; default: throw new Error(`"${side}" is not a valid value for [side]. Use "start" or "end" instead.`); } } export function deferEvent(event) { return debounceEvent(event, 0); } export function debounceEvent(event, wait) { const original = event._original || event; return { _original: event, emit: debounce(original.emit.bind(original), wait) }; } export function debounce(func, wait = 0) { let timer; return (...args) => { clearTimeout(timer); timer = setTimeout(func, wait, ...args); }; }