toosoon-utils 1.1.0 → 1.2.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/src/constants.ts CHANGED
@@ -14,159 +14,159 @@ export const QUARTER_PI = Math.PI / 4;
14
14
  // X11 colors
15
15
  // -> https://www.w3.org/TR/css-color-3/#svg-color
16
16
  export const W3CX11 = {
17
- aliceblue: '#f0f8ff',
18
- antiquewhite: '#faebd7',
19
- aqua: '#00ffff',
20
- aquamarine: '#7fffd4',
21
- azure: '#f0ffff',
22
- beige: '#f5f5dc',
23
- bisque: '#ffe4c4',
24
- black: '#000000',
25
- blanchedalmond: '#ffebcd',
26
- blue: '#0000ff',
27
- blueviolet: '#8a2be2',
28
- brown: '#a52a2a',
29
- burlywood: '#deb887',
30
- cadetblue: '#5f9ea0',
31
- chartreuse: '#7fff00',
32
- chocolate: '#d2691e',
33
- coral: '#ff7f50',
34
- cornflower: '#6495ed',
35
- cornflowerblue: '#6495ed',
36
- cornsilk: '#fff8dc',
37
- crimson: '#dc143c',
38
- cyan: '#00ffff',
39
- darkblue: '#00008b',
40
- darkcyan: '#008b8b',
41
- darkgoldenrod: '#b8860b',
42
- darkgray: '#a9a9a9',
43
- darkgreen: '#006400',
44
- darkgrey: '#a9a9a9',
45
- darkkhaki: '#bdb76b',
46
- darkmagenta: '#8b008b',
47
- darkolivegreen: '#556b2f',
48
- darkorange: '#ff8c00',
49
- darkorchid: '#9932cc',
50
- darkred: '#8b0000',
51
- darksalmon: '#e9967a',
52
- darkseagreen: '#8fbc8f',
53
- darkslateblue: '#483d8b',
54
- darkslategray: '#2f4f4f',
55
- darkslategrey: '#2f4f4f',
56
- darkturquoise: '#00ced1',
57
- darkviolet: '#9400d3',
58
- deeppink: '#ff1493',
59
- deepskyblue: '#00bfff',
60
- dimgray: '#696969',
61
- dimgrey: '#696969',
62
- dodgerblue: '#1e90ff',
63
- firebrick: '#b22222',
64
- floralwhite: '#fffaf0',
65
- forestgreen: '#228b22',
66
- fuchsia: '#ff00ff',
67
- gainsboro: '#dcdcdc',
68
- ghostwhite: '#f8f8ff',
69
- gold: '#ffd700',
70
- goldenrod: '#daa520',
71
- gray: '#808080',
72
- green: '#008000',
73
- greenyellow: '#adff2f',
74
- grey: '#808080',
75
- honeydew: '#f0fff0',
76
- hotpink: '#ff69b4',
77
- indianred: '#cd5c5c',
78
- indigo: '#4b0082',
79
- ivory: '#fffff0',
80
- khaki: '#f0e68c',
81
- laserlemon: '#ffff54',
82
- lavender: '#e6e6fa',
83
- lavenderblush: '#fff0f5',
84
- lawngreen: '#7cfc00',
85
- lemonchiffon: '#fffacd',
86
- lightblue: '#add8e6',
87
- lightcoral: '#f08080',
88
- lightcyan: '#e0ffff',
89
- lightgoldenrod: '#fafad2',
90
- lightgoldenrodyellow: '#fafad2',
91
- lightgray: '#d3d3d3',
92
- lightgreen: '#90ee90',
93
- lightgrey: '#d3d3d3',
94
- lightpink: '#ffb6c1',
95
- lightsalmon: '#ffa07a',
96
- lightseagreen: '#20b2aa',
97
- lightskyblue: '#87cefa',
98
- lightslategray: '#778899',
99
- lightslategrey: '#778899',
100
- lightsteelblue: '#b0c4de',
101
- lightyellow: '#ffffe0',
102
- lime: '#00ff00',
103
- limegreen: '#32cd32',
104
- linen: '#faf0e6',
105
- magenta: '#ff00ff',
106
- maroon: '#800000',
107
- maroon2: '#7f0000',
108
- maroon3: '#b03060',
109
- mediumaquamarine: '#66cdaa',
110
- mediumblue: '#0000cd',
111
- mediumorchid: '#ba55d3',
112
- mediumpurple: '#9370db',
113
- mediumseagreen: '#3cb371',
114
- mediumslateblue: '#7b68ee',
115
- mediumspringgreen: '#00fa9a',
116
- mediumturquoise: '#48d1cc',
117
- mediumvioletred: '#c71585',
118
- midnightblue: '#191970',
119
- mintcream: '#f5fffa',
120
- mistyrose: '#ffe4e1',
121
- moccasin: '#ffe4b5',
122
- navajowhite: '#ffdead',
123
- navy: '#000080',
124
- oldlace: '#fdf5e6',
125
- olive: '#808000',
126
- olivedrab: '#6b8e23',
127
- orange: '#ffa500',
128
- orangered: '#ff4500',
129
- orchid: '#da70d6',
130
- palegoldenrod: '#eee8aa',
131
- palegreen: '#98fb98',
132
- paleturquoise: '#afeeee',
133
- palevioletred: '#db7093',
134
- papayawhip: '#ffefd5',
135
- peachpuff: '#ffdab9',
136
- peru: '#cd853f',
137
- pink: '#ffc0cb',
138
- plum: '#dda0dd',
139
- powderblue: '#b0e0e6',
140
- purple: '#800080',
141
- purple2: '#7f007f',
142
- purple3: '#a020f0',
143
- rebeccapurple: '#663399',
144
- red: '#ff0000',
145
- rosybrown: '#bc8f8f',
146
- royalblue: '#4169e1',
147
- saddlebrown: '#8b4513',
148
- salmon: '#fa8072',
149
- sandybrown: '#f4a460',
150
- seagreen: '#2e8b57',
151
- seashell: '#fff5ee',
152
- sienna: '#a0522d',
153
- silver: '#c0c0c0',
154
- skyblue: '#87ceeb',
155
- slateblue: '#6a5acd',
156
- slategray: '#708090',
157
- slategrey: '#708090',
158
- snow: '#fffafa',
159
- springgreen: '#00ff7f',
160
- steelblue: '#4682b4',
161
- tan: '#d2b48c',
162
- teal: '#008080',
163
- thistle: '#d8bfd8',
164
- tomato: '#ff6347',
165
- turquoise: '#40e0d0',
166
- violet: '#ee82ee',
167
- wheat: '#f5deb3',
168
- white: '#ffffff',
169
- whitesmoke: '#f5f5f5',
170
- yellow: '#ffff00',
171
- yellowgreen: '#9acd32'
17
+ aliceblue: 0xf0f8ff,
18
+ antiquewhite: 0xfaebd7,
19
+ aqua: 0x00ffff,
20
+ aquamarine: 0x7fffd4,
21
+ azure: 0xf0ffff,
22
+ beige: 0xf5f5dc,
23
+ bisque: 0xffe4c4,
24
+ black: 0x000000,
25
+ blanchedalmond: 0xffebcd,
26
+ blue: 0x0000ff,
27
+ blueviolet: 0x8a2be2,
28
+ brown: 0xa52a2a,
29
+ burlywood: 0xdeb887,
30
+ cadetblue: 0x5f9ea0,
31
+ chartreuse: 0x7fff00,
32
+ chocolate: 0xd2691e,
33
+ coral: 0xff7f50,
34
+ cornflower: 0x6495ed,
35
+ cornflowerblue: 0x6495ed,
36
+ cornsilk: 0xfff8dc,
37
+ crimson: 0xdc143c,
38
+ cyan: 0x00ffff,
39
+ darkblue: 0x00008b,
40
+ darkcyan: 0x008b8b,
41
+ darkgoldenrod: 0xb8860b,
42
+ darkgray: 0xa9a9a9,
43
+ darkgreen: 0x006400,
44
+ darkgrey: 0xa9a9a9,
45
+ darkkhaki: 0xbdb76b,
46
+ darkmagenta: 0x8b008b,
47
+ darkolivegreen: 0x556b2f,
48
+ darkorange: 0xff8c00,
49
+ darkorchid: 0x9932cc,
50
+ darkred: 0x8b0000,
51
+ darksalmon: 0xe9967a,
52
+ darkseagreen: 0x8fbc8f,
53
+ darkslateblue: 0x483d8b,
54
+ darkslategray: 0x2f4f4f,
55
+ darkslategrey: 0x2f4f4f,
56
+ darkturquoise: 0x00ced1,
57
+ darkviolet: 0x9400d3,
58
+ deeppink: 0xff1493,
59
+ deepskyblue: 0x00bfff,
60
+ dimgray: 0x696969,
61
+ dimgrey: 0x696969,
62
+ dodgerblue: 0x1e90ff,
63
+ firebrick: 0xb22222,
64
+ floralwhite: 0xfffaf0,
65
+ forestgreen: 0x228b22,
66
+ fuchsia: 0xff00ff,
67
+ gainsboro: 0xdcdcdc,
68
+ ghostwhite: 0xf8f8ff,
69
+ gold: 0xffd700,
70
+ goldenrod: 0xdaa520,
71
+ gray: 0x808080,
72
+ green: 0x008000,
73
+ greenyellow: 0xadff2f,
74
+ grey: 0x808080,
75
+ honeydew: 0xf0fff0,
76
+ hotpink: 0xff69b4,
77
+ indianred: 0xcd5c5c,
78
+ indigo: 0x4b0082,
79
+ ivory: 0xfffff0,
80
+ khaki: 0xf0e68c,
81
+ laserlemon: 0xffff54,
82
+ lavender: 0xe6e6fa,
83
+ lavenderblush: 0xfff0f5,
84
+ lawngreen: 0x7cfc00,
85
+ lemonchiffon: 0xfffacd,
86
+ lightblue: 0xadd8e6,
87
+ lightcoral: 0xf08080,
88
+ lightcyan: 0xe0ffff,
89
+ lightgoldenrod: 0xfafad2,
90
+ lightgoldenrodyellow: 0xfafad2,
91
+ lightgray: 0xd3d3d3,
92
+ lightgreen: 0x90ee90,
93
+ lightgrey: 0xd3d3d3,
94
+ lightpink: 0xffb6c1,
95
+ lightsalmon: 0xffa07a,
96
+ lightseagreen: 0x20b2aa,
97
+ lightskyblue: 0x87cefa,
98
+ lightslategray: 0x778899,
99
+ lightslategrey: 0x778899,
100
+ lightsteelblue: 0xb0c4de,
101
+ lightyellow: 0xffffe0,
102
+ lime: 0x00ff00,
103
+ limegreen: 0x32cd32,
104
+ linen: 0xfaf0e6,
105
+ magenta: 0xff00ff,
106
+ maroon: 0x800000,
107
+ maroon2: 0x7f0000,
108
+ maroon3: 0xb03060,
109
+ mediumaquamarine: 0x66cdaa,
110
+ mediumblue: 0x0000cd,
111
+ mediumorchid: 0xba55d3,
112
+ mediumpurple: 0x9370db,
113
+ mediumseagreen: 0x3cb371,
114
+ mediumslateblue: 0x7b68ee,
115
+ mediumspringgreen: 0x00fa9a,
116
+ mediumturquoise: 0x48d1cc,
117
+ mediumvioletred: 0xc71585,
118
+ midnightblue: 0x191970,
119
+ mintcream: 0xf5fffa,
120
+ mistyrose: 0xffe4e1,
121
+ moccasin: 0xffe4b5,
122
+ navajowhite: 0xffdead,
123
+ navy: 0x000080,
124
+ oldlace: 0xfdf5e6,
125
+ olive: 0x808000,
126
+ olivedrab: 0x6b8e23,
127
+ orange: 0xffa500,
128
+ orangered: 0xff4500,
129
+ orchid: 0xda70d6,
130
+ palegoldenrod: 0xeee8aa,
131
+ palegreen: 0x98fb98,
132
+ paleturquoise: 0xafeeee,
133
+ palevioletred: 0xdb7093,
134
+ papayawhip: 0xffefd5,
135
+ peachpuff: 0xffdab9,
136
+ peru: 0xcd853f,
137
+ pink: 0xffc0cb,
138
+ plum: 0xdda0dd,
139
+ powderblue: 0xb0e0e6,
140
+ purple: 0x800080,
141
+ purple2: 0x7f007f,
142
+ purple3: 0xa020f0,
143
+ rebeccapurple: 0x663399,
144
+ red: 0xff0000,
145
+ rosybrown: 0xbc8f8f,
146
+ royalblue: 0x4169e1,
147
+ saddlebrown: 0x8b4513,
148
+ salmon: 0xfa8072,
149
+ sandybrown: 0xf4a460,
150
+ seagreen: 0x2e8b57,
151
+ seashell: 0xfff5ee,
152
+ sienna: 0xa0522d,
153
+ silver: 0xc0c0c0,
154
+ skyblue: 0x87ceeb,
155
+ slateblue: 0x6a5acd,
156
+ slategray: 0x708090,
157
+ slategrey: 0x708090,
158
+ snow: 0xfffafa,
159
+ springgreen: 0x00ff7f,
160
+ steelblue: 0x4682b4,
161
+ tan: 0xd2b48c,
162
+ teal: 0x008080,
163
+ thistle: 0xd8bfd8,
164
+ tomato: 0xff6347,
165
+ turquoise: 0x40e0d0,
166
+ violet: 0xee82ee,
167
+ wheat: 0xf5deb3,
168
+ white: 0xffffff,
169
+ whitesmoke: 0xf5f5f5,
170
+ yellow: 0xffff00,
171
+ yellowgreen: 0x9acd32
172
172
  };
