Hierarchy
Properties
Methods
Multiplies the point with the matrix to apply the transformation. Transforming a "point" means also applying any translation from the matrix.
| x'| | a c e | | x | | y'| = | b d f | * | y | | 1 | | 0 0 1 | | 1 |
Parameters
__namedParameters[number, number]Returns
[number, number]
Multiplies the vector with the matrix to apply the transformation. Transforming a "vector" does ignore the translation of the matrix.
| x'| | a c e | | x | | y'| = | b d f | * | y | | 0 | | 0 0 1 | | 0 |
Parameters
__namedParameters[number, number]Returns
[number, number]
Returns the record's
[key, value]pairs, in the order its fields were defined.Returns
IterableIterator<[string, unknown]>An iterator over the record's fields.
Calculates the inverse matrix. This requires the determinant to be != 0, which is always granted since the matrix can only hold affine transformations (all affine transformations are easily invertible).
We exploit the fact that the matrix is affine to speed things up.
Returns
Rotates the matrix by
degdegrees in the xy-plane clockwise about the origin of the Cartesian coordinate system.Parameters
degCWnumberReturns
Rotates the matrix by
radradian in the xy-plane clockwise about the origin of the Cartesian coordinate system.Parameters
anumberReturns
Applies a scaling to the matrix. If only sx is set and sy is undefined, we will scale x and y by sx.
A scale of
1does not modify a dimension.| sx 0 0 |M' = M * | 0 sy 0 | | 0 0 1 |
Parameters
sxnumbersynumberOptionalReturns
Returns the matrix's values as a CSS transform string.
Returns
string
- transform(
a2: number,
b2: number,
c2: number,
d2: number,
e2: number,
f2: number,
): TransformationMatrixMultiplies current matrix values with a new transformation matrix.
The transformation will be applied on the left side of the multiplication, so that they are applied in the order
transform()is called.| a' c' e' | | a2 c2 e2 | | a c e | | b' d' f' | = | b2 d2 f2 | * | b d f | | 0 0 1 | | 0 0 1 | | 0 0 1 |
Parameters
a2numberb2numberc2numberd2numbere2numberf2numberReturns
Applies a translation to the matrix
| 1 0 tx |M' = M * | 0 1 ty | | 0 0 1 |
Parameters
__namedParameters{ x: number; y: number }Returns
Parameters
txnumberReturns
Parameters
tynumberReturns
Immutable Record API
27
Iterates the record's
[key, value]pairs, in the order its fields were defined.Returns
IterableIterator<[string, unknown]>
Returns a record with every key reset to the default it was defined with.
Returns
thisA new record holding only default values.
delete<K extends keyof { … }>(
key: K & ("a" | "b" | "c" | "d" | "e" | "f"),
): thisReturns a record with
keyreset to the default it was defined with.Type Parameters
Kextends keyof { … }
Parameters
keyK & ("a" | "b" | "c" | "d" | "e" | "f")One of the keys this record was defined with.
Returns
thisA new record, or this one when the value already equals the default.
Returns a record with the value at
keyPathremoved. A field of this record is reset to its default; a key of a nested collection or plain object is deleted.Parameters
keyPathIterable<unknown>The keys to follow, outermost first.
Returns
thisA new record, or this one when nothing was removed.
equals
Reports whether
otheris a record holding the same keys with equal values, whatever its class.Parameters
otherunknownThe value to compare against.
Returns
booleantruewhen both hold the same keys and every value matches.Deprecated
Records of different classes with identical values compare equal. Use
isEqual(), which also requires both records to be of the same class.
Returns the value at
keyPath, walking nested records and collections.A literal key path is checked against the record's fields and gives the value's type; a computed one gives
unknown.Parameters
keyPathIterable<unknown>The keys to follow, outermost first.
Returns
unknownThe value at that path, or
undefinedwhen it does not resolve.Returns the value at
keyPath, walking nested records and collections.A literal key path is checked against the record's fields and gives the value's type; a computed one gives
unknown.
Reports whether
keyis one of the keys this record was defined with.A literal key must name a field; a key typed as
stringis narrowed to the field names.Parameters
keystringThe key to look for.
Returns
key is "a" | "b" | "c" | "d" | "e" | "f"truewhen the record defines that key, even if its value isnull.
Computes a hash of this record from its contents, the same way Immutable.js does. Equal records have equal hashes; records with equal hashes are not necessarily equal. Plain objects, functions and symbols hash by identity, so a hash is only meaningful within the page that computed it.
Returns
numberAn integer hash.
Reports whether
keyPathresolves, walking nested records and collections.Parameters
keyPathIterable<unknown>The keys to follow, outermost first.
Returns
booleantruewhen every key along the path is present.
Reports whether
otheris a record of the same class holding equal values. Only the two records' own classes are compared; nested records compare asequals()does.Parameters
otherunknownThe value to compare against.
Returns
booleantruewhen both are the same class and every value matches.
Returns a record with the entries of each collection applied in order.
Keys the record was not defined with are ignored.
Returns a record with the entries of each collection merged in, recursing into nested collections and plain objects instead of replacing them.
Keys the record was not defined with are ignored.
Returns a record with each collection merged deeply into the value at
keyPath.Parameters
keyPathIterable<unknown>The keys to follow, outermost first.
...collectionsunknown[]Collections or plain objects to merge into the value there.
Returns
thisA new record, or this one when the value is unchanged.
mergeDeepWith(
merger: (previous: unknown, next: unknown, key: unknown) => unknown,
...collections: (Partial<{ … }> | Iterable<readonly [string, unknown]>)[],
): thisReturns a record with the entries of each collection merged in deeply, calling
mergerwhere a nested value is not a collection to decide the value that is kept.Keys the record was not defined with are ignored.
Parameters
Returns
thisA new record, or this one when no value changed.
Returns a record with each collection merged into the value at
keyPath, one level at a time.Parameters
keyPathIterable<unknown>The keys to follow, outermost first.
...collectionsunknown[]Collections or plain objects to merge into the value there.
Returns
thisA new record, or this one when the value is unchanged.
mergeWith(
merger: <K extends string | number | symbol>(
previous: { … }[K],
next: { … }[K],
key: K,
) => { … }[K],
...collections: (Partial<{ … }> | Iterable<readonly [string, unknown]>)[],
): thisReturns a record with the entries of each collection merged in, calling
mergerfor each key the record already holds to decide the value that is kept.Keys the record was not defined with are ignored.
Parameters
Returns
thisA new record, or this one when no value changed.
remove<K extends keyof { … }>(
key: K & ("a" | "b" | "c" | "d" | "e" | "f"),
): this
Returns a record with
keyset tovalue.Setting a key to the value it already holds returns the same instance, so a record can be compared by reference to detect a change.
Returns a record with
valuewritten atkeyPath.Parameters
keyPathIterable<unknown>The keys to follow, outermost first.
valueunknownThe value to store.
Returns
thisA new record, or this one when the value is unchanged.
Converts this record and everything nested inside it to plain JavaScript values.
Returns
{ … }
A plain object holding this record's values, converted all the way down.
a: number
scaleX()Default Value
1b: number
skewY()Default Value
0c: number
skewX()Default Value
0d: number
scaleY()Default Value
1e: number
translateX()Default Value
0f: number
translateY()Default Value
0
An alias for toObject, called by
JSON.stringify.Returns
{ … }
A plain object holding this record's values.
a: number
scaleX()Default Value
1b: number
skewY()Default Value
0c: number
skewX()Default Value
0d: number
scaleY()Default Value
1e: number
translateX()Default Value
0f: number
translateY()Default Value
0
Converts this record to a plain object, one level deep. Nested records are left as they are.
Returns
{ … }
A plain object holding this record's values.
a: number
scaleX()Default Value
1b: number
skewY()Default Value
0c: number
skewX()Default Value
0d: number
scaleY()Default Value
1e: number
translateX()Default Value
0f: number
translateY()Default Value
0
- updateIn<N>(
keyPath: Iterable<unknown>,
notSetValue: N,
updater: (value: unknown) => unknown,
): thisReturns a record with the value at
keyPathreplaced by the result ofupdater. Returns a record with the value at
keyPathreplaced by the result ofupdater.Parameters
keyPathIterable<unknown>The keys to follow, outermost first.
updater(value: unknown) => unknownReceives the current value and returns the new one.
Returns
thisA new record, or this one when the value is unchanged.
Applies several changes as one, so only a single new record is allocated.
The record handed to
mutatormay be written to withset; it is frozen again oncemutatorreturns.Parameters
mutator(mutable: this) => unknownReceives a temporarily writable copy of this record.
Returns
thisA new record holding the applied changes, or this one when nothing changed.
Matrix for affine 2D transformations.
Layout:
| a c e | // - (a,b) the x base vector | b d f | // - (c,d) the y base vector | 0 0 1 | // - (e,f) the origin // of the resulting coordinate system.
The third row is always [0 0 1], thus we don't store the values.