zmp-react
Version:
Build full featured iOS & Android apps using ZMP & React
50 lines (38 loc) • 1.64 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.getRouterInitialComponent = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _utils = require("./utils");
var getRouterInitialComponent = function getRouterInitialComponent(router, initialComponent) {
var initialComponentData;
var _router$getInitialUrl = router.getInitialUrl(),
initialUrl = _router$getInitialUrl.initialUrl;
var initialRoute = router.findMatchingRoute(initialUrl);
var routeProps = {};
if (initialRoute && initialRoute.route && initialRoute.route.options) {
routeProps = initialRoute.route.options.props;
}
var isMasterRoute = function isMasterRoute(route) {
if (route.master === true) return true;
if (typeof route.master === 'function') return route.master(router.app);
return false;
};
if (initialRoute && initialRoute.route && (initialRoute.route.component || initialRoute.route.asyncComponent) && !isMasterRoute(initialRoute.route)) {
initialComponentData = {
component: initialRoute.route.component || initialRoute.route.asyncComponent,
initialComponent: initialComponent,
id: (0, _utils.getComponentId)(),
isAsync: !!initialRoute.route.asyncComponent,
props: (0, _extends2.default)({
zmproute: initialRoute,
zmprouter: router
}, routeProps, initialRoute.params)
};
}
return {
initialPage: initialComponentData,
initialRoute: initialRoute
};
};
exports.getRouterInitialComponent = getRouterInitialComponent;