UNPKG

right-angled

Version:

Lightweight and easy to use angular data grids. Integrates with your markup and styles rather than generating its own.

102 lines 10.8 kB
/** * Copies values of all properties from passed object to the new object literal. * * If any of the properties of passed object is also a complex object then {@link cloneAsLiteral} will be called recursively. * * Function declarations are ignored. * @param value value to clone. * @returns resulted literal. */ export function cloneAsLiteral(value) { if (value === null) { return null; } if (typeof value === 'undefined') { return undefined; } if (Array.isArray(value)) { return value.map(cloneAsLiteral); } if (typeof value === 'object') { const result = {}; for (const index in value) { if (Object.prototype.hasOwnProperty.call(value, index) && typeof value[index] !== 'function') { result[index] = cloneAsLiteral(value[index]); } } return result; } return value; } /** * Set of key-value pairs which is used by {@link coerceValue} method to coerce specific values. */ // tslint:disable-next-line: object-literal-key-quotes export const coerceTypes = { true: !0, false: !1, null: null }; /** * Coerce type of passed value. * * For example if you pass string with value 'null' it returns `null`, if you pass 'true' it returns boolean value `true`, if you pass '1.0' it returns number `1.0` etc. * * If passed value is complex object or array this method will be called for each property or array item. * @param value value to coerce. * @returns resulted value. * @see {@link coerceTypes} */ export function coerceValue(value) { let result = value; if (result === null) { return null; } if (typeof result === 'undefined') { return undefined; } if (typeof result === 'object' || Array.isArray(result)) { for (const index in result) { if (Object.prototype.hasOwnProperty.call(result, index)) { result[index] = coerceValue(result[index]); } } } else if (result && result !== true && !isNaN(result)) { result = +result; } else if (result === 'undefined') { result = undefined; } else if (typeof coerceTypes[result] !== 'undefined') { result = coerceTypes[result]; } return result; } /** * Cleaning up passed array by calling `splice` function. * * Next, each element of passed array will be checked for existence of `destroy` method and if it exists it will be called. * @param collection array of elements to destroy. * @param async if `true` then iterating over array and `destroy` methods calling will be executed via setTimeout (,0). */ export function destroyAll(collection, async = true) { if (!Array.isArray(collection)) { return; } let items = collection.splice(0, collection.length); if (async) { setTimeout(() => { items.forEach((item) => { if (item && item.destroy) { item.destroy(); } }); items = null; }, 0); } else { items.forEach((item) => { if (item && item.destroy) { item.destroy(); } }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcmlnaHQtYW5nbGVkL3NyYy9saWIvdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFVO0lBQ3ZDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtRQUNsQixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLEVBQUU7UUFDaEMsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDeEIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2xDO0lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsTUFBTSxNQUFNLEdBQTBCLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssRUFBRTtZQUN6QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUM1RixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzlDO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxzREFBc0Q7QUFDdEQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFFcEU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFVO0lBQ3BDLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNuQixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7UUFDbkIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO1FBQ2pDLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN2RCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtZQUMxQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDNUM7U0FDRjtLQUNGO1NBQU0sSUFBSSxNQUFNLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN0RCxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUM7S0FDbEI7U0FBTSxJQUFJLE1BQU0sS0FBSyxXQUFXLEVBQUU7UUFDakMsTUFBTSxHQUFHLFNBQVMsQ0FBQztLQUNwQjtTQUFNLElBQUksT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssV0FBVyxFQUFFO1FBQ3JELE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDOUI7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBQ0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxVQUFpQixFQUFFLEtBQUssR0FBRyxJQUFJO0lBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzlCLE9BQU87S0FDUjtJQUNELElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwRCxJQUFJLEtBQUssRUFBRTtRQUNULFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDaEI7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILEtBQUssR0FBRyxJQUFJLENBQUM7UUFDZixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDUDtTQUFNO1FBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQzFCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNoQjtRQUNILENBQUMsQ0FBQyxDQUFDO0tBQ0o7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENvcGllcyB2YWx1ZXMgb2YgYWxsIHByb3BlcnRpZXMgZnJvbSBwYXNzZWQgb2JqZWN0IHRvIHRoZSBuZXcgb2JqZWN0IGxpdGVyYWwuXHJcbiAqXHJcbiAqIElmIGFueSBvZiB0aGUgcHJvcGVydGllcyBvZiBwYXNzZWQgb2JqZWN0IGlzIGFsc28gYSBjb21wbGV4IG9iamVjdCB0aGVuIHtAbGluayBjbG9uZUFzTGl0ZXJhbH0gd2lsbCBiZSBjYWxsZWQgcmVjdXJzaXZlbHkuXHJcbiAqXHJcbiAqIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhcmUgaWdub3JlZC5cclxuICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIGNsb25lLlxyXG4gKiBAcmV0dXJucyByZXN1bHRlZCBsaXRlcmFsLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lQXNMaXRlcmFsKHZhbHVlOiBhbnkpOiBhbnkge1xyXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgIHJldHVybiB2YWx1ZS5tYXAoY2xvbmVBc0xpdGVyYWwpO1xyXG4gIH1cclxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgY29uc3QgcmVzdWx0OiB7IFtpZDogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIGZvciAoY29uc3QgaW5kZXggaW4gdmFsdWUpIHtcclxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgaW5kZXgpICYmIHR5cGVvZiB2YWx1ZVtpbmRleF0gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICByZXN1bHRbaW5kZXhdID0gY2xvbmVBc0xpdGVyYWwodmFsdWVbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgcmV0dXJuIHZhbHVlO1xyXG59XHJcblxyXG4vKipcclxuICogU2V0IG9mIGtleS12YWx1ZSBwYWlycyB3aGljaCBpcyB1c2VkIGJ5IHtAbGluayBjb2VyY2VWYWx1ZX0gbWV0aG9kIHRvIGNvZXJjZSBzcGVjaWZpYyB2YWx1ZXMuXHJcbiAqL1xyXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG9iamVjdC1saXRlcmFsLWtleS1xdW90ZXNcclxuZXhwb3J0IGNvbnN0IGNvZXJjZVR5cGVzOiBhbnkgPSB7IHRydWU6ICEwLCBmYWxzZTogITEsIG51bGw6IG51bGwgfTtcclxuXHJcbi8qKlxyXG4gKiBDb2VyY2UgdHlwZSBvZiBwYXNzZWQgdmFsdWUuXHJcbiAqXHJcbiAqIEZvciBleGFtcGxlIGlmIHlvdSBwYXNzIHN0cmluZyB3aXRoIHZhbHVlICdudWxsJyBpdCByZXR1cm5zIGBudWxsYCwgaWYgeW91IHBhc3MgJ3RydWUnIGl0IHJldHVybnMgYm9vbGVhbiB2YWx1ZSBgdHJ1ZWAsIGlmIHlvdSBwYXNzICcxLjAnIGl0IHJldHVybnMgbnVtYmVyIGAxLjBgIGV0Yy5cclxuICpcclxuICogSWYgcGFzc2VkIHZhbHVlIGlzIGNvbXBsZXggb2JqZWN0IG9yIGFycmF5IHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoIHByb3BlcnR5IG9yIGFycmF5IGl0ZW0uXHJcbiAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byBjb2VyY2UuXHJcbiAqIEByZXR1cm5zIHJlc3VsdGVkIHZhbHVlLlxyXG4gKiBAc2VlIHtAbGluayBjb2VyY2VUeXBlc31cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcclxuICBsZXQgcmVzdWx0ID0gdmFsdWU7XHJcbiAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGlmICh0eXBlb2YgcmVzdWx0ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xyXG4gICAgZm9yIChjb25zdCBpbmRleCBpbiByZXN1bHQpIHtcclxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGluZGV4KSkge1xyXG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBjb2VyY2VWYWx1ZShyZXN1bHRbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSBpZiAocmVzdWx0ICYmIHJlc3VsdCAhPT0gdHJ1ZSAmJiAhaXNOYU4ocmVzdWx0KSkge1xyXG4gICAgcmVzdWx0ID0gK3Jlc3VsdDtcclxuICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIHJlc3VsdCA9IHVuZGVmaW5lZDtcclxuICB9IGVsc2UgaWYgKHR5cGVvZiBjb2VyY2VUeXBlc1tyZXN1bHRdICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgcmVzdWx0ID0gY29lcmNlVHlwZXNbcmVzdWx0XTtcclxuICB9XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG4vKipcclxuICogQ2xlYW5pbmcgdXAgcGFzc2VkIGFycmF5IGJ5IGNhbGxpbmcgYHNwbGljZWAgZnVuY3Rpb24uXHJcbiAqXHJcbiAqIE5leHQsIGVhY2ggZWxlbWVudCBvZiBwYXNzZWQgYXJyYXkgd2lsbCBiZSBjaGVja2VkIGZvciBleGlzdGVuY2Ugb2YgYGRlc3Ryb3lgIG1ldGhvZCBhbmQgaWYgaXQgZXhpc3RzIGl0IHdpbGwgYmUgY2FsbGVkLlxyXG4gKiBAcGFyYW0gY29sbGVjdGlvbiBhcnJheSBvZiBlbGVtZW50cyB0byBkZXN0cm95LlxyXG4gKiBAcGFyYW0gYXN5bmMgaWYgYHRydWVgIHRoZW4gaXRlcmF0aW5nIG92ZXIgYXJyYXkgYW5kIGBkZXN0cm95YCBtZXRob2RzIGNhbGxpbmcgd2lsbCBiZSBleGVjdXRlZCB2aWEgc2V0VGltZW91dCAoLDApLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRlc3Ryb3lBbGwoY29sbGVjdGlvbjogYW55W10sIGFzeW5jID0gdHJ1ZSkge1xyXG4gIGlmICghQXJyYXkuaXNBcnJheShjb2xsZWN0aW9uKSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBsZXQgaXRlbXMgPSBjb2xsZWN0aW9uLnNwbGljZSgwLCBjb2xsZWN0aW9uLmxlbmd0aCk7XHJcblxyXG4gIGlmIChhc3luYykge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtICYmIGl0ZW0uZGVzdHJveSkge1xyXG4gICAgICAgICAgaXRlbS5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaXRlbXMgPSBudWxsO1xyXG4gICAgfSwgMCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbSAmJiBpdGVtLmRlc3Ryb3kpIHtcclxuICAgICAgICBpdGVtLmRlc3Ryb3koKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==