"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createComponent = createComponent; const tslib_1 = require("tslib"); const react_native_1 = require("react-native"); const page_react_1 = require("./page.react"); const withRouter_1 = tslib_1.__importDefault(require("./platforms/native/router/withRouter")); const DEFAULT_REACH_BOTTOM_DISTANCE = 50; function createComponent(option, features) { const BaseComponent = (0, page_react_1.createComponent)(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 = react_native_1.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 (0, withRouter_1.default)(Component, option); }