@effect-tui/react 0.1.0-alpha.1
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.
- package/LICENSE +21 -0
- package/README.md +138 -0
- package/dist/jsx-dev-runtime.d.ts +3 -0
- package/dist/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/jsx-dev-runtime.js +3 -0
- package/dist/jsx-dev-runtime.js.map +1 -0
- package/dist/jsx-runtime.d.ts +47 -0
- package/dist/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx-runtime.js +6 -0
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/src/codeblock.d.ts +9 -0
- package/dist/src/codeblock.d.ts.map +1 -0
- package/dist/src/codeblock.js +24 -0
- package/dist/src/codeblock.js.map +1 -0
- package/dist/src/constants.d.ts +3 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +3 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/debug/DiagnosticsPanel.d.ts +7 -0
- package/dist/src/debug/DiagnosticsPanel.d.ts.map +1 -0
- package/dist/src/debug/DiagnosticsPanel.js +13 -0
- package/dist/src/debug/DiagnosticsPanel.js.map +1 -0
- package/dist/src/highlight.d.ts +20 -0
- package/dist/src/highlight.d.ts.map +1 -0
- package/dist/src/highlight.js +51 -0
- package/dist/src/highlight.js.map +1 -0
- package/dist/src/hooks/index.d.ts +4 -0
- package/dist/src/hooks/index.d.ts.map +1 -0
- package/dist/src/hooks/index.js +3 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/use-keyboard.d.ts +18 -0
- package/dist/src/hooks/use-keyboard.d.ts.map +1 -0
- package/dist/src/hooks/use-keyboard.js +26 -0
- package/dist/src/hooks/use-keyboard.js.map +1 -0
- package/dist/src/hooks/use-paste.d.ts +5 -0
- package/dist/src/hooks/use-paste.d.ts.map +1 -0
- package/dist/src/hooks/use-paste.js +14 -0
- package/dist/src/hooks/use-paste.js.map +1 -0
- package/dist/src/hooks/useFrameStats.d.ts +7 -0
- package/dist/src/hooks/useFrameStats.d.ts.map +1 -0
- package/dist/src/hooks/useFrameStats.js +28 -0
- package/dist/src/hooks/useFrameStats.js.map +1 -0
- package/dist/src/hosts/base.d.ts +22 -0
- package/dist/src/hosts/base.d.ts.map +1 -0
- package/dist/src/hosts/base.js +53 -0
- package/dist/src/hosts/base.js.map +1 -0
- package/dist/src/hosts/box.d.ts +26 -0
- package/dist/src/hosts/box.d.ts.map +1 -0
- package/dist/src/hosts/box.js +84 -0
- package/dist/src/hosts/box.js.map +1 -0
- package/dist/src/hosts/canvas.d.ts +48 -0
- package/dist/src/hosts/canvas.d.ts.map +1 -0
- package/dist/src/hosts/canvas.js +109 -0
- package/dist/src/hosts/canvas.js.map +1 -0
- package/dist/src/hosts/codeblock.d.ts +32 -0
- package/dist/src/hosts/codeblock.d.ts.map +1 -0
- package/dist/src/hosts/codeblock.js +118 -0
- package/dist/src/hosts/codeblock.js.map +1 -0
- package/dist/src/hosts/hstack.d.ts +18 -0
- package/dist/src/hosts/hstack.d.ts.map +1 -0
- package/dist/src/hosts/hstack.js +45 -0
- package/dist/src/hosts/hstack.js.map +1 -0
- package/dist/src/hosts/index.d.ts +16 -0
- package/dist/src/hosts/index.d.ts.map +1 -0
- package/dist/src/hosts/index.js +40 -0
- package/dist/src/hosts/index.js.map +1 -0
- package/dist/src/hosts/spacer.d.ts +19 -0
- package/dist/src/hosts/spacer.d.ts.map +1 -0
- package/dist/src/hosts/spacer.js +28 -0
- package/dist/src/hosts/spacer.js.map +1 -0
- package/dist/src/hosts/text.d.ts +43 -0
- package/dist/src/hosts/text.d.ts.map +1 -0
- package/dist/src/hosts/text.js +148 -0
- package/dist/src/hosts/text.js.map +1 -0
- package/dist/src/hosts/vstack.d.ts +18 -0
- package/dist/src/hosts/vstack.d.ts.map +1 -0
- package/dist/src/hosts/vstack.js +45 -0
- package/dist/src/hosts/vstack.js.map +1 -0
- package/dist/src/hosts/zstack.d.ts +20 -0
- package/dist/src/hosts/zstack.d.ts.map +1 -0
- package/dist/src/hosts/zstack.js +65 -0
- package/dist/src/hosts/zstack.js.map +1 -0
- package/dist/src/index.d.ts +20 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +20 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/inline/index.d.ts +32 -0
- package/dist/src/inline/index.d.ts.map +1 -0
- package/dist/src/inline/index.js +111 -0
- package/dist/src/inline/index.js.map +1 -0
- package/dist/src/jsx.d.ts +2 -0
- package/dist/src/jsx.d.ts.map +1 -0
- package/dist/src/jsx.js +4 -0
- package/dist/src/jsx.js.map +1 -0
- package/dist/src/motion/color-motion-value.d.ts +32 -0
- package/dist/src/motion/color-motion-value.d.ts.map +1 -0
- package/dist/src/motion/color-motion-value.js +80 -0
- package/dist/src/motion/color-motion-value.js.map +1 -0
- package/dist/src/motion/color.d.ts +30 -0
- package/dist/src/motion/color.d.ts.map +1 -0
- package/dist/src/motion/color.js +172 -0
- package/dist/src/motion/color.js.map +1 -0
- package/dist/src/motion/color.test.d.ts +2 -0
- package/dist/src/motion/color.test.d.ts.map +1 -0
- package/dist/src/motion/color.test.js +97 -0
- package/dist/src/motion/color.test.js.map +1 -0
- package/dist/src/motion/event-emitter.d.ts +18 -0
- package/dist/src/motion/event-emitter.d.ts.map +1 -0
- package/dist/src/motion/event-emitter.js +30 -0
- package/dist/src/motion/event-emitter.js.map +1 -0
- package/dist/src/motion/frame.d.ts +9 -0
- package/dist/src/motion/frame.d.ts.map +1 -0
- package/dist/src/motion/frame.js +51 -0
- package/dist/src/motion/frame.js.map +1 -0
- package/dist/src/motion/hooks.d.ts +75 -0
- package/dist/src/motion/hooks.d.ts.map +1 -0
- package/dist/src/motion/hooks.js +190 -0
- package/dist/src/motion/hooks.js.map +1 -0
- package/dist/src/motion/index.d.ts +4 -0
- package/dist/src/motion/index.d.ts.map +1 -0
- package/dist/src/motion/index.js +7 -0
- package/dist/src/motion/index.js.map +1 -0
- package/dist/src/motion/motion-value.d.ts +40 -0
- package/dist/src/motion/motion-value.d.ts.map +1 -0
- package/dist/src/motion/motion-value.js +109 -0
- package/dist/src/motion/motion-value.js.map +1 -0
- package/dist/src/motion/motion-value.test.d.ts +2 -0
- package/dist/src/motion/motion-value.test.d.ts.map +1 -0
- package/dist/src/motion/motion-value.test.js +177 -0
- package/dist/src/motion/motion-value.test.js.map +1 -0
- package/dist/src/motion/spring-math.d.ts +28 -0
- package/dist/src/motion/spring-math.d.ts.map +1 -0
- package/dist/src/motion/spring-math.js +81 -0
- package/dist/src/motion/spring-math.js.map +1 -0
- package/dist/src/motion/types.d.ts +25 -0
- package/dist/src/motion/types.d.ts.map +1 -0
- package/dist/src/motion/types.js +13 -0
- package/dist/src/motion/types.js.map +1 -0
- package/dist/src/output.d.ts +47 -0
- package/dist/src/output.d.ts.map +1 -0
- package/dist/src/output.js +125 -0
- package/dist/src/output.js.map +1 -0
- package/dist/src/profiler.d.ts +6 -0
- package/dist/src/profiler.d.ts.map +1 -0
- package/dist/src/profiler.js +73 -0
- package/dist/src/profiler.js.map +1 -0
- package/dist/src/reconciler/host-config.d.ts +16 -0
- package/dist/src/reconciler/host-config.d.ts.map +1 -0
- package/dist/src/reconciler/host-config.js +174 -0
- package/dist/src/reconciler/host-config.js.map +1 -0
- package/dist/src/reconciler/types.d.ts +52 -0
- package/dist/src/reconciler/types.d.ts.map +1 -0
- package/dist/src/reconciler/types.js +2 -0
- package/dist/src/reconciler/types.js.map +1 -0
- package/dist/src/renderer.d.ts +101 -0
- package/dist/src/renderer.d.ts.map +1 -0
- package/dist/src/renderer.js +509 -0
- package/dist/src/renderer.js.map +1 -0
- package/dist/src/terminal.d.ts +37 -0
- package/dist/src/terminal.d.ts.map +1 -0
- package/dist/src/terminal.js +65 -0
- package/dist/src/terminal.js.map +1 -0
- package/dist/src/test/index.d.ts +3 -0
- package/dist/src/test/index.d.ts.map +1 -0
- package/dist/src/test/index.js +3 -0
- package/dist/src/test/index.js.map +1 -0
- package/dist/src/test/mock-streams.d.ts +44 -0
- package/dist/src/test/mock-streams.d.ts.map +1 -0
- package/dist/src/test/mock-streams.js +136 -0
- package/dist/src/test/mock-streams.js.map +1 -0
- package/dist/src/test/render-tui.d.ts +47 -0
- package/dist/src/test/render-tui.d.ts.map +1 -0
- package/dist/src/test/render-tui.js +76 -0
- package/dist/src/test/render-tui.js.map +1 -0
- package/dist/src/trace/SpanTree.d.ts +10 -0
- package/dist/src/trace/SpanTree.d.ts.map +1 -0
- package/dist/src/trace/SpanTree.js +104 -0
- package/dist/src/trace/SpanTree.js.map +1 -0
- package/dist/src/trace/index.d.ts +30 -0
- package/dist/src/trace/index.d.ts.map +1 -0
- package/dist/src/trace/index.js +142 -0
- package/dist/src/trace/index.js.map +1 -0
- package/dist/src/trace/location.d.ts +9 -0
- package/dist/src/trace/location.d.ts.map +1 -0
- package/dist/src/trace/location.js +88 -0
- package/dist/src/trace/location.js.map +1 -0
- package/dist/src/trace/span-processor.d.ts +16 -0
- package/dist/src/trace/span-processor.d.ts.map +1 -0
- package/dist/src/trace/span-processor.js +54 -0
- package/dist/src/trace/span-processor.js.map +1 -0
- package/dist/src/trace/span-state.d.ts +79 -0
- package/dist/src/trace/span-state.d.ts.map +1 -0
- package/dist/src/trace/span-state.js +229 -0
- package/dist/src/trace/span-state.js.map +1 -0
- package/dist/src/trace/tui-logger.d.ts +8 -0
- package/dist/src/trace/tui-logger.d.ts.map +1 -0
- package/dist/src/trace/tui-logger.js +70 -0
- package/dist/src/trace/tui-logger.js.map +1 -0
- package/dist/src/utils/border.d.ts +31 -0
- package/dist/src/utils/border.d.ts.map +1 -0
- package/dist/src/utils/border.js +81 -0
- package/dist/src/utils/border.js.map +1 -0
- package/dist/src/utils/flex-layout.d.ts +20 -0
- package/dist/src/utils/flex-layout.d.ts.map +1 -0
- package/dist/src/utils/flex-layout.js +85 -0
- package/dist/src/utils/flex-layout.js.map +1 -0
- package/dist/src/utils/index.d.ts +5 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +5 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/padding.d.ts +26 -0
- package/dist/src/utils/padding.d.ts.map +1 -0
- package/dist/src/utils/padding.js +34 -0
- package/dist/src/utils/padding.js.map +1 -0
- package/dist/src/utils/styles.d.ts +13 -0
- package/dist/src/utils/styles.d.ts.map +1 -0
- package/dist/src/utils/styles.js +5 -0
- package/dist/src/utils/styles.js.map +1 -0
- package/dist/src/visualize/index.d.ts +50 -0
- package/dist/src/visualize/index.d.ts.map +1 -0
- package/dist/src/visualize/index.js +194 -0
- package/dist/src/visualize/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +94 -0
- package/src/codeblock.tsx +47 -0
- package/src/constants.ts +2 -0
- package/src/debug/DiagnosticsPanel.tsx +38 -0
- package/src/highlight.ts +76 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/use-keyboard.ts +37 -0
- package/src/hooks/use-paste.ts +14 -0
- package/src/hooks/useFrameStats.ts +32 -0
- package/src/hosts/base.ts +65 -0
- package/src/hosts/box.ts +105 -0
- package/src/hosts/canvas.ts +155 -0
- package/src/hosts/codeblock.ts +145 -0
- package/src/hosts/hstack.ts +64 -0
- package/src/hosts/index.ts +45 -0
- package/src/hosts/spacer.ts +40 -0
- package/src/hosts/text.ts +175 -0
- package/src/hosts/vstack.ts +64 -0
- package/src/hosts/zstack.ts +77 -0
- package/src/index.ts +62 -0
- package/src/inline/index.tsx +181 -0
- package/src/jsx.ts +3 -0
- package/src/motion/color-motion-value.ts +90 -0
- package/src/motion/color.test.ts +115 -0
- package/src/motion/color.ts +191 -0
- package/src/motion/event-emitter.ts +35 -0
- package/src/motion/frame.ts +59 -0
- package/src/motion/hooks.ts +237 -0
- package/src/motion/index.ts +17 -0
- package/src/motion/motion-value.test.ts +222 -0
- package/src/motion/motion-value.ts +140 -0
- package/src/motion/spring-math.ts +114 -0
- package/src/motion/types.ts +34 -0
- package/src/output.ts +156 -0
- package/src/profiler.ts +88 -0
- package/src/reconciler/host-config.ts +277 -0
- package/src/reconciler/types.ts +66 -0
- package/src/renderer.ts +661 -0
- package/src/terminal.ts +67 -0
- package/src/test/index.ts +8 -0
- package/src/test/mock-streams.ts +149 -0
- package/src/test/render-tui.ts +118 -0
- package/src/trace/SpanTree.tsx +195 -0
- package/src/trace/index.tsx +205 -0
- package/src/trace/location.ts +90 -0
- package/src/trace/span-processor.ts +65 -0
- package/src/trace/span-state.ts +286 -0
- package/src/trace/tui-logger.ts +72 -0
- package/src/utils/border.ts +108 -0
- package/src/utils/flex-layout.ts +125 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/padding.ts +45 -0
- package/src/utils/styles.ts +14 -0
- package/src/visualize/index.tsx +305 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../../src/motion/event-emitter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,MAAM,OAAgB,YAAY;IACtB,WAAW,GAAG,IAAI,GAAG,EAAmC,CAAA;IAElE,0BAA0B;IAC1B,EAAE,CAAsB,KAAQ,EAAE,QAAmD;QACnF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QACxC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC1C,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC5D,CAAC;IAED,yCAAyC;IAC/B,MAAM,CAAC,KAAgB,EAAE,KAAe;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,EAAE,IAAI,IAAI;gBAAE,EAAE,CAAC,KAAK,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IAED,8BAA8B;IACpB,gBAAgB;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type FrameCallback = (time: number, delta: number) => void;
|
|
2
|
+
export declare function subscribeFrame(callback: FrameCallback): () => void;
|
|
3
|
+
/**
|
|
4
|
+
* Hook that calls callback on every animation frame.
|
|
5
|
+
* Similar to Motion's useAnimationFrame.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useAnimationFrame(callback: FrameCallback): void;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=frame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../../src/motion/frame.ts"],"names":[],"mappings":"AAKA,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;AAwB1D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAclE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,QASxD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// setTimeout-based frame loop for Node/TUI (no requestAnimationFrame)
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
import { DEFAULT_FPS } from "../constants.js";
|
|
4
|
+
const subscribers = new Set();
|
|
5
|
+
let timer = null;
|
|
6
|
+
let lastTime = 0;
|
|
7
|
+
const FRAME_MS = 1000 / DEFAULT_FPS;
|
|
8
|
+
function tick() {
|
|
9
|
+
const now = Date.now();
|
|
10
|
+
const delta = lastTime ? now - lastTime : FRAME_MS;
|
|
11
|
+
lastTime = now;
|
|
12
|
+
for (const cb of subscribers) {
|
|
13
|
+
cb(now, delta);
|
|
14
|
+
}
|
|
15
|
+
if (subscribers.size > 0) {
|
|
16
|
+
timer = setTimeout(tick, FRAME_MS);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
timer = null;
|
|
20
|
+
lastTime = 0;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function subscribeFrame(callback) {
|
|
24
|
+
subscribers.add(callback);
|
|
25
|
+
if (!timer) {
|
|
26
|
+
lastTime = Date.now();
|
|
27
|
+
timer = setTimeout(tick, FRAME_MS);
|
|
28
|
+
}
|
|
29
|
+
return () => {
|
|
30
|
+
subscribers.delete(callback);
|
|
31
|
+
if (subscribers.size === 0 && timer) {
|
|
32
|
+
clearTimeout(timer);
|
|
33
|
+
timer = null;
|
|
34
|
+
lastTime = 0;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Hook that calls callback on every animation frame.
|
|
40
|
+
* Similar to Motion's useAnimationFrame.
|
|
41
|
+
*/
|
|
42
|
+
export function useAnimationFrame(callback) {
|
|
43
|
+
const callbackRef = useRef(callback);
|
|
44
|
+
callbackRef.current = callback;
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
return subscribeFrame((time, delta) => {
|
|
47
|
+
callbackRef.current(time, delta);
|
|
48
|
+
});
|
|
49
|
+
}, []);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=frame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../../src/motion/frame.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAI7C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiB,CAAA;AAC5C,IAAI,KAAK,GAAyC,IAAI,CAAA;AACtD,IAAI,QAAQ,GAAG,CAAC,CAAA;AAChB,MAAM,QAAQ,GAAG,IAAI,GAAG,WAAW,CAAA;AAEnC,SAAS,IAAI;IACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;IAClD,QAAQ,GAAG,GAAG,CAAA;IAEd,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7B,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACpC,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,IAAI,CAAA;QACZ,QAAQ,GAAG,CAAC,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAuB;IACpD,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACrB,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,GAAG,EAAE;QACV,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC5B,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;YACpC,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,KAAK,GAAG,IAAI,CAAA;YACZ,QAAQ,GAAG,CAAC,CAAA;QACd,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAuB;IACvD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IACpC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAA;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,cAAc,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACpC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hooks for spring animations.
|
|
3
|
+
*/
|
|
4
|
+
import { MotionValue } from "./motion-value.js";
|
|
5
|
+
import { ColorMotionValue } from "./color-motion-value.js";
|
|
6
|
+
import type { SpringOptions } from "./types.js";
|
|
7
|
+
import type { EventName } from "./event-emitter.js";
|
|
8
|
+
import type { ColorInput } from "./color.js";
|
|
9
|
+
/**
|
|
10
|
+
* Create a MotionValue. Similar to Motion's useMotionValue.
|
|
11
|
+
*/
|
|
12
|
+
export declare function useMotionValue<T>(initial: T): MotionValue<T>;
|
|
13
|
+
/**
|
|
14
|
+
* Call this once in your app to connect springs to the renderer.
|
|
15
|
+
* If no renderer is passed, it will use the nearest RendererContext (useRenderer()).
|
|
16
|
+
*/
|
|
17
|
+
export declare function useSpringRenderer(renderer?: {
|
|
18
|
+
requestRender: () => void;
|
|
19
|
+
}): void;
|
|
20
|
+
/**
|
|
21
|
+
* Create a spring-animated value. When you call set(), it springs to the new value.
|
|
22
|
+
* Similar to Motion's useSpring.
|
|
23
|
+
*
|
|
24
|
+
* OPTIMIZED: Does NOT use React state during animation. Instead:
|
|
25
|
+
* - Returns MotionValue which you read via mv.get() in draw functions
|
|
26
|
+
* - Calls renderer.requestRender() directly on each frame
|
|
27
|
+
* - Bypasses React reconciliation entirely during animation
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* const [xMv, setX] = useSpring(0, { visualDuration: 0.5 })
|
|
31
|
+
* // In canvas draw: const x = xMv.get()
|
|
32
|
+
* // To animate: setX(100)
|
|
33
|
+
*/
|
|
34
|
+
export declare function useSpring(initial: number, options?: SpringOptions): [MotionValue<number>, (value: number) => void];
|
|
35
|
+
/**
|
|
36
|
+
* Create multiple spring-animated values. Similar to framer-motion's useSprings.
|
|
37
|
+
*
|
|
38
|
+
* @param count - Number of springs to create
|
|
39
|
+
* @param options - Spring configuration (shared by all springs)
|
|
40
|
+
* @returns [mvs, setAll] - Array of MotionValues and a setter function
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* const [dotMvs, setDots] = useSprings(9, { visualDuration: 0.3, bounce: 0 })
|
|
44
|
+
*
|
|
45
|
+
* // Update all with a mapper function
|
|
46
|
+
* setDots((i) => i === focusedIndex ? 1 : 0)
|
|
47
|
+
*
|
|
48
|
+
* // Or update with an array
|
|
49
|
+
* setDots([0, 0, 1, 0, 0, 0, 0, 0, 0])
|
|
50
|
+
*
|
|
51
|
+
* // In draw callback
|
|
52
|
+
* const brightness = dotMvs[idx].get()
|
|
53
|
+
*/
|
|
54
|
+
export declare function useSprings(count: number, options?: SpringOptions): [MotionValue<number>[], (values: number[] | ((index: number) => number)) => void];
|
|
55
|
+
/**
|
|
56
|
+
* Subscribe to MotionValue events. Similar to Motion's useMotionValueEvent.
|
|
57
|
+
*/
|
|
58
|
+
export declare function useMotionValueEvent<T, E extends EventName>(mv: MotionValue<T>, event: E, callback: E extends "change" ? (value: T) => void : () => void): void;
|
|
59
|
+
/**
|
|
60
|
+
* Create a ColorMotionValue hook.
|
|
61
|
+
*/
|
|
62
|
+
export declare function useColorMotionValue(initial: ColorInput): ColorMotionValue;
|
|
63
|
+
/**
|
|
64
|
+
* Create a spring-animated color. Accepts hex, rgb(), hsl(), or {r,g,b} object.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* const [colorMv, setColor] = useColorSpring("#ff0000", { visualDuration: 0.5 })
|
|
68
|
+
* setColor("#00ff00") // Spring to green
|
|
69
|
+
* setColor("hsl(240, 100%, 50%)") // Spring to blue
|
|
70
|
+
*
|
|
71
|
+
* // In draw callback
|
|
72
|
+
* const { r, g, b } = colorMv.get()
|
|
73
|
+
*/
|
|
74
|
+
export declare function useColorSpring(initial: ColorInput, options?: SpringOptions): [ColorMotionValue, (color: ColorInput) => void];
|
|
75
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/motion/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAK5C;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAW5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE;IAAE,aAAa,EAAE,MAAM,IAAI,CAAA;CAAE,QAYzE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,CAoBlH;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GACtB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,CA6DnF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,EACxD,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,EAClB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,SAAS,QAAQ,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,QAQ/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAWzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,aAAa,GACtB,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,CAoBjD"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hooks for spring animations.
|
|
3
|
+
*/
|
|
4
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
5
|
+
import { useRenderer } from "../renderer.js";
|
|
6
|
+
import { MotionValue } from "./motion-value.js";
|
|
7
|
+
import { ColorMotionValue } from "./color-motion-value.js";
|
|
8
|
+
// Global requestRender callback - set by useSpringRenderer hook
|
|
9
|
+
let globalRequestRender = null;
|
|
10
|
+
/**
|
|
11
|
+
* Create a MotionValue. Similar to Motion's useMotionValue.
|
|
12
|
+
*/
|
|
13
|
+
export function useMotionValue(initial) {
|
|
14
|
+
const ref = useRef(null);
|
|
15
|
+
if (!ref.current) {
|
|
16
|
+
ref.current = new MotionValue(initial);
|
|
17
|
+
}
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
return () => ref.current?.destroy();
|
|
20
|
+
}, []);
|
|
21
|
+
return ref.current;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Call this once in your app to connect springs to the renderer.
|
|
25
|
+
* If no renderer is passed, it will use the nearest RendererContext (useRenderer()).
|
|
26
|
+
*/
|
|
27
|
+
export function useSpringRenderer(renderer) {
|
|
28
|
+
// Prefer explicit renderer; otherwise pull from context
|
|
29
|
+
const inferred = renderer ?? useRenderer();
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (!inferred)
|
|
32
|
+
return;
|
|
33
|
+
globalRequestRender = inferred.requestRender.bind(inferred);
|
|
34
|
+
return () => {
|
|
35
|
+
if (globalRequestRender === inferred.requestRender) {
|
|
36
|
+
globalRequestRender = null;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}, [inferred]);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a spring-animated value. When you call set(), it springs to the new value.
|
|
43
|
+
* Similar to Motion's useSpring.
|
|
44
|
+
*
|
|
45
|
+
* OPTIMIZED: Does NOT use React state during animation. Instead:
|
|
46
|
+
* - Returns MotionValue which you read via mv.get() in draw functions
|
|
47
|
+
* - Calls renderer.requestRender() directly on each frame
|
|
48
|
+
* - Bypasses React reconciliation entirely during animation
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* const [xMv, setX] = useSpring(0, { visualDuration: 0.5 })
|
|
52
|
+
* // In canvas draw: const x = xMv.get()
|
|
53
|
+
* // To animate: setX(100)
|
|
54
|
+
*/
|
|
55
|
+
export function useSpring(initial, options) {
|
|
56
|
+
const mv = useMotionValue(initial);
|
|
57
|
+
const optionsRef = useRef(options);
|
|
58
|
+
optionsRef.current = options;
|
|
59
|
+
// Subscribe to changes and request render directly (no setState!)
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
return mv.on("change", () => {
|
|
62
|
+
globalRequestRender?.();
|
|
63
|
+
});
|
|
64
|
+
}, [mv]);
|
|
65
|
+
const set = useCallback((target) => {
|
|
66
|
+
mv.set(target, optionsRef.current);
|
|
67
|
+
}, [mv]);
|
|
68
|
+
return [mv, set];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create multiple spring-animated values. Similar to framer-motion's useSprings.
|
|
72
|
+
*
|
|
73
|
+
* @param count - Number of springs to create
|
|
74
|
+
* @param options - Spring configuration (shared by all springs)
|
|
75
|
+
* @returns [mvs, setAll] - Array of MotionValues and a setter function
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* const [dotMvs, setDots] = useSprings(9, { visualDuration: 0.3, bounce: 0 })
|
|
79
|
+
*
|
|
80
|
+
* // Update all with a mapper function
|
|
81
|
+
* setDots((i) => i === focusedIndex ? 1 : 0)
|
|
82
|
+
*
|
|
83
|
+
* // Or update with an array
|
|
84
|
+
* setDots([0, 0, 1, 0, 0, 0, 0, 0, 0])
|
|
85
|
+
*
|
|
86
|
+
* // In draw callback
|
|
87
|
+
* const brightness = dotMvs[idx].get()
|
|
88
|
+
*/
|
|
89
|
+
export function useSprings(count, options) {
|
|
90
|
+
const mvsRef = useRef(null);
|
|
91
|
+
const optionsRef = useRef(options);
|
|
92
|
+
optionsRef.current = options;
|
|
93
|
+
// Create MotionValues on first render
|
|
94
|
+
if (!mvsRef.current) {
|
|
95
|
+
mvsRef.current = Array.from({ length: count }, () => new MotionValue(0));
|
|
96
|
+
}
|
|
97
|
+
// Handle count changes (recreate if count changes)
|
|
98
|
+
if (mvsRef.current.length !== count) {
|
|
99
|
+
// Destroy old ones
|
|
100
|
+
for (const mv of mvsRef.current) {
|
|
101
|
+
mv.destroy();
|
|
102
|
+
}
|
|
103
|
+
mvsRef.current = Array.from({ length: count }, () => new MotionValue(0));
|
|
104
|
+
}
|
|
105
|
+
const mvs = mvsRef.current;
|
|
106
|
+
// Subscribe all to requestRender
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
const unsubs = mvs.map((mv) => mv.on("change", () => {
|
|
109
|
+
globalRequestRender?.();
|
|
110
|
+
}));
|
|
111
|
+
return () => {
|
|
112
|
+
for (const unsub of unsubs)
|
|
113
|
+
unsub();
|
|
114
|
+
};
|
|
115
|
+
}, [mvs]);
|
|
116
|
+
// Cleanup on unmount
|
|
117
|
+
useEffect(() => {
|
|
118
|
+
return () => {
|
|
119
|
+
if (mvsRef.current) {
|
|
120
|
+
for (const mv of mvsRef.current) {
|
|
121
|
+
mv.destroy();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}, []);
|
|
126
|
+
const setAll = useCallback((values) => {
|
|
127
|
+
const opts = optionsRef.current;
|
|
128
|
+
if (typeof values === "function") {
|
|
129
|
+
for (let i = 0; i < mvs.length; i++) {
|
|
130
|
+
mvs[i].set(values(i), opts);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
for (let i = 0; i < Math.min(mvs.length, values.length); i++) {
|
|
135
|
+
mvs[i].set(values[i], opts);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}, [mvs]);
|
|
139
|
+
return [mvs, setAll];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Subscribe to MotionValue events. Similar to Motion's useMotionValueEvent.
|
|
143
|
+
*/
|
|
144
|
+
export function useMotionValueEvent(mv, event, callback) {
|
|
145
|
+
const callbackRef = useRef(callback);
|
|
146
|
+
callbackRef.current = callback;
|
|
147
|
+
useEffect(() => {
|
|
148
|
+
return mv.on(event, (v) => callbackRef.current(v));
|
|
149
|
+
}, [mv, event]);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Create a ColorMotionValue hook.
|
|
153
|
+
*/
|
|
154
|
+
export function useColorMotionValue(initial) {
|
|
155
|
+
const ref = useRef(null);
|
|
156
|
+
if (!ref.current) {
|
|
157
|
+
ref.current = new ColorMotionValue(initial);
|
|
158
|
+
}
|
|
159
|
+
useEffect(() => {
|
|
160
|
+
return () => ref.current?.destroy();
|
|
161
|
+
}, []);
|
|
162
|
+
return ref.current;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Create a spring-animated color. Accepts hex, rgb(), hsl(), or {r,g,b} object.
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* const [colorMv, setColor] = useColorSpring("#ff0000", { visualDuration: 0.5 })
|
|
169
|
+
* setColor("#00ff00") // Spring to green
|
|
170
|
+
* setColor("hsl(240, 100%, 50%)") // Spring to blue
|
|
171
|
+
*
|
|
172
|
+
* // In draw callback
|
|
173
|
+
* const { r, g, b } = colorMv.get()
|
|
174
|
+
*/
|
|
175
|
+
export function useColorSpring(initial, options) {
|
|
176
|
+
const mv = useColorMotionValue(initial);
|
|
177
|
+
const optionsRef = useRef(options);
|
|
178
|
+
optionsRef.current = options;
|
|
179
|
+
// Subscribe to changes and request render
|
|
180
|
+
useEffect(() => {
|
|
181
|
+
return mv._subscribeChannels(() => {
|
|
182
|
+
globalRequestRender?.();
|
|
183
|
+
});
|
|
184
|
+
}, [mv]);
|
|
185
|
+
const set = useCallback((color) => {
|
|
186
|
+
mv.set(color, optionsRef.current);
|
|
187
|
+
}, [mv]);
|
|
188
|
+
return [mv, set];
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/motion/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { SpringOptions, MotionValue, RGBA, ColorInput } from "./motion-value.js";
|
|
2
|
+
export { motionValue, useMotionValue, useSpring, useSprings, useSpringRenderer, useMotionValueEvent, ColorMotionValue, useColorMotionValue, useColorSpring, } from "./motion-value.js";
|
|
3
|
+
export { useAnimationFrame } from "./frame.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/motion/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EAEnB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Motion-inspired animation system for TUI
|
|
2
|
+
// Analytical spring physics (not Euler integration) + setTimeout-based frame loop
|
|
3
|
+
export { motionValue, useMotionValue, useSpring, useSprings, useSpringRenderer, useMotionValueEvent,
|
|
4
|
+
// Color springs
|
|
5
|
+
ColorMotionValue, useColorMotionValue, useColorSpring, } from "./motion-value.js";
|
|
6
|
+
export { useAnimationFrame } from "./frame.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/motion/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,kFAAkF;AAGlF,OAAO,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,mBAAmB;AACnB,gBAAgB;AAChB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MotionValue - tracks animated values with spring physics.
|
|
3
|
+
* Inspired by framer-motion's MotionValue.
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from "./event-emitter.js";
|
|
6
|
+
import { type SpringOptions } from "./types.js";
|
|
7
|
+
/** Create a MotionValue. Factory function like Motion's motionValue(). */
|
|
8
|
+
export declare function motionValue<T>(initial: T): MotionValue<T>;
|
|
9
|
+
/**
|
|
10
|
+
* MotionValue tracks a value and its velocity, supporting spring animations.
|
|
11
|
+
*/
|
|
12
|
+
export declare class MotionValue<T = number> extends EventEmitter<T> {
|
|
13
|
+
private current;
|
|
14
|
+
private target;
|
|
15
|
+
private velocity;
|
|
16
|
+
private animation;
|
|
17
|
+
constructor(initial: T);
|
|
18
|
+
/** Get the current value */
|
|
19
|
+
get(): T;
|
|
20
|
+
/** Set value immediately (no animation) */
|
|
21
|
+
jump(value: T): void;
|
|
22
|
+
/** Set target and animate with spring */
|
|
23
|
+
set(value: T, options?: SpringOptions): void;
|
|
24
|
+
/** Get current velocity */
|
|
25
|
+
getVelocity(): number;
|
|
26
|
+
/** Check if currently animating */
|
|
27
|
+
isAnimating(): boolean;
|
|
28
|
+
/** Stop any active animation */
|
|
29
|
+
stop(): void;
|
|
30
|
+
/** Destroy and clean up */
|
|
31
|
+
destroy(): void;
|
|
32
|
+
private animateSpring;
|
|
33
|
+
}
|
|
34
|
+
export { type SpringOptions, DEFAULT_SPRING_OPTIONS } from "./types.js";
|
|
35
|
+
export type { EventName, Subscriber } from "./event-emitter.js";
|
|
36
|
+
export { createSpringResolver, springFromVisualDuration, isSpringSettled } from "./spring-math.js";
|
|
37
|
+
export { ColorMotionValue } from "./color-motion-value.js";
|
|
38
|
+
export { useMotionValue, useSpring, useSprings, useSpringRenderer, useMotionValueEvent, useColorMotionValue, useColorSpring, } from "./hooks.js";
|
|
39
|
+
export type { RGBA, ColorInput } from "./color.js";
|
|
40
|
+
//# sourceMappingURL=motion-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-value.d.ts","sourceRoot":"","sources":["../../../src/motion/motion-value.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,YAAY,CAAA;AAEvE,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAEzD;AAED;;GAEG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,OAAO,CAAG;IAClB,OAAO,CAAC,MAAM,CAAG;IACjB,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,SAAS,CAAoC;gBAEzC,OAAO,EAAE,CAAC;IAMtB,4BAA4B;IAC5B,GAAG,IAAI,CAAC;IAIR,2CAA2C;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;IAQb,yCAAyC;IACzC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa;IAUrC,2BAA2B;IAC3B,WAAW,IAAI,MAAM;IAIrB,mCAAmC;IACnC,WAAW,IAAI,OAAO;IAItB,gCAAgC;IAChC,IAAI;IAOJ,2BAA2B;IAC3B,OAAO;IAKP,OAAO,CAAC,aAAa;CA4CtB;AAGD,OAAO,EAAE,KAAK,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACvE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MotionValue - tracks animated values with spring physics.
|
|
3
|
+
* Inspired by framer-motion's MotionValue.
|
|
4
|
+
*/
|
|
5
|
+
import { subscribeFrame } from "./frame.js";
|
|
6
|
+
import { EventEmitter } from "./event-emitter.js";
|
|
7
|
+
import { createSpringResolver, springFromVisualDuration } from "./spring-math.js";
|
|
8
|
+
import { DEFAULT_SPRING_OPTIONS } from "./types.js";
|
|
9
|
+
/** Create a MotionValue. Factory function like Motion's motionValue(). */
|
|
10
|
+
export function motionValue(initial) {
|
|
11
|
+
return new MotionValue(initial);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* MotionValue tracks a value and its velocity, supporting spring animations.
|
|
15
|
+
*/
|
|
16
|
+
export class MotionValue extends EventEmitter {
|
|
17
|
+
current;
|
|
18
|
+
target;
|
|
19
|
+
velocity = 0;
|
|
20
|
+
animation = null;
|
|
21
|
+
constructor(initial) {
|
|
22
|
+
super();
|
|
23
|
+
this.current = initial;
|
|
24
|
+
this.target = initial;
|
|
25
|
+
}
|
|
26
|
+
/** Get the current value */
|
|
27
|
+
get() {
|
|
28
|
+
return this.current;
|
|
29
|
+
}
|
|
30
|
+
/** Set value immediately (no animation) */
|
|
31
|
+
jump(value) {
|
|
32
|
+
this.stop();
|
|
33
|
+
this.current = value;
|
|
34
|
+
this.target = value;
|
|
35
|
+
this.velocity = 0;
|
|
36
|
+
this.notify("change", value);
|
|
37
|
+
}
|
|
38
|
+
/** Set target and animate with spring */
|
|
39
|
+
set(value, options) {
|
|
40
|
+
if (typeof value !== "number" || typeof this.current !== "number") {
|
|
41
|
+
// Non-numeric: jump immediately
|
|
42
|
+
this.jump(value);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
this.target = value;
|
|
46
|
+
this.animateSpring(options);
|
|
47
|
+
}
|
|
48
|
+
/** Get current velocity */
|
|
49
|
+
getVelocity() {
|
|
50
|
+
return this.velocity;
|
|
51
|
+
}
|
|
52
|
+
/** Check if currently animating */
|
|
53
|
+
isAnimating() {
|
|
54
|
+
return this.animation !== null;
|
|
55
|
+
}
|
|
56
|
+
/** Stop any active animation */
|
|
57
|
+
stop() {
|
|
58
|
+
if (this.animation) {
|
|
59
|
+
this.animation.stop();
|
|
60
|
+
this.animation = null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** Destroy and clean up */
|
|
64
|
+
destroy() {
|
|
65
|
+
this.stop();
|
|
66
|
+
this.clearSubscribers();
|
|
67
|
+
}
|
|
68
|
+
animateSpring(options) {
|
|
69
|
+
this.stop();
|
|
70
|
+
const opts = { ...DEFAULT_SPRING_OPTIONS, ...options };
|
|
71
|
+
const from = this.current;
|
|
72
|
+
const to = this.target;
|
|
73
|
+
if (from === to)
|
|
74
|
+
return;
|
|
75
|
+
// Derive stiffness/damping from visualDuration/bounce if provided
|
|
76
|
+
let { stiffness, damping, mass } = opts;
|
|
77
|
+
if (opts.visualDuration && opts.visualDuration > 0) {
|
|
78
|
+
const derived = springFromVisualDuration(opts.visualDuration, opts.bounce);
|
|
79
|
+
stiffness = derived.stiffness;
|
|
80
|
+
damping = derived.damping;
|
|
81
|
+
}
|
|
82
|
+
// Create spring resolver (analytical solution)
|
|
83
|
+
const resolver = createSpringResolver(from, to, this.velocity, stiffness, damping, mass);
|
|
84
|
+
this.notify("animationStart", undefined);
|
|
85
|
+
const startTime = Date.now();
|
|
86
|
+
const unsubscribe = subscribeFrame(() => {
|
|
87
|
+
const elapsed = (Date.now() - startTime) / 1000; // seconds
|
|
88
|
+
const state = resolver(elapsed);
|
|
89
|
+
this.current = state.value;
|
|
90
|
+
this.velocity = state.velocity;
|
|
91
|
+
this.notify("change", this.current);
|
|
92
|
+
if (state.done) {
|
|
93
|
+
this.current = to;
|
|
94
|
+
this.velocity = 0;
|
|
95
|
+
this.animation = null;
|
|
96
|
+
this.notify("change", this.current);
|
|
97
|
+
this.notify("animationComplete", undefined);
|
|
98
|
+
unsubscribe();
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
this.animation = { stop: unsubscribe };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Re-export everything for backwards compatibility
|
|
105
|
+
export { DEFAULT_SPRING_OPTIONS } from "./types.js";
|
|
106
|
+
export { createSpringResolver, springFromVisualDuration, isSpringSettled } from "./spring-math.js";
|
|
107
|
+
export { ColorMotionValue } from "./color-motion-value.js";
|
|
108
|
+
export { useMotionValue, useSpring, useSprings, useSpringRenderer, useMotionValueEvent, useColorMotionValue, useColorSpring, } from "./hooks.js";
|
|
109
|
+
//# sourceMappingURL=motion-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-value.js","sourceRoot":"","sources":["../../../src/motion/motion-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-value.test.d.ts","sourceRoot":"","sources":["../../../src/motion/motion-value.test.ts"],"names":[],"mappings":""}
|