chore(ssr): fix document.body reference (#18863)

This commit is contained in:
Adam Bradley
2019-07-23 14:11:09 -05:00
committed by GitHub
parent 798103bf63
commit a8455a90ff
5 changed files with 39 additions and 36 deletions

View File

@ -2,7 +2,7 @@ import { ComponentRef } from '@angular/core';
import { ActivatedRoute, NavigationExtras, Router } from '@angular/router';
import { NavDirection, RouterDirection } from '@ionic/core';
export function insertView(views: RouteView[], view: RouteView, direction: RouterDirection) {
export const insertView = (views: RouteView[], view: RouteView, direction: RouterDirection) => {
if (direction === 'root') {
return setRoot(views, view);
} else if (direction === 'forward') {
@ -10,15 +10,15 @@ export function insertView(views: RouteView[], view: RouteView, direction: Route
} else {
return setBack(views, view);
}
}
};
function setRoot(views: RouteView[], view: RouteView) {
const setRoot = (views: RouteView[], view: RouteView) => {
views = views.filter(v => v.stackId !== view.stackId);
views.push(view);
return views;
}
};
function setForward(views: RouteView[], view: RouteView) {
const setForward = (views: RouteView[], view: RouteView) => {
const index = views.indexOf(view);
if (index >= 0) {
views = views.filter(v => v.stackId !== view.stackId || v.id <= view.id);
@ -26,30 +26,30 @@ function setForward(views: RouteView[], view: RouteView) {
views.push(view);
}
return views;
}
};
function setBack(views: RouteView[], view: RouteView) {
const setBack = (views: RouteView[], view: RouteView) => {
const index = views.indexOf(view);
if (index >= 0) {
return views.filter(v => v.stackId !== view.stackId || v.id <= view.id);
} else {
return setRoot(views, view);
}
}
};
export function getUrl(router: Router, activatedRoute: ActivatedRoute) {
export const getUrl = (router: Router, activatedRoute: ActivatedRoute) => {
const urlTree = router.createUrlTree(['.'], { relativeTo: activatedRoute });
return router.serializeUrl(urlTree);
}
};
export function isTabSwitch(enteringView: RouteView, leavingView: RouteView | undefined) {
export const isTabSwitch = (enteringView: RouteView, leavingView: RouteView | undefined) => {
if (!leavingView) {
return true;
}
return enteringView.stackId !== leavingView.stackId;
}
};
export function computeStackId(prefixUrl: string[] | undefined, url: string) {
export const computeStackId = (prefixUrl: string[] | undefined, url: string) => {
if (!prefixUrl) {
return undefined;
}
@ -63,22 +63,22 @@ export function computeStackId(prefixUrl: string[] | undefined, url: string) {
}
}
return undefined;
}
};
export function toSegments(path: string): string[] {
export const toSegments = (path: string) => {
return path
.split('/')
.map(s => s.trim())
.filter(s => s !== '');
}
};
export function destroyView(view: RouteView | undefined) {
export const destroyView = (view: RouteView | undefined) => {
if (view) {
// TODO lifecycle event
view.ref.destroy();
view.unlistenEvents();
}
}
};
export interface StackEvent {
enteringView: RouteView;