UNPKG

@taiga-ui/cdk

Version:

Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance

82 lines 12.5 kB
/// <reference types="@taiga-ui/tsconfig/ng-dev-mode" /> function decorateMethod(originalMethod) { let previousArgs = []; let originalFnWasCalledLeastAtOnce = false; let pureValue; return function tuiPureMethodPatched(...args) { const isPure = originalFnWasCalledLeastAtOnce && previousArgs.length === args.length && args.every((arg, index) => arg === previousArgs[index]); if (isPure) { return pureValue; } previousArgs = args; pureValue = originalMethod.apply(this, args); originalFnWasCalledLeastAtOnce = true; return pureValue; }; } function decorateGetter(originalGetter, propertyKey, enumerable = true) { return function tuiPureGetterPatched() { const value = originalGetter.call(this); Object.defineProperty(this, propertyKey, { enumerable, value }); return value; }; } export function tuiPure(target, propertyKeyOrContext, descriptor) { if (typeof target === 'function') { const context = propertyKeyOrContext; if (context.kind === 'getter') { return decorateGetter(target, context.name); } if (context.kind === 'method') { return decorateMethod(target); } throw new TuiPureException(); } const { get, enumerable, value } = descriptor; const propertyKey = propertyKeyOrContext; if (get) { return { configurable: true, enumerable, get: decorateGetter(get, propertyKey, enumerable), }; } if (typeof value !== 'function') { throw new TuiPureException(); } const original = value; return { configurable: true, enumerable, get() { let previousArgs = []; let originalFnWasCalledLeastAtOnce = false; let pureValue; const patched = (...args) => { const isPure = originalFnWasCalledLeastAtOnce && previousArgs.length === args.length && args.every((arg, index) => arg === previousArgs[index]); if (isPure) { return pureValue; } previousArgs = args; pureValue = original.apply(this, args); originalFnWasCalledLeastAtOnce = true; return pureValue; }; Object.defineProperty(this, propertyKey, { configurable: true, value: patched, }); return patched; }, }; } export class TuiPureException extends Error { constructor() { super(ngDevMode ? 'tuiPure can only be used with functions or getters' : ''); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay91dGlscy9taXNjZWxsYW5lb3VzL3B1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBRXhELFNBQVMsY0FBYyxDQUNuQixjQUErQztJQUUvQyxJQUFJLFlBQVksR0FBdUIsRUFBRSxDQUFDO0lBQzFDLElBQUksOEJBQThCLEdBQUcsS0FBSyxDQUFDO0lBQzNDLElBQUksU0FBa0IsQ0FBQztJQUV2QixPQUFPLFNBQVMsb0JBQW9CLENBQWUsR0FBRyxJQUFlO1FBQ2pFLE1BQU0sTUFBTSxHQUNSLDhCQUE4QjtZQUM5QixZQUFZLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO1lBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFNUQsSUFBSSxNQUFNLEVBQUU7WUFDUixPQUFPLFNBQVMsQ0FBQztTQUNwQjtRQUVELFlBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsU0FBUyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLDhCQUE4QixHQUFHLElBQUksQ0FBQztRQUV0QyxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQ25CLGNBQTZCLEVBQzdCLFdBQTRCLEVBQzVCLFVBQVUsR0FBRyxJQUFJO0lBRWpCLE9BQU8sU0FBUyxvQkFBb0I7UUFDaEMsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4QyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUU5RCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUM7QUFDTixDQUFDO0FBNkJELE1BQU0sVUFBVSxPQUFPLENBQ25CLE1BQWtELEVBQ2xELG9CQUdZLEVBQ1osVUFBcUU7SUFFckUsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7UUFDOUIsTUFBTSxPQUFPLEdBQUcsb0JBRWlCLENBQUM7UUFFbEMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUMzQixPQUFPLGNBQWMsQ0FBQyxNQUF1QixFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoRTtRQUVELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDM0IsT0FBTyxjQUFjLENBQUMsTUFBeUMsQ0FBQyxDQUFDO1NBQ3BFO1FBRUQsTUFBTSxJQUFJLGdCQUFnQixFQUFFLENBQUM7S0FDaEM7SUFFRCxNQUFNLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUMsR0FBRyxVQUFXLENBQUM7SUFDN0MsTUFBTSxXQUFXLEdBQUcsb0JBQThCLENBQUM7SUFFbkQsSUFBSSxHQUFHLEVBQUU7UUFDTCxPQUFPO1lBQ0gsWUFBWSxFQUFFLElBQUk7WUFDbEIsVUFBVTtZQUNWLEdBQUcsRUFBRSxjQUFjLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUM7U0FDcEQsQ0FBQztLQUNMO0lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7UUFDN0IsTUFBTSxJQUFJLGdCQUFnQixFQUFFLENBQUM7S0FDaEM7SUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFdkIsT0FBTztRQUNILFlBQVksRUFBRSxJQUFJO1FBQ2xCLFVBQVU7UUFDVixHQUFHO1lBQ0MsSUFBSSxZQUFZLEdBQXVCLEVBQUUsQ0FBQztZQUMxQyxJQUFJLDhCQUE4QixHQUFHLEtBQUssQ0FBQztZQUMzQyxJQUFJLFNBQWtCLENBQUM7WUFFdkIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLElBQWUsRUFBVyxFQUFFO2dCQUM1QyxNQUFNLE1BQU0sR0FDUiw4QkFBOEI7b0JBQzlCLFlBQVksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU07b0JBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBRTVELElBQUksTUFBTSxFQUFFO29CQUNSLE9BQU8sU0FBUyxDQUFDO2lCQUNwQjtnQkFFRCxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZDLDhCQUE4QixHQUFHLElBQUksQ0FBQztnQkFFdEMsT0FBTyxTQUFTLENBQUM7WUFDckIsQ0FBQyxDQUFDO1lBRUYsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNyQyxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFFLE9BQU87YUFDakIsQ0FBQyxDQUFDO1lBRUgsT0FBTyxPQUFrQixDQUFDO1FBQzlCLENBQUM7S0FDSixDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxLQUFLO0lBQ3ZDO1FBQ0ksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsb0RBQW9ELENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiQHRhaWdhLXVpL3RzY29uZmlnL25nLWRldi1tb2RlXCIgLz5cblxuZnVuY3Rpb24gZGVjb3JhdGVNZXRob2QoXG4gICAgb3JpZ2luYWxNZXRob2Q6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24sXG4pOiAodGhpczogb2JqZWN0LCAuLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24ge1xuICAgIGxldCBwcmV2aW91c0FyZ3M6IHJlYWRvbmx5IHVua25vd25bXSA9IFtdO1xuICAgIGxldCBvcmlnaW5hbEZuV2FzQ2FsbGVkTGVhc3RBdE9uY2UgPSBmYWxzZTtcbiAgICBsZXQgcHVyZVZhbHVlOiB1bmtub3duO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHR1aVB1cmVNZXRob2RQYXRjaGVkKHRoaXM6IG9iamVjdCwgLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93biB7XG4gICAgICAgIGNvbnN0IGlzUHVyZSA9XG4gICAgICAgICAgICBvcmlnaW5hbEZuV2FzQ2FsbGVkTGVhc3RBdE9uY2UgJiZcbiAgICAgICAgICAgIHByZXZpb3VzQXJncy5sZW5ndGggPT09IGFyZ3MubGVuZ3RoICYmXG4gICAgICAgICAgICBhcmdzLmV2ZXJ5KChhcmcsIGluZGV4KSA9PiBhcmcgPT09IHByZXZpb3VzQXJnc1tpbmRleF0pO1xuXG4gICAgICAgIGlmIChpc1B1cmUpIHtcbiAgICAgICAgICAgIHJldHVybiBwdXJlVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2aW91c0FyZ3MgPSBhcmdzO1xuICAgICAgICBwdXJlVmFsdWUgPSBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgb3JpZ2luYWxGbldhc0NhbGxlZExlYXN0QXRPbmNlID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gcHVyZVZhbHVlO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGRlY29yYXRlR2V0dGVyKFxuICAgIG9yaWdpbmFsR2V0dGVyOiAoKSA9PiB1bmtub3duLFxuICAgIHByb3BlcnR5S2V5OiBzdHJpbmcgfCBzeW1ib2wsXG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4pOiAodGhpczogb2JqZWN0KSA9PiB1bmtub3duIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gdHVpUHVyZUdldHRlclBhdGNoZWQodGhpczogb2JqZWN0KTogdW5rbm93biB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gb3JpZ2luYWxHZXR0ZXIuY2FsbCh0aGlzKTtcblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcGVydHlLZXksIHtlbnVtZXJhYmxlLCB2YWx1ZX0pO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xufVxuXG4vKipcbiAqIEltcGxlbWVudHMgbGF6eSBpbml0aWFsaXphdGlvbiBmb3IgZ2V0dGVyIG9yIG1lbW9pemF0aW9uIG9mIGEgZnVuY3Rpb24gY2FsbCBzaW1pbGFyIHRvIHB1cmUge0BsaW5rOiBQaXBlfS5cbiAqIFJlcGxhY2VzIGdldHRlciB3aXRoIGl0cyBjYWxjdWxhdGVkIHZhbHVlIHVwb24gZmlyc3QgY2FsbCBvciBrZWVwcyB0cmFjayBvZiBsYXN0IGNhbGwgYXJndW1lbnRzIGFuZCByZXR1cm5lZFxuICogdmFsdWUgZm9yIGZ1bmN0aW9uLCBza2lwcGluZyBjYWxjdWxhdGlvbiB3aGVuIGFyZ3VtZW50cyBhcmUgc3RyaWN0bHkgdGhlIHNhbWUuXG4gKlxuICogQHRocm93cyBlcnJvciBpZiB1c2VkIG5vdCBvbiBnZXR0ZXIgb3IgZnVuY3Rpb25cbiAqXG4gKiBDQVVUSU9OOiB0aGV5IG11c3QgYmUgcHVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHR1aVB1cmU8VD4oXG4gICAgdGFyZ2V0OiBvYmplY3QsXG4gICAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgICB7Z2V0LCBlbnVtZXJhYmxlLCB2YWx1ZX06IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPFQ+LFxuKTogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8VD47XG5cbi8qKlxuICogSW1wbGVtZW50cyBsYXp5IGluaXRpYWxpemF0aW9uIGZvciBnZXR0ZXIgb3IgbWVtb2l6YXRpb24gb2YgYSBmdW5jdGlvbiBjYWxsIHNpbWlsYXIgdG8gcHVyZSB7QGxpbms6IFBpcGV9LlxuICogUmVwbGFjZXMgZ2V0dGVyIHdpdGggaXRzIGNhbGN1bGF0ZWQgdmFsdWUgdXBvbiBmaXJzdCBjYWxsIG9yIGtlZXBzIHRyYWNrIG9mIGxhc3QgY2FsbCBhcmd1bWVudHMgYW5kIHJldHVybmVkXG4gKiB2YWx1ZSBmb3IgZnVuY3Rpb24sIHNraXBwaW5nIGNhbGN1bGF0aW9uIHdoZW4gYXJndW1lbnRzIGFyZSBzdHJpY3RseSB0aGUgc2FtZS5cbiAqXG4gKiBDQVVUSU9OOiB0aGV5IG11c3QgYmUgcHVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHR1aVB1cmU8QSBleHRlbmRzIHVua25vd25bXSwgUj4oXG4gICAgdGFyZ2V0OiAoLi4uYXJnczogQSkgPT4gUixcbiAgICBjb250ZXh0OiBDbGFzc0dldHRlckRlY29yYXRvckNvbnRleHQgfCBDbGFzc01ldGhvZERlY29yYXRvckNvbnRleHQsXG4pOiAoLi4uYXJnczogQSkgPT4gUjtcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aVB1cmUoXG4gICAgdGFyZ2V0OiBvYmplY3QgfCAoKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93biksXG4gICAgcHJvcGVydHlLZXlPckNvbnRleHQ6XG4gICAgICAgIHwgQ2xhc3NHZXR0ZXJEZWNvcmF0b3JDb250ZXh0XG4gICAgICAgIHwgQ2xhc3NNZXRob2REZWNvcmF0b3JDb250ZXh0XG4gICAgICAgIHwgc3RyaW5nLFxuICAgIGRlc2NyaXB0b3I/OiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjwoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duPixcbik6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPHVua25vd24+IHwgKCguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24pIHtcbiAgICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gcHJvcGVydHlLZXlPckNvbnRleHQgYXNcbiAgICAgICAgICAgIHwgQ2xhc3NHZXR0ZXJEZWNvcmF0b3JDb250ZXh0XG4gICAgICAgICAgICB8IENsYXNzTWV0aG9kRGVjb3JhdG9yQ29udGV4dDtcblxuICAgICAgICBpZiAoY29udGV4dC5raW5kID09PSAnZ2V0dGVyJykge1xuICAgICAgICAgICAgcmV0dXJuIGRlY29yYXRlR2V0dGVyKHRhcmdldCBhcyAoKSA9PiB1bmtub3duLCBjb250ZXh0Lm5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQua2luZCA9PT0gJ21ldGhvZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvcmF0ZU1ldGhvZCh0YXJnZXQgYXMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bik7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgVHVpUHVyZUV4Y2VwdGlvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IHtnZXQsIGVudW1lcmFibGUsIHZhbHVlfSA9IGRlc2NyaXB0b3IhO1xuICAgIGNvbnN0IHByb3BlcnR5S2V5ID0gcHJvcGVydHlLZXlPckNvbnRleHQgYXMgc3RyaW5nO1xuXG4gICAgaWYgKGdldCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZW51bWVyYWJsZSxcbiAgICAgICAgICAgIGdldDogZGVjb3JhdGVHZXR0ZXIoZ2V0LCBwcm9wZXJ0eUtleSwgZW51bWVyYWJsZSksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHVpUHVyZUV4Y2VwdGlvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsID0gdmFsdWU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGUsXG4gICAgICAgIGdldCgpOiB1bmtub3duIHtcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0FyZ3M6IHJlYWRvbmx5IHVua25vd25bXSA9IFtdO1xuICAgICAgICAgICAgbGV0IG9yaWdpbmFsRm5XYXNDYWxsZWRMZWFzdEF0T25jZSA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IHB1cmVWYWx1ZTogdW5rbm93bjtcblxuICAgICAgICAgICAgY29uc3QgcGF0Y2hlZCA9ICguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1B1cmUgPVxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEZuV2FzQ2FsbGVkTGVhc3RBdE9uY2UgJiZcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNBcmdzLmxlbmd0aCA9PT0gYXJncy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgYXJncy5ldmVyeSgoYXJnLCBpbmRleCkgPT4gYXJnID09PSBwcmV2aW91c0FyZ3NbaW5kZXhdKTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1B1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1cmVWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcmV2aW91c0FyZ3MgPSBhcmdzO1xuICAgICAgICAgICAgICAgIHB1cmVWYWx1ZSA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRm5XYXNDYWxsZWRMZWFzdEF0T25jZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHVyZVZhbHVlO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHByb3BlcnR5S2V5LCB7XG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBwYXRjaGVkLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBwYXRjaGVkIGFzIHVua25vd247XG4gICAgICAgIH0sXG4gICAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIFR1aVB1cmVFeGNlcHRpb24gZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKG5nRGV2TW9kZSA/ICd0dWlQdXJlIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBmdW5jdGlvbnMgb3IgZ2V0dGVycycgOiAnJyk7XG4gICAgfVxufVxuIl19