framework7-vue
Version:
Build full featured iOS & Android apps using Framework7 & Vue
35 lines • 1.18 kB
JavaScript
import { getComponentId } from './utils.js';
export const getRouterInitialComponent = (router, initialComponent) => {
let initialComponentData;
const {
initialUrl
} = router.getInitialUrl();
const initialRoute = router.findMatchingRoute(initialUrl);
let routeProps = {};
if (initialRoute && initialRoute.route && initialRoute.route.options) {
routeProps = initialRoute.route.options.props;
}
const 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,
id: getComponentId(),
isAsync: !!initialRoute.route.asyncComponent,
props: {
f7route: initialRoute,
f7router: router,
...routeProps,
...initialRoute.params
}
};
}
return {
initialPage: initialComponentData,
initialRoute
};
};