physics-animator 0.13.0 → 0.15.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.
@@ -11,6 +11,11 @@ const useSpringValue_js_1 = require("./useSpringValue.js");
11
11
  */
12
12
  function useSpringState(options) {
13
13
  const [state, setState] = (0, react_1.useState)(options.initial);
14
- (0, useSpringValue_js_1.useSpringValue)(options, setState);
15
- return state;
14
+ const [target, setTarget] = (0, react_1.useState)(options.initial);
15
+ (0, useSpringValue_js_1.useSpringValue)({
16
+ ...options,
17
+ initial: options.initial,
18
+ target
19
+ }, setState);
20
+ return { state, target, setTarget };
16
21
  }
@@ -8,6 +8,11 @@ import { useSpringValue } from "./useSpringValue.js";
8
8
  */
9
9
  export function useSpringState(options) {
10
10
  const [state, setState] = useState(options.initial);
11
- useSpringValue(options, setState);
12
- return state;
11
+ const [target, setTarget] = useState(options.initial);
12
+ useSpringValue({
13
+ ...options,
14
+ initial: options.initial,
15
+ target
16
+ }, setState);
17
+ return { state, target, setTarget };
13
18
  }
@@ -2,6 +2,7 @@ import { EventSignal } from "@haxiomic/event-signal";
2
2
  import { IFieldAnimator } from "./animators/IFieldAnimator.js";
3
3
  import { SpringParameters } from "./animators/SpringAnimator.js";
4
4
  import { EasingStepFn } from "./animators/TweenAnimator.js";
5
+ type Public<T> = Pick<T, keyof T>;
5
6
  /**
6
7
  * Physically based animation of numeric properties of objects
7
8
  *
@@ -44,14 +45,14 @@ export declare class Animator {
44
45
  protected beforeChange: EventSignal<void, void>;
45
46
  protected afterChange: EventSignal<void, void>;
46
47
  constructor(onBeforeStep?: (dt_s: number) => void, onAfterStep?: (dt_s: number) => void);
47
- setTo<Obj extends Record<string, any>>(object: Obj, target: Partial<Obj>): void;
48
- animateTo<Obj extends Record<string, any>, Parameters, State, FieldType>(object: Obj, target: Partial<Obj>, animator?: IFieldAnimator<Parameters, State, FieldType>, params?: Parameters | null): void;
49
- springTo<Obj extends Record<string, any>>(object: Obj, target: Partial<Obj>, params: SpringParameters | null): void;
50
- customTweenTo<Obj extends Record<string, any>>(object: Obj, target: Partial<Obj>, duration_s: number, easingFn: EasingStepFn): void;
51
- linearTo<Obj extends Record<string, any>>(object: Obj, target: Partial<Obj>, duration_s: number): void;
52
- easeInOutTo<Obj extends Record<string, any>>(object: Obj, target: Partial<Obj>, duration_s: number): void;
53
- easeInTo<Obj extends Record<string, any>>(object: Obj, target: Partial<Obj>, duration_s: number): void;
54
- easeOutTo<Obj extends Record<string, any>>(object: Obj, target: Partial<Obj>, duration_s: number): void;
48
+ setTo<Obj>(object: Obj, target: Partial<Public<Obj>>): void;
49
+ animateTo<Obj, Parameters, State, FieldType>(object: Obj, target: Partial<Public<Obj>>, animator?: IFieldAnimator<Parameters, State, FieldType>, params?: Parameters | null): void;
50
+ springTo<Obj>(object: Obj, target: Partial<Public<Obj>>, params: SpringParameters | null): void;
51
+ customTweenTo<Obj>(object: Obj, target: Partial<Public<Obj>>, duration_s: number, easingFn: EasingStepFn): void;
52
+ linearTo<Obj>(object: Obj, target: Partial<Public<Obj>>, duration_s: number): void;
53
+ easeInOutTo<Obj>(object: Obj, target: Partial<Public<Obj>>, duration_s: number): void;
54
+ easeInTo<Obj>(object: Obj, target: Partial<Public<Obj>>, duration_s: number): void;
55
+ easeOutTo<Obj>(object: Obj, target: Partial<Public<Obj>>, duration_s: number): void;
55
56
  onCompleteField<Obj, Name extends keyof Obj>(object: Obj, field: Name, callback: (object: Obj, field: Name) => void, once?: 'once'): {
56
57
  priority: number;
57
58
  listener: (event: {
@@ -1,5 +1,6 @@
1
1
  import { Animator } from "../Animator.js";
2
2
  import { SpringParameters } from "../animators/SpringAnimator.js";
3
+ type WidenNumber<T> = T extends number ? number : T;
3
4
  /**
4
5
  * A value that animates to a target value using a spring animation.
5
6
  * This **will** cause a re-render when the value changes.
@@ -11,5 +12,9 @@ export declare function useSpringState<T extends number | number[] | {
11
12
  }>(options: {
12
13
  animator?: Animator;
13
14
  initial: T;
14
- target: T;
15
- } & SpringParameters): T;
15
+ } & SpringParameters): {
16
+ readonly state: WidenNumber<T>;
17
+ readonly target: WidenNumber<T>;
18
+ readonly setTarget: import("react").Dispatch<import("react").SetStateAction<WidenNumber<T>>>;
19
+ };
20
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "physics-animator",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "author": "haxiomic (George Corney)",
5
5
  "license": "MIT",
6
6
  "description": "A TypeScript animation system grounded in physics with three.js and react support.",