{"version":3,"file":"ynmstudio-utils-helpers.mjs","sources":["../../../projects/ynm-utils/helpers/src/helpers.ts","../../../projects/ynm-utils/helpers/src/ynmstudio-utils-helpers.ts"],"sourcesContent":["export type CollectionPredicate = (item?: any, index?: number, collection?: any[]) => boolean;\n\nexport function isUndefined(value: any): value is undefined {\n    return typeof value === 'undefined';\n}\n\nexport function isNull(value: any): value is null {\n    return value === null;\n}\n\nexport function isNumber(value: any): value is number {\n    return typeof value === 'number';\n}\n\nexport function isNumberFinite(value: any): value is number {\n    return isNumber(value) && isFinite(value);\n}\n\n// Not strict positive\nexport function isPositive(value: number): boolean {\n    return value >= 0;\n}\n\nexport function isInteger(value: number): boolean {\n    // No rest, is an integer\n    return value % 1 === 0;\n}\n\nexport function isNil(value: any): value is null | undefined {\n    return value === null || typeof value === 'undefined';\n}\n\nexport function isString(value: any): value is string {\n    return typeof value === 'string';\n}\n\nexport function isObject(value: any): boolean {\n    return value !== null && typeof value === 'object';\n}\n\nexport function isArray(value: any): boolean {\n    return Array.isArray(value);\n}\n\nexport function isFunction(value: any): boolean {\n    return typeof value === 'function';\n}\n\nexport function toDecimal(value: number, decimal: number): number {\n    return Math.round(value * Math.pow(10, decimal)) / Math.pow(10, decimal);\n}\n\nexport function upperFirst(value: string): string {\n    return value.slice(0, 1).toUpperCase() + value.slice(1);\n}\n\nexport function createRound(method: string): Function {\n    // <any>Math to suppress error\n    const func: any = (<any>Math)[method];\n    return function (value: number, precision: number = 0) {\n        if (typeof value === 'string') {\n            throw new TypeError('Rounding method needs a number');\n        }\n\n        if (typeof precision !== 'number' || isNaN(precision)) {\n            precision = 0;\n        }\n\n        if (precision) {\n            let pair = `${value}e`.split('e');\n            const val = func(`${pair[0]}e` + (+pair[1] + precision));\n\n            pair = `${val}e`.split('e');\n            return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n\n        return func(value);\n    };\n}\n\nexport function leftPad(str: string, len: number = 0, ch: any = ' ') {\n    str = String(str);\n    ch = toString(ch);\n    let i = -1;\n    const length = len - str.length;\n\n    while (++i < length && str.length + ch.length <= len) {\n        str = ch + str;\n    }\n\n    return str;\n}\n\nexport function rightPad(str: string, len: number = 0, ch: any = ' ') {\n    str = String(str);\n    ch = toString(ch);\n\n    let i = -1;\n    const length = len - str.length;\n\n    while (++i < length && str.length + ch.length <= len) {\n        str += ch;\n    }\n\n    return str;\n}\n\nexport function toString(value: number | string) {\n    return `${value}`;\n}\n\nexport function pad(str: string, len: number = 0, ch: any = ' '): string {\n    str = String(str);\n    ch = toString(ch);\n    let i = -1;\n    const length = len - str.length;\n\n    let left = true;\n    while (++i < length) {\n        const l = str.length + ch.length <= len ? str.length + ch.length : str.length + 1;\n\n        if (left) {\n            str = leftPad(str, l, ch);\n        } else {\n            str = rightPad(str, l, ch);\n        }\n\n        left = !left;\n    }\n\n    return str;\n}\n\nexport function flatten(input: any[], index: number = 0): any[] {\n    if (index >= input.length) {\n        return input;\n    }\n\n    if (isArray(input[index])) {\n        return flatten(input.slice(0, index).concat(input[index], input.slice(index + 1)), index);\n    }\n\n    return flatten(input, index + 1);\n}\n\nexport function getProperty(value: { [key: string]: any }, key: string): any {\n    if (isNil(value) || !isObject(value)) {\n        return undefined;\n    }\n\n    const keys: string[] = key.split('.');\n    let result: any = value[keys.shift()!];\n\n    for (const key of keys) {\n        if (isNil(result) || !isObject(result)) {\n            return undefined;\n        }\n\n        result = result[key];\n    }\n\n    return result;\n}\n\nexport function sum(input: Array<number>, initial = 0): number {\n    return input.reduce((previous: number, current: number) => previous + current, initial);\n}\n\n// http://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array-in-javascript\nexport function shuffle(input: any): any {\n    if (!isArray(input)) {\n        return input;\n    }\n\n    const copy = [...input];\n\n    for (let i = copy.length; i; --i) {\n        const j = Math.floor(Math.random() * i);\n        const x = copy[i - 1];\n        copy[i - 1] = copy[j];\n        copy[j] = x;\n    }\n\n    return copy;\n}\n\nexport function deepIndexOf(collection: any[], value: any) {\n    let index = -1;\n    const length = collection.length;\n\n    while (++index < length) {\n        if (deepEqual(value, collection[index])) {\n            return index;\n        }\n    }\n\n    return -1;\n}\n\nexport function deepEqual(a: any, b: any) {\n    if (a === b) {\n        return true;\n    }\n\n    if (!(typeof a === 'object' && typeof b === 'object')) {\n        return a === b;\n    }\n\n    const keysA = Object.keys(a);\n    const keysB = Object.keys(b);\n\n    if (keysA.length !== keysB.length) {\n        return false;\n    }\n\n    // Test for A's keys different from B.\n    var hasOwn = Object.prototype.hasOwnProperty;\n    for (let i = 0; i < keysA.length; i++) {\n        const key = keysA[i];\n        if (!hasOwn.call(b, keysA[i]) || !deepEqual(a[key], b[key])) {\n            return false;\n        }\n    }\n\n    return true;\n}\n\nexport function isDeepObject(object: any) {\n    return object.__isDeepObject__;\n}\n\nexport function wrapDeep(object: any) {\n    return new DeepWrapper(object);\n}\n\nexport function unwrapDeep(object: any) {\n    if (isDeepObject(object)) {\n        return object.data;\n    }\n\n    return object;\n}\n\nexport class DeepWrapper {\n    public __isDeepObject__: boolean = true;\n\n    constructor(public data: any) { }\n}\n\nexport function count(input: any): any {\n    if (!isArray(input) && !isObject(input) && !isString(input)) {\n        return input;\n    }\n\n    if (isObject(input)) {\n        return Object.keys(input).map(value => input[value]).length;\n    }\n\n    return input.length;\n}\n\nexport function empty(input: any): any {\n    if (!isArray(input)) {\n        return input;\n    }\n\n    return input.length === 0;\n}\n\nexport function every(input: any, predicate: CollectionPredicate) {\n    if (!isArray(input) || !predicate) {\n        return input;\n    }\n\n    let result = true;\n    let i = -1;\n\n    while (++i < input.length && result) {\n        result = predicate(input[i], i, input);\n    }\n\n    return result;\n}\n\nexport function takeUntil(input: any[], predicate: CollectionPredicate) {\n    let i = -1;\n    const result: any = [];\n    while (++i < input.length && !predicate(input[i], i, input)) {\n        result[i] = input[i];\n    }\n\n    return result;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}