@vysmo/easings 0.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 (198) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +368 -0
  3. package/dist/builders/anticipate.d.ts +20 -0
  4. package/dist/builders/anticipate.d.ts.map +1 -0
  5. package/dist/builders/anticipate.js +52 -0
  6. package/dist/builders/anticipate.js.map +1 -0
  7. package/dist/builders/bezier.d.ts +7 -0
  8. package/dist/builders/bezier.d.ts.map +1 -0
  9. package/dist/builders/bezier.js +69 -0
  10. package/dist/builders/bezier.js.map +1 -0
  11. package/dist/builders/breathe.d.ts +11 -0
  12. package/dist/builders/breathe.d.ts.map +1 -0
  13. package/dist/builders/breathe.js +14 -0
  14. package/dist/builders/breathe.js.map +1 -0
  15. package/dist/builders/custom.d.ts +13 -0
  16. package/dist/builders/custom.d.ts.map +1 -0
  17. package/dist/builders/custom.js +40 -0
  18. package/dist/builders/custom.js.map +1 -0
  19. package/dist/builders/expoScale.d.ts +13 -0
  20. package/dist/builders/expoScale.d.ts.map +1 -0
  21. package/dist/builders/expoScale.js +27 -0
  22. package/dist/builders/expoScale.js.map +1 -0
  23. package/dist/builders/gravity.d.ts +12 -0
  24. package/dist/builders/gravity.d.ts.map +1 -0
  25. package/dist/builders/gravity.js +11 -0
  26. package/dist/builders/gravity.js.map +1 -0
  27. package/dist/builders/index.d.ts +12 -0
  28. package/dist/builders/index.d.ts.map +1 -0
  29. package/dist/builders/index.js +12 -0
  30. package/dist/builders/index.js.map +1 -0
  31. package/dist/builders/rough.d.ts +17 -0
  32. package/dist/builders/rough.d.ts.map +1 -0
  33. package/dist/builders/rough.js +62 -0
  34. package/dist/builders/rough.js.map +1 -0
  35. package/dist/builders/slow.d.ts +16 -0
  36. package/dist/builders/slow.d.ts.map +1 -0
  37. package/dist/builders/slow.js +59 -0
  38. package/dist/builders/slow.js.map +1 -0
  39. package/dist/builders/spring-presets.d.ts +48 -0
  40. package/dist/builders/spring-presets.d.ts.map +1 -0
  41. package/dist/builders/spring-presets.js +19 -0
  42. package/dist/builders/spring-presets.js.map +1 -0
  43. package/dist/builders/spring.d.ts +12 -0
  44. package/dist/builders/spring.d.ts.map +1 -0
  45. package/dist/builders/spring.js +46 -0
  46. package/dist/builders/spring.js.map +1 -0
  47. package/dist/builders/wiggle.d.ts +9 -0
  48. package/dist/builders/wiggle.d.ts.map +1 -0
  49. package/dist/builders/wiggle.js +23 -0
  50. package/dist/builders/wiggle.js.map +1 -0
  51. package/dist/css.d.ts +40 -0
  52. package/dist/css.d.ts.map +1 -0
  53. package/dist/css.js +71 -0
  54. package/dist/css.js.map +1 -0
  55. package/dist/define.d.ts +12 -0
  56. package/dist/define.d.ts.map +1 -0
  57. package/dist/define.js +31 -0
  58. package/dist/define.js.map +1 -0
  59. package/dist/easings/back.d.ts +8 -0
  60. package/dist/easings/back.d.ts.map +1 -0
  61. package/dist/easings/back.js +20 -0
  62. package/dist/easings/back.js.map +1 -0
  63. package/dist/easings/bounce.d.ts +4 -0
  64. package/dist/easings/bounce.d.ts.map +1 -0
  65. package/dist/easings/bounce.js +21 -0
  66. package/dist/easings/bounce.js.map +1 -0
  67. package/dist/easings/circ.d.ts +4 -0
  68. package/dist/easings/circ.d.ts.map +1 -0
  69. package/dist/easings/circ.js +7 -0
  70. package/dist/easings/circ.js.map +1 -0
  71. package/dist/easings/elastic.d.ts +9 -0
  72. package/dist/easings/elastic.d.ts.map +1 -0
  73. package/dist/easings/elastic.js +33 -0
  74. package/dist/easings/elastic.js.map +1 -0
  75. package/dist/easings/expo.d.ts +4 -0
  76. package/dist/easings/expo.d.ts.map +1 -0
  77. package/dist/easings/expo.js +11 -0
  78. package/dist/easings/expo.js.map +1 -0
  79. package/dist/easings/index.d.ts +11 -0
  80. package/dist/easings/index.d.ts.map +1 -0
  81. package/dist/easings/index.js +11 -0
  82. package/dist/easings/index.js.map +1 -0
  83. package/dist/easings/linear.d.ts +3 -0
  84. package/dist/easings/linear.d.ts.map +1 -0
  85. package/dist/easings/linear.js +4 -0
  86. package/dist/easings/linear.js.map +1 -0
  87. package/dist/easings/power.d.ts +25 -0
  88. package/dist/easings/power.d.ts.map +1 -0
  89. package/dist/easings/power.js +29 -0
  90. package/dist/easings/power.js.map +1 -0
  91. package/dist/easings/sine.d.ts +4 -0
  92. package/dist/easings/sine.d.ts.map +1 -0
  93. package/dist/easings/sine.js +6 -0
  94. package/dist/easings/sine.js.map +1 -0
  95. package/dist/easings/smooth.d.ts +4 -0
  96. package/dist/easings/smooth.d.ts.map +1 -0
  97. package/dist/easings/smooth.js +21 -0
  98. package/dist/easings/smooth.js.map +1 -0
  99. package/dist/easings/steps.d.ts +8 -0
  100. package/dist/easings/steps.d.ts.map +1 -0
  101. package/dist/easings/steps.js +16 -0
  102. package/dist/easings/steps.js.map +1 -0
  103. package/dist/index.d.ts +10 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +8 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/modifiers/blend.d.ts +13 -0
  108. package/dist/modifiers/blend.d.ts.map +1 -0
  109. package/dist/modifiers/blend.js +21 -0
  110. package/dist/modifiers/blend.js.map +1 -0
  111. package/dist/modifiers/chain.d.ts +18 -0
  112. package/dist/modifiers/chain.d.ts.map +1 -0
  113. package/dist/modifiers/chain.js +40 -0
  114. package/dist/modifiers/chain.js.map +1 -0
  115. package/dist/modifiers/index.d.ts +7 -0
  116. package/dist/modifiers/index.d.ts.map +1 -0
  117. package/dist/modifiers/index.js +7 -0
  118. package/dist/modifiers/index.js.map +1 -0
  119. package/dist/modifiers/mirror.d.ts +8 -0
  120. package/dist/modifiers/mirror.d.ts.map +1 -0
  121. package/dist/modifiers/mirror.js +14 -0
  122. package/dist/modifiers/mirror.js.map +1 -0
  123. package/dist/modifiers/reverse.d.ts +4 -0
  124. package/dist/modifiers/reverse.d.ts.map +1 -0
  125. package/dist/modifiers/reverse.js +6 -0
  126. package/dist/modifiers/reverse.js.map +1 -0
  127. package/dist/modifiers/slice.d.ts +11 -0
  128. package/dist/modifiers/slice.d.ts.map +1 -0
  129. package/dist/modifiers/slice.js +28 -0
  130. package/dist/modifiers/slice.js.map +1 -0
  131. package/dist/modifiers/yoyo.d.ts +8 -0
  132. package/dist/modifiers/yoyo.d.ts.map +1 -0
  133. package/dist/modifiers/yoyo.js +10 -0
  134. package/dist/modifiers/yoyo.js.map +1 -0
  135. package/dist/parse.d.ts +14 -0
  136. package/dist/parse.d.ts.map +1 -0
  137. package/dist/parse.js +108 -0
  138. package/dist/parse.js.map +1 -0
  139. package/dist/reduced-motion.d.ts +17 -0
  140. package/dist/reduced-motion.d.ts.map +1 -0
  141. package/dist/reduced-motion.js +24 -0
  142. package/dist/reduced-motion.js.map +1 -0
  143. package/dist/types.d.ts +8 -0
  144. package/dist/types.d.ts.map +1 -0
  145. package/dist/types.js +2 -0
  146. package/dist/types.js.map +1 -0
  147. package/package.json +63 -0
  148. package/src/__tests__/anticipate-variants.test.ts +58 -0
  149. package/src/__tests__/builders.test.ts +349 -0
  150. package/src/__tests__/contract.test.ts +47 -0
  151. package/src/__tests__/css.test.ts +93 -0
  152. package/src/__tests__/easings.bench.ts +66 -0
  153. package/src/__tests__/endpoint-correctness.test.ts +170 -0
  154. package/src/__tests__/modifiers.test.ts +134 -0
  155. package/src/__tests__/parametric.test.ts +148 -0
  156. package/src/__tests__/parse.test.ts +71 -0
  157. package/src/__tests__/property.test.ts +110 -0
  158. package/src/__tests__/reduced-motion.test.ts +66 -0
  159. package/src/__tests__/slice.test.ts +38 -0
  160. package/src/__tests__/spring-presets.test.ts +48 -0
  161. package/src/__tests__/ssr.test.ts +62 -0
  162. package/src/__tests__/types-check.ts +104 -0
  163. package/src/builders/anticipate.ts +66 -0
  164. package/src/builders/bezier.ts +71 -0
  165. package/src/builders/breathe.ts +31 -0
  166. package/src/builders/custom.ts +43 -0
  167. package/src/builders/expoScale.ts +30 -0
  168. package/src/builders/gravity.ts +27 -0
  169. package/src/builders/index.ts +24 -0
  170. package/src/builders/rough.ts +83 -0
  171. package/src/builders/slow.ts +72 -0
  172. package/src/builders/spring-presets.ts +20 -0
  173. package/src/builders/spring.ts +61 -0
  174. package/src/builders/wiggle.ts +40 -0
  175. package/src/css.ts +79 -0
  176. package/src/define.ts +49 -0
  177. package/src/easings/back.ts +24 -0
  178. package/src/easings/bounce.ts +23 -0
  179. package/src/easings/circ.ts +9 -0
  180. package/src/easings/elastic.ts +52 -0
  181. package/src/easings/expo.ts +9 -0
  182. package/src/easings/index.ts +35 -0
  183. package/src/easings/linear.ts +4 -0
  184. package/src/easings/power.ts +38 -0
  185. package/src/easings/sine.ts +7 -0
  186. package/src/easings/smooth.ts +25 -0
  187. package/src/easings/steps.ts +25 -0
  188. package/src/index.ts +9 -0
  189. package/src/modifiers/blend.ts +24 -0
  190. package/src/modifiers/chain.ts +63 -0
  191. package/src/modifiers/index.ts +6 -0
  192. package/src/modifiers/mirror.ts +14 -0
  193. package/src/modifiers/reverse.ts +7 -0
  194. package/src/modifiers/slice.ts +29 -0
  195. package/src/modifiers/yoyo.ts +15 -0
  196. package/src/parse.ts +167 -0
  197. package/src/reduced-motion.ts +26 -0
  198. package/src/types.ts +8 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EACzB,OAAO,GAAE,mBAAwB,GAChC,QAAQ,CAcV;AAED,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EACrD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAC3C,OAAO,GAAE,mBAAwB,GAChC,gBAAgB,CAAC,CAAC,CAAC,CAYrB"}
