feat: Backlinks (#979)
* feat: backlinks * feat: add backlinkDocumentId to documents.list * chore: refactor fix: create and delete backlink handling * fix: guard against self links * feat: basic frontend fix: race condition * styling * test: fix parse ids * self review * linting * feat: Improved link styling * fix: Increase clickable area at bottom of doc / between references * perf: global styles are SLOW
This commit is contained in:
29
shared/utils/parseDocumentIds.js
Normal file
29
shared/utils/parseDocumentIds.js
Normal file
@ -0,0 +1,29 @@
|
||||
// @flow
|
||||
import MarkdownSerializer from 'slate-md-serializer';
|
||||
const Markdown = new MarkdownSerializer();
|
||||
|
||||
export default function parseDocumentIds(text: string) {
|
||||
const value = Markdown.deserialize(text);
|
||||
let links = [];
|
||||
|
||||
function findLinks(node) {
|
||||
if (node.type === 'link') {
|
||||
const href = node.data.get('href');
|
||||
|
||||
if (href.startsWith('/doc')) {
|
||||
const tokens = href.replace(/\/$/, '').split('/');
|
||||
const lastToken = tokens[tokens.length - 1];
|
||||
links.push(lastToken);
|
||||
}
|
||||
}
|
||||
|
||||
if (!node.nodes) {
|
||||
return;
|
||||
}
|
||||
|
||||
node.nodes.forEach(findLinks);
|
||||
}
|
||||
|
||||
findLinks(value.document);
|
||||
return links;
|
||||
}
|
Reference in New Issue
Block a user