import { Dimensions } from 'react-native'; import { createComponent as createReactComponent } from './page.react'; import withRouter from './platforms/native/router/withRouter'; const DEFAULT_REACH_BOTTOM_DISTANCE = 50; export function createComponent(option, features) { const BaseComponent = createReactComponent(option, features); class Component extends BaseComponent { handleResize({ window, screen, }) { const resizeOption = { size: { windowHeight: window.height, windowWidth: window.width, }, }; const { resize } = this.oakOption.lifetimes || {}; resize && resize.call(this, resizeOption); } registerResize() { this.dimensionsSubscription = Dimensions.addEventListener('change', this.handleResize.bind(this)); } unregisterResize() { this.dimensionsSubscription.remove(); } async componentDidMount() { this.registerResize(); await super.componentDidMount(); } componentWillUnmount() { this.unregisterResize(); super.componentWillUnmount(); } render() { const { oakPullDownRefreshLoading } = this.state; const Render = super.render(); return Render; } } return withRouter(Component, option); }