package/dist/define.js ADDED
@@ -0,0 +1,31 @@
1
+ export function defineEasing(name, fn, options = {}) {
2
+ const { exactEndpoints = true } = options;
3
+ const wrapped = ((t) => {
4
+ // Defensive: NaN and non-finite inputs collapse to 0. Better than
5
+ // propagating NaN through a whole animation pipeline.
6
+ if (!Number.isFinite(t))
7
+ return 0;
8
+ if (exactEndpoints) {
9
+ if (t <= 0)
10
+ return 0;
11
+ if (t >= 1)
12
+ return 1;
13
+ }
14
+ return fn(t);
15
+ });
16
+ Object.defineProperty(wrapped, "easingName", { value: name, enumerable: true });
17
+ return wrapped;
18
+ }
19
+ export function defineParametricEasing(name, defaults, build, options = {}) {
20
+ const base = defineEasing(name, build(defaults), options);
21
+ Object.defineProperty(base, "defaults", {
22
+ value: Object.freeze({ ...defaults }),
23
+ enumerable: true,
24
+ });
25
+ Object.defineProperty(base, "with", {
26
+ value: (params) => defineEasing(name, build({ ...defaults, ...params }), options),
27
+ enumerable: true,
28
+ });
29
+ return base;
30
+ }
31
+ //# sourceMappingURL=define.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,EAAyB,EACzB,UAA+B,EAAE;IAEjC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC1C,MAAM,OAAO,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE;QAC7B,kEAAkE;QAClE,sDAAsD;QACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAClC,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACf,CAAC,CAAa,CAAC;IACf,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,QAAW,EACX,KAA2C,EAC3C,UAA+B,EAAE;IAEjC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAwB,CAAC;IACjF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;QACtC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;QACrC,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;QAClC,KAAK,EAAE,CAAC,MAAkB,EAAY,EAAE,CACtC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC;QAChE,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,8 @@
1
+ type BackParams = {
2
+ overshoot: number;
3
+ };
4
+ export declare const backIn: import("../types.js").ParametricEasing<BackParams>;
5
+ export declare const backOut: import("../types.js").ParametricEasing<BackParams>;
6
+ export declare const backInOut: import("../types.js").ParametricEasing<BackParams>;
7
+ export {};
8
+ //# sourceMappingURL=back.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"back.d.ts","sourceRoot":"","sources":["../../src/easings/back.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAIxC,eAAO,MAAM,MAAM,oDAEjB,CAAC;AAEH,eAAO,MAAM,OAAO,oDAGlB,CAAC;AAEH,eAAO,MAAM,SAAS,oDAQpB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { defineParametricEasing } from "../define.js";
2
+ const DEFAULTS = { overshoot: 1.70158 };
3
+ export const backIn = defineParametricEasing("back.in", DEFAULTS, ({ overshoot: s }) => (t) => {
4
+ return t * t * ((s + 1) * t - s);
5
+ });
6
+ export const backOut = defineParametricEasing("back.out", DEFAULTS, ({ overshoot: s }) => (t) => {
7
+ const u = t - 1;
8
+ return u * u * ((s + 1) * u + s) + 1;
9
+ });
10
+ export const backInOut = defineParametricEasing("back.inOut", DEFAULTS, ({ overshoot }) => {
11
+ const s = overshoot * 1.525;
12
+ return (t) => {
13
+ const u = t * 2;
14
+ if (u < 1)
15
+ return 0.5 * (u * u * ((s + 1) * u - s));
16
+ const v = u - 2;
17
+ return 0.5 * (v * v * ((s + 1) * v + s) + 2);
18
+ };
19
+ });
20
+ //# sourceMappingURL=back.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"back.js","sourceRoot":"","sources":["../../src/easings/back.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAItD,MAAM,QAAQ,GAAe,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAEpD,MAAM,CAAC,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IAC5F,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IAC9F,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,sBAAsB,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;IACxF,MAAM,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;IAC5B,OAAO,CAAC,CAAC,EAAE,EAAE;QACX,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const bounceOut: import("../types.js").EasingFn;
2
+ export declare const bounceIn: import("../types.js").EasingFn;
3
+ export declare const bounceInOut: import("../types.js").EasingFn;
4
+ //# sourceMappingURL=bounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounce.d.ts","sourceRoot":"","sources":["../../src/easings/bounce.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,SAAS,gCAA4C,CAAC;AACnE,eAAO,MAAM,QAAQ,gCAA6D,CAAC;AACnF,eAAO,MAAM,WAAW,gCAEvB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { defineEasing } from "../define.js";
2
+ function bounceOutImpl(t) {
3
+ const n = 7.5625;
4
+ const d = 2.75;
5
+ if (t < 1 / d)
6
+ return n * t * t;
7
+ if (t < 2 / d) {
8
+ const u = t - 1.5 / d;
9
+ return n * u * u + 0.75;
10
+ }
11
+ if (t < 2.5 / d) {
12
+ const u = t - 2.25 / d;
13
+ return n * u * u + 0.9375;
14
+ }
15
+ const u = t - 2.625 / d;
16
+ return n * u * u + 0.984375;
17
+ }
18
+ export const bounceOut = defineEasing("bounce.out", bounceOutImpl);
19
+ export const bounceIn = defineEasing("bounce.in", (t) => 1 - bounceOutImpl(1 - t));
20
+ export const bounceInOut = defineEasing("bounce.inOut", (t) => t < 0.5 ? (1 - bounceOutImpl(1 - 2 * t)) / 2 : (1 + bounceOutImpl(2 * t - 1)) / 2);
21
+ //# sourceMappingURL=bounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounce.js","sourceRoot":"","sources":["../../src/easings/bounce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,SAAS,aAAa,CAAC,CAAS;IAC9B,MAAM,CAAC,GAAG,MAAM,CAAC;IACjB,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC5B,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAC5D,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAClF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const circIn: import("../types.js").EasingFn;
2
+ export declare const circOut: import("../types.js").EasingFn;
3
+ export declare const circInOut: import("../types.js").EasingFn;
4
+ //# sourceMappingURL=circ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circ.d.ts","sourceRoot":"","sources":["../../src/easings/circ.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,gCAA2D,CAAC;AAC/E,eAAO,MAAM,OAAO,gCAAoE,CAAC;AACzF,eAAO,MAAM,SAAS,gCAIrB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { defineEasing } from "../define.js";
2
+ export const circIn = defineEasing("circ.in", (t) => 1 - Math.sqrt(1 - t * t));
3
+ export const circOut = defineEasing("circ.out", (t) => Math.sqrt(1 - (t - 1) * (t - 1)));
4
+ export const circInOut = defineEasing("circ.inOut", (t) => t < 0.5
5
+ ? (1 - Math.sqrt(1 - (2 * t) ** 2)) / 2
6
+ : (Math.sqrt(1 - (-2 * t + 2) ** 2) + 1) / 2);
7
+ //# sourceMappingURL=circ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circ.js","sourceRoot":"","sources":["../../src/easings/circ.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CACxD,CAAC,GAAG,GAAG;IACL,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACvC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAC/C,CAAC"}
@@ -0,0 +1,9 @@
1
+ type ElasticParams = {
2
+ amplitude: number;
3
+ period: number;
4
+ };
5
+ export declare const elasticIn: import("../types.js").ParametricEasing<ElasticParams>;
6
+ export declare const elasticOut: import("../types.js").ParametricEasing<ElasticParams>;
7
+ export declare const elasticInOut: import("../types.js").ParametricEasing<ElasticParams>;
8
+ export {};
9
+ //# sourceMappingURL=elastic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elastic.d.ts","sourceRoot":"","sources":["../../src/easings/elastic.ts"],"names":[],"mappings":"AAEA,KAAK,aAAa,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAa3D,eAAO,MAAM,SAAS,uDAQrB,CAAC;AAEF,eAAO,MAAM,UAAU,uDAQtB,CAAC;AAEF,eAAO,MAAM,YAAY,uDAgBxB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { defineParametricEasing } from "../define.js";
2
+ const DEFAULTS = { amplitude: 1, period: 0.3 };
3
+ const TAU = Math.PI * 2;
4
+ function resolveAmplitude(a) {
5
+ return a < 1 ? 1 : a;
6
+ }
7
+ function resolvePhase(a, p) {
8
+ return a < 1 ? p / 4 : (p / TAU) * Math.asin(1 / a);
9
+ }
10
+ export const elasticIn = defineParametricEasing("elastic.in", DEFAULTS, ({ amplitude, period }) => {
11
+ const a = resolveAmplitude(amplitude);
12
+ const s = resolvePhase(amplitude, period);
13
+ return (t) => -(a * 2 ** (10 * (t - 1)) * Math.sin(((t - 1 - s) * TAU) / period));
14
+ });
15
+ export const elasticOut = defineParametricEasing("elastic.out", DEFAULTS, ({ amplitude, period }) => {
16
+ const a = resolveAmplitude(amplitude);
17
+ const s = resolvePhase(amplitude, period);
18
+ return (t) => a * 2 ** (-10 * t) * Math.sin(((t - s) * TAU) / period) + 1;
19
+ });
20
+ export const elasticInOut = defineParametricEasing("elastic.inOut", DEFAULTS, ({ amplitude, period }) => {
21
+ const a = resolveAmplitude(amplitude);
22
+ const p = period * 1.5;
23
+ const s = resolvePhase(amplitude, p);
24
+ return (t) => {
25
+ const u = t * 2;
26
+ if (u < 1) {
27
+ return -0.5 * (a * 2 ** (10 * (u - 1)) * Math.sin(((u - 1 - s) * TAU) / p));
28
+ }
29
+ const v = u - 1;
30
+ return 0.5 * a * 2 ** (-10 * v) * Math.sin(((v - s) * TAU) / p) + 1;
31
+ };
32
+ });
33
+ //# sourceMappingURL=elastic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elastic.js","sourceRoot":"","sources":["../../src/easings/elastic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAItD,MAAM,QAAQ,GAAkB,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAExB,SAAS,gBAAgB,CAAC,CAAS;IACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,CAAS,EAAE,CAAS;IACxC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,sBAAsB,CAC7C,YAAY,EACZ,QAAQ,EACR,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;IACxB,MAAM,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACpF,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,sBAAsB,CAC9C,aAAa,EACb,QAAQ,EACR,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;IACxB,MAAM,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5E,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,sBAAsB,CAChD,eAAe,EACf,QAAQ,EACR,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;IACxB,MAAM,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC;IACvB,MAAM,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC,EAAE,EAAE;QACX,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const expoIn: import("../types.js").EasingFn;
2
+ export declare const expoOut: import("../types.js").EasingFn;
3
+ export declare const expoInOut: import("../types.js").EasingFn;
4
+ //# sourceMappingURL=expo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expo.d.ts","sourceRoot":"","sources":["../../src/easings/expo.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,gCAAqE,CAAC;AACzF,eAAO,MAAM,OAAO,gCAAsE,CAAC;AAC3F,eAAO,MAAM,SAAS,gCAIpB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { defineEasing } from "../define.js";
2
+ export const expoIn = defineEasing("expo.in", (t) => (t === 0 ? 0 : 2 ** (10 * t - 10)));
3
+ export const expoOut = defineEasing("expo.out", (t) => (t === 1 ? 1 : 1 - 2 ** (-10 * t)));
4
+ export const expoInOut = defineEasing("expo.inOut", (t) => {
5
+ if (t === 0)
6
+ return 0;
7
+ if (t === 1)
8
+ return 1;
9
+ return t < 0.5 ? 2 ** (20 * t - 10) / 2 : (2 - 2 ** (-20 * t + 10)) / 2;
10
+ });
11
+ //# sourceMappingURL=expo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expo.js","sourceRoot":"","sources":["../../src/easings/expo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACzF,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACxD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { linear, none } from "./linear.js";
2
+ export { power1In, power1Out, power1InOut, power2In, power2Out, power2InOut, power3In, power3Out, power3InOut, power4In, power4Out, power4InOut, quadIn, quadOut, quadInOut, cubicIn, cubicOut, cubicInOut, quartIn, quartOut, quartInOut, quintIn, quintOut, quintInOut, } from "./power.js";
3
+ export { sineIn, sineOut, sineInOut } from "./sine.js";
4
+ export { circIn, circOut, circInOut } from "./circ.js";
5
+ export { expoIn, expoOut, expoInOut } from "./expo.js";
6
+ export { smoothIn, smoothOut, smoothInOut } from "./smooth.js";
7
+ export { backIn, backOut, backInOut } from "./back.js";
8
+ export { elasticIn, elasticOut, elasticInOut } from "./elastic.js";
9
+ export { bounceIn, bounceOut, bounceInOut } from "./bounce.js";
10
+ export { steps, type StepPosition } from "./steps.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/easings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,WAAW,EACX,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { linear, none } from "./linear.js";
2
+ export { power1In, power1Out, power1InOut, power2In, power2Out, power2InOut, power3In, power3Out, power3InOut, power4In, power4Out, power4InOut, quadIn, quadOut, quadInOut, cubicIn, cubicOut, cubicInOut, quartIn, quartOut, quartInOut, quintIn, quintOut, quintInOut, } from "./power.js";
3
+ export { sineIn, sineOut, sineInOut } from "./sine.js";
4
+ export { circIn, circOut, circInOut } from "./circ.js";
5
+ export { expoIn, expoOut, expoInOut } from "./expo.js";
6
+ export { smoothIn, smoothOut, smoothInOut } from "./smooth.js";
7
+ export { backIn, backOut, backInOut } from "./back.js";
8
+ export { elasticIn, elasticOut, elasticInOut } from "./elastic.js";
9
+ export { bounceIn, bounceOut, bounceInOut } from "./bounce.js";
10
+ export { steps } from "./steps.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/easings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,WAAW,EACX,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAqB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const linear: import("../types.js").EasingFn;
2
+ export declare const none: import("../types.js").EasingFn;
3
+ //# sourceMappingURL=linear.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/easings/linear.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,gCAAmC,CAAC;AACvD,eAAO,MAAM,IAAI,gCAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { defineEasing } from "../define.js";
2
+ export const linear = defineEasing("linear", (t) => t);
3
+ export const none = linear;
4
+ //# sourceMappingURL=linear.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/easings/linear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC"}
@@ -0,0 +1,25 @@
1
+ export declare const power1In: import("../types.js").EasingFn;
2
+ export declare const power1Out: import("../types.js").EasingFn;
3
+ export declare const power1InOut: import("../types.js").EasingFn;
4
+ export declare const power2In: import("../types.js").EasingFn;
5
+ export declare const power2Out: import("../types.js").EasingFn;
6
+ export declare const power2InOut: import("../types.js").EasingFn;
7
+ export declare const power3In: import("../types.js").EasingFn;
8
+ export declare const power3Out: import("../types.js").EasingFn;
9
+ export declare const power3InOut: import("../types.js").EasingFn;
10
+ export declare const power4In: import("../types.js").EasingFn;
11
+ export declare const power4Out: import("../types.js").EasingFn;
12
+ export declare const power4InOut: import("../types.js").EasingFn;
13
+ export declare const quadIn: import("../types.js").EasingFn;
14
+ export declare const quadOut: import("../types.js").EasingFn;
15
+ export declare const quadInOut: import("../types.js").EasingFn;
16
+ export declare const cubicIn: import("../types.js").EasingFn;
17
+ export declare const cubicOut: import("../types.js").EasingFn;
18
+ export declare const cubicInOut: import("../types.js").EasingFn;
19
+ export declare const quartIn: import("../types.js").EasingFn;
20
+ export declare const quartOut: import("../types.js").EasingFn;
21
+ export declare const quartInOut: import("../types.js").EasingFn;
22
+ export declare const quintIn: import("../types.js").EasingFn;
23
+ export declare const quintOut: import("../types.js").EasingFn;
24
+ export declare const quintInOut: import("../types.js").EasingFn;
25
+ //# sourceMappingURL=power.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"power.d.ts","sourceRoot":"","sources":["../../src/easings/power.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,QAAQ,gCAAuC,CAAC;AAC7D,eAAO,MAAM,SAAS,gCAAyC,CAAC;AAChE,eAAO,MAAM,WAAW,gCAA6C,CAAC;AAEtE,eAAO,MAAM,QAAQ,gCAAuC,CAAC;AAC7D,eAAO,MAAM,SAAS,gCAAyC,CAAC;AAChE,eAAO,MAAM,WAAW,gCAA6C,CAAC;AAEtE,eAAO,MAAM,QAAQ,gCAAuC,CAAC;AAC7D,eAAO,MAAM,SAAS,gCAAyC,CAAC;AAChE,eAAO,MAAM,WAAW,gCAA6C,CAAC;AAEtE,eAAO,MAAM,QAAQ,gCAAuC,CAAC;AAC7D,eAAO,MAAM,SAAS,gCAAyC,CAAC;AAChE,eAAO,MAAM,WAAW,gCAA6C,CAAC;AAEtE,eAAO,MAAM,MAAM,gCAAW,CAAC;AAC/B,eAAO,MAAM,OAAO,gCAAY,CAAC;AACjC,eAAO,MAAM,SAAS,gCAAc,CAAC;AAErC,eAAO,MAAM,OAAO,gCAAW,CAAC;AAChC,eAAO,MAAM,QAAQ,gCAAY,CAAC;AAClC,eAAO,MAAM,UAAU,gCAAc,CAAC;AAEtC,eAAO,MAAM,OAAO,gCAAW,CAAC;AAChC,eAAO,MAAM,QAAQ,gCAAY,CAAC;AAClC,eAAO,MAAM,UAAU,gCAAc,CAAC;AAEtC,eAAO,MAAM,OAAO,gCAAW,CAAC;AAChC,eAAO,MAAM,QAAQ,gCAAY,CAAC;AAClC,eAAO,MAAM,UAAU,gCAAc,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { defineEasing } from "../define.js";
2
+ const makeIn = (n) => (t) => t ** n;
3
+ const makeOut = (n) => (t) => 1 - (1 - t) ** n;
4
+ const makeInOut = (n) => (t) => t < 0.5 ? 2 ** (n - 1) * t ** n : 1 - (-2 * t + 2) ** n / 2;
5
+ export const power1In = defineEasing("power1.in", makeIn(2));
6
+ export const power1Out = defineEasing("power1.out", makeOut(2));
7
+ export const power1InOut = defineEasing("power1.inOut", makeInOut(2));
8
+ export const power2In = defineEasing("power2.in", makeIn(3));
9
+ export const power2Out = defineEasing("power2.out", makeOut(3));
10
+ export const power2InOut = defineEasing("power2.inOut", makeInOut(3));
11
+ export const power3In = defineEasing("power3.in", makeIn(4));
12
+ export const power3Out = defineEasing("power3.out", makeOut(4));
13
+ export const power3InOut = defineEasing("power3.inOut", makeInOut(4));
14
+ export const power4In = defineEasing("power4.in", makeIn(5));
15
+ export const power4Out = defineEasing("power4.out", makeOut(5));
16
+ export const power4InOut = defineEasing("power4.inOut", makeInOut(5));
17
+ export const quadIn = power1In;
18
+ export const quadOut = power1Out;
19
+ export const quadInOut = power1InOut;
20
+ export const cubicIn = power2In;
21
+ export const cubicOut = power2Out;
22
+ export const cubicInOut = power2InOut;
23
+ export const quartIn = power3In;
24
+ export const quartOut = power3Out;
25
+ export const quartInOut = power3InOut;
26
+ export const quintIn = power4In;
27
+ export const quintOut = power4Out;
28
+ export const quintInOut = power4InOut;
29
+ //# sourceMappingURL=power.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"power.js","sourceRoot":"","sources":["../../src/easings/power.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACpD,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/D,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CAC7C,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AACjC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AAErC,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAChC,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAChC,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAChC,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const sineIn: import("../types.js").EasingFn;
2
+ export declare const sineOut: import("../types.js").EasingFn;
3
+ export declare const sineInOut: import("../types.js").EasingFn;
4
+ //# sourceMappingURL=sine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sine.d.ts","sourceRoot":"","sources":["../../src/easings/sine.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM,gCAA4D,CAAC;AAChF,eAAO,MAAM,OAAO,gCAAyD,CAAC;AAC9E,eAAO,MAAM,SAAS,gCAAsE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { defineEasing } from "../define.js";
2
+ const HALF_PI = Math.PI / 2;
3
+ export const sineIn = defineEasing("sine.in", (t) => 1 - Math.cos(t * HALF_PI));
4
+ export const sineOut = defineEasing("sine.out", (t) => Math.sin(t * HALF_PI));
5
+ export const sineInOut = defineEasing("sine.inOut", (t) => -(Math.cos(Math.PI * t) - 1) / 2);
6
+ //# sourceMappingURL=sine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sine.js","sourceRoot":"","sources":["../../src/easings/sine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAE5B,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const smoothInOut: import("../types.js").EasingFn;
2
+ export declare const smoothIn: import("../types.js").EasingFn;
3
+ export declare const smoothOut: import("../types.js").EasingFn;
4
+ //# sourceMappingURL=smooth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smooth.d.ts","sourceRoot":"","sources":["../../src/easings/smooth.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,WAAW,gCAA2C,CAAC;AAIpE,eAAO,MAAM,QAAQ,gCAGnB,CAAC;AAGH,eAAO,MAAM,SAAS,gCAGpB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { defineEasing } from "../define.js";
2
+ // Hermite smoothstep. C¹-continuous at both endpoints — zero velocity
3
+ // at t=0 AND t=1. The canonical inOut shape from GLSL `smoothstep`,
4
+ // distinct from `power2.inOut` whose first derivative is non-zero at
5
+ // the endpoints. The in/out variants are derived by rescaling halves
6
+ // of the smoothstep curve, so they preserve Hermite smoothness on the
7
+ // "interior" endpoint (t=0 for in, t=1 for out).
8
+ const smoothstep = (t) => t * t * (3 - 2 * t);
9
+ export const smoothInOut = defineEasing("smooth.inOut", smoothstep);
10
+ // 2·smoothstep(t/2): first half of the inOut curve, scaled to [0, 1].
11
+ // f(0)=0, f(1)=1, f'(0)=0, f'(1)=1.5 — slow start, accelerates out.
12
+ export const smoothIn = defineEasing("smooth.in", (t) => {
13
+ const u = t / 2;
14
+ return 2 * smoothstep(u);
15
+ });
16
+ // Mirror of smoothIn. Fast start, decelerates to zero velocity at t=1.
17
+ export const smoothOut = defineEasing("smooth.out", (t) => {
18
+ const u = (1 - t) / 2;
19
+ return 1 - 2 * smoothstep(u);
20
+ });
21
+ //# sourceMappingURL=smooth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smooth.js","sourceRoot":"","sources":["../../src/easings/smooth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,sEAAsE;AACtE,oEAAoE;AACpE,qEAAqE;AACrE,qEAAqE;AACrE,sEAAsE;AACtE,iDAAiD;AAEjD,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtD,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAEpE,sEAAsE;AACtE,oEAAoE;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;IACtD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,uEAAuE;AACvE,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;IACxD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type StepPosition = "start" | "end" | "none";
2
+ type StepsParams = {
3
+ count: number;
4
+ position: StepPosition;
5
+ };
6
+ export declare const steps: import("../types.js").ParametricEasing<StepsParams>;
7
+ export {};
8
+ //# sourceMappingURL=steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/easings/steps.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpD,KAAK,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,CAAC;AAI7D,eAAO,MAAM,KAAK,qDAgBjB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { defineParametricEasing } from "../define.js";
2
+ const DEFAULTS = { count: 5, position: "end" };
3
+ export const steps = defineParametricEasing("steps", DEFAULTS, ({ count, position }) => {
4
+ const n = Math.max(1, Math.floor(count));
5
+ switch (position) {
6
+ case "end":
7
+ return (t) => Math.min(Math.floor(t * n), n) / n;
8
+ case "start":
9
+ return (t) => Math.min(Math.floor(t * n) + 1, n) / n;
10
+ case "none":
11
+ if (n === 1)
12
+ return () => 0;
13
+ return (t) => Math.min(Math.floor(t * n), n - 1) / (n - 1);
14
+ }
15
+ }, { exactEndpoints: false });
16
+ //# sourceMappingURL=steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/easings/steps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAMtD,MAAM,QAAQ,GAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAE5D,MAAM,CAAC,MAAM,KAAK,GAAG,sBAAsB,CACzC,OAAO,EACP,QAAQ,EACR,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACnD,KAAK,OAAO;YACV,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACvD,KAAK,MAAM;YACT,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;YAC5B,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC,EACD,EAAE,cAAc,EAAE,KAAK,EAAE,CAC1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type { EasingFn, ParametricEasing } from "./types.js";
2
+ export { defineEasing, defineParametricEasing } from "./define.js";
3
+ export type { DefineEasingOptions } from "./define.js";
4
+ export * from "./easings/index.js";
5
+ export * from "./builders/index.js";
6
+ export * from "./modifiers/index.js";
7
+ export { toCSSLinear, toCSSBezier, toCSSKeyframes } from "./css.js";
8
+ export { parseEasing } from "./parse.js";
9
+ export { prefersReducedMotion, respectReducedMotion } from "./reduced-motion.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export { defineEasing, defineParametricEasing } from "./define.js";
2
+ export * from "./easings/index.js";
3
+ export * from "./builders/index.js";
4
+ export * from "./modifiers/index.js";
5
+ export { toCSSLinear, toCSSBezier, toCSSKeyframes } from "./css.js";
6
+ export { parseEasing } from "./parse.js";
7
+ export { prefersReducedMotion, respectReducedMotion } from "./reduced-motion.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAEnE,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { EasingFn } from "../types.js";
2
+ /**
3
+ * Linearly interpolate between two eases. At weight=0 returns pure `a`;
4
+ * at weight=1 returns pure `b`; between is the weighted sum. Useful for
5
+ * morphing between easings or dialling in a custom shape from known eases.
6
+ */
7
+ export declare function blend(a: EasingFn, b: EasingFn, weight: number): EasingFn;
8
+ /**
9
+ * Compose two eases: apply `a` first, then `b` to `a`'s output. The result
10
+ * is `b(a(t))`. Useful for doubly-applied curves ("ease then ease again").
11
+ */
12
+ export declare function compose(a: EasingFn, b: EasingFn): EasingFn;
13
+ //# sourceMappingURL=blend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blend.d.ts","sourceRoot":"","sources":["../../src/modifiers/blend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAOxE;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAE1D"}
@@ -0,0 +1,21 @@
1
+ import { defineEasing } from "../define.js";
2
+ /**
3
+ * Linearly interpolate between two eases. At weight=0 returns pure `a`;
4
+ * at weight=1 returns pure `b`; between is the weighted sum. Useful for
5
+ * morphing between easings or dialling in a custom shape from known eases.
6
+ */
7
+ export function blend(a, b, weight) {
8
+ if (weight <= 0)
9
+ return a;
10
+ if (weight >= 1)
11
+ return b;
12
+ return defineEasing(`blend(${a.easingName}, ${b.easingName}, ${weight})`, (t) => a(t) * (1 - weight) + b(t) * weight);
13
+ }
14
+ /**
15
+ * Compose two eases: apply `a` first, then `b` to `a`'s output. The result
16
+ * is `b(a(t))`. Useful for doubly-applied curves ("ease then ease again").
17
+ */
18
+ export function compose(a, b) {
19
+ return defineEasing(`compose(${b.easingName}, ${a.easingName})`, (t) => b(a(t)));
20
+ }
21
+ //# sourceMappingURL=blend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blend.js","sourceRoot":"","sources":["../../src/modifiers/blend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,CAAW,EAAE,CAAW,EAAE,MAAc;IAC5D,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,YAAY,CACjB,SAAS,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,KAAK,MAAM,GAAG,EACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAC3C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,CAAW,EAAE,CAAW;IAC9C,OAAO,YAAY,CAAC,WAAW,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { EasingFn } from "../types.js";
2
+ export type ChainSegment = {
3
+ /** Ease for this segment. Input t is [0, 1] within the segment. */
4
+ ease: EasingFn;
5
+ /** Fraction of total duration this segment occupies. Must be > 0. */
6
+ duration: number;
7
+ /** Starting output value for the segment. Defaults to previous segment's end or 0. */
8
+ from?: number;
9
+ /** Ending output value. Defaults to the next segment's `from` or 1. */
10
+ to?: number;
11
+ };
12
+ /**
13
+ * Chain multiple eases sequentially across [0, 1]. Each segment has its
14
+ * own duration and output range. Useful for multi-phase animations
15
+ * (e.g., "power2.in for 30%, then spring for 70%").
16
+ */
17
+ export declare function chain(segments: ReadonlyArray<ChainSegment>): EasingFn;
18
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/modifiers/chain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG;IACzB,mEAAmE;IACnE,IAAI,EAAE,QAAQ,CAAC;IACf,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,QAAQ,CA2CrE"}
@@ -0,0 +1,40 @@
1
+ import { defineEasing } from "../define.js";
2
+ /**
3
+ * Chain multiple eases sequentially across [0, 1]. Each segment has its
4
+ * own duration and output range. Useful for multi-phase animations
5
+ * (e.g., "power2.in for 30%, then spring for 70%").
6
+ */
7
+ export function chain(segments) {
8
+ if (segments.length === 0) {
9
+ throw new RangeError("chain: at least one segment required");
10
+ }
11
+ const totalDuration = segments.reduce((sum, s) => sum + s.duration, 0);
12
+ if (totalDuration <= 0) {
13
+ throw new RangeError("chain: total duration must be > 0");
14
+ }
15
+ const resolved = [];
16
+ let cursor = 0;
17
+ for (let i = 0; i < segments.length; i++) {
18
+ const seg = segments[i];
19
+ const start = cursor;
20
+ const end = cursor + seg.duration / totalDuration;
21
+ const prevEnd = i > 0 ? resolved[i - 1].to : 0;
22
+ const nextFrom = segments[i + 1]?.from;
23
+ const from = seg.from ?? prevEnd;
24
+ const to = seg.to ?? nextFrom ?? (i === segments.length - 1 ? 1 : from);
25
+ resolved.push({ ease: seg.ease, start, end, from, to });
26
+ cursor = end;
27
+ }
28
+ const name = `chain(${segments.map((s) => s.ease.easingName).join(", ")})`;
29
+ return defineEasing(name, (t) => {
30
+ for (const seg of resolved) {
31
+ if (t <= seg.end) {
32
+ const span = seg.end - seg.start;
33
+ const localT = span === 0 ? 0 : (t - seg.start) / span;
34
+ return seg.from + (seg.to - seg.from) * seg.ease(localT);
35
+ }
36
+ }
37
+ return resolved[resolved.length - 1].to;
38
+ }, { exactEndpoints: false });
39
+ }
40
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/modifiers/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAc5C;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,QAAqC;IACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC,CAAC;IAC5D,CAAC;IAQD,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC;QACrB,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC;QAClD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC;QACjC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,QAAQ,IAAI,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAG,SAAS,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3E,OAAO,YAAY,CACjB,IAAI,EACJ,CAAC,CAAC,EAAE,EAAE;QACJ,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;gBACjC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBACvD,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC;IAC3C,CAAC,EACD,EAAE,cAAc,EAAE,KAAK,EAAE,CAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { reverse } from "./reverse.js";
2
+ export { mirror } from "./mirror.js";
3
+ export { yoyo } from "./yoyo.js";
4
+ export { chain, type ChainSegment } from "./chain.js";
5
+ export { blend, compose } from "./blend.js";
6
+ export { slice } from "./slice.js";
7
+ //# sourceMappingURL=index.d.ts.map