]*\\bdata-nav-page=["']?${navKey}["']?[^>]*>)([\\s\\S]*?)(<\\/a>)`,
'i'
);
const m = html.match(re);
if (!m) {
throw new Error(`injectPageMeta: missing element with data-nav-page="${navKey}" in home HTML`);
}
let openTag = m[1];
const closeTag = m[3];
// Update href if present in page-meta
if (navMeta.href && /\bhref\s*=/.test(openTag)) {
openTag = openTag.replace(
/\bhref\s*=\s*("[^"]*"|'[^']*')/i,
`href="${escapeHtmlText(navMeta.href)}"`
);
}
// Update or add title
if (/\btitle\s*=/.test(openTag)) {
openTag = openTag.replace(/\btitle\s*=\s*("[^"]*"|'[^']*')/i, `title="${escapeHtmlText(navTitle)}"`);
} else if (openTag.endsWith('>')) {
openTag = openTag.slice(0, -1) + ` title="${escapeHtmlText(navTitle)}">`;
}
const demoMap = {
causalFlow: ``,
analysis: `
The quick brown fox jumps over lazy dog
`,
attribution: `
France 's capital is
→ Paris
`,
logitLens: ``,
branchTree: `
`,
chat: `
What is 1+1?
1+1 equals 2.
`,
};
const demoHtml = demoMap[navKey] || '';
const inner = `${moduleNum}
` + moduleName + moduleDesc + moduleTag + demoHtml;
html = html.replace(re, `${openTag}${inner}${closeTag}`);
}
}
if (pageKey !== 'home' && Array.isArray(doc.navPageKeys)) {
const navIdx = doc.navPageKeys.indexOf(pageKey);
if (navIdx >= 0) {
const num = String(navIdx + 1).padStart(2, '0');
html = html.replace(
/(]*>)/i,
`$1`
);
}
}
return html;
}
module.exports = { injectPageMeta, escapeHtmlText, documentTitleEn };