build: make obsidian links and checkboxes work again

This commit is contained in:
Johannes Millan 2024-12-18 10:05:00 +01:00
parent b94458f5cf
commit 2997740921
3 changed files with 20 additions and 18 deletions

8
package-lock.json generated
View file

@ -108,7 +108,7 @@
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "^1.6.0",
"lz-string": "^1.5.0",
"marked": "^15.0.4",
"marked": "^12.0.2",
"moment": "2.30.1",
"moment-duration-format": "^2.2.2",
"nanoid": "^4.0.0",
@ -17311,9 +17311,9 @@
"dev": true
},
"node_modules/marked": {
"version": "15.0.4",
"resolved": "https://registry.npmjs.org/marked/-/marked-15.0.4.tgz",
"integrity": "sha512-TCHvDqmb3ZJ4PWG7VEGVgtefA5/euFmsIhxtD0XsBxI39gUSKL81mIRFdt0AiNQozUahd4ke98ZdirExd/vSEw==",
"version": "12.0.2",
"resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
"integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
"dev": true,
"bin": {
"marked": "bin/marked.js"

View file

@ -190,7 +190,7 @@
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "^1.6.0",
"lz-string": "^1.5.0",
"marked": "^15.0.4",
"marked": "^12.0.2",
"moment": "2.30.1",
"moment-duration-format": "^2.2.2",
"nanoid": "^4.0.0",
@ -223,6 +223,9 @@
},
"angular-mentions": {
"@angular/common": "$@angular/common"
},
"ngx-markdown": {
"marked": "12.0.2"
}
},
"optionalDependencies": {

View file

@ -3,18 +3,18 @@ import { MarkedOptions, MarkedRenderer } from 'ngx-markdown';
export const markedOptionsFactory = (): MarkedOptions => {
const renderer = new MarkedRenderer();
renderer.checkbox = ({ checked }) =>
`<span class="checkbox material-icons">${checked ? 'check_box' : 'check_box_outline_blank'}</span>`;
renderer.checkbox = (isChecked: boolean) =>
`<span class="checkbox material-icons">${isChecked ? 'check_box' : 'check_box_outline_blank'}</span>`;
renderer.listitem = (listItem) =>
listItem.text.includes('checkbox')
? `<li class="checkbox-wrapper ${listItem.text.includes('check_box_outline_blank') ? 'undone' : 'done'}">${listItem.text}</li>`
: `<li>${listItem.text}</li>`;
renderer.listitem = (text: string) =>
text.includes('checkbox')
? `<li class="checkbox-wrapper ${text.includes('check_box_outline_blank') ? 'undone' : 'done'}">${text}</li>`
: `<li>${text}</li>`;
renderer.link = ({ href, title, text }) =>
renderer.link = (href, title, text) =>
`<a target="_blank" href="${href}" title="${title}">${text}</a>`;
renderer.paragraph = ({ text }) => {
renderer.paragraph = (text) => {
const split = text.split('\n');
return split.reduce((acc, p, i) => {
const result = /h(\d)\./.exec(p);
@ -36,13 +36,12 @@ export const markedOptionsFactory = (): MarkedOptions => {
/\b((([A-Za-z][A-Za-z0-9+.-]*):\/\/([^\/?#]*))([^?#]*)(\?([^#]*))?(#(.*))?)\b/gi;
const rendererTxtOld = renderer.text;
renderer.text = (p) => {
return rendererTxtOld({
...p,
text: p.text.replace(urlPattern, (url) => {
renderer.text = (text) => {
return rendererTxtOld(
text.replace(urlPattern, (url) => {
return `<a href="${url}" target="_blank">${url}</a>`;
}),
});
);
};
return {