UNPKG

@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
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