mirror of
https://github.com/zadam/trilium.git
synced 2025-10-30 11:09:05 +01:00
fix(share): heading and navigation not supporting CJK (closes #6430)
This commit is contained in:
parent
e953f0cc1a
commit
94d62f810a
@ -497,6 +497,14 @@ export function formatSize(size: number | null | undefined) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function slugify(text: string) {
|
||||||
|
return text
|
||||||
|
.normalize("NFKD") // handles accents like é → e
|
||||||
|
.toLowerCase()
|
||||||
|
.replace(/[^\p{Letter}\p{Number}]+/gu, "-") // keep Unicode letters/numbers
|
||||||
|
.replace(/(^-|-$)+/g, ""); // trim leading/trailing dashes
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
compareVersions,
|
compareVersions,
|
||||||
crash,
|
crash,
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import log from "../services/log.js";
|
|||||||
import type SNote from "./shaca/entities/snote.js";
|
import type SNote from "./shaca/entities/snote.js";
|
||||||
import type SBranch from "./shaca/entities/sbranch.js";
|
import type SBranch from "./shaca/entities/sbranch.js";
|
||||||
import type SAttachment from "./shaca/entities/sattachment.js";
|
import type SAttachment from "./shaca/entities/sattachment.js";
|
||||||
import utils, { isDev, safeExtractMessageAndStackFromError } from "../services/utils.js";
|
import utils, { isDev, safeExtractMessageAndStackFromError, slugify } from "../services/utils.js";
|
||||||
import options from "../services/options.js";
|
import options from "../services/options.js";
|
||||||
import { t } from "i18next";
|
import { t } from "i18next";
|
||||||
import ejs from "ejs";
|
import ejs from "ejs";
|
||||||
@ -175,7 +175,8 @@ function register(router: Router) {
|
|||||||
appPath: isDev ? appPath : `../${appPath}`,
|
appPath: isDev ? appPath : `../${appPath}`,
|
||||||
showLoginInShareTheme,
|
showLoginInShareTheme,
|
||||||
t,
|
t,
|
||||||
isDev
|
isDev,
|
||||||
|
slugify
|
||||||
};
|
};
|
||||||
let useDefaultView = true;
|
let useDefaultView = true;
|
||||||
|
|
||||||
|
|||||||
@ -90,7 +90,6 @@ const currentTheme = note.getLabel("shareTheme") === "light" ? "light" : "dark";
|
|||||||
const themeClass = currentTheme === "light" ? " theme-light" : " theme-dark";
|
const themeClass = currentTheme === "light" ? " theme-light" : " theme-dark";
|
||||||
const headingRe = /(<h[1-6]>)(.+?)(<\/h[1-6]>)/g;
|
const headingRe = /(<h[1-6]>)(.+?)(<\/h[1-6]>)/g;
|
||||||
const headingMatches = [...content.matchAll(headingRe)];
|
const headingMatches = [...content.matchAll(headingRe)];
|
||||||
const slugify = (text) => text.toLowerCase().replace(/[^\w]/g, "-");
|
|
||||||
content = content.replaceAll(headingRe, (...match) => {
|
content = content.replaceAll(headingRe, (...match) => {
|
||||||
match[0] = match[0].replace(match[3], `<a id="${slugify(match[2])}" class="toc-anchor" name="${slugify(match[2])}" href="#${slugify(match[2])}">#</a>${match[3]}`);
|
match[0] = match[0].replace(match[3], `<a id="${slugify(match[2])}" class="toc-anchor" name="${slugify(match[2])}" href="#${slugify(match[2])}">#</a>${match[3]}`);
|
||||||
return match[0];
|
return match[0];
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
<%
|
<%
|
||||||
const slugify = (text) => text.toLowerCase().replace(/[^\w]/g, "-");
|
|
||||||
const slug = slugify(entry.name);
|
const slug = slugify(entry.name);
|
||||||
%>
|
%>
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user