react-native-filament
Version:
A real-time physically based 3D rendering engine for React Native
37 lines (36 loc) • 1.5 kB
JavaScript
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import React, { useCallback } from 'react';
import { RenderCallbackContext } from './RenderCallbackContext';
import { FilamentView } from './FilamentView';
import { StyleSheet } from 'react-native';
/**
* This is the component actually exposed to the user. It wraps the `FilamentView` and adds the renderCallbacks.
* @private
*/
export function FilamentViewWithRenderCallbacks({
children,
renderCallback: renderCallbackProp,
...forwardProps
}) {
const renderCallbacks = RenderCallbackContext.useRenderCallbacks();
const renderCallback = useCallback(frameInfo => {
'worklet';
renderCallbackProp === null || renderCallbackProp === void 0 || renderCallbackProp(frameInfo);
renderCallbacks.value.forEach(({
callback
}) => {
callback(frameInfo);
});
}, [renderCallbackProp, renderCallbacks]);
return /*#__PURE__*/React.createElement(FilamentView, _extends({
renderCallback: renderCallback
}, forwardProps, {
style: [styles.container, forwardProps.style]
}), children);
}
const styles = StyleSheet.create({
container: {
flex: 1
}
});
//# sourceMappingURL=FilamentViewWithRenderCallbacks.js.map