tween.d.ts 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. declare type EasingFunction = (amount: number) => number;
  2. /**
  3. * The Ease class provides a collection of easing functions for use with tween.js.
  4. */
  5. declare const Easing: {
  6. Linear: {
  7. None: (amount: number) => number;
  8. };
  9. Quadratic: {
  10. In: (amount: number) => number;
  11. Out: (amount: number) => number;
  12. InOut: (amount: number) => number;
  13. };
  14. Cubic: {
  15. In: (amount: number) => number;
  16. Out: (amount: number) => number;
  17. InOut: (amount: number) => number;
  18. };
  19. Quartic: {
  20. In: (amount: number) => number;
  21. Out: (amount: number) => number;
  22. InOut: (amount: number) => number;
  23. };
  24. Quintic: {
  25. In: (amount: number) => number;
  26. Out: (amount: number) => number;
  27. InOut: (amount: number) => number;
  28. };
  29. Sinusoidal: {
  30. In: (amount: number) => number;
  31. Out: (amount: number) => number;
  32. InOut: (amount: number) => number;
  33. };
  34. Exponential: {
  35. In: (amount: number) => number;
  36. Out: (amount: number) => number;
  37. InOut: (amount: number) => number;
  38. };
  39. Circular: {
  40. In: (amount: number) => number;
  41. Out: (amount: number) => number;
  42. InOut: (amount: number) => number;
  43. };
  44. Elastic: {
  45. In: (amount: number) => number;
  46. Out: (amount: number) => number;
  47. InOut: (amount: number) => number;
  48. };
  49. Back: {
  50. In: (amount: number) => number;
  51. Out: (amount: number) => number;
  52. InOut: (amount: number) => number;
  53. };
  54. Bounce: {
  55. In: (amount: number) => number;
  56. Out: (amount: number) => number;
  57. InOut: (amount: number) => number;
  58. };
  59. };
  60. /**
  61. *
  62. */
  63. declare type InterpolationFunction = (v: number[], k: number) => number;
  64. /**
  65. *
  66. */
  67. declare const Interpolation: {
  68. Linear: (v: number[], k: number) => number;
  69. Bezier: (v: number[], k: number) => number;
  70. CatmullRom: (v: number[], k: number) => number;
  71. Utils: {
  72. Linear: (p0: number, p1: number, t: number) => number;
  73. Bernstein: (n: number, i: number) => number;
  74. Factorial: (n: number) => number;
  75. CatmullRom: (p0: number, p1: number, p2: number, p3: number, t: number) => number;
  76. };
  77. };
  78. declare class Tween<T extends UnknownProps> {
  79. private _object;
  80. private _group;
  81. private _isPaused;
  82. private _pauseStart;
  83. private _valuesStart;
  84. private _valuesEnd;
  85. private _valuesStartRepeat;
  86. private _duration;
  87. private _initialRepeat;
  88. private _repeat;
  89. private _repeatDelayTime?;
  90. private _yoyo;
  91. private _isPlaying;
  92. private _reversed;
  93. private _delayTime;
  94. private _startTime;
  95. private _easingFunction;
  96. private _interpolationFunction;
  97. private _chainedTweens;
  98. private _onStartCallback?;
  99. private _onStartCallbackFired;
  100. private _onUpdateCallback?;
  101. private _onRepeatCallback?;
  102. private _onCompleteCallback?;
  103. private _onStopCallback?;
  104. private _id;
  105. private _isChainStopped;
  106. constructor(_object: T, _group?: Group | false);
  107. getId(): number;
  108. isPlaying(): boolean;
  109. isPaused(): boolean;
  110. to(properties: UnknownProps, duration?: number): this;
  111. duration(d: number): this;
  112. start(time?: number): this;
  113. private _setupProperties;
  114. stop(): this;
  115. end(): this;
  116. pause(time?: number): this;
  117. resume(time?: number): this;
  118. stopChainedTweens(): this;
  119. group(group: Group): this;
  120. delay(amount: number): this;
  121. repeat(times: number): this;
  122. repeatDelay(amount: number): this;
  123. yoyo(yoyo: boolean): this;
  124. easing(easingFunction: EasingFunction): this;
  125. interpolation(interpolationFunction: InterpolationFunction): this;
  126. chain(...tweens: Array<Tween<UnknownProps>>): this;
  127. onStart(callback: (object: T) => void): this;
  128. onUpdate(callback: (object: T, elapsed: number) => void): this;
  129. onRepeat(callback: (object: T) => void): this;
  130. onComplete(callback: (object: T) => void): this;
  131. onStop(callback: (object: T) => void): this;
  132. private _goToEnd;
  133. /**
  134. * @returns true if the tween is still playing after the update, false
  135. * otherwise (calling update on a paused tween still returns true because
  136. * it is still playing, just paused).
  137. */
  138. update(time?: number, autoStart?: boolean): boolean;
  139. private _updateProperties;
  140. private _handleRelativeValue;
  141. private _swapEndStartRepeatValues;
  142. }
  143. declare type UnknownProps = Record<string, any>;
  144. /**
  145. * Controlling groups of tweens
  146. *
  147. * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.
  148. * In these cases, you may want to create your own smaller groups of tween
  149. */
  150. declare class Group {
  151. private _tweens;
  152. private _tweensAddedDuringUpdate;
  153. getAll(): Array<Tween<UnknownProps>>;
  154. removeAll(): void;
  155. add(tween: Tween<UnknownProps>): void;
  156. remove(tween: Tween<UnknownProps>): void;
  157. update(time?: number, preserve?: boolean): boolean;
  158. }
  159. declare let now: () => number;
  160. /**
  161. * Utils
  162. */
  163. declare class Sequence {
  164. private static _nextId;
  165. static nextId(): number;
  166. }
  167. declare const VERSION = "18.6.4";
  168. declare const nextId: typeof Sequence.nextId;
  169. declare const getAll: () => Tween<Record<string, any>>[];
  170. declare const removeAll: () => void;
  171. declare const add: (tween: Tween<Record<string, any>>) => void;
  172. declare const remove: (tween: Tween<Record<string, any>>) => void;
  173. declare const update: (time?: number, preserve?: boolean) => boolean;
  174. declare const exports: {
  175. Easing: {
  176. Linear: {
  177. None: (amount: number) => number;
  178. };
  179. Quadratic: {
  180. In: (amount: number) => number;
  181. Out: (amount: number) => number;
  182. InOut: (amount: number) => number;
  183. };
  184. Cubic: {
  185. In: (amount: number) => number;
  186. Out: (amount: number) => number;
  187. InOut: (amount: number) => number;
  188. };
  189. Quartic: {
  190. In: (amount: number) => number;
  191. Out: (amount: number) => number;
  192. InOut: (amount: number) => number;
  193. };
  194. Quintic: {
  195. In: (amount: number) => number;
  196. Out: (amount: number) => number;
  197. InOut: (amount: number) => number;
  198. };
  199. Sinusoidal: {
  200. In: (amount: number) => number;
  201. Out: (amount: number) => number;
  202. InOut: (amount: number) => number;
  203. };
  204. Exponential: {
  205. In: (amount: number) => number;
  206. Out: (amount: number) => number;
  207. InOut: (amount: number) => number;
  208. };
  209. Circular: {
  210. In: (amount: number) => number;
  211. Out: (amount: number) => number;
  212. InOut: (amount: number) => number;
  213. };
  214. Elastic: {
  215. In: (amount: number) => number;
  216. Out: (amount: number) => number;
  217. InOut: (amount: number) => number;
  218. };
  219. Back: {
  220. In: (amount: number) => number;
  221. Out: (amount: number) => number;
  222. InOut: (amount: number) => number;
  223. };
  224. Bounce: {
  225. In: (amount: number) => number;
  226. Out: (amount: number) => number;
  227. InOut: (amount: number) => number;
  228. };
  229. };
  230. Group: typeof Group;
  231. Interpolation: {
  232. Linear: (v: number[], k: number) => number;
  233. Bezier: (v: number[], k: number) => number;
  234. CatmullRom: (v: number[], k: number) => number;
  235. Utils: {
  236. Linear: (p0: number, p1: number, t: number) => number;
  237. Bernstein: (n: number, i: number) => number;
  238. Factorial: (n: number) => number;
  239. CatmullRom: (p0: number, p1: number, p2: number, p3: number, t: number) => number;
  240. };
  241. };
  242. now: () => number;
  243. Sequence: typeof Sequence;
  244. nextId: typeof Sequence.nextId;
  245. Tween: typeof Tween;
  246. VERSION: string;
  247. getAll: () => Tween<Record<string, any>>[];
  248. removeAll: () => void;
  249. add: (tween: Tween<Record<string, any>>) => void;
  250. remove: (tween: Tween<Record<string, any>>) => void;
  251. update: (time?: number, preserve?: boolean) => boolean;
  252. };
  253. export default exports;
  254. export { Easing, Group, Interpolation, Sequence, Tween, VERSION, add, getAll, nextId, now, remove, removeAll, update };