UNPKG

@taiga-ui/cdk

Version:

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

42 lines 6.43 kB
/// <reference types="@taiga-ui/tsconfig/ng-dev-mode" /> const MAX_PRECISION = 292; /** * Rounding number to the set precision * * @param value * @param precision number of digits in a float part * @param func rounding function (round, floor, ceil) */ function calculate(value, precision, func) { if (value === Infinity) { return value; } ngDevMode && console.assert(!Number.isNaN(value), 'Value must be number'); ngDevMode && console.assert(Number.isInteger(precision), 'Precision must be integer'); precision = Math.min(precision, MAX_PRECISION); const [significand, exponent = ''] = `${value}`.split('e'); const roundedInt = func(Number(`${significand}e${Number(exponent) + precision}`)); /** * TODO: use BigInt after bumping Safari to 14+ */ ngDevMode && console.assert(Number.isSafeInteger(roundedInt), 'Impossible to correctly round such a large number'); const processedPair = `${roundedInt}e`.split('e'); return Number(`${processedPair[0]}e${Number(processedPair[1]) - precision}`); } export function tuiRound(value, precision = 0) { return calculate(value, precision, Math.round); } export function tuiCeil(value, precision = 0) { return calculate(value, precision, Math.ceil); } export function tuiFloor(value, precision = 0) { return calculate(value, precision, Math.floor); } export function tuiTrunc(value, precision = 0) { return calculate(value, precision, Math.trunc); } export function tuiIsSafeToRound(value, precision = 0) { return Number.isSafeInteger(Math.trunc(value * 10 ** precision)); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvbWF0aC9yb3VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFFeEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBRTFCOzs7Ozs7R0FNRztBQUNILFNBQVMsU0FBUyxDQUNkLEtBQWEsRUFDYixTQUFpQixFQUNqQixJQUEyQjtJQUUzQixJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDcEIsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFFRCxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUMxRSxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFFdEYsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sQ0FBQyxXQUFXLEVBQUUsUUFBUSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxXQUFXLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVsRjs7T0FFRztJQUNILFNBQVM7UUFDTCxPQUFPLENBQUMsTUFBTSxDQUNWLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQ2hDLG1EQUFtRCxDQUN0RCxDQUFDO0lBRU4sTUFBTSxhQUFhLEdBQUcsR0FBRyxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFbEQsT0FBTyxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDakYsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBYSxFQUFFLFNBQVMsR0FBRyxDQUFDO0lBQ2pELE9BQU8sU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLEtBQWEsRUFBRSxTQUFTLEdBQUcsQ0FBQztJQUNoRCxPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFhLEVBQUUsU0FBUyxHQUFHLENBQUM7SUFDakQsT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBYSxFQUFFLFNBQVMsR0FBRyxDQUFDO0lBQ2pELE9BQU8sU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLFNBQVMsR0FBRyxDQUFDO0lBQ3pELE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAdGFpZ2EtdWkvdHNjb25maWcvbmctZGV2LW1vZGVcIiAvPlxuXG5jb25zdCBNQVhfUFJFQ0lTSU9OID0gMjkyO1xuXG4vKipcbiAqIFJvdW5kaW5nIG51bWJlciB0byB0aGUgc2V0IHByZWNpc2lvblxuICpcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIHByZWNpc2lvbiBudW1iZXIgb2YgZGlnaXRzIGluIGEgZmxvYXQgcGFydFxuICogQHBhcmFtIGZ1bmMgcm91bmRpbmcgZnVuY3Rpb24gKHJvdW5kLCBmbG9vciwgY2VpbClcbiAqL1xuZnVuY3Rpb24gY2FsY3VsYXRlKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgcHJlY2lzaW9uOiBudW1iZXIsXG4gICAgZnVuYzogKHg6IG51bWJlcikgPT4gbnVtYmVyLFxuKTogbnVtYmVyIHtcbiAgICBpZiAodmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBuZ0Rldk1vZGUgJiYgY29uc29sZS5hc3NlcnQoIU51bWJlci5pc05hTih2YWx1ZSksICdWYWx1ZSBtdXN0IGJlIG51bWJlcicpO1xuICAgIG5nRGV2TW9kZSAmJiBjb25zb2xlLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKHByZWNpc2lvbiksICdQcmVjaXNpb24gbXVzdCBiZSBpbnRlZ2VyJyk7XG5cbiAgICBwcmVjaXNpb24gPSBNYXRoLm1pbihwcmVjaXNpb24sIE1BWF9QUkVDSVNJT04pO1xuXG4gICAgY29uc3QgW3NpZ25pZmljYW5kLCBleHBvbmVudCA9ICcnXSA9IGAke3ZhbHVlfWAuc3BsaXQoJ2UnKTtcbiAgICBjb25zdCByb3VuZGVkSW50ID0gZnVuYyhOdW1iZXIoYCR7c2lnbmlmaWNhbmR9ZSR7TnVtYmVyKGV4cG9uZW50KSArIHByZWNpc2lvbn1gKSk7XG5cbiAgICAvKipcbiAgICAgKiBUT0RPOiB1c2UgQmlnSW50IGFmdGVyIGJ1bXBpbmcgU2FmYXJpIHRvIDE0K1xuICAgICAqL1xuICAgIG5nRGV2TW9kZSAmJlxuICAgICAgICBjb25zb2xlLmFzc2VydChcbiAgICAgICAgICAgIE51bWJlci5pc1NhZmVJbnRlZ2VyKHJvdW5kZWRJbnQpLFxuICAgICAgICAgICAgJ0ltcG9zc2libGUgdG8gY29ycmVjdGx5IHJvdW5kIHN1Y2ggYSBsYXJnZSBudW1iZXInLFxuICAgICAgICApO1xuXG4gICAgY29uc3QgcHJvY2Vzc2VkUGFpciA9IGAke3JvdW5kZWRJbnR9ZWAuc3BsaXQoJ2UnKTtcblxuICAgIHJldHVybiBOdW1iZXIoYCR7cHJvY2Vzc2VkUGFpclswXX1lJHtOdW1iZXIocHJvY2Vzc2VkUGFpclsxXSkgLSBwcmVjaXNpb259YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlSb3VuZCh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb24gPSAwKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlKHZhbHVlLCBwcmVjaXNpb24sIE1hdGgucm91bmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpQ2VpbCh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb24gPSAwKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlKHZhbHVlLCBwcmVjaXNpb24sIE1hdGguY2VpbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlGbG9vcih2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb24gPSAwKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlKHZhbHVlLCBwcmVjaXNpb24sIE1hdGguZmxvb3IpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpVHJ1bmModmFsdWU6IG51bWJlciwgcHJlY2lzaW9uID0gMCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZSh2YWx1ZSwgcHJlY2lzaW9uLCBNYXRoLnRydW5jKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUlzU2FmZVRvUm91bmQodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uID0gMCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBOdW1iZXIuaXNTYWZlSW50ZWdlcihNYXRoLnRydW5jKHZhbHVlICogMTAgKiogcHJlY2lzaW9uKSk7XG59XG4iXX0=