@vived/core 1.0.1 → 1.1.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.
Files changed (94) hide show
  1. package/dist/cjs/Utilities/LengthConverters.js +21 -0
  2. package/dist/cjs/Utilities/LengthConverters.js.map +1 -0
  3. package/dist/cjs/Utilities/LengthConverters.test.js +24 -0
  4. package/dist/cjs/Utilities/LengthConverters.test.js.map +1 -0
  5. package/dist/cjs/Utilities/LerpNumber.js +85 -0
  6. package/dist/cjs/Utilities/LerpNumber.js.map +1 -0
  7. package/dist/cjs/Utilities/LerpNumber.test.js +90 -0
  8. package/dist/cjs/Utilities/LerpNumber.test.js.map +1 -0
  9. package/dist/cjs/Utilities/degreesToRadians.js +7 -0
  10. package/dist/cjs/Utilities/degreesToRadians.js.map +1 -0
  11. package/dist/cjs/Utilities/degreesToRadians.test.js +9 -0
  12. package/dist/cjs/Utilities/degreesToRadians.test.js.map +1 -0
  13. package/dist/cjs/Utilities/easeFunctions.js +208 -0
  14. package/dist/cjs/Utilities/easeFunctions.js.map +1 -0
  15. package/dist/cjs/Utilities/easeFunctions.test.js +209 -0
  16. package/dist/cjs/Utilities/easeFunctions.test.js.map +1 -0
  17. package/dist/cjs/Utilities/generateUniqueID.js +8 -0
  18. package/dist/cjs/Utilities/generateUniqueID.js.map +1 -0
  19. package/dist/cjs/Utilities/index.js +22 -0
  20. package/dist/cjs/Utilities/index.js.map +1 -0
  21. package/dist/cjs/Utilities/interpolateNumber.js +18 -0
  22. package/dist/cjs/Utilities/interpolateNumber.js.map +1 -0
  23. package/dist/cjs/Utilities/interpolateNumber.test.js +26 -0
  24. package/dist/cjs/Utilities/interpolateNumber.test.js.map +1 -0
  25. package/dist/cjs/index.js +1 -0
  26. package/dist/cjs/index.js.map +1 -1
  27. package/dist/esm/Utilities/LengthConverters.js +15 -0
  28. package/dist/esm/Utilities/LengthConverters.js.map +1 -0
  29. package/dist/esm/Utilities/LengthConverters.test.js +22 -0
  30. package/dist/esm/Utilities/LengthConverters.test.js.map +1 -0
  31. package/dist/esm/Utilities/LerpNumber.js +81 -0
  32. package/dist/esm/Utilities/LerpNumber.js.map +1 -0
  33. package/dist/esm/Utilities/LerpNumber.test.js +88 -0
  34. package/dist/esm/Utilities/LerpNumber.test.js.map +1 -0
  35. package/dist/esm/Utilities/degreesToRadians.js +4 -0
  36. package/dist/esm/Utilities/degreesToRadians.js.map +1 -0
  37. package/dist/esm/Utilities/degreesToRadians.test.js +7 -0
  38. package/dist/esm/Utilities/degreesToRadians.test.js.map +1 -0
  39. package/dist/esm/Utilities/easeFunctions.js +183 -0
  40. package/dist/esm/Utilities/easeFunctions.js.map +1 -0
  41. package/dist/esm/Utilities/easeFunctions.test.js +207 -0
  42. package/dist/esm/Utilities/easeFunctions.test.js.map +1 -0
  43. package/dist/esm/Utilities/generateUniqueID.js +5 -0
  44. package/dist/esm/Utilities/generateUniqueID.js.map +1 -0
  45. package/dist/esm/Utilities/index.js +6 -0
  46. package/dist/esm/Utilities/index.js.map +1 -0
  47. package/dist/esm/Utilities/interpolateNumber.js +15 -0
  48. package/dist/esm/Utilities/interpolateNumber.js.map +1 -0
  49. package/dist/esm/Utilities/interpolateNumber.test.js +24 -0
  50. package/dist/esm/Utilities/interpolateNumber.test.js.map +1 -0
  51. package/dist/esm/index.js +1 -0
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  54. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  55. package/dist/types/Utilities/LengthConverters.d.ts +5 -0
  56. package/dist/types/Utilities/LengthConverters.d.ts.map +1 -0
  57. package/dist/types/Utilities/LengthConverters.test.d.ts +2 -0
  58. package/dist/types/Utilities/LengthConverters.test.d.ts.map +1 -0
  59. package/dist/types/Utilities/LerpNumber.d.ts +57 -0
  60. package/dist/types/Utilities/LerpNumber.d.ts.map +1 -0
  61. package/dist/types/Utilities/LerpNumber.test.d.ts +2 -0
  62. package/dist/types/Utilities/LerpNumber.test.d.ts.map +1 -0
  63. package/dist/types/Utilities/degreesToRadians.d.ts +2 -0
  64. package/dist/types/Utilities/degreesToRadians.d.ts.map +1 -0
  65. package/dist/types/Utilities/degreesToRadians.test.d.ts +2 -0
  66. package/dist/types/Utilities/degreesToRadians.test.d.ts.map +1 -0
  67. package/dist/types/Utilities/easeFunctions.d.ts +24 -0
  68. package/dist/types/Utilities/easeFunctions.d.ts.map +1 -0
  69. package/dist/types/Utilities/easeFunctions.test.d.ts +2 -0
  70. package/dist/types/Utilities/easeFunctions.test.d.ts.map +1 -0
  71. package/dist/types/Utilities/generateUniqueID.d.ts +2 -0
  72. package/dist/types/Utilities/generateUniqueID.d.ts.map +1 -0
  73. package/dist/types/Utilities/index.d.ts +6 -0
  74. package/dist/types/Utilities/index.d.ts.map +1 -0
  75. package/dist/types/Utilities/interpolateNumber.d.ts +2 -0
  76. package/dist/types/Utilities/interpolateNumber.d.ts.map +1 -0
  77. package/dist/types/Utilities/interpolateNumber.test.d.ts +2 -0
  78. package/dist/types/Utilities/interpolateNumber.test.d.ts.map +1 -0
  79. package/dist/types/index.d.ts +1 -0
  80. package/dist/types/index.d.ts.map +1 -1
  81. package/package.json +6 -2
  82. package/src/Utilities/LengthConverters.test.ts +30 -0
  83. package/src/Utilities/LengthConverters.ts +18 -0
  84. package/src/Utilities/LerpNumber.test.ts +109 -0
  85. package/src/Utilities/LerpNumber.ts +109 -0
  86. package/src/Utilities/degreesToRadians.test.ts +8 -0
  87. package/src/Utilities/degreesToRadians.ts +3 -0
  88. package/src/Utilities/easeFunctions.test.ts +251 -0
  89. package/src/Utilities/easeFunctions.ts +180 -0
  90. package/src/Utilities/generateUniqueID.ts +5 -0
  91. package/src/Utilities/index.ts +6 -0
  92. package/src/Utilities/interpolateNumber.test.ts +28 -0
  93. package/src/Utilities/interpolateNumber.ts +21 -0
  94. package/src/index.ts +1 -0
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const easeFunctions_1 = require("./easeFunctions");
4
+ it("Returns the proper values for ease linear", () => {
5
+ expect((0, easeFunctions_1.easeLinear)(-1)).toEqual(0);
6
+ expect((0, easeFunctions_1.easeLinear)(0)).toEqual(0);
7
+ expect((0, easeFunctions_1.easeLinear)(0.25)).toEqual(0.25);
8
+ expect((0, easeFunctions_1.easeLinear)(0.5)).toEqual(0.5);
9
+ expect((0, easeFunctions_1.easeLinear)(0.75)).toEqual(0.75);
10
+ expect((0, easeFunctions_1.easeLinear)(1)).toEqual(1);
11
+ expect((0, easeFunctions_1.easeLinear)(2)).toEqual(1);
12
+ });
13
+ // Quad
14
+ it("Returns the proper val for quad in", () => {
15
+ expect((0, easeFunctions_1.quadIn)(-1)).toEqual(0);
16
+ expect((0, easeFunctions_1.quadIn)(0)).toEqual(0);
17
+ expect((0, easeFunctions_1.quadIn)(0.25)).toEqual(0.0625);
18
+ expect((0, easeFunctions_1.quadIn)(0.5)).toEqual(0.25);
19
+ expect((0, easeFunctions_1.quadIn)(0.75)).toEqual(0.5625);
20
+ expect((0, easeFunctions_1.quadIn)(1)).toEqual(1);
21
+ expect((0, easeFunctions_1.quadIn)(2)).toEqual(1);
22
+ });
23
+ it("Returns the proper val for quad out", () => {
24
+ expect((0, easeFunctions_1.quadOut)(-1)).toEqual(0);
25
+ expect((0, easeFunctions_1.quadOut)(0)).toEqual(0);
26
+ expect((0, easeFunctions_1.quadOut)(0.25)).toEqual(0.4375);
27
+ expect((0, easeFunctions_1.quadOut)(0.5)).toEqual(0.75);
28
+ expect((0, easeFunctions_1.quadOut)(0.75)).toEqual(0.9375);
29
+ expect((0, easeFunctions_1.quadOut)(1)).toEqual(1);
30
+ expect((0, easeFunctions_1.quadOut)(2)).toEqual(1);
31
+ });
32
+ it("Returns the proper val for quad in out", () => {
33
+ expect((0, easeFunctions_1.quadInOut)(-1)).toEqual(0);
34
+ expect((0, easeFunctions_1.quadInOut)(0)).toEqual(0);
35
+ expect((0, easeFunctions_1.quadInOut)(0.25)).toEqual(0.125);
36
+ expect((0, easeFunctions_1.quadInOut)(0.5)).toEqual(0.5);
37
+ expect((0, easeFunctions_1.quadInOut)(0.75)).toEqual(0.875);
38
+ expect((0, easeFunctions_1.quadInOut)(1)).toEqual(1);
39
+ expect((0, easeFunctions_1.quadInOut)(2)).toEqual(1);
40
+ });
41
+ // Cubic
42
+ it("Returns the proper val for cubic in", () => {
43
+ expect((0, easeFunctions_1.cubicIn)(-1)).toEqual(0);
44
+ expect((0, easeFunctions_1.cubicIn)(0)).toEqual(0);
45
+ expect((0, easeFunctions_1.cubicIn)(0.25)).toEqual(0.015625);
46
+ expect((0, easeFunctions_1.cubicIn)(0.5)).toEqual(0.125);
47
+ expect((0, easeFunctions_1.cubicIn)(0.75)).toEqual(0.421875);
48
+ expect((0, easeFunctions_1.cubicIn)(1)).toEqual(1);
49
+ expect((0, easeFunctions_1.cubicIn)(2)).toEqual(1);
50
+ });
51
+ it("Returns the proper val for cubic out", () => {
52
+ expect((0, easeFunctions_1.cubicOut)(-1)).toEqual(0);
53
+ expect((0, easeFunctions_1.cubicOut)(0)).toEqual(0);
54
+ expect((0, easeFunctions_1.cubicOut)(0.25)).toEqual(0.578125);
55
+ expect((0, easeFunctions_1.cubicOut)(0.5)).toEqual(0.875);
56
+ expect((0, easeFunctions_1.cubicOut)(0.75)).toEqual(0.984375);
57
+ expect((0, easeFunctions_1.cubicOut)(1)).toEqual(1);
58
+ expect((0, easeFunctions_1.cubicOut)(2)).toEqual(1);
59
+ });
60
+ it("Returns the proper val for cubic in out", () => {
61
+ expect((0, easeFunctions_1.cubicInOut)(-1)).toEqual(0);
62
+ expect((0, easeFunctions_1.cubicInOut)(0)).toEqual(0);
63
+ expect((0, easeFunctions_1.cubicInOut)(0.25)).toEqual(0.0625);
64
+ expect((0, easeFunctions_1.cubicInOut)(0.5)).toEqual(0.5);
65
+ expect((0, easeFunctions_1.cubicInOut)(0.75)).toEqual(0.9375);
66
+ expect((0, easeFunctions_1.cubicInOut)(1)).toEqual(1);
67
+ expect((0, easeFunctions_1.cubicInOut)(2)).toEqual(1);
68
+ });
69
+ // Expo
70
+ it("Returns the proper val for Expo in", () => {
71
+ expect((0, easeFunctions_1.expoIn)(-1)).toEqual(0);
72
+ expect((0, easeFunctions_1.expoIn)(0)).toEqual(0);
73
+ expect((0, easeFunctions_1.expoIn)(0.25)).toEqual(0.005524271728019902);
74
+ expect((0, easeFunctions_1.expoIn)(0.5)).toEqual(0.03125);
75
+ expect((0, easeFunctions_1.expoIn)(0.75)).toEqual(0.17677669529663687);
76
+ expect((0, easeFunctions_1.expoIn)(1)).toEqual(1);
77
+ expect((0, easeFunctions_1.expoIn)(2)).toEqual(1);
78
+ });
79
+ it("Returns the proper val for Expo out", () => {
80
+ expect((0, easeFunctions_1.expoOut)(-1)).toEqual(0);
81
+ expect((0, easeFunctions_1.expoOut)(0)).toEqual(0);
82
+ expect((0, easeFunctions_1.expoOut)(0.25)).toEqual(0.8232233047033631);
83
+ expect((0, easeFunctions_1.expoOut)(0.5)).toEqual(0.96875);
84
+ expect((0, easeFunctions_1.expoOut)(0.75)).toEqual(0.99447572827198);
85
+ expect((0, easeFunctions_1.expoOut)(1)).toEqual(1);
86
+ expect((0, easeFunctions_1.expoOut)(2)).toEqual(1);
87
+ });
88
+ it("Returns the proper val for Expo in out", () => {
89
+ expect((0, easeFunctions_1.expoInOut)(-1)).toEqual(0);
90
+ expect((0, easeFunctions_1.expoInOut)(0)).toEqual(0);
91
+ expect((0, easeFunctions_1.expoInOut)(0.25)).toEqual(0.015625);
92
+ expect((0, easeFunctions_1.expoInOut)(0.5)).toEqual(0.5);
93
+ expect((0, easeFunctions_1.expoInOut)(0.75)).toEqual(0.984375);
94
+ expect((0, easeFunctions_1.expoInOut)(1)).toEqual(1);
95
+ expect((0, easeFunctions_1.expoInOut)(2)).toEqual(1);
96
+ });
97
+ // Sin
98
+ it("Returns the proper val for Sin in", () => {
99
+ expect((0, easeFunctions_1.sinIn)(-1)).toEqual(0);
100
+ expect((0, easeFunctions_1.sinIn)(0)).toEqual(0);
101
+ expect((0, easeFunctions_1.sinIn)(0.25)).toEqual(0.07612046748871326);
102
+ expect((0, easeFunctions_1.sinIn)(0.5)).toEqual(0.2928932188134524);
103
+ expect((0, easeFunctions_1.sinIn)(0.75)).toEqual(0.6173165676349102);
104
+ expect((0, easeFunctions_1.sinIn)(1)).toEqual(1);
105
+ expect((0, easeFunctions_1.sinIn)(2)).toEqual(1);
106
+ });
107
+ it("Returns the proper val for Sin out", () => {
108
+ expect((0, easeFunctions_1.sinOut)(-1)).toEqual(0);
109
+ expect((0, easeFunctions_1.sinOut)(0)).toEqual(0);
110
+ expect((0, easeFunctions_1.sinOut)(0.25)).toEqual(0.3826834323650898);
111
+ expect((0, easeFunctions_1.sinOut)(0.5)).toEqual(0.7071067811865475);
112
+ expect((0, easeFunctions_1.sinOut)(0.75)).toEqual(0.9238795325112867);
113
+ expect((0, easeFunctions_1.sinOut)(1)).toEqual(1);
114
+ expect((0, easeFunctions_1.sinOut)(2)).toEqual(1);
115
+ });
116
+ it("Returns the proper val for Sin in out", () => {
117
+ expect((0, easeFunctions_1.sinInOut)(-1)).toEqual(0);
118
+ expect((0, easeFunctions_1.sinInOut)(0)).toEqual(0);
119
+ expect((0, easeFunctions_1.sinInOut)(0.25)).toEqual(0.1464466094067262);
120
+ expect((0, easeFunctions_1.sinInOut)(0.5)).toBeCloseTo(0.5);
121
+ expect((0, easeFunctions_1.sinInOut)(0.75)).toEqual(0.8535533905932737);
122
+ expect((0, easeFunctions_1.sinInOut)(1)).toEqual(1);
123
+ expect((0, easeFunctions_1.sinInOut)(2)).toEqual(1);
124
+ });
125
+ // Quart
126
+ it("Returns the proper val for Quart in", () => {
127
+ expect((0, easeFunctions_1.quartIn)(-1)).toEqual(0);
128
+ expect((0, easeFunctions_1.quartIn)(0)).toEqual(0);
129
+ expect((0, easeFunctions_1.quartIn)(0.25)).toEqual(0.00390625);
130
+ expect((0, easeFunctions_1.quartIn)(0.5)).toEqual(0.0625);
131
+ expect((0, easeFunctions_1.quartIn)(0.75)).toEqual(0.31640625);
132
+ expect((0, easeFunctions_1.quartIn)(1)).toEqual(1);
133
+ expect((0, easeFunctions_1.quartIn)(2)).toEqual(1);
134
+ });
135
+ it("Returns the proper val for Quart out", () => {
136
+ expect((0, easeFunctions_1.quartOut)(-1)).toEqual(0);
137
+ expect((0, easeFunctions_1.quartOut)(0)).toEqual(0);
138
+ expect((0, easeFunctions_1.quartOut)(0.25)).toEqual(0.68359375);
139
+ expect((0, easeFunctions_1.quartOut)(0.5)).toEqual(0.9375);
140
+ expect((0, easeFunctions_1.quartOut)(0.75)).toEqual(0.99609375);
141
+ expect((0, easeFunctions_1.quartOut)(1)).toEqual(1);
142
+ expect((0, easeFunctions_1.quartOut)(2)).toEqual(1);
143
+ });
144
+ it("Returns the proper val for Quart in out", () => {
145
+ expect((0, easeFunctions_1.quartInOut)(-1)).toEqual(0);
146
+ expect((0, easeFunctions_1.quartInOut)(0)).toEqual(0);
147
+ expect((0, easeFunctions_1.quartInOut)(0.25)).toEqual(0.03125);
148
+ expect((0, easeFunctions_1.quartInOut)(0.5)).toBeCloseTo(0.5);
149
+ expect((0, easeFunctions_1.quartInOut)(0.75)).toEqual(0.96875);
150
+ expect((0, easeFunctions_1.quartInOut)(1)).toEqual(1);
151
+ expect((0, easeFunctions_1.quartInOut)(2)).toEqual(1);
152
+ });
153
+ // Quint
154
+ it("Returns the proper val for Quint in", () => {
155
+ expect((0, easeFunctions_1.quintIn)(-1)).toEqual(0);
156
+ expect((0, easeFunctions_1.quintIn)(0)).toEqual(0);
157
+ expect((0, easeFunctions_1.quintIn)(0.25)).toEqual(0.0009765625);
158
+ expect((0, easeFunctions_1.quintIn)(0.5)).toEqual(0.03125);
159
+ expect((0, easeFunctions_1.quintIn)(0.75)).toEqual(0.2373046875);
160
+ expect((0, easeFunctions_1.quintIn)(1)).toEqual(1);
161
+ expect((0, easeFunctions_1.quintIn)(2)).toEqual(1);
162
+ });
163
+ it("Returns the proper val for Quint out", () => {
164
+ expect((0, easeFunctions_1.quintOut)(-1)).toEqual(0);
165
+ expect((0, easeFunctions_1.quintOut)(0)).toEqual(0);
166
+ expect((0, easeFunctions_1.quintOut)(0.25)).toEqual(0.7626953125);
167
+ expect((0, easeFunctions_1.quintOut)(0.5)).toEqual(0.96875);
168
+ expect((0, easeFunctions_1.quintOut)(0.75)).toEqual(0.9990234375);
169
+ expect((0, easeFunctions_1.quintOut)(1)).toEqual(1);
170
+ expect((0, easeFunctions_1.quintOut)(2)).toEqual(1);
171
+ });
172
+ it("Returns the proper val for Quint in out", () => {
173
+ expect((0, easeFunctions_1.quintInOut)(-1)).toEqual(0);
174
+ expect((0, easeFunctions_1.quintInOut)(0)).toEqual(0);
175
+ expect((0, easeFunctions_1.quintInOut)(0.25)).toEqual(0.015625);
176
+ expect((0, easeFunctions_1.quintInOut)(0.5)).toBeCloseTo(0.5);
177
+ expect((0, easeFunctions_1.quintInOut)(0.75)).toEqual(0.984375);
178
+ expect((0, easeFunctions_1.quintInOut)(1)).toEqual(1);
179
+ expect((0, easeFunctions_1.quintInOut)(2)).toEqual(1);
180
+ });
181
+ // Circ
182
+ it("Returns the proper val for Circ in", () => {
183
+ expect((0, easeFunctions_1.circIn)(-1)).toEqual(0);
184
+ expect((0, easeFunctions_1.circIn)(0)).toEqual(0);
185
+ expect((0, easeFunctions_1.circIn)(0.25)).toEqual(0.031754163448145745);
186
+ expect((0, easeFunctions_1.circIn)(0.5)).toEqual(0.1339745962155614);
187
+ expect((0, easeFunctions_1.circIn)(0.75)).toEqual(0.3385621722338523);
188
+ expect((0, easeFunctions_1.circIn)(1)).toEqual(1);
189
+ expect((0, easeFunctions_1.circIn)(2)).toEqual(1);
190
+ });
191
+ it("Returns the proper val for Circ out", () => {
192
+ expect((0, easeFunctions_1.circOut)(-1)).toEqual(0);
193
+ expect((0, easeFunctions_1.circOut)(0)).toEqual(0);
194
+ expect((0, easeFunctions_1.circOut)(0.25)).toEqual(0.6614378277661477);
195
+ expect((0, easeFunctions_1.circOut)(0.5)).toEqual(0.8660254037844386);
196
+ expect((0, easeFunctions_1.circOut)(0.75)).toEqual(0.9682458365518543);
197
+ expect((0, easeFunctions_1.circOut)(1)).toEqual(1);
198
+ expect((0, easeFunctions_1.circOut)(2)).toEqual(1);
199
+ });
200
+ it("Returns the proper val for Circ in out", () => {
201
+ expect((0, easeFunctions_1.circInOut)(-1)).toEqual(0);
202
+ expect((0, easeFunctions_1.circInOut)(0)).toEqual(0);
203
+ expect((0, easeFunctions_1.circInOut)(0.25)).toEqual(0.0669872981077807);
204
+ expect((0, easeFunctions_1.circInOut)(0.5)).toBeCloseTo(0.5);
205
+ expect((0, easeFunctions_1.circInOut)(0.75)).toEqual(0.9330127018922193);
206
+ expect((0, easeFunctions_1.circInOut)(1)).toEqual(1);
207
+ expect((0, easeFunctions_1.circInOut)(2)).toEqual(1);
208
+ });
209
+ //# sourceMappingURL=easeFunctions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easeFunctions.test.js","sourceRoot":"","sources":["../../../src/Utilities/easeFunctions.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateUniqueID = generateUniqueID;
4
+ const uuid_1 = require("uuid");
5
+ function generateUniqueID() {
6
+ return (0, uuid_1.v4)();
7
+ }
8
+ //# sourceMappingURL=generateUniqueID.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateUniqueID.js","sourceRoot":"","sources":["../../../src/Utilities/generateUniqueID.ts"],"names":[],"mappings":";;AAEA,4CAEC;AAJD,+BAAoC;AAEpC,SAAgB,gBAAgB;IAC9B,OAAO,IAAA,SAAM,GAAE,CAAC;AAClB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./degreesToRadians"), exports);
18
+ __exportStar(require("./LengthConverters"), exports);
19
+ __exportStar(require("./generateUniqueID"), exports);
20
+ __exportStar(require("./easeFunctions"), exports);
21
+ __exportStar(require("./interpolateNumber"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,qDAAmC;AACnC,qDAAmC;AACnC,kDAAgC;AAChC,sDAAoC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.interpolateNumber = interpolateNumber;
4
+ function interpolateNumber(start, end, percent, clamp = false) {
5
+ const range = end - start;
6
+ if (!clamp) {
7
+ return percent * range + start;
8
+ }
9
+ let clampedP = percent;
10
+ if (clampedP < 0) {
11
+ clampedP = 0;
12
+ }
13
+ else if (clampedP > 1) {
14
+ clampedP = 1;
15
+ }
16
+ return clampedP * range + start;
17
+ }
18
+ //# sourceMappingURL=interpolateNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolateNumber.js","sourceRoot":"","sources":["../../../src/Utilities/interpolateNumber.ts"],"names":[],"mappings":";;AAAA,8CAoBC;AApBD,SAAgB,iBAAiB,CAC/B,KAAa,EACb,GAAW,EACX,OAAe,EACf,QAAiB,KAAK;IAEtB,MAAM,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;IAE1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ,GAAG,OAAO,CAAC;IACvB,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC;SAAM,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC;IAED,OAAO,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;AAClC,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const interpolateNumber_1 = require("./interpolateNumber");
4
+ describe("Lerp number", () => {
5
+ it("Interpolate as expected", () => {
6
+ const lerpedVal = (0, interpolateNumber_1.interpolateNumber)(0, 10, 0.5);
7
+ expect(lerpedVal).toEqual(5);
8
+ });
9
+ it("Interpolate without clamping", () => {
10
+ const lerpedVal = (0, interpolateNumber_1.interpolateNumber)(0, 10, -0.5);
11
+ expect(lerpedVal).toEqual(-5);
12
+ });
13
+ it("Interpolate without clamping", () => {
14
+ const lerpedVal = (0, interpolateNumber_1.interpolateNumber)(0, 10, 1.5);
15
+ expect(lerpedVal).toEqual(15);
16
+ });
17
+ it("Interpolate with clamping", () => {
18
+ const lerpedVal = (0, interpolateNumber_1.interpolateNumber)(0, 10, -0.5, true);
19
+ expect(lerpedVal).toEqual(0);
20
+ });
21
+ it("Interpolate with clamping", () => {
22
+ const lerpedVal = (0, interpolateNumber_1.interpolateNumber)(0, 10, 1.5, true);
23
+ expect(lerpedVal).toEqual(10);
24
+ });
25
+ });
26
+ //# sourceMappingURL=interpolateNumber.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolateNumber.test.js","sourceRoot":"","sources":["../../../src/Utilities/interpolateNumber.test.ts"],"names":[],"mappings":";;AAAA,2DAAwD;AAExD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,SAAS,GAAG,IAAA,qCAAiB,EAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,SAAS,GAAG,IAAA,qCAAiB,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,SAAS,GAAG,IAAA,qCAAiB,EAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,SAAS,GAAG,IAAA,qCAAiB,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,SAAS,GAAG,IAAA,qCAAiB,EAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -17,5 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./AppObject"), exports);
18
18
  __exportStar(require("./Entities"), exports);
19
19
  __exportStar(require("./Types"), exports);
20
+ __exportStar(require("./Utilities"), exports);
20
21
  __exportStar(require("./ValueObjects"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,6CAA2B;AAC3B,0CAAwB;AACxB,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,6CAA2B;AAC3B,0CAAwB;AACxB,8CAA4B;AAC5B,iDAA+B"}
@@ -0,0 +1,15 @@
1
+ const inchesPerMeter = 39.3701;
2
+ const feetPerMeter = 3.28084;
3
+ export function inchesToMeters(inches) {
4
+ return inches / inchesPerMeter;
5
+ }
6
+ export function metersToInches(meters) {
7
+ return meters * inchesPerMeter;
8
+ }
9
+ export function feetToMeters(feet) {
10
+ return feet / feetPerMeter;
11
+ }
12
+ export function metersToFeet(meters) {
13
+ return meters * feetPerMeter;
14
+ }
15
+ //# sourceMappingURL=LengthConverters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LengthConverters.js","sourceRoot":"","sources":["../../../src/Utilities/LengthConverters.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,YAAY,GAAG,OAAO,CAAC;AAE7B,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,MAAM,GAAG,cAAc,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,MAAM,GAAG,cAAc,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,GAAG,YAAY,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,MAAM,GAAG,YAAY,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { feetToMeters, inchesToMeters, metersToFeet, metersToInches, } from "./LengthConverters";
2
+ test("Converting inches to meters", () => {
3
+ expect(inchesToMeters(0)).toEqual(0);
4
+ expect(inchesToMeters(12)).toEqual(0.30479983540808886);
5
+ expect(inchesToMeters(-12)).toEqual(-0.30479983540808886);
6
+ });
7
+ test("Converting meters to inches", () => {
8
+ expect(metersToInches(0)).toEqual(0);
9
+ expect(metersToInches(2)).toEqual(78.7402);
10
+ expect(metersToInches(-2)).toEqual(-78.7402);
11
+ });
12
+ test("Converting feet to meters", () => {
13
+ expect(feetToMeters(0)).toEqual(0);
14
+ expect(feetToMeters(5)).toEqual(1.5239999512320015);
15
+ expect(feetToMeters(-5)).toEqual(-1.5239999512320015);
16
+ });
17
+ test("Converting meters to feet", () => {
18
+ expect(metersToFeet(0)).toEqual(0);
19
+ expect(metersToFeet(2)).toEqual(6.56168);
20
+ expect(metersToFeet(-2)).toEqual(-6.56168);
21
+ });
22
+ //# sourceMappingURL=LengthConverters.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LengthConverters.test.js","sourceRoot":"","sources":["../../../src/Utilities/LengthConverters.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACrC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACrC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { quintInOut } from "./easeFunctions";
2
+ /**
3
+ * Utility class for smoothly interpolating between two numbers over time.
4
+ * Uses requestAnimationFrame for smooth animation and supports custom easing functions.
5
+ *
6
+ * @example
7
+ * const lerper = new LerpNumber();
8
+ * // Animate from 0 to 100 over 2 seconds
9
+ * await lerper.lerp({
10
+ * start: 0,
11
+ * end: 100,
12
+ * durationMS: 2000,
13
+ * update: (value) => console.log(value)
14
+ * });
15
+ */
16
+ export class LerpNumber {
17
+ constructor() {
18
+ this.defaultDurationMS = 1000;
19
+ this.defaultEase = quintInOut;
20
+ this._isLerping = false;
21
+ this._cancelLerp = false;
22
+ /**
23
+ * Initiates a lerp (linear interpolation) operation.
24
+ * If a lerp is already in progress, it will be cancelled before starting the new one.
25
+ *
26
+ * @param data - Configuration object for the lerp operation
27
+ * @returns Promise that resolves when the lerp completes or is cancelled
28
+ * @throws Never throws, but may reject if the update function throws
29
+ */
30
+ this.lerp = (data) => {
31
+ if (this._isLerping) {
32
+ this.cancel();
33
+ }
34
+ const { start, end, durationMS, ease, onComplete, update, onCancel } = data;
35
+ const durationToUse = durationMS ?? this.defaultDurationMS;
36
+ const easeToUse = ease ?? this.defaultEase;
37
+ return new Promise((resolve) => {
38
+ const startTime = performance.now();
39
+ this._isLerping = true;
40
+ update(start);
41
+ const interval = setInterval(() => {
42
+ if (this._cancelLerp) {
43
+ clearInterval(interval);
44
+ this._isLerping = false;
45
+ this._cancelLerp = false;
46
+ if (onCancel)
47
+ onCancel();
48
+ return resolve();
49
+ }
50
+ const currentTime = performance.now();
51
+ const elapsedTime = currentTime - startTime;
52
+ const progress = Math.min(elapsedTime / durationToUse, 1);
53
+ const easedProgress = easeToUse(progress);
54
+ const value = start + (end - start) * easedProgress;
55
+ update(value);
56
+ if (progress >= 1) {
57
+ clearInterval(interval);
58
+ this._isLerping = false;
59
+ update(end);
60
+ if (onComplete)
61
+ onComplete();
62
+ resolve();
63
+ }
64
+ }, 10);
65
+ });
66
+ };
67
+ }
68
+ get isLerping() {
69
+ return this._isLerping;
70
+ }
71
+ /**
72
+ * Cancels the current lerp operation if one is in progress.
73
+ * Triggers the onCancel callback if provided in the original lerp configuration.
74
+ */
75
+ cancel() {
76
+ if (!this._isLerping)
77
+ return;
78
+ this._cancelLerp = true;
79
+ }
80
+ }
81
+ //# sourceMappingURL=LerpNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LerpNumber.js","sourceRoot":"","sources":["../../../src/Utilities/LerpNumber.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAuB7C;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,UAAU;IAAvB;QACS,sBAAiB,GAAG,IAAI,CAAC;QACzB,gBAAW,GAAW,UAAU,CAAC;QAKhC,eAAU,GAAG,KAAK,CAAC;QAYnB,gBAAW,GAAG,KAAK,CAAC;QAE5B;;;;;;;WAOG;QACH,SAAI,GAAG,CAAC,IAAmB,EAAiB,EAAE;YAC5C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;YAE5E,MAAM,aAAa,GAAG,UAAU,IAAI,IAAI,CAAC,iBAAiB,CAAC;YAC3D,MAAM,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC;YAE3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBAEvB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAEd,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;oBAChC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACrB,aAAa,CAAC,QAAQ,CAAC,CAAC;wBACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;wBACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;wBACzB,IAAI,QAAQ;4BAAE,QAAQ,EAAE,CAAC;wBACzB,OAAO,OAAO,EAAE,CAAC;oBACnB,CAAC;oBAED,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;oBACtC,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;oBAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC;oBAC1D,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAC1C,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC;oBACpD,MAAM,CAAC,KAAK,CAAC,CAAC;oBAEd,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;wBAClB,aAAa,CAAC,QAAQ,CAAC,CAAC;wBACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;wBACxB,MAAM,CAAC,GAAG,CAAC,CAAC;wBACZ,IAAI,UAAU;4BAAE,UAAU,EAAE,CAAC;wBAC7B,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,EAAE,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAlEC,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAGD;;;OAGG;IACI,MAAM;QACX,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAE7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;CAqDF"}
@@ -0,0 +1,88 @@
1
+ import { LerpNumber } from "./LerpNumber";
2
+ describe("Lerp Number", () => {
3
+ let lerpNumber;
4
+ let updateFn;
5
+ beforeEach(() => {
6
+ lerpNumber = new LerpNumber();
7
+ updateFn = jest.fn();
8
+ jest.useFakeTimers();
9
+ });
10
+ afterEach(() => {
11
+ jest.useRealTimers();
12
+ });
13
+ it("should lerp from start to end value", async () => {
14
+ lerpNumber.defaultDurationMS = 1000;
15
+ const promise = lerpNumber.lerp({
16
+ start: 0,
17
+ end: 100,
18
+ update: updateFn,
19
+ });
20
+ // Test middle point (should have multiple updates by this point)
21
+ jest.advanceTimersByTime(500);
22
+ expect(updateFn).toHaveBeenCalledWith(expect.closeTo(50, 5)); // Allow some margin due to interval timing
23
+ // Complete animation
24
+ jest.advanceTimersByTime(500);
25
+ await promise;
26
+ expect(updateFn).toHaveBeenCalledWith(0); // Start value
27
+ expect(updateFn).toHaveBeenLastCalledWith(100); // End value
28
+ });
29
+ it("should cancel lerp when requested", async () => {
30
+ const onCancel = jest.fn();
31
+ const promise = lerpNumber.lerp({
32
+ start: 0,
33
+ end: 100,
34
+ update: updateFn,
35
+ onCancel,
36
+ });
37
+ expect(lerpNumber.isLerping).toBe(true);
38
+ lerpNumber.cancel();
39
+ jest.advanceTimersByTime(10); // Allow interval to execute
40
+ await promise;
41
+ expect(lerpNumber.isLerping).toBe(false);
42
+ expect(onCancel).toHaveBeenCalled();
43
+ });
44
+ it("should respect custom duration", async () => {
45
+ const promise = lerpNumber.lerp({
46
+ start: 0,
47
+ end: 100,
48
+ update: updateFn,
49
+ durationMS: 500,
50
+ });
51
+ jest.advanceTimersByTime(250); // Half way
52
+ expect(updateFn).toHaveBeenLastCalledWith(expect.any(Number));
53
+ jest.advanceTimersByTime(250); // Complete
54
+ await promise;
55
+ expect(updateFn).toHaveBeenLastCalledWith(100);
56
+ });
57
+ it("should call onComplete when finished", async () => {
58
+ const onComplete = jest.fn();
59
+ const promise = lerpNumber.lerp({
60
+ start: 0,
61
+ end: 100,
62
+ update: updateFn,
63
+ onComplete,
64
+ });
65
+ jest.advanceTimersByTime(1000);
66
+ await promise;
67
+ expect(onComplete).toHaveBeenCalled();
68
+ });
69
+ it("should cancel existing lerp when starting a new one", async () => {
70
+ const onCancel = jest.fn();
71
+ const firstPromise = lerpNumber.lerp({
72
+ start: 0,
73
+ end: 100,
74
+ update: updateFn,
75
+ onCancel,
76
+ });
77
+ const secondPromise = lerpNumber.lerp({
78
+ start: 200,
79
+ end: 300,
80
+ update: updateFn,
81
+ });
82
+ jest.advanceTimersByTime(1000);
83
+ await Promise.all([firstPromise, secondPromise]);
84
+ expect(onCancel).toHaveBeenCalled();
85
+ expect(updateFn).toHaveBeenLastCalledWith(300);
86
+ });
87
+ });
88
+ //# sourceMappingURL=LerpNumber.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LerpNumber.test.js","sourceRoot":"","sources":["../../../src/Utilities/LerpNumber.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export function degreesToRadians(deg) {
2
+ return deg * Math.PI / 180;
3
+ }
4
+ //# sourceMappingURL=degreesToRadians.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"degreesToRadians.js","sourceRoot":"","sources":["../../../src/Utilities/degreesToRadians.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { degreesToRadians } from "./degreesToRadians";
2
+ test("Converting degrees to radians", () => {
3
+ expect(degreesToRadians(0)).toEqual(0);
4
+ expect(degreesToRadians(180)).toBeCloseTo(Math.PI);
5
+ expect(degreesToRadians(-90)).toBeCloseTo(-Math.PI / 2);
6
+ });
7
+ //# sourceMappingURL=degreesToRadians.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"degreesToRadians.test.js","sourceRoot":"","sources":["../../../src/Utilities/degreesToRadians.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,IAAI,CAAC,+BAA+B,EAAE,GAAE,EAAE;IACxC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC,CAAA"}