@motion-core/motion-gpu
Version:
Framework-agnostic WebGPU runtime for fullscreen WGSL shaders with explicit Svelte, React, and Vue adapter entrypoints.
39 lines (38 loc) • 1.62 kB
JavaScript
import { createMotionGPUUserContextReadable, setMotionGPUUserContextValue } from "../core/motiongpu-context.js";
import { useMotionGPU } from "./motiongpu-context.js";
import { useCallback, useMemo } from "react";
//#region src/lib/react/use-motiongpu-user-context.ts
/**
* Read-only user context hook:
* - no args: returns full user context store
* - namespace: returns namespaced store view
*
* @param namespace - Optional namespace key.
*/
function useMotionGPUUserContext(namespace) {
const userStore = useMotionGPU().user;
const allStore = useMemo(() => createMotionGPUUserContextReadable(userStore), [userStore]);
const scopedStore = useMemo(() => createMotionGPUUserContextReadable(userStore, namespace), [namespace, userStore]);
if (namespace === void 0) return allStore;
return scopedStore;
}
/**
* Returns a stable setter bound to the active MotionGPU user context store.
*
* @returns Setter function that preserves namespace write semantics.
*/
function useSetMotionGPUUserContext() {
const userStore = useMotionGPU().user;
return useCallback((namespace, value, options) => setMotionGPUUserContextValue(userStore, namespace, value, options), [userStore]);
}
/**
* Sets a namespaced user context value with explicit write semantics.
*
* Returns the effective value stored under the namespace.
*/
function setMotionGPUUserContext(namespace, value, options) {
return setMotionGPUUserContextValue(useMotionGPU().user, namespace, value, options);
}
//#endregion
export { setMotionGPUUserContext, useMotionGPUUserContext, useSetMotionGPUUserContext };
//# sourceMappingURL=use-motiongpu-user-context.js.map