UNPKG

@react-three/uikit

Version:

Build performant 3D user interfaces with react-three-fiber and yoga.

24 lines (23 loc) 1.07 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { effect, signal } from '@preact/signals-core'; import { forwardRef, useEffect, useMemo, useState } from 'react'; import { useDefaultProperties } from './default.js'; export const AddHandlers = forwardRef(({ handlers: handlersSignal, children }, ref) => { const [handlers, setHandlers] = useState(() => handlersSignal.peek()); useEffect(() => effect(() => { const handlers = handlersSignal.value; const ref = void setTimeout(() => setHandlers(handlers), 0); return () => clearTimeout(ref); }), [handlersSignal]); return (_jsx("object3D", { ref: ref, matrixAutoUpdate: false, ...handlers, children: children })); }); export function usePropertySignals(properties) { const propertySignals = useMemo(() => ({ style: signal(undefined), properties: signal(undefined), default: signal(undefined), }), []); propertySignals.properties.value = properties; propertySignals.default.value = useDefaultProperties(); return propertySignals; }