{"version":3,"sources":["Transitioning.js"],"names":["TransitioningContext","React","createContext","configFromProps","type","props","config","durationMs","interpolation","animation","delayMs","propagation","wrapTransitioningContext","Comp","context","In","Component","componentDidMount","push","render","children","Change","Out","Together","transitions","Sequence","sequence","createTransitioningComponent","Wrapped","propTypes","createRef","animateMount","animateNextTransition","setNativeProps","viewRef","current","viewTag","ReanimatedModule","transition","rest","Transitioning","View","Transition"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View, findNodeHandle } from 'react-native';\nimport ReanimatedModule from './ReanimatedModule';\n\nconst TransitioningContext = React.createContext();\n\nfunction configFromProps(type, props) {\n const config = { type };\n if ('durationMs' in props) {\n config.durationMs = props.durationMs;\n }\n if ('interpolation' in props) {\n config.interpolation = props.interpolation;\n }\n if ('type' in props) {\n config.animation = props.type;\n }\n if ('delayMs' in props) {\n config.delayMs = props.delayMs;\n }\n if ('propagation' in props) {\n config.propagation = props.propagation;\n }\n return config;\n}\n\n/**\n * The below wrapper is used to support legacy context API with Context.Consumer\n * render prop. We need it as we want to access `context` from within\n * `componentDidMount` callback. If we decided to drop support for older\n * react native we could rewrite it using hooks or `static contextType` API.\n */\nfunction wrapTransitioningContext(Comp) {\n return props => {\n return (\n \n {context => }\n \n );\n };\n}\n\nclass In extends React.Component {\n componentDidMount() {\n this.props.context.push(configFromProps('in', this.props));\n }\n\n render() {\n return this.props.children || null;\n }\n}\n\nclass Change extends React.Component {\n componentDidMount() {\n this.props.context.push(configFromProps('change', this.props));\n }\n\n render() {\n return this.props.children || null;\n }\n}\n\nclass Out extends React.Component {\n componentDidMount() {\n this.props.context.push(configFromProps('out', this.props));\n }\n\n render() {\n return this.props.children || null;\n }\n}\n\nclass Together extends React.Component {\n transitions = [];\n componentDidMount() {\n const config = configFromProps('group', this.props);\n config.transitions = this.transitions;\n this.props.context.push(config);\n }\n\n render() {\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nclass Sequence extends React.Component {\n transitions = [];\n componentDidMount() {\n const config = configFromProps('group', this.props);\n config.sequence = true;\n config.transitions = this.transitions;\n this.props.context.push(config);\n }\n\n render() {\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nfunction createTransitioningComponent(Component) {\n class Wrapped extends React.Component {\n propTypes = Component.propTypes;\n transitions = [];\n viewRef = React.createRef();\n\n componentDidMount() {\n if (this.props.animateMount) {\n this.animateNextTransition();\n }\n }\n\n setNativeProps(props) {\n this.viewRef.current.setNativeProps(props);\n }\n\n animateNextTransition() {\n const viewTag = findNodeHandle(this.viewRef.current);\n ReanimatedModule.animateNextTransition(viewTag, {\n transitions: this.transitions,\n });\n }\n\n render() {\n const { transition, ...rest } = this.props;\n return (\n \n \n {transition}\n \n \n \n );\n }\n }\n return Wrapped;\n}\n\nconst Transitioning = {\n View: createTransitioningComponent(View),\n};\n\nconst Transition = {\n Sequence: wrapTransitioningContext(Sequence),\n Together: wrapTransitioningContext(Together),\n In: wrapTransitioningContext(In),\n Out: wrapTransitioningContext(Out),\n Change: wrapTransitioningContext(Change),\n};\n\nexport { Transitioning, Transition, createTransitioningComponent };\n"]}