UNPKG

@ng-bootstrap/ng-bootstrap

Version:
94 lines 11.4 kB
import { Observable } from 'rxjs'; export function toInteger(value) { return parseInt(`${value}`, 10); } export function toString(value) { return value !== undefined && value !== null ? `${value}` : ''; } export function getValueInRange(value, max, min = 0) { return Math.max(Math.min(value, max), min); } export function isString(value) { return typeof value === 'string'; } export function isNumber(value) { return !isNaN(toInteger(value)); } export function isInteger(value) { return typeof value === 'number' && isFinite(value) && Math.floor(value) === value; } export function isDefined(value) { return value !== undefined && value !== null; } export function isPromise(v) { return v && v.then; } export function padNumber(value) { if (isNumber(value)) { return `0${value}`.slice(-2); } else { return ''; } } export function regExpEscape(text) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); } export function hasClassName(element, className) { return (element && element.className && element.className.split && element.className.split(/\s+/).indexOf(className) >= 0); } export function closest(element, selector) { if (!selector) { return null; } /* * In certain browsers (e.g. Edge 44.18362.449.0) HTMLDocument does * not support `Element.prototype.closest`. To emulate the correct behaviour * we return null when the method is missing. * * Note that in evergreen browsers `closest(document.documentElement, 'html')` * will return the document element whilst in Edge null will be returned. This * compromise was deemed good enough. */ if (typeof element.closest === 'undefined') { return null; } return element.closest(selector); } /** * Force a browser reflow * @param element element where to apply the reflow */ export function reflow(element) { return (element || document.body).getBoundingClientRect(); } /** * Creates an observable where all callbacks are executed inside a given zone * * @param zone */ export function runInZone(zone) { return (source) => { return new Observable((observer) => { const next = (value) => zone.run(() => observer.next(value)); const error = (e) => zone.run(() => observer.error(e)); const complete = () => zone.run(() => observer.complete()); return source.subscribe({ next, error, complete }); }); }; } export function removeAccents(str) { return str.normalize('NFD').replace(/[\u0300-\u036f]/g, ''); } /** * Returns the active element in the given root. * If the active element is inside a shadow root, it is searched recursively. */ export function getActiveElement(root = document) { const activeEl = root?.activeElement; if (!activeEl) { return null; } return activeEl.shadowRoot ? getActiveElement(activeEl.shadowRoot) : activeEl; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBb0IsTUFBTSxNQUFNLENBQUM7QUFFcEQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFVO0lBQ25DLE9BQU8sUUFBUSxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBVTtJQUNsQyxPQUFPLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2hFLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDbEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQVU7SUFDbEMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBVTtJQUNsQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQVU7SUFDbkMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDO0FBQ3BGLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQVU7SUFDbkMsT0FBTyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDOUMsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUksQ0FBTTtJQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWE7SUFDdEMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDcEIsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzdCO1NBQU07UUFDTixPQUFPLEVBQUUsQ0FBQztLQUNWO0FBQ0YsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBSTtJQUNoQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBWSxFQUFFLFNBQWlCO0lBQzNELE9BQU8sQ0FDTixPQUFPLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUNqSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsT0FBb0IsRUFBRSxRQUFpQjtJQUM5RCxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2QsT0FBTyxJQUFJLENBQUM7S0FDWjtJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssV0FBVyxFQUFFO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0tBQ1o7SUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQUMsT0FBb0I7SUFDMUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQztBQUMzRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUksSUFBWTtJQUN4QyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDakIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoRSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMzRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFXO0lBQ3hDLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUE4QixRQUFRO0lBQ3RFLE1BQU0sUUFBUSxHQUFHLElBQUksRUFBRSxhQUFhLENBQUM7SUFFckMsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNkLE9BQU8sSUFBSSxDQUFDO0tBQ1o7SUFFRCxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQy9FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZTogYW55KTogbnVtYmVyIHtcblx0cmV0dXJuIHBhcnNlSW50KGAke3ZhbHVlfWAsIDEwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuXHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCA/IGAke3ZhbHVlfWAgOiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlSW5SYW5nZSh2YWx1ZTogbnVtYmVyLCBtYXg6IG51bWJlciwgbWluID0gMCk6IG51bWJlciB7XG5cdHJldHVybiBNYXRoLm1heChNYXRoLm1pbih2YWx1ZSwgbWF4KSwgbWluKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBzdHJpbmcge1xuXHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xuXHRyZXR1cm4gIWlzTmFOKHRvSW50ZWdlcih2YWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xuXHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc0Zpbml0ZSh2YWx1ZSkgJiYgTWF0aC5mbG9vcih2YWx1ZSkgPT09IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEZWZpbmVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2U8VD4odjogYW55KTogdiBpcyBQcm9taXNlPFQ+IHtcblx0cmV0dXJuIHYgJiYgdi50aGVuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFkTnVtYmVyKHZhbHVlOiBudW1iZXIpIHtcblx0aWYgKGlzTnVtYmVyKHZhbHVlKSkge1xuXHRcdHJldHVybiBgMCR7dmFsdWV9YC5zbGljZSgtMik7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuICcnO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdFeHBFc2NhcGUodGV4dCkge1xuXHRyZXR1cm4gdGV4dC5yZXBsYWNlKC9bLVtcXF17fSgpKis/LixcXFxcXiR8I1xcc10vZywgJ1xcXFwkJicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzQ2xhc3NOYW1lKGVsZW1lbnQ6IGFueSwgY2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIChcblx0XHRlbGVtZW50ICYmIGVsZW1lbnQuY2xhc3NOYW1lICYmIGVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0ICYmIGVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KC9cXHMrLykuaW5kZXhPZihjbGFzc05hbWUpID49IDBcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb3Nlc3QoZWxlbWVudDogSFRNTEVsZW1lbnQsIHNlbGVjdG9yPzogc3RyaW5nKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcblx0aWYgKCFzZWxlY3Rvcikge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Lypcblx0ICogSW4gY2VydGFpbiBicm93c2VycyAoZS5nLiBFZGdlIDQ0LjE4MzYyLjQ0OS4wKSBIVE1MRG9jdW1lbnQgZG9lc1xuXHQgKiBub3Qgc3VwcG9ydCBgRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdGAuIFRvIGVtdWxhdGUgdGhlIGNvcnJlY3QgYmVoYXZpb3VyXG5cdCAqIHdlIHJldHVybiBudWxsIHdoZW4gdGhlIG1ldGhvZCBpcyBtaXNzaW5nLlxuXHQgKlxuXHQgKiBOb3RlIHRoYXQgaW4gZXZlcmdyZWVuIGJyb3dzZXJzIGBjbG9zZXN0KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2h0bWwnKWBcblx0ICogd2lsbCByZXR1cm4gdGhlIGRvY3VtZW50IGVsZW1lbnQgd2hpbHN0IGluIEVkZ2UgbnVsbCB3aWxsIGJlIHJldHVybmVkLiBUaGlzXG5cdCAqIGNvbXByb21pc2Ugd2FzIGRlZW1lZCBnb29kIGVub3VnaC5cblx0ICovXG5cdGlmICh0eXBlb2YgZWxlbWVudC5jbG9zZXN0ID09PSAndW5kZWZpbmVkJykge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnQuY2xvc2VzdChzZWxlY3Rvcik7XG59XG5cbi8qKlxuICogRm9yY2UgYSBicm93c2VyIHJlZmxvd1xuICogQHBhcmFtIGVsZW1lbnQgZWxlbWVudCB3aGVyZSB0byBhcHBseSB0aGUgcmVmbG93XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWZsb3coZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcblx0cmV0dXJuIChlbGVtZW50IHx8IGRvY3VtZW50LmJvZHkpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JzZXJ2YWJsZSB3aGVyZSBhbGwgY2FsbGJhY2tzIGFyZSBleGVjdXRlZCBpbnNpZGUgYSBnaXZlbiB6b25lXG4gKlxuICogQHBhcmFtIHpvbmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkluWm9uZTxUPih6b25lOiBOZ1pvbmUpOiBPcGVyYXRvckZ1bmN0aW9uPFQsIFQ+IHtcblx0cmV0dXJuIChzb3VyY2UpID0+IHtcblx0XHRyZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG5cdFx0XHRjb25zdCBuZXh0ID0gKHZhbHVlOiBUKSA9PiB6b25lLnJ1bigoKSA9PiBvYnNlcnZlci5uZXh0KHZhbHVlKSk7XG5cdFx0XHRjb25zdCBlcnJvciA9IChlOiBhbnkpID0+IHpvbmUucnVuKCgpID0+IG9ic2VydmVyLmVycm9yKGUpKTtcblx0XHRcdGNvbnN0IGNvbXBsZXRlID0gKCkgPT4gem9uZS5ydW4oKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKSk7XG5cdFx0XHRyZXR1cm4gc291cmNlLnN1YnNjcmliZSh7IG5leHQsIGVycm9yLCBjb21wbGV0ZSB9KTtcblx0XHR9KTtcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUFjY2VudHMoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gc3RyLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGFjdGl2ZSBlbGVtZW50IGluIHRoZSBnaXZlbiByb290LlxuICogSWYgdGhlIGFjdGl2ZSBlbGVtZW50IGlzIGluc2lkZSBhIHNoYWRvdyByb290LCBpdCBpcyBzZWFyY2hlZCByZWN1cnNpdmVseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGl2ZUVsZW1lbnQocm9vdDogRG9jdW1lbnQgfCBTaGFkb3dSb290ID0gZG9jdW1lbnQpOiBFbGVtZW50IHwgbnVsbCB7XG5cdGNvbnN0IGFjdGl2ZUVsID0gcm9vdD8uYWN0aXZlRWxlbWVudDtcblxuXHRpZiAoIWFjdGl2ZUVsKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRyZXR1cm4gYWN0aXZlRWwuc2hhZG93Um9vdCA/IGdldEFjdGl2ZUVsZW1lbnQoYWN0aXZlRWwuc2hhZG93Um9vdCkgOiBhY3RpdmVFbDtcbn1cbiJdfQ==