Added anchor hash to break blocks

This commit is contained in:
DrMint 2024-03-15 22:19:53 +01:00
parent 14622450cf
commit 8557df4753
2 changed files with 27 additions and 12 deletions

View File

@ -2,7 +2,9 @@ import {
BreakBlockType,
Collections,
PageType,
RichTextBreakBlock,
RichTextContent,
RichTextSectionBlock,
isBlockNodeBreakBlock,
isBlockNodeSectionBlock,
isNodeBlockNode,
@ -57,22 +59,33 @@ const handleContent = (
{ root: { children, ...others } }: RichTextContent,
parentPrefix = ""
): RichTextContent => {
let sectionCount = 0;
let index = 0;
return {
root: {
...others,
children: children.map((node) => {
if (isNodeBlockNode(node) && isBlockNodeSectionBlock(node)) {
sectionCount++;
const anchorHash = `${parentPrefix}${sectionCount}.`;
return {
...node,
fields: {
...node.fields,
if (isNodeBlockNode(node)) {
if (isBlockNodeSectionBlock(node)) {
index++;
const anchorHash = `${parentPrefix}${index}.`;
const newNode: RichTextSectionBlock = {
...node,
fields: {
...node.fields,
content: handleContent(node.fields.content, anchorHash),
},
anchorHash,
content: handleContent(node.fields.content, anchorHash),
},
};
};
return newNode;
} else if (isBlockNodeBreakBlock(node)) {
index++;
const anchorHash = `${parentPrefix}${index}.`;
const newNode: RichTextBreakBlock = {
...node,
anchorHash,
};
return newNode;
}
}
return node;
}),

View File

@ -198,7 +198,8 @@ export interface RichTextBlockNode extends RichTextNode {
}
export interface RichTextSectionBlock extends RichTextBlockNode {
fields: SectionBlock & { anchorHash: string };
fields: SectionBlock;
anchorHash: string;
}
export interface RichTextTranscriptBlock extends RichTextBlockNode {
@ -207,6 +208,7 @@ export interface RichTextTranscriptBlock extends RichTextBlockNode {
export interface RichTextBreakBlock extends RichTextBlockNode {
fields: BreakBlock;
anchorHash: string;
}
export const isNodeParagraphNode = (node: RichTextNode): node is RichTextParagraphNode =>