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);
}
