@appsemble/lang-sdk
Version:
Language SDK for Appsemble
38 lines • 1.34 kB
JavaScript
import { normalize } from './normalize.js';
export function getPageMessageId(pageName) {
return `pages.${normalize(pageName)}`;
}
export function getPagePathSegment(page) {
return normalize(typeof page === 'string' ? page : page.name);
}
export function getPageDisplayName(page, getAppMessage) {
return getAppMessage({
id: getPageMessageId(page.name),
defaultMessage: page.name,
}).format();
}
function matchesPageId(page, normalizedPageId, appMessageIds, getAppMessage) {
if (getPagePathSegment(page) === normalizedPageId) {
return true;
}
const pageMessageId = getPageMessageId(page.name);
if (!appMessageIds.includes(pageMessageId)) {
return false;
}
return normalize(getPageDisplayName(page, getAppMessage)) === normalizedPageId;
}
export function findPageById(pages, normalizedPageId, appMessageIds, getAppMessage) {
for (const page of pages) {
if (matchesPageId(page, normalizedPageId, appMessageIds, getAppMessage)) {
return page;
}
if (page.type === 'container') {
const foundPage = findPageById(page.pages, normalizedPageId, appMessageIds, getAppMessage);
if (foundPage) {
return foundPage;
}
}
}
return null;
}
//# sourceMappingURL=pageUtils.js.map