diff --git a/src/classes.js b/src/classes.js new file mode 100644 index 0000000000..05ee3f462a --- /dev/null +++ b/src/classes.js @@ -0,0 +1,23 @@ +import React from 'react' +import { useSpring } from './useSpring' +import { useTrail } from './useTrail' +import { useTransition } from './useTransition' +import { is } from './shared/helpers' + +export function Spring({ children, ...props }) { + const spring = useSpring(props) + return children(spring) +} + +export function Trail({ items, children, ...props }) { + const trails = useTrail(items.length, props) + return items.map((item, index) => children(item)(trails[index])) +} + +export function Transition({ items, keys = null, children, ...props }) { + const transitions = useTransition(items, keys, props) + return transitions.map(({ item, key, props, slot }, index) => { + const el = children(item, slot, index)(props) + return + }) +} diff --git a/src/targets/konva/index.ts b/src/targets/konva/index.ts index a13b5e694d..e8de484e87 100644 --- a/src/targets/konva/index.ts +++ b/src/targets/konva/index.ts @@ -13,6 +13,8 @@ import { useSpring } from '../../useSpring' import { useSprings } from '../../useSprings' import { useTrail } from '../../useTrail' import { useTransition } from '../../useTransition' +import { Spring, Trail, Transition } from '../../classes' +import './globals' Globals.injectDefaultElement('Group') Globals.injectInterpolation(createInterpolation) @@ -84,4 +86,7 @@ export { useTransition, useChain, useSprings, + Spring, + Trail, + Transition, } diff --git a/src/targets/native/index.ts b/src/targets/native/index.ts index ab918a8368..e9f38845ee 100644 --- a/src/targets/native/index.ts +++ b/src/targets/native/index.ts @@ -11,6 +11,7 @@ import { useSpring } from '../../useSpring' import { useSprings } from '../../useSprings' import { useTrail } from '../../useTrail' import { useTransition } from '../../useTransition' +import { Spring, Trail, Transition } from '../../classes' import AnimatedTransform from './AnimatedTransform' Globals.injectDefaultElement(View) @@ -42,4 +43,7 @@ export { useTransition, useChain, useSprings, + Spring, + Trail, + Transition, } diff --git a/src/targets/universal/index.ts b/src/targets/universal/index.ts index f28a3f18da..75b8271e81 100644 --- a/src/targets/universal/index.ts +++ b/src/targets/universal/index.ts @@ -10,6 +10,7 @@ import { useSpring } from '../../useSpring' import { useSprings } from '../../useSprings' import { useTrail } from '../../useTrail' import { useTransition } from '../../useTransition' +import { Spring, Trail, Transition } from '../../classes' // Problem: https://github.com/animatedjs/animated/pull/102 // Solution: https://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly/658662 @@ -49,4 +50,7 @@ export { useTransition, useChain, useSprings, + Spring, + Trail, + Transition, } diff --git a/src/targets/web/index.ts b/src/targets/web/index.ts index 540996cd54..5eb64ce1d2 100644 --- a/src/targets/web/index.ts +++ b/src/targets/web/index.ts @@ -10,7 +10,7 @@ import { useSpring } from '../../useSpring' import { useSprings } from '../../useSprings' import { useTrail } from '../../useTrail' import { useTransition } from '../../useTransition' -import './globals' +import { Spring, Trail, Transition } from '../../classes' type JSXElements = keyof JSX.IntrinsicElements @@ -172,4 +172,7 @@ export { useTransition, useChain, useSprings, + Spring, + Trail, + Transition, }