@ionic/angular
Version:
Angular specific wrappers for @ionic/core
73 lines • 1.95 kB
JavaScript
export const insertView = (views, view, direction) => {
if (direction === 'root') {
return setRoot(views, view);
}
else if (direction === 'forward') {
return setForward(views, view);
}
else {
return setBack(views, view);
}
};
const setRoot = (views, view) => {
views = views.filter((v) => v.stackId !== view.stackId);
views.push(view);
return views;
};
const setForward = (views, view) => {
const index = views.indexOf(view);
if (index >= 0) {
views = views.filter((v) => v.stackId !== view.stackId || v.id <= view.id);
}
else {
views.push(view);
}
return views;
};
const setBack = (views, view) => {
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 const getUrl = (router, activatedRoute) => {
const urlTree = router.createUrlTree(['.'], { relativeTo: activatedRoute });
return router.serializeUrl(urlTree);
};
export const isTabSwitch = (enteringView, leavingView) => {
if (!leavingView) {
return true;
}
return enteringView.stackId !== leavingView.stackId;
};
export const computeStackId = (prefixUrl, url) => {
if (!prefixUrl) {
return undefined;
}
const segments = toSegments(url);
for (let i = 0; i < segments.length; i++) {
if (i >= prefixUrl.length) {
return segments[i];
}
if (segments[i] !== prefixUrl[i]) {
return undefined;
}
}
return undefined;
};
export const toSegments = (path) => {
return path
.split('/')
.map((s) => s.trim())
.filter((s) => s !== '');
};
export const destroyView = (view) => {
if (view) {
view.ref.destroy();
view.unlistenEvents();
}
};
//# sourceMappingURL=stack-utils.js.map