@vived/core 1.0.1 → 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.
Files changed (115) hide show
  1. package/dist/cjs/Entities/RangedNumber.js +36 -0
  2. package/dist/cjs/Entities/RangedNumber.js.map +1 -0
  3. package/dist/cjs/Entities/RangedNumber.test.js +96 -0
  4. package/dist/cjs/Entities/RangedNumber.test.js.map +1 -0
  5. package/dist/cjs/Entities/index.js +3 -2
  6. package/dist/cjs/Entities/index.js.map +1 -1
  7. package/dist/cjs/Utilities/LengthConverters.js +21 -0
  8. package/dist/cjs/Utilities/LengthConverters.js.map +1 -0
  9. package/dist/cjs/Utilities/LengthConverters.test.js +24 -0
  10. package/dist/cjs/Utilities/LengthConverters.test.js.map +1 -0
  11. package/dist/cjs/Utilities/LerpNumber.js +85 -0
  12. package/dist/cjs/Utilities/LerpNumber.js.map +1 -0
  13. package/dist/cjs/Utilities/LerpNumber.test.js +90 -0
  14. package/dist/cjs/Utilities/LerpNumber.test.js.map +1 -0
  15. package/dist/cjs/Utilities/degreesToRadians.js +7 -0
  16. package/dist/cjs/Utilities/degreesToRadians.js.map +1 -0
  17. package/dist/cjs/Utilities/degreesToRadians.test.js +9 -0
  18. package/dist/cjs/Utilities/degreesToRadians.test.js.map +1 -0
  19. package/dist/cjs/Utilities/easeFunctions.js +208 -0
  20. package/dist/cjs/Utilities/easeFunctions.js.map +1 -0
  21. package/dist/cjs/Utilities/easeFunctions.test.js +209 -0
  22. package/dist/cjs/Utilities/easeFunctions.test.js.map +1 -0
  23. package/dist/cjs/Utilities/generateUniqueID.js +8 -0
  24. package/dist/cjs/Utilities/generateUniqueID.js.map +1 -0
  25. package/dist/cjs/Utilities/index.js +22 -0
  26. package/dist/cjs/Utilities/index.js.map +1 -0
  27. package/dist/cjs/Utilities/interpolateNumber.js +18 -0
  28. package/dist/cjs/Utilities/interpolateNumber.js.map +1 -0
  29. package/dist/cjs/Utilities/interpolateNumber.test.js +26 -0
  30. package/dist/cjs/Utilities/interpolateNumber.test.js.map +1 -0
  31. package/dist/cjs/index.js +1 -0
  32. package/dist/cjs/index.js.map +1 -1
  33. package/dist/esm/Entities/RangedNumber.js +32 -0
  34. package/dist/esm/Entities/RangedNumber.js.map +1 -0
  35. package/dist/esm/Entities/RangedNumber.test.js +94 -0
  36. package/dist/esm/Entities/RangedNumber.test.js.map +1 -0
  37. package/dist/esm/Entities/index.js +3 -2
  38. package/dist/esm/Entities/index.js.map +1 -1
  39. package/dist/esm/Utilities/LengthConverters.js +15 -0
  40. package/dist/esm/Utilities/LengthConverters.js.map +1 -0
  41. package/dist/esm/Utilities/LengthConverters.test.js +22 -0
  42. package/dist/esm/Utilities/LengthConverters.test.js.map +1 -0
  43. package/dist/esm/Utilities/LerpNumber.js +81 -0
  44. package/dist/esm/Utilities/LerpNumber.js.map +1 -0
  45. package/dist/esm/Utilities/LerpNumber.test.js +88 -0
  46. package/dist/esm/Utilities/LerpNumber.test.js.map +1 -0
  47. package/dist/esm/Utilities/degreesToRadians.js +4 -0
  48. package/dist/esm/Utilities/degreesToRadians.js.map +1 -0
  49. package/dist/esm/Utilities/degreesToRadians.test.js +7 -0
  50. package/dist/esm/Utilities/degreesToRadians.test.js.map +1 -0
  51. package/dist/esm/Utilities/easeFunctions.js +183 -0
  52. package/dist/esm/Utilities/easeFunctions.js.map +1 -0
  53. package/dist/esm/Utilities/easeFunctions.test.js +207 -0
  54. package/dist/esm/Utilities/easeFunctions.test.js.map +1 -0
  55. package/dist/esm/Utilities/generateUniqueID.js +5 -0
  56. package/dist/esm/Utilities/generateUniqueID.js.map +1 -0
  57. package/dist/esm/Utilities/index.js +6 -0
  58. package/dist/esm/Utilities/index.js.map +1 -0
  59. package/dist/esm/Utilities/interpolateNumber.js +15 -0
  60. package/dist/esm/Utilities/interpolateNumber.js.map +1 -0
  61. package/dist/esm/Utilities/interpolateNumber.test.js +24 -0
  62. package/dist/esm/Utilities/interpolateNumber.test.js.map +1 -0
  63. package/dist/esm/index.js +1 -0
  64. package/dist/esm/index.js.map +1 -1
  65. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  66. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  67. package/dist/types/Entities/RangedNumber.d.ts +17 -0
  68. package/dist/types/Entities/RangedNumber.d.ts.map +1 -0
  69. package/dist/types/Entities/RangedNumber.test.d.ts +2 -0
  70. package/dist/types/Entities/RangedNumber.test.d.ts.map +1 -0
  71. package/dist/types/Entities/index.d.ts +3 -2
  72. package/dist/types/Entities/index.d.ts.map +1 -1
  73. package/dist/types/Utilities/LengthConverters.d.ts +5 -0
  74. package/dist/types/Utilities/LengthConverters.d.ts.map +1 -0
  75. package/dist/types/Utilities/LengthConverters.test.d.ts +2 -0
  76. package/dist/types/Utilities/LengthConverters.test.d.ts.map +1 -0
  77. package/dist/types/Utilities/LerpNumber.d.ts +57 -0
  78. package/dist/types/Utilities/LerpNumber.d.ts.map +1 -0
  79. package/dist/types/Utilities/LerpNumber.test.d.ts +2 -0
  80. package/dist/types/Utilities/LerpNumber.test.d.ts.map +1 -0
  81. package/dist/types/Utilities/degreesToRadians.d.ts +2 -0
  82. package/dist/types/Utilities/degreesToRadians.d.ts.map +1 -0
  83. package/dist/types/Utilities/degreesToRadians.test.d.ts +2 -0
  84. package/dist/types/Utilities/degreesToRadians.test.d.ts.map +1 -0
  85. package/dist/types/Utilities/easeFunctions.d.ts +24 -0
  86. package/dist/types/Utilities/easeFunctions.d.ts.map +1 -0
  87. package/dist/types/Utilities/easeFunctions.test.d.ts +2 -0
  88. package/dist/types/Utilities/easeFunctions.test.d.ts.map +1 -0
  89. package/dist/types/Utilities/generateUniqueID.d.ts +2 -0
  90. package/dist/types/Utilities/generateUniqueID.d.ts.map +1 -0
  91. package/dist/types/Utilities/index.d.ts +6 -0
  92. package/dist/types/Utilities/index.d.ts.map +1 -0
  93. package/dist/types/Utilities/interpolateNumber.d.ts +2 -0
  94. package/dist/types/Utilities/interpolateNumber.d.ts.map +1 -0
  95. package/dist/types/Utilities/interpolateNumber.test.d.ts +2 -0
  96. package/dist/types/Utilities/interpolateNumber.test.d.ts.map +1 -0
  97. package/dist/types/index.d.ts +1 -0
  98. package/dist/types/index.d.ts.map +1 -1
  99. package/package.json +6 -2
  100. package/src/Entities/RangedNumber.test.ts +118 -0
  101. package/src/Entities/RangedNumber.ts +45 -0
  102. package/src/Entities/index.ts +3 -2
  103. package/src/Utilities/LengthConverters.test.ts +30 -0
  104. package/src/Utilities/LengthConverters.ts +18 -0
  105. package/src/Utilities/LerpNumber.test.ts +109 -0
  106. package/src/Utilities/LerpNumber.ts +109 -0
  107. package/src/Utilities/degreesToRadians.test.ts +8 -0
  108. package/src/Utilities/degreesToRadians.ts +3 -0
  109. package/src/Utilities/easeFunctions.test.ts +251 -0
  110. package/src/Utilities/easeFunctions.ts +180 -0
  111. package/src/Utilities/generateUniqueID.ts +5 -0
  112. package/src/Utilities/index.ts +6 -0
  113. package/src/Utilities/interpolateNumber.test.ts +28 -0
  114. package/src/Utilities/interpolateNumber.ts +21 -0
  115. package/src/index.ts +1 -0
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RangedNumber = void 0;
4
+ class RangedNumber {
5
+ get val() {
6
+ return this._val;
7
+ }
8
+ set val(x) {
9
+ const y = this.clamp(x);
10
+ if (this._val === y)
11
+ return;
12
+ this._val = y;
13
+ this.onChangeCallback();
14
+ }
15
+ setValQuietly(val) {
16
+ this._val = this.clamp(val);
17
+ }
18
+ clamp(x) {
19
+ let rVal = x;
20
+ if (x > this.maxValue) {
21
+ rVal = this.maxValue;
22
+ }
23
+ else if (x < this.minValue) {
24
+ rVal = this.minValue;
25
+ }
26
+ return rVal;
27
+ }
28
+ constructor(props, onChangeCallback) {
29
+ this.maxValue = props.max;
30
+ this.minValue = props.min;
31
+ this._val = this.clamp(props.initialValue);
32
+ this.onChangeCallback = onChangeCallback;
33
+ }
34
+ }
35
+ exports.RangedNumber = RangedNumber;
36
+ //# sourceMappingURL=RangedNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangedNumber.js","sourceRoot":"","sources":["../../../src/Entities/RangedNumber.ts"],"names":[],"mappings":";;;AAMA,MAAa,YAAY;IAIvB,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,CAAC,CAAS;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,GAAW;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,CAAS;QACrB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;aAAM,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,YAAY,KAA6B,EAAE,gBAA4B;QACrE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;QAE1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF;AAtCD,oCAsCC"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const RangedNumber_1 = require("./RangedNumber");
4
+ it("Stores the initial value", () => {
5
+ const props = {
6
+ initialValue: 5,
7
+ max: 10,
8
+ min: 1,
9
+ };
10
+ const memoizedNumber = new RangedNumber_1.RangedNumber(props, jest.fn());
11
+ expect(memoizedNumber.val).toEqual(5);
12
+ });
13
+ it("Clamps the initial value", () => {
14
+ const props = {
15
+ initialValue: 50,
16
+ max: 10,
17
+ min: 1,
18
+ };
19
+ const memoizedNumber = new RangedNumber_1.RangedNumber(props, jest.fn());
20
+ expect(memoizedNumber.val).toEqual(10);
21
+ });
22
+ it("Clamps the value", () => {
23
+ const props = {
24
+ initialValue: 5,
25
+ max: 10,
26
+ min: 1,
27
+ };
28
+ const memoizedNumber = new RangedNumber_1.RangedNumber(props, jest.fn());
29
+ expect(memoizedNumber.val).toEqual(5);
30
+ memoizedNumber.val = 11;
31
+ expect(memoizedNumber.val).toEqual(10);
32
+ memoizedNumber.val = 0;
33
+ expect(memoizedNumber.val).toEqual(1);
34
+ });
35
+ it("Triggers the callback when something changes", () => {
36
+ const cb = jest.fn();
37
+ const props = {
38
+ initialValue: 5,
39
+ max: 10,
40
+ min: 1,
41
+ };
42
+ const memoizedNumber = new RangedNumber_1.RangedNumber(props, cb);
43
+ expect(cb).not.toBeCalled();
44
+ memoizedNumber.val = 6;
45
+ expect(cb).toBeCalled();
46
+ });
47
+ it("Only triggers the CB when something changes", () => {
48
+ const cb = jest.fn();
49
+ const props = {
50
+ initialValue: 5,
51
+ max: 10,
52
+ min: 1,
53
+ };
54
+ const memoizedNumber = new RangedNumber_1.RangedNumber(props, cb);
55
+ memoizedNumber.val = 5;
56
+ memoizedNumber.val = 5;
57
+ memoizedNumber.val = 5;
58
+ expect(cb).not.toBeCalled();
59
+ });
60
+ it("Checks the clamped value before triggering", () => {
61
+ const cb = jest.fn();
62
+ const props = {
63
+ initialValue: 10,
64
+ max: 10,
65
+ min: 1,
66
+ };
67
+ const memoizedNumber = new RangedNumber_1.RangedNumber(props, cb);
68
+ memoizedNumber.val = 11;
69
+ memoizedNumber.val = 12;
70
+ memoizedNumber.val = 13;
71
+ expect(cb).not.toBeCalled();
72
+ });
73
+ it("Does not notify if set quietly", () => {
74
+ const cb = jest.fn();
75
+ const props = {
76
+ initialValue: 5,
77
+ max: 10,
78
+ min: 1,
79
+ };
80
+ const memoizedNumber = new RangedNumber_1.RangedNumber(props, cb);
81
+ memoizedNumber.setValQuietly(6);
82
+ expect(memoizedNumber.val).toEqual(6);
83
+ expect(cb).not.toBeCalled();
84
+ });
85
+ it("Setting quietly is clamped", () => {
86
+ const cb = jest.fn();
87
+ const props = {
88
+ initialValue: 5,
89
+ max: 10,
90
+ min: 1,
91
+ };
92
+ const memoizedNumber = new RangedNumber_1.RangedNumber(props, cb);
93
+ memoizedNumber.setValQuietly(-1);
94
+ expect(memoizedNumber.val).toEqual(1);
95
+ });
96
+ //# sourceMappingURL=RangedNumber.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangedNumber.test.js","sourceRoot":"","sources":["../../../src/Entities/RangedNumber.test.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./ObservableEntity"), exports);
18
- __exportStar(require("./ObserverList"), exports);
19
17
  __exportStar(require("./MemoizedAngle"), exports);
