diff options
Diffstat (limited to 'src/fields/RichTextField.ts')
-rw-r--r-- | src/fields/RichTextField.ts | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/src/fields/RichTextField.ts b/src/fields/RichTextField.ts index 63ae61c2f..8f4d782b4 100644 --- a/src/fields/RichTextField.ts +++ b/src/fields/RichTextField.ts @@ -42,7 +42,8 @@ export class RichTextField extends ObjectField { return this.Text; } - // AARAV ADD= + // AARAV ADD + static ToProsemirrorDoc = (content: Record<string, unknown>[], selection: Record<string, unknown>) => ({ doc: { type: 'doc', @@ -86,7 +87,57 @@ export class RichTextField extends ObjectField { { type: 'text', anchor: 2 + plaintext.length - (selectBack ?? 0), head: 2 + plaintext.length } ); - public static textToRtf(text: string, imgDocId?: string, styles?: { bold?: boolean; italic?: boolean; fontSize?: number; color?: string }, selectBack?: number) { - return new RichTextField(JSON.stringify(RichTextField.ToProsemirror(text, imgDocId, styles, selectBack)), text); + + // AARAV ADD + + // takes in text segments instead of single text field + private static ToProsemirrorSegmented = ( + textSegments: { text: string; styles?: { bold?: boolean; italic?: boolean; fontSize?: number; color?: string } }[], + imgDocId?: string, + selectBack?: number + ) => + RichTextField.ToProsemirrorDoc( + textSegments.map(seg => ({ + type: 'paragraph', // Each segment becomes its own paragraph + content: [ + ...RichTextField.ToProsemirrorTextContent(seg.text, seg.styles), + ...(imgDocId ? RichTextField.ToProsemirrorDashDocContent(imgDocId) : []), + ], + })), + { + type: 'text', + anchor: 2 + textSegments.map(seg => seg.text).join('').length - (selectBack ?? 0), + head: 2 + textSegments.map(seg => seg.text).join('').length, + } + ); + + // AARAV ADD || + + + + public static textToRtf( + text: string, + imgDocId?: string, + styles?: { bold?: boolean; italic?: boolean; fontSize?: number; color?: string }, + selectBack?: number + ) { + return new RichTextField( + JSON.stringify(RichTextField.ToProsemirror(text, imgDocId, styles, selectBack)), text); + } + + // AARAV ADD + public static textToRtfFormat( + textSegments: { text: string; styles?: { bold?: boolean; italic?: boolean; fontSize?: number; color?: string } }[], + imgDocId?: string, + selectBack?: number + ) { + return new RichTextField( + JSON.stringify(RichTextField.ToProsemirrorSegmented(textSegments, imgDocId, selectBack)), + textSegments.map(seg => seg.text).join('')); } + + // AARAV ADD + + + } |