toosoon-utils 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +703 -142
- package/lib/classes/_pool.d.ts +56 -0
- package/lib/classes/_pool.js +92 -0
- package/lib/classes/color-scale.d.ts +52 -0
- package/lib/classes/color-scale.js +160 -0
- package/lib/classes/frame-rate.d.ts +25 -0
- package/lib/classes/frame-rate.js +48 -0
- package/lib/colors.d.ts +9 -1
- package/lib/colors.js +59 -64
- package/lib/constants.d.ts +155 -155
- package/lib/constants.js +161 -164
- package/lib/dom.d.ts +2 -2
- package/lib/dom.js +5 -11
- package/lib/files.d.ts +1 -1
- package/lib/files.js +3 -8
- package/lib/functions.d.ts +6 -2
- package/lib/functions.js +30 -10
- package/lib/geometry.d.ts +2 -2
- package/lib/geometry.js +15 -27
- package/lib/maths.d.ts +11 -9
- package/lib/maths.js +32 -51
- package/lib/prng.d.ts +45 -0
- package/lib/prng.js +113 -0
- package/lib/random.d.ts +24 -24
- package/lib/random.js +36 -53
- package/lib/strings.js +2 -7
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types.d.ts +8 -5
- package/lib/types.js +1 -2
- package/package.json +6 -4
- package/src/classes/_pool.ts +92 -0
- package/src/classes/color-scale.ts +181 -0
- package/src/classes/frame-rate.ts +49 -0
- package/src/colors.ts +32 -19
- package/src/constants.ts +155 -155
- package/src/dom.ts +3 -3
- package/src/files.ts +1 -1
- package/src/functions.ts +27 -2
- package/src/geometry.ts +2 -2
- package/src/maths.ts +23 -12
- package/src/prng.ts +119 -0
- package/src/random.ts +24 -24
- package/src/types.ts +18 -9
- package/tsconfig.json +2 -1
- package/src/now.ts +0 -26
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# TOOSOON UTILS
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Utility functions & classes.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -18,375 +18,936 @@ $ npm install toosoon-utils
|
|
|
18
18
|
|
|
19
19
|
## Usage
|
|
20
20
|
|
|
21
|
-
```
|
|
21
|
+
```ts
|
|
22
22
|
import { lerp } from 'toosoon-utils/maths';
|
|
23
23
|
|
|
24
24
|
console.log(lerp(0.5, 0, 5)); // 2.5
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
##
|
|
27
|
+
## Utility functions
|
|
28
28
|
|
|
29
29
|
### Colors
|
|
30
30
|
|
|
31
|
+
##### normalizeHexString(hex)
|
|
32
|
+
|
|
33
|
+
Normalize an hexadecimal string.
|
|
34
|
+
|
|
35
|
+
- `hex`: Hexadecimal string.
|
|
36
|
+
|
|
31
37
|
```ts
|
|
32
|
-
|
|
33
|
-
normalizeHexString(hex: string) => string;
|
|
38
|
+
normalizeHexString(hex: string): string;
|
|
34
39
|
```
|
|
35
40
|
|
|
41
|
+
##### rgbToHex(rgb)
|
|
42
|
+
|
|
43
|
+
Convert RGB to hexadecimal.
|
|
44
|
+
|
|
45
|
+
- `rgb`: RGB color.
|
|
46
|
+
|
|
36
47
|
```ts
|
|
37
|
-
|
|
38
|
-
rgbToHex([r, g, b]: [number, number, number]) => number;
|
|
48
|
+
rgbToHex([r, g, b]: [number, number, number]): number;
|
|
39
49
|
```
|
|
40
50
|
|
|
51
|
+
##### rgbToHexString(rgb)
|
|
52
|
+
|
|
53
|
+
Convert RGB to hexadecimal string.
|
|
54
|
+
|
|
55
|
+
- `rgb`: RGB color.
|
|
56
|
+
|
|
41
57
|
```ts
|
|
42
|
-
|
|
43
|
-
rgbToHexString([r, g, b]: [number, number, number]) => string;
|
|
58
|
+
rgbToHexString([r, g, b]: [number, number, number]): string;
|
|
44
59
|
```
|
|
45
60
|
|
|
61
|
+
##### hexToRgb(hex)
|
|
62
|
+
|
|
63
|
+
Convert hexadecimal to RGB.
|
|
64
|
+
|
|
65
|
+
- `hex`: Hexadecimal color.
|
|
66
|
+
|
|
46
67
|
```ts
|
|
47
|
-
|
|
48
|
-
hexToRgb(hex: number | string) => [number, number, number];
|
|
68
|
+
hexToRgb(hex: number | string): [number, number, number];
|
|
49
69
|
```
|
|
50
70
|
|
|
71
|
+
##### lighten(hex, amount)
|
|
72
|
+
|
|
73
|
+
Lighten a color.
|
|
74
|
+
|
|
75
|
+
- `hex`: Hexadecimal color.
|
|
76
|
+
- `[amount=0]`: Amount of the color offset.
|
|
77
|
+
|
|
51
78
|
```ts
|
|
52
|
-
|
|
53
|
-
lighten(hex: string, amount?: number) => string;
|
|
79
|
+
lighten(hex: string, amount?: number): string;
|
|
54
80
|
```
|
|
55
81
|
|
|
82
|
+
##### darken(hex, amount)
|
|
83
|
+
|
|
84
|
+
Darken a color.
|
|
85
|
+
|
|
86
|
+
- `hex`: Hexadecimal color.
|
|
87
|
+
- `[amount=0]`: Amount of the color offset.
|
|
88
|
+
|
|
56
89
|
```ts
|
|
57
|
-
|
|
58
|
-
darken(hex: string, amount?: number) => string;
|
|
90
|
+
darken(hex: string, amount?: number): string;
|
|
59
91
|
```
|
|
60
92
|
|
|
93
|
+
##### normalizeHslString(hsl)
|
|
94
|
+
|
|
95
|
+
Normalize an HSL string.
|
|
96
|
+
|
|
97
|
+
- `hsl`: HSL string (format: `'hsl(360, 100%, 100%)'`).
|
|
98
|
+
|
|
61
99
|
```ts
|
|
62
|
-
|
|
63
|
-
normalizeHslString(hsl: string) => [number, number, number];
|
|
100
|
+
normalizeHslString(hsl: string): [number, number, number];
|
|
64
101
|
```
|
|
65
102
|
|
|
103
|
+
##### rgbToHsl(rgb)
|
|
104
|
+
|
|
105
|
+
Convert RGB to HSL.
|
|
106
|
+
|
|
107
|
+
- `rgb`: RGB color.
|
|
108
|
+
|
|
66
109
|
```ts
|
|
67
|
-
|
|
68
|
-
rgbToHsl([r, g, b]: [number, number, number]) => [number, number, number];
|
|
110
|
+
rgbToHsl([r, g, b]: [number, number, number]): [number, number, number];
|
|
69
111
|
```
|
|
70
112
|
|
|
113
|
+
##### hslToRgb(hsl)
|
|
114
|
+
|
|
115
|
+
Convert HSL to RGB.
|
|
116
|
+
|
|
117
|
+
- `hsl`: HSL color.
|
|
118
|
+
|
|
71
119
|
```ts
|
|
72
|
-
|
|
73
|
-
hslToRgb([h, s, l]: [number, number, number]) => [number, number, number];
|
|
120
|
+
hslToRgb([h, s, l]: [number, number, number]): [number, number, number];
|
|
74
121
|
```
|
|
75
122
|
|
|
123
|
+
##### rgbToHsb(rgb)
|
|
124
|
+
|
|
125
|
+
Convert RGB to HSB.
|
|
126
|
+
|
|
127
|
+
- `rgb`: RGB color.
|
|
128
|
+
|
|
76
129
|
```ts
|
|
77
|
-
|
|
78
|
-
rgbToHsb([r, g, b]: [number, number, number]) => [number, number, number];
|
|
130
|
+
rgbToHsb([r, g, b]: [number, number, number]): [number, number, number];
|
|
79
131
|
```
|
|
80
132
|
|
|
133
|
+
##### hsbToRgb(hsb)
|
|
134
|
+
|
|
135
|
+
Convert HSB to RGB.
|
|
136
|
+
|
|
137
|
+
- `hsb`: HSB color.
|
|
138
|
+
|
|
81
139
|
```ts
|
|
82
|
-
|
|
83
|
-
hsbToRgb([h, s, b]: [number, number, number]) => [number, number, number];
|
|
140
|
+
hsbToRgb([h, s, b]: [number, number, number]): [number, number, number];
|
|
84
141
|
```
|
|
85
142
|
|
|
143
|
+
##### labToHcl(lab)
|
|
144
|
+
|
|
145
|
+
Convert LAB to HCL.
|
|
146
|
+
|
|
147
|
+
- `lab`: LAB color.
|
|
148
|
+
|
|
86
149
|
```ts
|
|
87
|
-
|
|
88
|
-
labToHcl([l, a, b]: [number, number, number]) => [number, number, number];
|
|
150
|
+
labToHcl([l, a, b]: [number, number, number]): [number, number, number];
|
|
89
151
|
```
|
|
90
152
|
|
|
153
|
+
##### hclToLab(hcl)
|
|
154
|
+
|
|
155
|
+
Convert HCL to LAB.
|
|
156
|
+
|
|
157
|
+
- `hcl`: HCL color.
|
|
158
|
+
|
|
91
159
|
```ts
|
|
92
|
-
|
|
93
|
-
hclToLab([h, c, l]: [number, number, number]) => [number, number, number];
|
|
160
|
+
hclToLab([h, c, l]: [number, number, number]): [number, number, number];
|
|
94
161
|
```
|
|
95
162
|
|
|
163
|
+
##### labToRgb(lab)
|
|
164
|
+
|
|
165
|
+
Convert LAB to RGB.
|
|
166
|
+
|
|
167
|
+
- `lab`: LAB color.
|
|
168
|
+
|
|
96
169
|
```ts
|
|
97
|
-
|
|
98
|
-
labToRgb([l, a, b]: [number, number, number]) => [number, number, number];
|
|
170
|
+
labToRgb([l, a, b]: [number, number, number]): [number, number, number];
|
|
99
171
|
```
|
|
100
172
|
|
|
173
|
+
##### rgbToLab(rgb)
|
|
174
|
+
|
|
175
|
+
Convert RGB to LAB.
|
|
176
|
+
|
|
177
|
+
- `rgb`: RGB color.
|
|
178
|
+
|
|
101
179
|
```ts
|
|
102
|
-
|
|
103
|
-
rgbToLab([r, g, b]: [number, number, number]) => [number, number, number];
|
|
180
|
+
rgbToLab([r, g, b]: [number, number, number]): [number, number, number];
|
|
104
181
|
```
|
|
105
182
|
|
|
183
|
+
##### deltaE(labA, labB)
|
|
184
|
+
|
|
185
|
+
Get the delta from two LAB colors.
|
|
186
|
+
|
|
187
|
+
- `labA`: First LAB color.
|
|
188
|
+
- `labB`: Second LAB color.
|
|
189
|
+
|
|
106
190
|
```ts
|
|
107
|
-
|
|
108
|
-
deltaE(labA: [number, number, number], labB: [number, number, number]) => number;
|
|
191
|
+
deltaE(labA: [number, number, number], labB: [number, number, number]): number;
|
|
109
192
|
```
|
|
110
193
|
|
|
194
|
+
##### rgbToHcl(rgb)
|
|
195
|
+
|
|
196
|
+
Convert RGB to HCL.
|
|
197
|
+
|
|
198
|
+
- `rgb`: RGB color.
|
|
199
|
+
|
|
111
200
|
```ts
|
|
112
|
-
|
|
113
|
-
rgbToHcl([r, g, b]: [number, number, number]) => [number, number, number];
|
|
201
|
+
rgbToHcl([r, g, b]: [number, number, number]): [number, number, number];
|
|
114
202
|
```
|
|
115
203
|
|
|
204
|
+
##### hclToRgb(hcl)
|
|
205
|
+
|
|
206
|
+
Convert HCL to RGB.
|
|
207
|
+
|
|
208
|
+
- `hcl`: HCL color.
|
|
209
|
+
|
|
116
210
|
```ts
|
|
117
|
-
|
|
118
|
-
hclToRgb([h, c, l]: [number, number, number]) => [number, number, number];
|
|
211
|
+
hclToRgb([h, c, l]: [number, number, number]): [number, number, number];
|
|
119
212
|
```
|
|
120
213
|
|
|
121
214
|
### DOM
|
|
122
215
|
|
|
216
|
+
##### closest(element, selector)
|
|
217
|
+
|
|
218
|
+
Find the closest parent that matches a selector.
|
|
219
|
+
|
|
220
|
+
- `element`: Target element.
|
|
221
|
+
- `selector`: Selector or parent to match.
|
|
222
|
+
|
|
123
223
|
```ts
|
|
124
|
-
|
|
125
|
-
closest(element: Element, selector: Element | string) => Element | null;
|
|
224
|
+
closest(element: Element, selector: Element | string): Element | null;
|
|
126
225
|
```
|
|
127
226
|
|
|
227
|
+
##### createCanvas(width, height)
|
|
228
|
+
|
|
229
|
+
Create a canvas and 2d context.
|
|
230
|
+
|
|
231
|
+
- `width`: Width of the canvas.
|
|
232
|
+
- `height`: Height of the canvas.
|
|
233
|
+
|
|
128
234
|
```ts
|
|
129
|
-
|
|
130
|
-
createCanvas(width: number, height: number) => { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D };
|
|
235
|
+
createCanvas(width: number, height: number): { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D };
|
|
131
236
|
```
|
|
132
237
|
|
|
238
|
+
##### injectStyles(styles)
|
|
239
|
+
|
|
240
|
+
Inject CSS styles in `document.head`.
|
|
241
|
+
|
|
242
|
+
- `styles`: CSS styles to inject.
|
|
243
|
+
|
|
133
244
|
```ts
|
|
134
|
-
|
|
135
|
-
injectStyles(cssContent: string) => void;
|
|
245
|
+
injectStyles(styles: string): void;
|
|
136
246
|
```
|
|
137
247
|
|
|
138
248
|
### Files
|
|
139
249
|
|
|
250
|
+
##### download(blob, filename)
|
|
251
|
+
|
|
252
|
+
Download a Blob object into user files.
|
|
253
|
+
|
|
254
|
+
- `blob`: Blob object to download.
|
|
255
|
+
- `filename`: Downloaded file name.
|
|
256
|
+
|
|
140
257
|
```ts
|
|
141
|
-
|
|
142
|
-
download(blob: Blob, filename: string) => void;
|
|
258
|
+
download(blob: Blob, filename: string): void;
|
|
143
259
|
```
|
|
144
260
|
|
|
261
|
+
##### upload(onLoad)
|
|
262
|
+
|
|
263
|
+
Upload a file from user files.
|
|
264
|
+
|
|
265
|
+
- `onLoad`: Callback called once the file is loaded.
|
|
266
|
+
- `[accept='']` MIME type the file input should accept.
|
|
267
|
+
|
|
145
268
|
```ts
|
|
146
|
-
|
|
147
|
-
upload(onLoad: (dataUrl: string) => void, accept?: string) => void;
|
|
269
|
+
upload(onLoad: (dataUrl: string) => void, accept?: string): void;
|
|
148
270
|
```
|
|
149
271
|
|
|
150
272
|
### Functions
|
|
151
273
|
|
|
274
|
+
##### noop()
|
|
275
|
+
|
|
276
|
+
No-op function.
|
|
277
|
+
|
|
152
278
|
```ts
|
|
153
|
-
|
|
154
|
-
noop() => void;
|
|
279
|
+
noop(): void;
|
|
155
280
|
```
|
|
156
281
|
|
|
282
|
+
##### wait(timeout)
|
|
283
|
+
|
|
284
|
+
Promise wrapped setTimeout.
|
|
285
|
+
|
|
286
|
+
- `[timeout=0]`: Time to wait (in milliseconds).
|
|
287
|
+
|
|
288
|
+
```ts
|
|
289
|
+
wait(timeout?: number): Promise<void>;
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
##### defer()
|
|
293
|
+
|
|
294
|
+
Deferred promise implementation.
|
|
295
|
+
|
|
157
296
|
```ts
|
|
158
|
-
|
|
159
|
-
wait(timeout: number) => Promise<void>;
|
|
297
|
+
defer<T>(): Deferred<T>;
|
|
160
298
|
```
|
|
161
299
|
|
|
300
|
+
##### now()
|
|
301
|
+
|
|
302
|
+
Polyfill for `now()` functions.
|
|
303
|
+
|
|
162
304
|
```ts
|
|
163
|
-
|
|
164
|
-
defer<T>() => Deferred<T>;
|
|
305
|
+
now(): number;
|
|
165
306
|
```
|
|
166
307
|
|
|
167
308
|
### Geometry
|
|
168
309
|
|
|
310
|
+
##### toDegrees(radians)
|
|
311
|
+
|
|
312
|
+
Convert a radians value into degrees.
|
|
313
|
+
|
|
314
|
+
- `radians`: Angle in radians.
|
|
315
|
+
|
|
169
316
|
```ts
|
|
170
|
-
|
|
171
|
-
toDegrees(radians: number) => number;
|
|
317
|
+
toDegrees(radians: number): number;
|
|
172
318
|
```
|
|
173
319
|
|
|
320
|
+
##### toRadians(degrees)
|
|
321
|
+
|
|
322
|
+
Convert a degrees value into radians.
|
|
323
|
+
|
|
324
|
+
- `degrees`: Angle in degrees.
|
|
325
|
+
|
|
174
326
|
```ts
|
|
175
|
-
|
|
176
|
-
toRadians(degrees: number) => number;
|
|
327
|
+
toRadians(degrees: number): number;
|
|
177
328
|
```
|
|
178
329
|
|
|
330
|
+
##### angle(x1, y1, x2, y2)
|
|
331
|
+
|
|
332
|
+
Calculate the angle from a point to another.
|
|
333
|
+
|
|
334
|
+
- `x1`: X value of the first point.
|
|
335
|
+
- `y1`: Y value of the first point.
|
|
336
|
+
- `x2`: X value of the second point.
|
|
337
|
+
- `y2`: Y value of the second point.
|
|
338
|
+
|
|
179
339
|
```ts
|
|
180
|
-
|
|
181
|
-
angle(x1: number, y1: number, x2: number, y2: number) => number;
|
|
340
|
+
angle(x1: number, y1: number, x2: number, y2: number): number;
|
|
182
341
|
```
|
|
183
342
|
|
|
343
|
+
##### closestAngle(source, target)
|
|
344
|
+
|
|
345
|
+
Find the closest angle between to angles.
|
|
346
|
+
|
|
347
|
+
- `source`: Source angle in radians.
|
|
348
|
+
- `target`: Target angle in radians.
|
|
349
|
+
|
|
184
350
|
```ts
|
|
185
|
-
|
|
186
|
-
closestAngle(source: number, target: number) => number;
|
|
351
|
+
closestAngle(source: number, target: number): number;
|
|
187
352
|
```
|
|
188
353
|
|
|
354
|
+
##### distance(x1, y1, x2, y2)
|
|
355
|
+
|
|
356
|
+
Calculate the distance between two points.
|
|
357
|
+
|
|
358
|
+
- `x1`: X coord of the first point.
|
|
359
|
+
- `y1`: Y coord of the first point.
|
|
360
|
+
- `x2`: X coord of the second point.
|
|
361
|
+
- `y2`: Y coord of the second point.
|
|
362
|
+
|
|
189
363
|
```ts
|
|
190
|
-
|
|
191
|
-
distance(x1: number, y1: number, x2: number, y2: number) => number;
|
|
364
|
+
distance(x1: number, y1: number, x2: number, y2: number): number;
|
|
192
365
|
```
|
|
193
366
|
|
|
367
|
+
##### diagonal(width, height)
|
|
368
|
+
|
|
369
|
+
Calculate the length of the diagonal of a rectangle.
|
|
370
|
+
|
|
371
|
+
- `width`: Width of the rectangle.
|
|
372
|
+
- `height`: Height of the rectangle.
|
|
373
|
+
|
|
194
374
|
```ts
|
|
195
|
-
|
|
196
|
-
diagonal(width: number, height: number) => number;
|
|
375
|
+
diagonal(width: number, height: number): number;
|
|
197
376
|
```
|
|
198
377
|
|
|
378
|
+
##### radToSphere(radius, phi, theta)
|
|
379
|
+
|
|
380
|
+
Convert radians to a 3D point on the surface of a unit sphere.
|
|
381
|
+
|
|
382
|
+
- `radius`: Radius of the sphere
|
|
383
|
+
- `phi`: Polar angle from the y (up) axis [0, PI]
|
|
384
|
+
- `theta`: Equator angle around the y (up) axis [0, 2*PI]
|
|
385
|
+
- `[target]`: Target vector
|
|
386
|
+
|
|
199
387
|
```ts
|
|
200
|
-
|
|
201
|
-
radToSphere(radius: number, phi: number, theta: number, target?: Vector3) => Vector3;
|
|
388
|
+
radToSphere(radius: number, phi: number, theta: number, target?: Vector3): Vector3;
|
|
202
389
|
```
|
|
203
390
|
|
|
391
|
+
##### cover(target, container)
|
|
392
|
+
|
|
393
|
+
Make a target fit a container (cover mode).
|
|
394
|
+
|
|
395
|
+
- `target`: Dimension of the target.
|
|
396
|
+
- `container`: Dimension of the container.
|
|
397
|
+
|
|
204
398
|
```ts
|
|
205
|
-
|
|
206
|
-
cover(target: FitInput, container: FitInput) => FitOutput;
|
|
399
|
+
cover(target: object, container: object): object;
|
|
207
400
|
```
|
|
208
401
|
|
|
402
|
+
##### contain(target, container)
|
|
403
|
+
|
|
404
|
+
Make a target fit a container (contain mode).
|
|
405
|
+
|
|
406
|
+
- `target`: Dimension of the target.
|
|
407
|
+
- `container`: Dimension of the container.
|
|
408
|
+
|
|
209
409
|
```ts
|
|
210
|
-
|
|
211
|
-
contain(target: FitInput, container: FitInput) => FitOutput;
|
|
410
|
+
contain(target: object, container: object): object;
|
|
212
411
|
```
|
|
213
412
|
|
|
214
413
|
### Maths
|
|
215
414
|
|
|
415
|
+
##### isEven(value)
|
|
416
|
+
|
|
417
|
+
Check if a number is even.
|
|
418
|
+
|
|
419
|
+
- `value`: Value to check.
|
|
420
|
+
|
|
421
|
+
```ts
|
|
422
|
+
isEven(value: number): boolean;
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
##### isOdd(value)
|
|
426
|
+
|
|
427
|
+
Check if a number is odd.
|
|
428
|
+
|
|
429
|
+
- `value`: Value to check.
|
|
430
|
+
|
|
431
|
+
```ts
|
|
432
|
+
isOdd(value: number): boolean;
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
##### isPowerOf2(value)
|
|
436
|
+
|
|
437
|
+
Check if a number is a power of 2.
|
|
438
|
+
|
|
439
|
+
- `value`: Value to check.
|
|
440
|
+
|
|
441
|
+
```ts
|
|
442
|
+
isPowerOf2(value: number): boolean;
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
##### toPowerOf2(value)
|
|
446
|
+
|
|
447
|
+
Find closest power of 2 that fits a number.
|
|
448
|
+
|
|
449
|
+
- `value`: Incoming value.
|
|
450
|
+
- `[mode='ceil']`: Can be `'floor'`, `'ceil'` or `'round'`.
|
|
451
|
+
|
|
452
|
+
```ts
|
|
453
|
+
toPowerOf2(value: number, mode?: string): number;
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
##### sign(value)
|
|
457
|
+
|
|
458
|
+
Return the sign (positive or negative) of a number.
|
|
459
|
+
|
|
460
|
+
- `value`: Value to check.
|
|
461
|
+
|
|
462
|
+
```ts
|
|
463
|
+
sign(value: number): number;
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
##### clamp(value, min, max)
|
|
467
|
+
|
|
468
|
+
Clamp a value between two bounds.
|
|
469
|
+
|
|
470
|
+
- `value`: Value to clamp.
|
|
471
|
+
- `[min=0]`: Minimum boundary.
|
|
472
|
+
- `[max=1]`: Maximum boundary.
|
|
473
|
+
|
|
216
474
|
```ts
|
|
217
|
-
|
|
218
|
-
isEven(value: number) => boolean;
|
|
475
|
+
clamp(value: number, min?: number, max?: number): number;
|
|
219
476
|
```
|
|
220
477
|
|
|
478
|
+
##### lerp(value, min, max)
|
|
479
|
+
|
|
480
|
+
Linear interpolation between two values (lerping).
|
|
481
|
+
|
|
482
|
+
- `value`: Normalized value to interpolate.
|
|
483
|
+
- `min`: Minimum value.
|
|
484
|
+
- `max`: Maximum value.
|
|
485
|
+
|
|
221
486
|
```ts
|
|
222
|
-
|
|
223
|
-
isOdd(value: number) => boolean;
|
|
487
|
+
lerp(value: number, min: number, max: number): number;
|
|
224
488
|
```
|
|
225
489
|
|
|
490
|
+
##### triLerp(value, min, max, target)
|
|
491
|
+
|
|
492
|
+
Triangular interpolation between two values.
|
|
493
|
+
|
|
494
|
+
- `value`: Normalized value to interpolate.
|
|
495
|
+
- `min`: Minimum value.
|
|
496
|
+
- `max`: Maximum value.
|
|
497
|
+
- `target`: Triangle target value.
|
|
498
|
+
|
|
226
499
|
```ts
|
|
227
|
-
|
|
228
|
-
isPowerOf2(value: number) => boolean;
|
|
500
|
+
triLerp(value: number, min: number, max: number, target: number): number;
|
|
229
501
|
```
|
|
230
502
|
|
|
503
|
+
##### expLerp(value, currentMin, currentMax, targetMin, targetMax)
|
|
504
|
+
|
|
505
|
+
Exponential interpolation between two values.
|
|
506
|
+
|
|
507
|
+
- `value`: Value to interpolate.
|
|
508
|
+
- `currentMin`: Lower bound of the value's current range.
|
|
509
|
+
- `currentMax`: Upper bound of the value's current range.
|
|
510
|
+
- `targetMin`: Lower bound of the value's target range.
|
|
511
|
+
- `targetMax`: Upper bound of the value's target range.
|
|
512
|
+
|
|
231
513
|
```ts
|
|
232
|
-
|
|
233
|
-
toPowerOf2(value: number, mode?: 'floor' | 'ceil' | 'round') => number;
|
|
514
|
+
expLerp(value: number, currentMin: number, currentMax: number, targetMin: number, targetMax: number): number;
|
|
234
515
|
```
|
|
235
516
|
|
|
517
|
+
##### normalize(value, min, max)
|
|
518
|
+
|
|
519
|
+
Normalize a value between two bounds.
|
|
520
|
+
|
|
521
|
+
- `value`: Value to normalize.
|
|
522
|
+
- `min`: Minimum boundary.
|
|
523
|
+
- `max`: Maximum boundary.
|
|
524
|
+
|
|
236
525
|
```ts
|
|
237
|
-
|
|
238
|
-
sign(number: number) => number;
|
|
526
|
+
normalize(value: number, min: number, max: number): number;
|
|
239
527
|
```
|
|
240
528
|
|
|
529
|
+
##### map(value, currentMin, currentMax, targetMin, targetMax)
|
|
530
|
+
|
|
531
|
+
Re-map a number from one range to another.
|
|
532
|
+
|
|
533
|
+
- `value`: Value to re-map.
|
|
534
|
+
- `currentMin`: Lower bound of the value's current range.
|
|
535
|
+
- `currentMax`: Upper bound of the value's current range.
|
|
536
|
+
- `targetMin`: Lower bound of the value's target range.
|
|
537
|
+
- `targetMax`: Upper bound of the value's target range.
|
|
538
|
+
|
|
241
539
|
```ts
|
|
242
|
-
|
|
243
|
-
clamp(value: number, min?: number, max?: number) => number;
|
|
540
|
+
map(value: number, currentMin: number, currentMax: number, targetMin: number, targetMax: number): number;
|
|
244
541
|
```
|
|
245
542
|
|
|
543
|
+
##### roundTo(value, multiple)
|
|
544
|
+
|
|
545
|
+
Round a number up to a nearest multiple.
|
|
546
|
+
|
|
547
|
+
- `value`: Value to round.
|
|
548
|
+
- `[multiple=1]`: Multiple to round to.
|
|
549
|
+
|
|
246
550
|
```ts
|
|
247
|
-
|
|
248
|
-
lerp(value: number, min: number, max: number) => number;
|
|
551
|
+
roundTo(value: number, multiple?: number): number;
|
|
249
552
|
```
|
|
250
553
|
|
|
554
|
+
##### modAbs(value, length)
|
|
555
|
+
|
|
556
|
+
Modulo absolute a value based on a length.
|
|
557
|
+
|
|
558
|
+
- `value`: Value to modulate.
|
|
559
|
+
- `length`: Total length.
|
|
560
|
+
|
|
251
561
|
```ts
|
|
252
|
-
|
|
253
|
-
triLerp(value: number, min: number, max: number, target: number) => number;
|
|
562
|
+
modAbs(value: number, length: number): number;
|
|
254
563
|
```
|
|
255
564
|
|
|
565
|
+
##### pingPong(value, length)
|
|
566
|
+
|
|
567
|
+
Move back and forth a value between 0 and length, so that it is never larger than length and never smaller than 0.
|
|
568
|
+
|
|
569
|
+
- `value`: Value to modulate.
|
|
570
|
+
- `length`: Total length.
|
|
571
|
+
|
|
256
572
|
```ts
|
|
257
|
-
|
|
258
|
-
expLerp(value: number, min: number, max: number) => number;
|
|
573
|
+
pingPong(value: number, length: number): number;
|
|
259
574
|
```
|
|
260
575
|
|
|
576
|
+
##### smoothstep(value, min, max)
|
|
577
|
+
|
|
578
|
+
Smooth a value using cubic Hermite interpolation.
|
|
579
|
+
|
|
580
|
+
- `value`: Value to smooth.
|
|
581
|
+
- `[min=0]`: Minimum boundary.
|
|
582
|
+
- `[max=1]`: Maximum boundary.
|
|
583
|
+
|
|
261
584
|
```ts
|
|
262
|
-
|
|
263
|
-
normalize(value: number, min: number, max: number) => number;
|
|
585
|
+
smoothstep(value: number, min?: number, max?: number): number;
|
|
264
586
|
```
|
|
265
587
|
|
|
588
|
+
##### parabola(x, power)
|
|
589
|
+
|
|
590
|
+
Re-map the [0, 1] interval into [0, 1] parabola, such that corners are remaped to 0 and the center to 1.
|
|
591
|
+
|
|
592
|
+
- `x`: Normalized coordinate on X axis.
|
|
593
|
+
- `[power=1]`: Parabola power.
|
|
594
|
+
|
|
266
595
|
```ts
|
|
267
|
-
|
|
268
|
-
map(value: number, currentMin: number, currentMax: number, targetMin: number, targetMax: number) => number;
|
|
596
|
+
parabola(x: number, power?: number): number;
|
|
269
597
|
```
|
|
270
598
|
|
|
599
|
+
##### sum(array)
|
|
600
|
+
|
|
601
|
+
Return the sum of numbers.
|
|
602
|
+
|
|
603
|
+
- `array`: Array of numbers.
|
|
604
|
+
|
|
271
605
|
```ts
|
|
272
|
-
|
|
273
|
-
roundTo(value: number, multiple?: number) => number;
|
|
606
|
+
sum(array: number[]): number;
|
|
274
607
|
```
|
|
275
608
|
|
|
609
|
+
##### average(array)
|
|
610
|
+
|
|
611
|
+
Return the average of numbers.
|
|
612
|
+
|
|
613
|
+
- `array`: Array of numbers.
|
|
614
|
+
|
|
276
615
|
```ts
|
|
277
|
-
|
|
278
|
-
modAbs(value: number, length: number) => number;
|
|
616
|
+
average(array: number[]): number;
|
|
279
617
|
```
|
|
280
618
|
|
|
619
|
+
##### damp(value, target, damping, delta)
|
|
620
|
+
|
|
621
|
+
Smoothly interpolate a number toward another.
|
|
622
|
+
|
|
623
|
+
- `value`: Value to interpolate.
|
|
624
|
+
- `target`: Destination of the interpolation.
|
|
625
|
+
- `damping`: A higher value will make the movement more sudden, and a lower value will make the movement more gradual.
|
|
626
|
+
- `delta`: Delta time (in seconds).
|
|
627
|
+
|
|
281
628
|
```ts
|
|
282
|
-
|
|
283
|
-
pingPong(value: number, length: number) => number;
|
|
629
|
+
damp(value: number, target: number, damping: number, delta: number): number;
|
|
284
630
|
```
|
|
285
631
|
|
|
632
|
+
### Pseudo-Random Number Generator (PRNG)
|
|
633
|
+
|
|
634
|
+
**Credits**: [Seeding random number generator](https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript)
|
|
635
|
+
|
|
636
|
+
##### cyrb128(seed)
|
|
637
|
+
|
|
638
|
+
Produce a 128-bit hash value from a string.
|
|
639
|
+
|
|
640
|
+
`seed`: Initial seed state.
|
|
641
|
+
|
|
286
642
|
```ts
|
|
287
|
-
|
|
288
|
-
smoothstep(value: number, min?: number, max?: number) => number;
|
|
643
|
+
cyrb128(seed: string): [number, number, number, number];
|
|
289
644
|
```
|
|
290
645
|
|
|
646
|
+
##### sfc32(a, b, c, d)
|
|
647
|
+
|
|
648
|
+
_Simple Fast Counter_, Generator with a 128-bit state.
|
|
649
|
+
|
|
291
650
|
```ts
|
|
292
|
-
|
|
293
|
-
parabola(x: number, power?: number) => number;
|
|
651
|
+
sfc32(a: number, b: number, c: number, d: number): number;
|
|
294
652
|
```
|
|
295
653
|
|
|
654
|
+
##### splitmix32(a)
|
|
655
|
+
|
|
656
|
+
_SplitMix32_, Generator with a 32-bit state.
|
|
657
|
+
|
|
296
658
|
```ts
|
|
297
|
-
|
|
298
|
-
sum(array: number[]) => number;
|
|
659
|
+
splitmix32(a: number): number;
|
|
299
660
|
```
|
|
300
661
|
|
|
662
|
+
##### mulberry32(a)
|
|
663
|
+
|
|
664
|
+
_Mulberry32_, Generator with a 32-bit state.
|
|
665
|
+
|
|
301
666
|
```ts
|
|
302
|
-
|
|
303
|
-
average(array: number[]) => number;
|
|
667
|
+
mulberry32(a: number): number;
|
|
304
668
|
```
|
|
305
669
|
|
|
670
|
+
##### jsf32(a, b, c, d)
|
|
671
|
+
|
|
672
|
+
_Jenkins' Small Fast_, Generator with a 32-bit state.
|
|
673
|
+
|
|
306
674
|
```ts
|
|
307
|
-
|
|
308
|
-
damp(value: number, target: number, damping: number, delta: number) => number;
|
|
675
|
+
jsf32(a: number, b: number, c: number, d: number): number;
|
|
309
676
|
```
|
|
310
677
|
|
|
311
|
-
|
|
678
|
+
##### xoshiro128ss(a, b, c, d)
|
|
679
|
+
|
|
680
|
+
_xoshiro128\*\*_, Generator with a 128-bit state.
|
|
312
681
|
|
|
313
682
|
```ts
|
|
314
|
-
|
|
315
|
-
now() => number;
|
|
683
|
+
xoshiro128ss(a: number, b: number, c: number, d: number): number;
|
|
316
684
|
```
|
|
317
685
|
|
|
318
686
|
### Random
|
|
319
687
|
|
|
688
|
+
##### randomBoolean(probability)
|
|
689
|
+
|
|
690
|
+
Generate a random boolean (true or false).
|
|
691
|
+
|
|
692
|
+
- `[probability=0.5]`: Probability to get `true`.
|
|
693
|
+
|
|
320
694
|
```ts
|
|
321
|
-
|
|
322
|
-
randomBoolean(probability?: number) => boolean;
|
|
695
|
+
randomBoolean(probability?: number): boolean;
|
|
323
696
|
```
|
|
324
697
|
|
|
698
|
+
##### randomSign(probability)
|
|
699
|
+
|
|
700
|
+
Generate a random sign (1 or -1).
|
|
701
|
+
|
|
702
|
+
- `[probability=0.5]`: Probability to get 1.
|
|
703
|
+
|
|
325
704
|
```ts
|
|
326
|
-
|
|
327
|
-
randomSign(probability?: number) => number;
|
|
705
|
+
randomSign(probability?: number): number;
|
|
328
706
|
```
|
|
329
707
|
|
|
708
|
+
##### randomFloat(min, max)
|
|
709
|
+
|
|
710
|
+
Generate a random floating-point number within a specified range.
|
|
711
|
+
|
|
712
|
+
- `[min=0]`: Minimum boundary.
|
|
713
|
+
- `[max=1]`: Maximum boundary.
|
|
714
|
+
- `[precision=2]`: Number of digits after the decimal point.
|
|
715
|
+
|
|
330
716
|
```ts
|
|
331
|
-
|
|
332
|
-
randomFloat(min?: number, max?: number, precision?: number) => number;
|
|
717
|
+
randomFloat(min?: number, max?: number, precision?: number): number;
|
|
333
718
|
```
|
|
334
719
|
|
|
720
|
+
##### randomInt(min, max)
|
|
721
|
+
|
|
722
|
+
Generate a random integer number within a specified range.
|
|
723
|
+
|
|
724
|
+
- `min`: Minimum boundary.
|
|
725
|
+
- `max`: Maximum boundary.
|
|
726
|
+
|
|
335
727
|
```ts
|
|
336
|
-
|
|
337
|
-
randomInt(min: number, max: number) => number;
|
|
728
|
+
randomInt(min: number, max: number): number;
|
|
338
729
|
```
|
|
339
730
|
|
|
731
|
+
##### randomHexColor()
|
|
732
|
+
|
|
733
|
+
Generate a random hexadecimal color.
|
|
734
|
+
|
|
340
735
|
```ts
|
|
341
|
-
|
|
342
|
-
randomHexColor() => string;
|
|
736
|
+
randomHexColor(): string;
|
|
343
737
|
```
|
|
344
738
|
|
|
739
|
+
##### randomItem(array)
|
|
740
|
+
|
|
741
|
+
Pick a random item from a given array.
|
|
742
|
+
|
|
743
|
+
- `array`: Array to pick the item from.
|
|
744
|
+
|
|
345
745
|
```ts
|
|
346
|
-
|
|
347
|
-
randomItem<T>(array: T[] = []) => T | undefined;
|
|
746
|
+
randomItem<T>(array: T[]): T | undefined;
|
|
348
747
|
```
|
|
349
748
|
|
|
749
|
+
##### randomObjectProperty(object)
|
|
750
|
+
|
|
751
|
+
Pick a random property value from a given object.
|
|
752
|
+
|
|
753
|
+
- `object`: Object to pick the property from.
|
|
754
|
+
|
|
350
755
|
```ts
|
|
351
|
-
|
|
352
|
-
randomObjectProperty<T>(object: { [key: string]: T }) => T | undefined;
|
|
756
|
+
randomObjectProperty<T>(object: { [key: string]: T }): T | undefined;
|
|
353
757
|
```
|
|
354
758
|
|
|
759
|
+
##### randomIndex(weights)
|
|
760
|
+
|
|
761
|
+
Select a random index from an array of weighted items.
|
|
762
|
+
|
|
763
|
+
- `weights`: Array of weights.
|
|
764
|
+
|
|
355
765
|
```ts
|
|
356
|
-
|
|
357
|
-
randomIndex(weights?: number[]) => number;
|
|
766
|
+
randomIndex(weights?: number[]): number;
|
|
358
767
|
```
|
|
359
768
|
|
|
769
|
+
##### onCircle(radius)
|
|
770
|
+
|
|
771
|
+
Produce a random 2D point around the perimiter of a unit circle.
|
|
772
|
+
|
|
773
|
+
- `[radius=1]`: Radius of the circle.
|
|
774
|
+
- `[target]`: Target vector.
|
|
775
|
+
|
|
360
776
|
```ts
|
|
361
|
-
|
|
362
|
-
onCircle(radius?: number, target?: Vector2) => Vector2;
|
|
777
|
+
onCircle(radius?: number, target?: Vector2): Vector2;
|
|
363
778
|
```
|
|
364
779
|
|
|
780
|
+
##### insideCircle(radius)
|
|
781
|
+
|
|
782
|
+
Produce a random 2D point inside a unit circle.
|
|
783
|
+
|
|
784
|
+
- `[radius=1]`: Radius of the circle.
|
|
785
|
+
- `[target]` Target vector.
|
|
786
|
+
|
|
365
787
|
```ts
|
|
366
|
-
|
|
367
|
-
insideCircle(radius?: number, target?: Vector2) => Vector2;
|
|
788
|
+
insideCircle(radius?: number, target?: Vector2): Vector2;
|
|
368
789
|
```
|
|
369
790
|
|
|
791
|
+
##### onSphere(radius)
|
|
792
|
+
|
|
793
|
+
Produce a random 3D point on the surface of a unit sphere.
|
|
794
|
+
|
|
795
|
+
- `[radius=1]`: Radius of the sphere.
|
|
796
|
+
- `[target]`: Target vector.
|
|
797
|
+
|
|
370
798
|
```ts
|
|
371
|
-
|
|
372
|
-
onSphere(radius?: number, target?: Vector3) => Vector3;
|
|
799
|
+
onSphere(radius?: number, target?: Vector3): Vector3;
|
|
373
800
|
```
|
|
374
801
|
|
|
802
|
+
##### insideSphere(radius)
|
|
803
|
+
|
|
804
|
+
Produce a random 3D point inside a unit sphere.
|
|
805
|
+
|
|
806
|
+
- `[radius=1]`: Radius of the sphere.
|
|
807
|
+
- `[target]`: Target vector.
|
|
808
|
+
|
|
375
809
|
```ts
|
|
376
|
-
|
|
377
|
-
insideSphere(radius?: number, target?: Vector3) => Vector3;
|
|
810
|
+
insideSphere(radius?: number, target?: Vector3): Vector3;
|
|
378
811
|
```
|
|
379
812
|
|
|
380
813
|
### Strings
|
|
381
814
|
|
|
815
|
+
##### capitalize(string)
|
|
816
|
+
|
|
817
|
+
Capitalize a string.
|
|
818
|
+
|
|
819
|
+
- `string`: String to capitalize.
|
|
820
|
+
|
|
821
|
+
```ts
|
|
822
|
+
capitalize(string: string): string;
|
|
823
|
+
```
|
|
824
|
+
|
|
825
|
+
##### cleanPath(path)
|
|
826
|
+
|
|
827
|
+
Clean a path by removing params.
|
|
828
|
+
|
|
829
|
+
- `path`: Path to clean.
|
|
830
|
+
|
|
831
|
+
```ts
|
|
832
|
+
cleanPath(path: string): string;
|
|
833
|
+
```
|
|
834
|
+
|
|
835
|
+
## Utility classes
|
|
836
|
+
|
|
837
|
+
### Color scale
|
|
838
|
+
|
|
839
|
+
Utility class for generating color scales and interpolating between colors.
|
|
840
|
+
|
|
841
|
+
- [new ColorScale(input, target)](#color-scale-constructor)
|
|
842
|
+
- [.colors](#color-scale-colors): `Array<[number, number, number]>`
|
|
843
|
+
- `static` [.generate(input, target, length)](#color-scale-static-generate-method): `Array<[number, number, number]>`
|
|
844
|
+
- `static` [.interpolate(inputColor, targetColor, value)](#color-scale-static-interpolate-method): `[number, number, number]`
|
|
845
|
+
|
|
846
|
+
#### Constructor <a id="color-scale-constructor"></a>
|
|
847
|
+
|
|
848
|
+
| Parameter | Type | Default | Description |
|
|
849
|
+
| --------------------- | ---------------------------------- | ----------------------- | ------------------------------------------- |
|
|
850
|
+
| input | `ColorRepresentation` | | Input color representation. |
|
|
851
|
+
| target | `ColorRepresentation` | | Target color representation. |
|
|
852
|
+
| length | `number` | `5` | Amount of colors composing the color scale. |
|
|
853
|
+
| settings | `ColorScaleSettings` | `{ colorSpace: 'rgb' }` | Color scale generation settings. |
|
|
854
|
+
| [settings.colorSpace] | `'rgb' \| 'hsl' \| 'hsb' \| 'hcl'` | `'rgb'` | Color scale color space. |
|
|
855
|
+
|
|
856
|
+
##### HCL color scales
|
|
857
|
+
|
|
858
|
+
HCL color scales come with a bunch of other settings, so when `settings.colorSpace` is equal to `'hcl'`, the following settings are parameterable:
|
|
859
|
+
|
|
860
|
+
| Parameter | Type | Default | Description |
|
|
861
|
+
| -------------------------- | ---------------------------------------------- | ------- | ---------------------------------------- |
|
|
862
|
+
| [settings.mode] | `'qualitative' \| 'sequential' \| 'diverging'` | | Color scale mode. |
|
|
863
|
+
| [settings.triangular] | `number` | | Triangular interpolation `target` value. |
|
|
864
|
+
| [settings.powerStrength] | `number` | `1` | Interpolation power strength value. |
|
|
865
|
+
| [settings.hueOffset] | `number` | `0` | Target color hue offset. |
|
|
866
|
+
| [settings.chromaOffset] | `number` | `0` | Target color chroma offset. |
|
|
867
|
+
| [settings.luminanceOffset] | `number` | `0` | Target color luminance offset. |
|
|
868
|
+
|
|
869
|
+
Learn more about [HCL-Based Color Palettes](https://colorspace.r-forge.r-project.org/articles/hcl_palettes.html).
|
|
870
|
+
|
|
871
|
+
#### Properties
|
|
872
|
+
|
|
873
|
+
##### colors <a id="color-scale-colors"></a>
|
|
874
|
+
|
|
875
|
+
Array of colors composing the color scale.
|
|
876
|
+
|
|
877
|
+
```ts
|
|
878
|
+
ColorScale.colors: Array<[number, number, number]>;
|
|
879
|
+
```
|
|
880
|
+
|
|
881
|
+
#### Methods
|
|
882
|
+
|
|
883
|
+
##### `static` generate(input, target, length) <a id="color-scale-static-generate-method"></a>
|
|
884
|
+
|
|
885
|
+
Static method for generating a color scale.
|
|
886
|
+
|
|
887
|
+
- `input`: Input color representation.
|
|
888
|
+
- `target`: Target color representation.
|
|
889
|
+
- `length`: Amount of colors composing the color scale.
|
|
890
|
+
- `[settings]`: Color scale generation settings.
|
|
891
|
+
|
|
382
892
|
```ts
|
|
383
|
-
|
|
384
|
-
|
|
893
|
+
static ColorScale.generate(
|
|
894
|
+
input: ColorRepresentation,
|
|
895
|
+
target: ColorRepresentation,
|
|
896
|
+
length: number,
|
|
897
|
+
settings?: ColorScaleSettings
|
|
898
|
+
): Array<[number, number, number]>;
|
|
385
899
|
```
|
|
386
900
|
|
|
901
|
+
##### `static` interpolate(inputColor, targetColor, value) <a id="color-scale-static-interpolate-method"></a>
|
|
902
|
+
|
|
903
|
+
Static method for interpolating between colors.
|
|
904
|
+
|
|
905
|
+
- `inputColor`: Input color.
|
|
906
|
+
- `targetColor`: Target color.
|
|
907
|
+
- `value`: Interpolation normalized value.
|
|
908
|
+
- `[settings]`: Color scale settings.
|
|
909
|
+
|
|
910
|
+
```ts
|
|
911
|
+
static ColorScale.interpolate(
|
|
912
|
+
inputColor: [number, number, number],
|
|
913
|
+
targetColor: [number, number, number],
|
|
914
|
+
value: number,
|
|
915
|
+
settings?: ColorScaleSettings
|
|
916
|
+
): [number, number, number];
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
### Frame rate
|
|
920
|
+
|
|
921
|
+
Utility class for controlling FPS calls.
|
|
922
|
+
|
|
923
|
+
- [new FrameRate()](#frame-rate-constructor)
|
|
924
|
+
- [.fps](#frame-rate-fps): `number`
|
|
925
|
+
- [.update()](#frame-rate-update-method): `boolean`
|
|
926
|
+
|
|
927
|
+
#### Constructor <a id="frame-rate-constructor"></a>
|
|
928
|
+
|
|
929
|
+
| Parameter | Type | Default | Description |
|
|
930
|
+
| --------- | -------- | ------- | ----------------------- |
|
|
931
|
+
| fps | `number` | `30` | Frame per second limit. |
|
|
932
|
+
|
|
933
|
+
#### Properties
|
|
934
|
+
|
|
935
|
+
##### fps <a id="frame-rate-fps"></a>
|
|
936
|
+
|
|
937
|
+
Frame per second limit.
|
|
938
|
+
|
|
939
|
+
```ts
|
|
940
|
+
FrameRate.fps: number;
|
|
941
|
+
```
|
|
942
|
+
|
|
943
|
+
#### Methods
|
|
944
|
+
|
|
945
|
+
##### update() <a id="frame-rate-update-method"></a>
|
|
946
|
+
|
|
947
|
+
Return true if elapsed time since last update is higher than current FPS.
|
|
948
|
+
|
|
387
949
|
```ts
|
|
388
|
-
|
|
389
|
-
cleanPath(path: string) => string;
|
|
950
|
+
FrameRate.update(): boolean;
|
|
390
951
|
```
|
|
391
952
|
|
|
392
953
|
## Constants
|