| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- import {List} from 'immutable';
- import {Value} from './index';
- /**
- * Sass's [number type](https://sass-lang.com/documentation/values/numbers).
- *
- * @category Custom Function
- */
- export class SassNumber extends Value {
- /**
- * Creates a new number with more complex units than just a single numerator.
- *
- * Upon construction, any compatible numerator and denominator units are
- * simplified away according to the conversion factor between them.
- *
- * @param value - The number's numeric value.
- *
- * @param unit - If this is a string, it's used as the single numerator unit
- * for the number.
- *
- * @param unit.numeratorUnits - If passed, these are the numerator units to
- * use for the number. This may be either a plain JavaScript array or an
- * immutable {@link List} from the [`immutable`
- * package](https://immutable-js.com/).
- *
- * @param unit.denominatorUnits - If passed, these are the denominator units
- * to use for the number. This may be either a plain JavaScript array or an
- * immutable {@link List} from the [`immutable`
- * package](https://immutable-js.com/).
- */
- constructor(
- value: number,
- unit?:
- | string
- | {
- numeratorUnits?: string[] | List<string>;
- denominatorUnits?: string[] | List<string>;
- }
- );
- /** This number's numeric value. */
- get value(): number;
- /** Whether {@link value} is an integer according to Sass's equality logic. */
- get isInt(): boolean;
- /**
- * If {@link value} is an integer according to {@link isInt}, returns {@link
- * value} rounded to that integer. If it's not an integer, returns `null`.
- */
- get asInt(): number | null;
- /**
- * This number's numerator units as an immutable {@link List} from the
- * [`immutable` package](https://immutable-js.com/).
- */
- get numeratorUnits(): List<string>;
- /**
- * This number's denominator units as an immutable {@link List} from the
- * [`immutable` package](https://immutable-js.com/).
- */
- get denominatorUnits(): List<string>;
- /** Whether this number has any numerator or denominator units. */
- get hasUnits(): boolean;
- /**
- * If {@link value} is an integer according to {@link isInt}, returns it
- * rounded to that integer. Otherwise, throws an error.
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- */
- assertInt(name?: string): number;
- /**
- * Returns {@link value} if it's within `min` and `max`. If {@link value} is
- * equal to `min` or `max` according to Sass's equality, returns `min` or
- * `max` respectively. Otherwise, throws an error.
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- */
- assertInRange(min: number, max: number, name?: string): number;
- /**
- * If this number has no units, returns it. Otherwise, throws an error.
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- */
- assertNoUnits(name?: string): SassNumber;
- /**
- * If this number has `unit` as its only unit (and as a numerator), returns
- * this number. Otherwise, throws an error.
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- */
- assertUnit(unit: string, name?: string): SassNumber;
- /** Whether this number has `unit` as its only unit (and as a numerator). */
- hasUnit(unit: string): boolean;
- /**
- * Whether this has exactly one numerator unit, and that unit is compatible
- * with `unit`.
- */
- compatibleWithUnit(unit: string): boolean;
- /**
- * Returns a copy of this number, converted to the units represented by
- * `newNumerators` and `newDenominators`.
- *
- * @throws `Error` if this number's units are incompatible with
- * `newNumerators` and `newDenominators`; or if this number is unitless and
- * either `newNumerators` or `newDenominators` are not empty, or vice-versa.
- *
- * @param newNumerators - The numerator units to convert this number to. This
- * may be either a plain JavaScript array or an immutable {@link List} from
- * the [`immutable` package](https://immutable-js.com/).
- *
- * @param newDenominators - The denominator units to convert this number to.
- * This may be either a plain JavaScript array or an immutable {@link List}
- * from the [`immutable` package](https://immutable-js.com/).
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- */
- convert(
- newNumerators: string[] | List<string>,
- newDenominators: string[] | List<string>,
- name?: string
- ): SassNumber;
- /**
- * Returns a copy of this number, converted to the same units as `other`.
- *
- * @throws `Error` if this number's units are incompatible with `other`'s
- * units, or if either number is unitless but the other is not.
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- *
- * @param otherName - The name of the function argument `other` came from
- * (without the `$`) if it came from an argument. Used for error reporting.
- */
- convertToMatch(
- other: SassNumber,
- name?: string,
- otherName?: string
- ): SassNumber;
- /**
- * Returns {@link value}, converted to the units represented by
- * `newNumerators` and `newDenominators`.
- *
- * @throws `Error` if this number's units are incompatible with
- * `newNumerators` and `newDenominators`; or if this number is unitless and
- * either `newNumerators` or `newDenominators` are not empty, or vice-versa.
- *
- * @param newNumerators - The numerator units to convert {@link value} to.
- * This may be either a plain JavaScript array or an immutable {@link List}
- * from the [`immutable` package](https://immutable-js.com/).
- *
- * @param newDenominators - The denominator units to convert {@link value} to.
- * This may be either a plain JavaScript array or an immutable {@link List}
- * from the [`immutable` package](https://immutable-js.com/).
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- */
- convertValue(
- newNumerators: string[] | List<string>,
- newDenominators: string[] | List<string>,
- name?: string
- ): number;
- /**
- * Returns {@link value}, converted to the same units as `other`.
- *
- * @throws `Error` if this number's units are incompatible with `other`'s
- * units, or if either number is unitless but the other is not.
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- *
- * @param otherName - The name of the function argument `other` came from
- * (without the `$`) if it came from an argument. Used for error reporting.
- */
- convertValueToMatch(
- other: SassNumber,
- name?: string,
- otherName?: string
- ): number;
- /**
- * Returns a copy of this number, converted to the units represented by
- * `newNumerators` and `newDenominators`.
- *
- * Unlike {@link convert} this does *not* throw an error if this number is
- * unitless and either `newNumerators` or `newDenominators` are not empty, or
- * vice-versa. Instead, it treats all unitless numbers as convertible to and
- * from all units without changing the value.
- *
- * @throws `Error` if this number's units are incompatible with
- * `newNumerators` and `newDenominators`.
- *
- * @param newNumerators - The numerator units to convert this number to. This
- * may be either a plain JavaScript array or an immutable {@link List} from
- * the [`immutable` package](https://immutable-js.com/).
- *
- * @param newDenominators - The denominator units to convert this number to.
- * This may be either a plain JavaScript array or an immutable {@link List}
- * from the [`immutable` package](https://immutable-js.com/).
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- */
- coerce(
- newNumerators: string[] | List<string>,
- newDenominators: string[] | List<string>,
- name?: string
- ): SassNumber;
- /**
- * Returns a copy of this number, converted to the units represented by
- * `newNumerators` and `newDenominators`.
- *
- * Unlike {@link convertToMatch} this does *not* throw an error if this number
- * is unitless and either `newNumerators` or `newDenominators` are not empty,
- * or vice-versa. Instead, it treats all unitless numbers as convertible to
- * and from all units without changing the value.
- *
- * @throws `Error` if this number's units are incompatible with `other`'s
- * units.
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- *
- * @param otherName - The name of the function argument `other` came from
- * (without the `$`) if it came from an argument. Used for error reporting.
- */
- coerceToMatch(
- other: SassNumber,
- name?: string,
- otherName?: string
- ): SassNumber;
- /**
- * Returns {@link value}, converted to the units represented by
- * `newNumerators` and `newDenominators`.
- *
- * Unlike {@link convertValue} this does *not* throw an error if this number
- * is unitless and either `newNumerators` or `newDenominators` are not empty,
- * or vice-versa. Instead, it treats all unitless numbers as convertible to
- * and from all units without changing the value.
- *
- * @throws `Error` if this number's units are incompatible with
- * `newNumerators` and `newDenominators`.
- *
- * @param newNumerators - The numerator units to convert {@link value} to.
- * This may be either a plain JavaScript array or an immutable {@link List}
- * from the [`immutable` package](https://immutable-js.com/).
- *
- * @param newDenominators - The denominator units to convert {@link value} to.
- * This may be either a plain JavaScript array or an immutable {@link List}
- * from the [`immutable` package](https://immutable-js.com/).
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- */
- coerceValue(
- newNumerators: string[] | List<string>,
- newDenominators: string[] | List<string>,
- name?: string
- ): number;
- /**
- * Returns {@link value}, converted to the units represented by
- * `newNumerators` and `newDenominators`.
- *
- * Unlike {@link convertValueToMatch} this does *not* throw an error if this
- * number is unitless and either `newNumerators` or `newDenominators` are not
- * empty, or vice-versa. Instead, it treats all unitless numbers as
- * convertible to and from all units without changing the value.
- *
- * @throws `Error` if this number's units are incompatible with `other`'s
- * units.
- *
- * @param name - The name of the function argument `this` came from (without
- * the `$`) if it came from an argument. Used for error reporting.
- *
- * @param otherName - The name of the function argument `other` came from
- * (without the `$`) if it came from an argument. Used for error reporting.
- */
- coerceValueToMatch(
- other: SassNumber,
- name?: string,
- otherName?: string
- ): number;
- }
|