package/src/dom.ts CHANGED
@@ -39,11 +39,11 @@ export function createCanvas(
39
39
  /**
40
40
  * Inject CSS styles in `document.head`
41
41
  *
42
- * @param {string} cssContent CSS style to inject
42
+ * @param {string} styles CSS styles to inject
43
43
  */
44
- export function injectStyles(cssContent: string): void {
44
+ export function injectStyles(styles: string): void {
45
45
  const $style = document.createElement('style');
46
- $style.innerHTML = cssContent;
46
+ $style.innerHTML = styles;
47
47
  const $before = document.querySelector('head link[rel=stylesheet], head style');
48
48
  if ($before) document.head.insertBefore($style, $before);
49
49
  else document.head.appendChild($style);
package/src/files.ts CHANGED
@@ -20,7 +20,7 @@ export function download(blob: Blob, filename: string): void {
20
20
  * Upload a file from user files
21
21
  *
22
22
  * @param {Function} onLoad Callback called once the file is loaded
23
- * @param {string} [accept=''] Types the file input should accept
23
+ * @param {string} [accept=''] MIME type the file input should accept
24
24
  */
25
25
  export function upload(onLoad: (dataUrl: string) => void, accept: string = ''): void {
26
26
  const input = document.createElement('input');
package/src/functions.ts CHANGED
@@ -8,10 +8,10 @@ export const noop: () => void = () => {};
8
8
  /**
9
9
  * Promise wrapped setTimeout
10
10
  *
11
- * @param {number} timeout Time in ms
11
+ * @param {number} [timeout=0] Time to wait (in milliseconds)
12
12
  * @returns {Promise}
13
13
  */
14
- export function wait(timeout: number): Promise<void> {
14
+ export function wait(timeout: number = 0): Promise<void> {
15
15
  return new Promise((resolve) => setTimeout(resolve, timeout));
16
16
  }
17
17
 
@@ -29,3 +29,28 @@ export function defer<T = void>(): Deferred<T> {
29
29
  });
30
30
  return { promise, resolve, reject };
31
31
  }
32
+
33
+ /**
34
+ * Polyfill for `now()` functions
35
+ */
36
+ export let now: () => number;
37
+
38
+ // In node.js, use `process.hrtime`
39
+ if (typeof process !== 'undefined' && process.hrtime) {
40
+ now = function () {
41
+ // Convert [seconds, nanoseconds] to milliseconds
42
+ const time = process.hrtime();
43
+ return time[0] * 1000 + time[1] / 1000000;
44
+ };
45
+ }
46
+ // In a browser use `performance` or `Date`
47
+ else if (typeof performance !== 'undefined') {
48
+ // This must be bound, because directly assigning this function leads to an invocation exception in Chrome
49
+ now = performance.now.bind(performance);
50
+ } else if (typeof Date.now !== 'undefined') {
51
+ now = Date.now;
52
+ } else {
53
+ now = function () {
54
+ return new Date().getTime();
55
+ };
56
+ }
package/src/geometry.ts CHANGED
@@ -76,8 +76,8 @@ export function diagonal(width: number, height: number): number {
76
76
  * Convert radians to a 3D point on the surface of a unit sphere
77
77
  *
78
78
  * @param {number} radius Radius of the sphere
79
- * @param {number} phi Polar angle from the y (up) axis : 0 to PI
80
- * @param {number} theta Equator angle around the y (up) axis : 0 to 2 PI
79
+ * @param {number} phi Polar angle from the y (up) axis : [0, PI]
80
+ * @param {number} theta Equator angle around the y (up) axis : [0, 2*PI]
81
81
  * @param {Vector3} target Target vector
82
82
  * @returns {Vector3}
83
83
  */
package/src/maths.ts CHANGED
@@ -42,12 +42,12 @@ export function toPowerOf2(value: number, mode: 'floor' | 'ceil' | 'round' = 'ce
42
42
  /**
43
43
  * Return the sign (positive or negative) of a number
44
44
  *
45
- * @param {number} number Value to check
45
+ * @param {number} value Value to check
46
46
  * @returns {number} 1 if the given number is positive, -1 if it is negative, otherwise 0
47
47
  */
48
- export function sign(number: number): number {
49
- if (number > 0) return 1;
50
- else if (number < 0) return -1;
48
+ export function sign(value: number): number {
49
+ if (value > 0) return 1;
50
+ else if (value < 0) return -1;
51
51
  return 0;
52
52
  }
53
53
 
@@ -92,13 +92,24 @@ export function triLerp(value: number, min: number, max: number, target: number)
92
92
  /**
93
93
  * Exponential interpolation between two values
94
94
  *
95
- * @param {number} value Normalized value to interpolate
96
- * @param {number} min Minimum value
97
- * @param {number} max Maximum value
95
+ * @param {number} value Value to interpolate
96
+ * @param {number} currentMin Lower bound of the value's current range
97
+ * @param {number} currentMax Upper bound of the value's current range
98
+ * @param {number} targetMin Lower bound of the value's target range
99
+ * @param {number} targetMax Upper bound of the value's target range
98
100
  * @returns {number} Interpolated value
99
101
  */
100
- export function expLerp(value: number, min: number, max: number): number {
101
- return Math.pow(min, 1 - value) * Math.pow(max, value);
102
+ export function expLerp(
103
+ value: number,
104
+ currentMin: number,
105
+ currentMax: number,
106
+ targetMin: number,
107
+ targetMax: number
108
+ ): number {
109
+ return (
110
+ targetMin *
111
+ Math.pow(targetMax / targetMin, (clamp(value, currentMin, currentMax) - currentMin) / (currentMax - currentMin))
112
+ );
102
113
  }
103
114
 
104
115
  /**
@@ -137,7 +148,7 @@ export function map(
137
148
  * Round a number up to a nearest multiple
138
149
  *
139
150
  * @param {number} value Value to round
140
- * @param {number} [multiple=1] Multiple
151
+ * @param {number} [multiple=1] Multiple to round to
141
152
  * @returns {number} Closest multiple
142
153
  */
143
154
  export function roundTo(value: number, multiple: number = 1): number {
@@ -199,7 +210,7 @@ export function parabola(x: number, power: number = 1): number {
199
210
  /**
200
211
  * Return the sum of numbers
201
212
  *
202
- * @param {number[]} array Array of number
213
+ * @param {number[]} array Array of numbers
203
214
  * @returns {number} Total sum
204
215
  */
205
216
  export function sum(array: number[]): number {
@@ -209,7 +220,7 @@ export function sum(array: number[]): number {
209
220
  /**
210
221
  * Return the average of numbers
211
222
  *
212
- * @param {number[]} array Array of number
223
+ * @param {number[]} array Array of numbers
213
224
  * @returns {number} Total average
214
225
  */
215
226
  export function average(array: number[]): number {
package/src/random.ts CHANGED
@@ -2,10 +2,10 @@ import { radToSphere } from './geometry';
2
2
  import { Vector2, Vector3 } from './types';
3
3
 
4
4
  /**
5
- * Generate a random boolean (true or false)
5
+ * Generate a random boolean (`true` or `false`)
6
6
  *
7
- * @param {number} [probability=0.5] Probability to get true
8
- * @returns {boolean} Either true or false
7
+ * @param {number} [probability=0.5] Probability to get `true`
8
+ * @returns {boolean} Either `true` or `false`
9
9
  */
10
10
  export function randomBoolean(probability: number = 0.5): boolean {
11
11
  return Math.random() < probability;
@@ -22,11 +22,11 @@ export function randomSign(probability: number = 0.5): number {
22
22
  }
23
23
 
24
24
  /**
25
- * Generate a random float number
25
+ * Generate a random floating-point number within a specified range
26
26
  *
27
- * @param {number} [min=0] Minimum boundary
28
- * @param {number} [max=1] Maximum boundary
29
- * @param {number} [precision=2] Number of digits after the decimal point
27
+ * @param {number} [min=0] Minimum boundary
28
+ * @param {number} [max=1] Maximum boundary
29
+ * @param {number} [precision=2] Number of digits after the decimal point
30
30
  * @returns {number} Generated float
31
31
  */
32
32
  export function randomFloat(min: number = 0, max: number = 1, precision: number = 2): number {
@@ -34,7 +34,7 @@ export function randomFloat(min: number = 0, max: number = 1, precision: number
34
34
  }
35
35
 
36
36
  /**
37
- * Generate a random integer number
37
+ * Generate a random integer number within a specified range
38
38
  *
39
39
  * @param {number} min Minimum boundary
40
40
  * @param {number} max Maximum boundary
@@ -47,28 +47,28 @@ export function randomInt(min: number, max: number): number {
47
47
  /**
48
48
  * Generate a random hexadecimal color
49
49
  *
50
- * @returns {string} Hexadecimal color
50
+ * @returns {string} Generated hexadecimal color
51
51
  */
52
52
  export function randomHexColor(): string {
53
53
  return '#' + ('00000' + ((Math.random() * (1 << 24)) | 0).toString(16)).slice(-6);
54
54
  }
55
55
 
56
56
  /**
57
- * Pick a random item from an array
57
+ * Pick a random item from a given array
58
58
  *
59
- * @param {T[]} [array=[]] Array to pick the item from
59
+ * @param {T[]} array Array to pick the item from
60
60
  * @returns {T|undefined} Random item picked
61
61
  */
62
- export function randomItem<T = unknown>(array: T[] = []): T | undefined {
62
+ export function randomItem<T = unknown>(array: T[]): T | undefined {
63
63
  if (array.length === 0) return undefined;
64
64
  return array[randomInt(0, array.length - 1)];
65
65
  }
66
66
 
67
67
  /**
68
- * Pick a random property from an object
68
+ * Pick a random property value from a given object
69
69
  *
70
70
  * @param {object} object Object to pick the property from
71
- * @returns {unknown|undefined} Random item picked
71
+ * @returns {T|undefined} Random item picked
72
72
  */
73
73
  export function randomObjectProperty<T = unknown>(object: { [key: string]: T }): T | undefined {
74
74
  const keys = Object.keys(object);
@@ -79,12 +79,12 @@ export function randomObjectProperty<T = unknown>(object: { [key: string]: T }):
79
79
  }
80
80
 
81
81
  /**
82
- * Return a random index from an array of weights
82
+ * Select a random index from an array of weighted items
83
83
  *
84
84
  * @param {number[]} weights Array of weights
85
85
  * @returns {number} Random index based on weights
86
86
  */
87
- export function randomIndex(weights: number[] = []): number {
87
+ export function randomIndex(weights: number[]): number {
88
88
  if (weights.length === 0) return -1;
89
89
 
90
90
  let totalWeight = 0;
@@ -111,8 +111,8 @@ export function randomIndex(weights: number[] = []): number {
111
111
  /**
112
112
  * Produce a random 2D point around the perimiter of a unit circle
113
113
  *
114
- * @param {number} [radius=1] Radius of the circle
115
- * @param {Vector2} target Target vector
114
+ * @param {number} [radius=1] Radius of the circle
115
+ * @param {Vector2} [target] Target vector
116
116
  * @returns {Vector2} Random 2D point on circle
117
117
  */
118
118
  export function onCircle(radius: number = 1, target: Vector2 = { x: 0, y: 0 }): Vector2 {
@@ -125,8 +125,8 @@ export function onCircle(radius: number = 1, target: Vector2 = { x: 0, y: 0 }):
125
125
  /**
126
126
  * Produce a random 2D point inside a unit circle
127
127
  *
128
- * @param {number} [radius=1] Radius of the circle
129
- * @param {Vector2} target Target vector
128
+ * @param {number} [radius=1] Radius of the circle
129
+ * @param {Vector2} [target] Target vector
130
130
  * @returns {Vector2} Random 2D point inside circle
131
131
  */
132
132
  export function insideCircle(radius: number = 1, target: Vector2 = { x: 0, y: 0 }): Vector2 {
@@ -137,8 +137,8 @@ export function insideCircle(radius: number = 1, target: Vector2 = { x: 0, y: 0
137
137
  /**
138
138
  * Produce a random 3D point on the surface of a unit sphere
139
139
  *
140
- * @param {number} [radius=1] Radius of the sphere
141
- * @param {Vector3} target Target vector
140
+ * @param {number} [radius=1] Radius of the sphere
141
+ * @param {Vector3} [target] Target vector
142
142
  * @returns {Vector3} Random 3D point on sphere
143
143
  */
144
144
  export function onSphere(radius: number = 1, target: Vector3 = { x: 0, y: 0, z: 0 }): Vector3 {
@@ -152,8 +152,8 @@ export function onSphere(radius: number = 1, target: Vector3 = { x: 0, y: 0, z:
152
152
  /**
153
153
  * Produce a random 3D point inside a unit sphere
154
154
  *
155
- * @param {number} [radius=1] Radius of the sphere
156
- * @param {Vector3} target Target vector
155
+ * @param {number} [radius=1] Radius of the sphere
156
+ * @param {Vector3} [target] Target vector
157
157
  * @returns {Vector3} Random 3D point inside sphere
158
158
  */
159
159
  export function insideSphere(radius: number = 1, target: Vector3 = { x: 0, y: 0, z: 0 }): Vector3 {
package/src/types.ts CHANGED
@@ -1,3 +1,21 @@
1
+ import { W3CX11 } from './constants';
2
+
3
+ // *********************
4
+ // Colors
5
+ // *********************
6
+ export type ColorName = keyof typeof W3CX11;
7
+
8
+ export type ColorRepresentation = ColorName | string | number | [number, number, number];
9
+
10
+ // *********************
11
+ // Functions
12
+ // *********************
13
+ export interface Deferred<T> {
14
+ promise: Promise<T>;
15
+ resolve: (value: T | PromiseLike<T>) => void;
16
+ reject: (reason?: unknown) => void;
17
+ }
18
+
1
19
  // *********************
2
20
  // Geometry
3
21
  // *********************
@@ -13,12 +31,3 @@ export interface Vector3 extends Vector2 {
13
31
  export interface Vector4 extends Vector3 {
14
32
  w: number;
15
33
  }
16
-
17
- // *********************
18
- // Functions
19
- // *********************
20
- export interface Deferred<T> {
21
- promise: Promise<T>;
22
- resolve: (value: T | PromiseLike<T>) => void;
23
- reject: (reason?: unknown) => void;
24
- }
package/tsconfig.json CHANGED
@@ -5,7 +5,8 @@
5
5
  "baseUrl": ".",
6
6
  "outDir": "lib",
7
7
  "target": "ES5",
8
- "module": "NodeNext",
8
+ "module": "ESNext",
9
+ "moduleResolution": "Bundler",
9
10
  "lib": ["DOM", "ESNext"],
10
11
  "allowJs": true,
11
12
  "allowSyntheticDefaultImports": true,
package/src/now.ts DELETED
@@ -1,26 +0,0 @@
1
- /**
2
- * Polyfill for "now()" functions
3
- */
4
- let now: () => number;
5
-
6
- // In node.js, use process.hrtime
7
- if (typeof process !== 'undefined' && process.hrtime) {
8
- now = function () {
9
- // Convert [seconds, nanoseconds] to milliseconds
10
- const time = process.hrtime();
11
- return time[0] * 1000 + time[1] / 1000000;
12
- };
13
- }
14
- // In a browser use performance or Date
15
- else if (typeof performance !== 'undefined') {
16
- // This must be bound, because directly assigning this function leads to an invocation exception in Chrome
17
- now = performance.now.bind(performance);
18
- } else if (typeof Date.now !== 'undefined') {
19
- now = Date.now;
20
- } else {
21
- now = function () {
22
- return new Date().getTime();
23
- };
24
- }
25
-
26
- export default now;