20
18
  __exportStar(require("./MemoizedBoolean"), exports);
21
19
  __exportStar(require("./MemoizedColor"), exports);
@@ -24,4 +22,7 @@ __exportStar(require("./MemoizedQuaternion"), exports);
24
22
  __exportStar(require("./MemoizedString"), exports);
25
23
  __exportStar(require("./MemoizedVector2"), exports);
26
24
  __exportStar(require("./MemoizedVector3"), exports);
25
+ __exportStar(require("./ObservableEntity"), exports);
26
+ __exportStar(require("./ObserverList"), exports);
27
+ __exportStar(require("./RangedNumber"), exports);
27
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,iDAA+B;AAC/B,kDAAgC;AAChC,oDAAkC;AAClC,kDAAgC;AAChC,mDAAiC;AACjC,uDAAqC;AACrC,mDAAiC;AACjC,oDAAkC;AAClC,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,oDAAkC;AAClC,kDAAgC;AAChC,mDAAiC;AACjC,uDAAqC;AACrC,mDAAiC;AACjC,oDAAkC;AAClC,oDAAkC;AAClC,qDAAmC;AACnC,iDAA+B;AAC/B,iDAA+B"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.inchesToMeters = inchesToMeters;
4
+ exports.metersToInches = metersToInches;
5
+ exports.feetToMeters = feetToMeters;
6
+ exports.metersToFeet = metersToFeet;
7
+ const inchesPerMeter = 39.3701;
8
+ const feetPerMeter = 3.28084;
9
+ function inchesToMeters(inches) {
10
+ return inches / inchesPerMeter;
11
+ }
12
+ function metersToInches(meters) {
13
+ return meters * inchesPerMeter;
14
+ }
15
+ function feetToMeters(feet) {
16
+ return feet / feetPerMeter;
17
+ }
18
+ function metersToFeet(meters) {
19
+ return meters * feetPerMeter;
20
+ }
21
+ //# sourceMappingURL=LengthConverters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LengthConverters.js","sourceRoot":"","sources":["../../../src/Utilities/LengthConverters.ts"],"names":[],"mappings":";;AAGA,wCAEC;AAED,wCAEC;AAED,oCAEC;AAED,oCAEC;AAjBD,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,YAAY,GAAG,OAAO,CAAC;AAE7B,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,MAAM,GAAG,cAAc,CAAC;AACjC,CAAC;AAED,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,MAAM,GAAG,cAAc,CAAC;AACjC,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,GAAG,YAAY,CAAC;AAC7B,CAAC;AAED,SAAgB,YAAY,CAAC,MAAc;IACzC,OAAO,MAAM,GAAG,YAAY,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const LengthConverters_1 = require("./LengthConverters");
4
+ test("Converting inches to meters", () => {
5
+ expect((0, LengthConverters_1.inchesToMeters)(0)).toEqual(0);
6
+ expect((0, LengthConverters_1.inchesToMeters)(12)).toEqual(0.30479983540808886);
7
+ expect((0, LengthConverters_1.inchesToMeters)(-12)).toEqual(-0.30479983540808886);
8
+ });
9
+ test("Converting meters to inches", () => {
10
+ expect((0, LengthConverters_1.metersToInches)(0)).toEqual(0);
11
+ expect((0, LengthConverters_1.metersToInches)(2)).toEqual(78.7402);
12
+ expect((0, LengthConverters_1.metersToInches)(-2)).toEqual(-78.7402);
13
+ });
14
+ test("Converting feet to meters", () => {
15
+ expect((0, LengthConverters_1.feetToMeters)(0)).toEqual(0);
16
+ expect((0, LengthConverters_1.feetToMeters)(5)).toEqual(1.5239999512320015);
17
+ expect((0, LengthConverters_1.feetToMeters)(-5)).toEqual(-1.5239999512320015);
18
+ });
19
+ test("Converting meters to feet", () => {
20
+ expect((0, LengthConverters_1.metersToFeet)(0)).toEqual(0);
21
+ expect((0, LengthConverters_1.metersToFeet)(2)).toEqual(6.56168);
22
+ expect((0, LengthConverters_1.metersToFeet)(-2)).toEqual(-6.56168);
23
+ });
24
+ //# 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,yDAK4B;AAE5B,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACvC,MAAM,CAAC,IAAA,iCAAc,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,IAAA,iCAAc,EAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxD,MAAM,CAAC,IAAA,iCAAc,EAAC,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,IAAA,iCAAc,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,IAAA,iCAAc,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAA,iCAAc,EAAC,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,IAAA,+BAAY,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,CAAC,IAAA,+BAAY,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,MAAM,CAAC,IAAA,+BAAY,EAAC,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,IAAA,+BAAY,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,CAAC,IAAA,+BAAY,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,CAAC,IAAA,+BAAY,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LerpNumber = void 0;
4
+ const easeFunctions_1 = require("./easeFunctions");
5
+ /**
6
+ * Utility class for smoothly interpolating between two numbers over time.
7
+ * Uses requestAnimationFrame for smooth animation and supports custom easing functions.
8
+ *
9
+ * @example
10
+ * const lerper = new LerpNumber();
11
+ * // Animate from 0 to 100 over 2 seconds
12
+ * await lerper.lerp({
13
+ * start: 0,
14
+ * end: 100,
15
+ * durationMS: 2000,
16
+ * update: (value) => console.log(value)
17
+ * });
18
+ */
19
+ class LerpNumber {
20
+ constructor() {
21
+ this.defaultDurationMS = 1000;
22
+ this.defaultEase = easeFunctions_1.quintInOut;
23
+ this._isLerping = false;
24
+ this._cancelLerp = false;
25
+ /**
26
+ * Initiates a lerp (linear interpolation) operation.
27
+ * If a lerp is already in progress, it will be cancelled before starting the new one.
28
+ *
29
+ * @param data - Configuration object for the lerp operation
30
+ * @returns Promise that resolves when the lerp completes or is cancelled
31
+ * @throws Never throws, but may reject if the update function throws
32
+ */
33
+ this.lerp = (data) => {
34
+ if (this._isLerping) {
35
+ this.cancel();
36
+ }
37
+ const { start, end, durationMS, ease, onComplete, update, onCancel } = data;
38
+ const durationToUse = durationMS !== null && durationMS !== void 0 ? durationMS : this.defaultDurationMS;
39
+ const easeToUse = ease !== null && ease !== void 0 ? ease : this.defaultEase;
40
+ return new Promise((resolve) => {
41
+ const startTime = performance.now();
42
+ this._isLerping = true;
43
+ update(start);
44
+ const interval = setInterval(() => {
45
+ if (this._cancelLerp) {
46
+ clearInterval(interval);
47
+ this._isLerping = false;
48
+ this._cancelLerp = false;
49
+ if (onCancel)
50
+ onCancel();
51
+ return resolve();
52
+ }
53
+ const currentTime = performance.now();
54
+ const elapsedTime = currentTime - startTime;
55
+ const progress = Math.min(elapsedTime / durationToUse, 1);
56
+ const easedProgress = easeToUse(progress);
57
+ const value = start + (end - start) * easedProgress;
58
+ update(value);
59
+ if (progress >= 1) {
60
+ clearInterval(interval);
61
+ this._isLerping = false;
62
+ update(end);
63
+ if (onComplete)
64
+ onComplete();
65
+ resolve();
66
+ }
67
+ }, 10);
68
+ });
69
+ };
70
+ }
71
+ get isLerping() {
72
+ return this._isLerping;
73
+ }
74
+ /**
75
+ * Cancels the current lerp operation if one is in progress.
76
+ * Triggers the onCancel callback if provided in the original lerp configuration.
77
+ */
78
+ cancel() {
79
+ if (!this._isLerping)
80
+ return;
81
+ this._cancelLerp = true;
82
+ }
83
+ }
84
+ exports.LerpNumber = LerpNumber;
85
+ //# sourceMappingURL=LerpNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LerpNumber.js","sourceRoot":"","sources":["../../../src/Utilities/LerpNumber.ts"],"names":[],"mappings":";;;AACA,mDAA6C;AAuB7C;;;;;;;;;;;;;GAaG;AACH,MAAa,UAAU;IAAvB;QACS,sBAAiB,GAAG,IAAI,CAAC;QACzB,gBAAW,GAAW,0BAAU,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,aAAV,UAAU,cAAV,UAAU,GAAI,IAAI,CAAC,iBAAiB,CAAC;YAC3D,MAAM,SAAS,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,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;AAtED,gCAsEC"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const LerpNumber_1 = require("./LerpNumber");
4
+ describe("Lerp Number", () => {
5
+ let lerpNumber;
6
+ let updateFn;
7
+ beforeEach(() => {
8
+ lerpNumber = new LerpNumber_1.LerpNumber();
9
+ updateFn = jest.fn();
10
+ jest.useFakeTimers();
11
+ });
12
+ afterEach(() => {
13
+ jest.useRealTimers();
14
+ });
15
+ it("should lerp from start to end value", async () => {
16
+ lerpNumber.defaultDurationMS = 1000;
17
+ const promise = lerpNumber.lerp({
18
+ start: 0,
19
+ end: 100,
20
+ update: updateFn,
21
+ });
22
+ // Test middle point (should have multiple updates by this point)
23
+ jest.advanceTimersByTime(500);
24
+ expect(updateFn).toHaveBeenCalledWith(expect.closeTo(50, 5)); // Allow some margin due to interval timing
25
+ // Complete animation
26
+ jest.advanceTimersByTime(500);
27
+ await promise;
28
+ expect(updateFn).toHaveBeenCalledWith(0); // Start value
29
+ expect(updateFn).toHaveBeenLastCalledWith(100); // End value
30
+ });
31
+ it("should cancel lerp when requested", async () => {
32
+ const onCancel = jest.fn();
33
+ const promise = lerpNumber.lerp({
34
+ start: 0,
35
+ end: 100,
36
+ update: updateFn,
37
+ onCancel,
38
+ });
39
+ expect(lerpNumber.isLerping).toBe(true);
40
+ lerpNumber.cancel();
41
+ jest.advanceTimersByTime(10); // Allow interval to execute
42
+ await promise;
43
+ expect(lerpNumber.isLerping).toBe(false);
44
+ expect(onCancel).toHaveBeenCalled();
45
+ });
46
+ it("should respect custom duration", async () => {
47
+ const promise = lerpNumber.lerp({
48
+ start: 0,
49
+ end: 100,
50
+ update: updateFn,
51
+ durationMS: 500,
52
+ });
53
+ jest.advanceTimersByTime(250); // Half way
54
+ expect(updateFn).toHaveBeenLastCalledWith(expect.any(Number));
55
+ jest.advanceTimersByTime(250); // Complete
56
+ await promise;
57
+ expect(updateFn).toHaveBeenLastCalledWith(100);
58
+ });
59
+ it("should call onComplete when finished", async () => {
60
+ const onComplete = jest.fn();
61
+ const promise = lerpNumber.lerp({
62
+ start: 0,
63
+ end: 100,
64
+ update: updateFn,
65
+ onComplete,
66
+ });
67
+ jest.advanceTimersByTime(1000);
68
+ await promise;
69
+ expect(onComplete).toHaveBeenCalled();
70
+ });
71
+ it("should cancel existing lerp when starting a new one", async () => {
72
+ const onCancel = jest.fn();
73
+ const firstPromise = lerpNumber.lerp({
74
+ start: 0,
75
+ end: 100,
76
+ update: updateFn,
77
+ onCancel,
78
+ });
79
+ const secondPromise = lerpNumber.lerp({
80
+ start: 200,
81
+ end: 300,
82
+ update: updateFn,
83
+ });
84
+ jest.advanceTimersByTime(1000);
85
+ await Promise.all([firstPromise, secondPromise]);
86
+ expect(onCancel).toHaveBeenCalled();
87
+ expect(updateFn).toHaveBeenLastCalledWith(300);
88
+ });
89
+ });
90
+ //# 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,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.degreesToRadians = degreesToRadians;
4
+ function degreesToRadians(deg) {
5
+ return deg * Math.PI / 180;
6
+ }
7
+ //# sourceMappingURL=degreesToRadians.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"degreesToRadians.js","sourceRoot":"","sources":["../../../src/Utilities/degreesToRadians.ts"],"names":[],"mappings":";;AAAA,4CAEC;AAFD,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,OAAO,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const degreesToRadians_1 = require("./degreesToRadians");
4
+ test("Converting degrees to radians", () => {
5
+ expect((0, degreesToRadians_1.degreesToRadians)(0)).toEqual(0);
6
+ expect((0, degreesToRadians_1.degreesToRadians)(180)).toBeCloseTo(Math.PI);
7
+ expect((0, degreesToRadians_1.degreesToRadians)(-90)).toBeCloseTo(-Math.PI / 2);
8
+ });
9
+ //# 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,yDAAqD;AAErD,IAAI,CAAC,+BAA+B,EAAE,GAAE,EAAE;IACxC,MAAM,CAAC,IAAA,mCAAgB,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,IAAA,mCAAgB,EAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,IAAA,mCAAgB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,GAAC,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC,CAAA"}
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.circInOut = exports.circOut = exports.circIn = exports.quintInOut = exports.quintOut = exports.quintIn = exports.quartInOut = exports.quartOut = exports.quartIn = exports.sinInOut = exports.sinOut = exports.sinIn = exports.expoInOut = exports.expoOut = exports.expoIn = exports.cubicInOut = exports.cubicOut = exports.cubicIn = exports.quadInOut = exports.quadOut = exports.quadIn = exports.easeLinear = void 0;
4
+ const easeLinear = (x) => {
5
+ if (x <= 0)
6
+ return 0;
7
+ if (x >= 1)
8
+ return 1;
9
+ return x;
10
+ };
11
+ exports.easeLinear = easeLinear;
12
+ const quadIn = (x) => {
13
+ if (x <= 0)
14
+ return 0;
15
+ if (x >= 1)
16
+ return 1;
17
+ return x * x;
18
+ };
19
+ exports.quadIn = quadIn;
20
+ const quadOut = (x) => {
21
+ if (x <= 0)
22
+ return 0;
23
+ if (x >= 1)
24
+ return 1;
25
+ return x * (2 - x);
26
+ };
27
+ exports.quadOut = quadOut;
28
+ const quadInOut = (x) => {
29
+ if (x <= 0)
30
+ return 0;
31
+ if (x >= 1)
32
+ return 1;
33
+ if (x < 0.5) {
34
+ return 2 * x * x;
35
+ }
36
+ else {
37
+ return 1 - Math.pow(-2 * x + 2, 2) / 2;
38
+ }
39
+ };
40
+ exports.quadInOut = quadInOut;
41
+ const cubicIn = (x) => {
42
+ if (x <= 0)
43
+ return 0;
44
+ if (x >= 1)
45
+ return 1;
46
+ return x * x * x;
47
+ };
48
+ exports.cubicIn = cubicIn;
49
+ const cubicOut = (x) => {
50
+ if (x <= 0)
51
+ return 0;
52
+ if (x >= 1)
53
+ return 1;
54
+ return --x * x * x + 1;
55
+ };
56
+ exports.cubicOut = cubicOut;
57
+ const cubicInOut = (x) => {
58
+ if (x <= 0)
59
+ return 0;
60
+ if (x >= 1)
61
+ return 1;
62
+ x *= 2;
63
+ if (x <= 1) {
64
+ return (x * x * x) / 2;
65
+ }
66
+ else {
67
+ return ((x -= 2) * x * x + 2) / 2;
68
+ }
69
+ };
70
+ exports.cubicInOut = cubicInOut;
71
+ const expoIn = (x) => {
72
+ if (x <= 0)
73
+ return 0;
74
+ if (x >= 1)
75
+ return 1;
76
+ return Math.pow(2, 10 * x - 10);
77
+ };
78
+ exports.expoIn = expoIn;
79
+ const expoOut = (x) => {
80
+ if (x <= 0)
81
+ return 0;
82
+ if (x >= 1)
83
+ return 1;
84
+ return 1 - Math.pow(2, -10 * x);
85
+ };
86
+ exports.expoOut = expoOut;
87
+ const expoInOut = (x) => {
88
+ if (x <= 0)
89
+ return 0;
90
+ if (x >= 1)
91
+ return 1;
92
+ return x < 0.5
93
+ ? Math.pow(2, 20 * x - 10) / 2
94
+ : (2 - Math.pow(2, -20 * x + 10)) / 2;
95
+ };
96
+ exports.expoInOut = expoInOut;
97
+ const sinIn = (x) => {
98
+ if (x <= 0)
99
+ return 0;
100
+ if (x >= 1)
101
+ return 1;
102
+ return 1 - Math.cos((x * Math.PI) / 2);
103
+ };
104
+ exports.sinIn = sinIn;
105
+ const sinOut = (x) => {
106
+ if (x <= 0)
107
+ return 0;
108
+ if (x >= 1)
109
+ return 1;
110
+ return Math.sin((x * Math.PI) / 2);
111
+ };
112
+ exports.sinOut = sinOut;
113
+ const sinInOut = (x) => {
114
+ if (x <= 0)
115
+ return 0;
116
+ if (x >= 1)
117
+ return 1;
118
+ return -(Math.cos(Math.PI * x) - 1) / 2;
119
+ };
120
+ exports.sinInOut = sinInOut;
121
+ const quartIn = (x) => {
122
+ if (x <= 0)
123
+ return 0;
124
+ if (x >= 1)
125
+ return 1;
126
+ return x * x * x * x;
127
+ };
128
+ exports.quartIn = quartIn;
129
+ const quartOut = (x) => {
130
+ if (x <= 0)
131
+ return 0;
132
+ if (x >= 1)
133
+ return 1;
134
+ return 1 - Math.pow(1 - x, 4);
135
+ };
136
+ exports.quartOut = quartOut;
137
+ const quartInOut = (x) => {
138
+ if (x <= 0)
139
+ return 0;
140
+ if (x >= 1)
141
+ return 1;
142
+ if (x < 0.5) {
143
+ return 8 * x * x * x * x;
144
+ }
145
+ else {
146
+ return 1 - Math.pow(-2 * x + 2, 4) / 2;
147
+ }
148
+ };
149
+ exports.quartInOut = quartInOut;
150
+ const quintIn = (x) => {
151
+ if (x <= 0)
152
+ return 0;
153
+ if (x >= 1)
154
+ return 1;
155
+ return x * x * x * x * x;
156
+ };
157
+ exports.quintIn = quintIn;
158
+ const quintOut = (x) => {
159
+ if (x <= 0)
160
+ return 0;
161
+ if (x >= 1)
162
+ return 1;
163
+ return 1 - Math.pow(1 - x, 5);
164
+ };
165
+ exports.quintOut = quintOut;
166
+ const quintInOut = (x) => {
167
+ if (x <= 0)
168
+ return 0;
169
+ if (x >= 1)
170
+ return 1;
171
+ if (x < 0.5) {
172
+ return 16 * x * x * x * x * x;
173
+ }
174
+ else {
175
+ return 1 - Math.pow(-2 * x + 2, 5) / 2;
176
+ }
177
+ };
178
+ exports.quintInOut = quintInOut;
179
+ const circIn = (x) => {
180
+ if (x <= 0)
181
+ return 0;
182
+ if (x >= 1)
183
+ return 1;
184
+ return 1 - Math.sqrt(1 - Math.pow(x, 2));
185
+ };
186
+ exports.circIn = circIn;
187
+ const circOut = (x) => {
188
+ if (x <= 0)
189
+ return 0;
190
+ if (x >= 1)
191
+ return 1;
192
+ return Math.sqrt(1 - Math.pow(x - 1, 2));
193
+ };
194
+ exports.circOut = circOut;
195
+ const circInOut = (x) => {
196
+ if (x <= 0)
197
+ return 0;
198
+ if (x >= 1)
199
+ return 1;
200
+ if (x < 0.5) {
201
+ return (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2;
202
+ }
203
+ else {
204
+ return (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2;
205
+ }
206
+ };
207
+ exports.circInOut = circInOut;
208
+ //# sourceMappingURL=easeFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easeFunctions.js","sourceRoot":"","sources":["../../../src/Utilities/easeFunctions.ts"],"names":[],"mappings":"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"}