{"version":3,"file":"taiga-ui-legacy.mjs","sources":["../../../projects/legacy/pure.ts","../../../projects/legacy/taiga-ui-legacy.ts"],"sourcesContent":["function decorateMethod(\n    originalMethod: (...args: unknown[]) => unknown,\n): (this: object, ...args: unknown[]) => unknown {\n    let previousArgs: readonly unknown[] = [];\n    let originalFnWasCalledLeastAtOnce = false;\n    let pureValue: unknown;\n\n    return function tuiPureMethodPatched(this: object, ...args: unknown[]): unknown {\n        const isPure =\n            originalFnWasCalledLeastAtOnce &&\n            previousArgs.length === args.length &&\n            args.every((arg, index) => arg === previousArgs[index]);\n\n        if (isPure) {\n            return pureValue;\n        }\n\n        previousArgs = args;\n        pureValue = originalMethod.apply(this, args);\n        originalFnWasCalledLeastAtOnce = true;\n\n        return pureValue;\n    };\n}\n\nfunction decorateGetter(\n    originalGetter: () => unknown,\n    propertyKey: string | symbol,\n    enumerable = true,\n): (this: object) => unknown {\n    return function tuiPureGetterPatched(this: object): unknown {\n        const value = originalGetter.call(this);\n\n        Object.defineProperty(this, propertyKey, {enumerable, value});\n\n        return value;\n    };\n}\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * @throws error if used not on getter or function\n *\n * CAUTION: they must be pure.\n * @deprecated use computed instead\n */\nexport function tuiPure<T>(\n    target: object,\n    propertyKey: string,\n    {get, enumerable, value}: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T>;\n\n/**\n * Implements lazy initialization for getter or memoization of a function call similar to pure {@link: Pipe}.\n * Replaces getter with its calculated value upon first call or keeps track of last call arguments and returned\n * value for function, skipping calculation when arguments are strictly the same.\n *\n * CAUTION: they must be pure.\n * @deprecated use computed instead\n */\nexport function tuiPure<A extends unknown[], R>(\n    target: (...args: A) => R,\n    context: ClassGetterDecoratorContext | ClassMethodDecoratorContext,\n): (...args: A) => R;\n\nexport function tuiPure(\n    target: object | ((...args: unknown[]) => unknown),\n    propertyKeyOrContext:\n        | ClassGetterDecoratorContext\n        | ClassMethodDecoratorContext\n        | string,\n    descriptor?: TypedPropertyDescriptor<(...args: unknown[]) => unknown>,\n): TypedPropertyDescriptor<unknown> | ((...args: unknown[]) => unknown) {\n    if (typeof target === 'function') {\n        const context = propertyKeyOrContext as\n            | ClassGetterDecoratorContext\n            | ClassMethodDecoratorContext;\n\n        if (context.kind === 'getter') {\n            return decorateGetter(target as () => unknown, context.name);\n        }\n\n        if (context.kind === 'method') {\n            return decorateMethod(target as (...args: unknown[]) => unknown);\n        }\n\n        throw new TuiPureException();\n    }\n\n    // TODO(v5): drop compatibility for legacy \"experimentalDecorators\": true\n    const {get, enumerable, value} = descriptor!;\n    const propertyKey = propertyKeyOrContext as string;\n\n    if (get) {\n        return {\n            configurable: true,\n            enumerable,\n            get: decorateGetter(get, propertyKey, enumerable),\n        };\n    }\n\n    if (typeof value !== 'function') {\n        throw new TuiPureException();\n    }\n\n    const original = value;\n\n    return {\n        configurable: true,\n        enumerable,\n        get(): unknown {\n            let previousArgs: readonly unknown[] = [];\n            let originalFnWasCalledLeastAtOnce = false;\n            let pureValue: unknown;\n\n            const patched = (...args: unknown[]): unknown => {\n                const isPure =\n                    originalFnWasCalledLeastAtOnce &&\n                    previousArgs.length === args.length &&\n                    args.every((arg, index) => arg === previousArgs[index]);\n\n                if (isPure) {\n                    return pureValue;\n                }\n\n                previousArgs = args;\n                pureValue = original.apply(this, args);\n                originalFnWasCalledLeastAtOnce = true;\n\n                return pureValue;\n            };\n\n            Object.defineProperty(this, propertyKey, {\n                configurable: true,\n                value: patched,\n            });\n\n            return patched;\n        },\n    };\n}\n\nexport class TuiPureException extends Error {\n    constructor() {\n        super(ngDevMode ? 'tuiPure can only be used with functions or getters' : '');\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}