sunsama-api 0.12.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,6 +13,22 @@ import { marked } from 'marked';
13
13
  import TurndownService from 'turndown';
14
14
  import { z } from 'zod';
15
15
  import { SunsamaAuthError } from '../errors/index.js';
16
+ /**
17
+ * Decodes common HTML entities back to their original characters.
18
+ * This is needed because marked's lexer HTML-encodes some characters.
19
+ */
20
+ function decodeHtmlEntities(text) {
21
+ return text
22
+ .replace(/&/g, '&')
23
+ .replace(/&lt;/g, '<')
24
+ .replace(/&gt;/g, '>')
25
+ .replace(/&quot;/g, '"')
26
+ .replace(/&#39;/g, "'")
27
+ .replace(/&#x27;/g, "'")
28
+ .replace(/&apos;/g, "'")
29
+ .replace(/&#(\d+);/g, (_, code) => String.fromCharCode(parseInt(code, 10)))
30
+ .replace(/&#x([0-9a-fA-F]+);/g, (_, code) => String.fromCharCode(parseInt(code, 16)));
31
+ }
16
32
  /**
17
33
  * Validation schema for HTML input
18
34
  */
@@ -226,4 +242,443 @@ export function convertContent(content, fromFormat, toFormat, options = {}) {
226
242
  }
227
243
  throw new SunsamaAuthError(`Invalid conversion format: ${fromFormat} to ${toFormat}`);
228
244
  }
245
+ /**
246
+ * Parses inline tokens from marked and converts them to formatted segments
247
+ * with Yjs-compatible attributes
248
+ *
249
+ * @param tokens - Array of marked inline tokens
250
+ * @param inheritedAttributes - Attributes inherited from parent elements
251
+ * @returns Array of formatted segments with text and attributes
252
+ * @internal
253
+ */
254
+ function parseInlineTokens(tokens, inheritedAttributes = {}) {
255
+ const segments = [];
256
+ for (const token of tokens) {
257
+ switch (token.type) {
258
+ case 'text': {
259
+ const textToken = token;
260
+ // Handle text tokens that may have nested tokens (from inline parsing)
261
+ if ('tokens' in textToken && textToken.tokens && textToken.tokens.length > 0) {
262
+ segments.push(...parseInlineTokens(textToken.tokens, inheritedAttributes));
263
+ }
264
+ else {
265
+ const attrs = Object.keys(inheritedAttributes).length > 0 ? inheritedAttributes : undefined;
266
+ segments.push({ text: decodeHtmlEntities(textToken.text), attributes: attrs });
267
+ }
268
+ break;
269
+ }
270
+ case 'strong': {
271
+ const strongToken = token;
272
+ const newAttrs = { ...inheritedAttributes, bold: true };
273
+ if ('tokens' in strongToken && strongToken.tokens && strongToken.tokens.length > 0) {
274
+ segments.push(...parseInlineTokens(strongToken.tokens, newAttrs));
275
+ }
276
+ else {
277
+ segments.push({ text: decodeHtmlEntities(strongToken.text), attributes: newAttrs });
278
+ }
279
+ break;
280
+ }
281
+ case 'em': {
282
+ const emToken = token;
283
+ const newAttrs = { ...inheritedAttributes, italic: true };
284
+ if ('tokens' in emToken && emToken.tokens && emToken.tokens.length > 0) {
285
+ segments.push(...parseInlineTokens(emToken.tokens, newAttrs));
286
+ }
287
+ else {
288
+ segments.push({ text: decodeHtmlEntities(emToken.text), attributes: newAttrs });
289
+ }
290
+ break;
291
+ }
292
+ case 'link': {
293
+ const linkToken = token;
294
+ // Sunsama expects link as a nested object with href property
295
+ const newAttrs = { ...inheritedAttributes, link: { href: linkToken.href } };
296
+ if ('tokens' in linkToken && linkToken.tokens && linkToken.tokens.length > 0) {
297
+ segments.push(...parseInlineTokens(linkToken.tokens, newAttrs));
298
+ }
299
+ else {
300
+ segments.push({ text: decodeHtmlEntities(linkToken.text), attributes: newAttrs });
301
+ }
302
+ break;
303
+ }
304
+ case 'codespan': {
305
+ const codeToken = token;
306
+ const newAttrs = { ...inheritedAttributes, code: true };
307
+ segments.push({ text: decodeHtmlEntities(codeToken.text), attributes: newAttrs });
308
+ break;
309
+ }
310
+ case 'del': {
311
+ // Note: Sunsama's editor doesn't support strikethrough marks
312
+ // So we render it as plain text with ~~ delimiters preserved
313
+ const delToken = token;
314
+ if ('tokens' in delToken && delToken.tokens && delToken.tokens.length > 0) {
315
+ segments.push({ text: '~~' });
316
+ segments.push(...parseInlineTokens(delToken.tokens, inheritedAttributes));
317
+ segments.push({ text: '~~' });
318
+ }
319
+ else {
320
+ segments.push({
321
+ text: `~~${decodeHtmlEntities(delToken.text)}~~`,
322
+ attributes: inheritedAttributes,
323
+ });
324
+ }
325
+ break;
326
+ }
327
+ case 'br': {
328
+ segments.push({ text: '\n' });
329
+ break;
330
+ }
331
+ case 'escape': {
332
+ const escapeToken = token;
333
+ const attrs = Object.keys(inheritedAttributes).length > 0 ? inheritedAttributes : undefined;
334
+ segments.push({ text: decodeHtmlEntities(escapeToken.text), attributes: attrs });
335
+ break;
336
+ }
337
+ default: {
338
+ // For any other token types, try to extract text
339
+ if ('text' in token && typeof token.text === 'string') {
340
+ const attrs = Object.keys(inheritedAttributes).length > 0 ? inheritedAttributes : undefined;
341
+ segments.push({
342
+ text: decodeHtmlEntities(token.text),
343
+ attributes: attrs,
344
+ });
345
+ }
346
+ else if ('raw' in token && typeof token.raw === 'string') {
347
+ const attrs = Object.keys(inheritedAttributes).length > 0 ? inheritedAttributes : undefined;
348
+ segments.push({ text: token.raw, attributes: attrs });
349
+ }
350
+ break;
351
+ }
352
+ }
353
+ }
354
+ return segments;
355
+ }
356
+ /**
357
+ * Parses markdown content into formatted segments suitable for Yjs XmlText insertion.
358
+ *
359
+ * This function converts markdown text into an array of segments, where each segment
360
+ * contains the text content and optional formatting attributes (bold, italic, link, etc.).
361
+ * The segments can be used to insert rich text into a Yjs document with proper formatting.
362
+ *
363
+ * @param markdown - The markdown content to parse
364
+ * @returns Array of formatted segments with text and Yjs-compatible attributes
365
+ *
366
+ * @example
367
+ * ```typescript
368
+ * const segments = parseMarkdownToSegments('This is **bold** and *italic* text');
369
+ * // Returns:
370
+ * // [
371
+ * // { text: 'This is ' },
372
+ * // { text: 'bold', attributes: { bold: true } },
373
+ * // { text: ' and ' },
374
+ * // { text: 'italic', attributes: { italic: true } },
375
+ * // { text: ' text' }
376
+ * // ]
377
+ *
378
+ * const linkSegments = parseMarkdownToSegments('Visit [Google](https://google.com)');
379
+ * // Returns:
380
+ * // [
381
+ * // { text: 'Visit ' },
382
+ * // { text: 'Google', attributes: { link: 'https://google.com' } }
383
+ * // ]
384
+ * ```
385
+ */
386
+ export function parseMarkdownToSegments(markdown) {
387
+ if (!markdown || markdown.trim() === '') {
388
+ return [];
389
+ }
390
+ const segments = [];
391
+ // Configure marked for GFM (GitHub Flavored Markdown) support
392
+ marked.setOptions({
393
+ gfm: true,
394
+ breaks: true,
395
+ });
396
+ // Tokenize the markdown
397
+ const tokens = marked.lexer(markdown);
398
+ for (let i = 0; i < tokens.length; i++) {
399
+ const token = tokens[i];
400
+ switch (token.type) {
401
+ case 'paragraph': {
402
+ const paragraphToken = token;
403
+ if (paragraphToken.tokens) {
404
+ segments.push(...parseInlineTokens(paragraphToken.tokens));
405
+ }
406
+ // Add newline after paragraph if not the last token
407
+ if (i < tokens.length - 1) {
408
+ segments.push({ text: '\n' });
409
+ }
410
+ break;
411
+ }
412
+ case 'heading': {
413
+ const headingToken = token;
414
+ if (headingToken.tokens) {
415
+ // Apply bold formatting to headings
416
+ segments.push(...parseInlineTokens(headingToken.tokens, { bold: true }));
417
+ }
418
+ segments.push({ text: '\n' });
419
+ break;
420
+ }
421
+ case 'list': {
422
+ const listToken = token;
423
+ for (let j = 0; j < listToken.items.length; j++) {
424
+ const item = listToken.items[j];
425
+ // Add list marker
426
+ const marker = listToken.ordered ? `${j + 1}. ` : '• ';
427
+ segments.push({ text: marker });
428
+ if (item.tokens) {
429
+ // Process list item content
430
+ for (const itemToken of item.tokens) {
431
+ if (itemToken.type === 'text' &&
432
+ 'tokens' in itemToken &&
433
+ itemToken.tokens) {
434
+ segments.push(...parseInlineTokens(itemToken.tokens));
435
+ }
436
+ else if ('tokens' in itemToken && itemToken.tokens) {
437
+ segments.push(...parseInlineTokens(itemToken.tokens));
438
+ }
439
+ else if ('text' in itemToken) {
440
+ segments.push({ text: decodeHtmlEntities(itemToken.text) });
441
+ }
442
+ }
443
+ }
444
+ segments.push({ text: '\n' });
445
+ }
446
+ break;
447
+ }
448
+ case 'code': {
449
+ const codeToken = token;
450
+ segments.push({ text: decodeHtmlEntities(codeToken.text), attributes: { code: true } });
451
+ segments.push({ text: '\n' });
452
+ break;
453
+ }
454
+ case 'blockquote': {
455
+ const blockquoteToken = token;
456
+ if (blockquoteToken.tokens) {
457
+ for (const innerToken of blockquoteToken.tokens) {
458
+ if (innerToken.type === 'paragraph' && 'tokens' in innerToken) {
459
+ segments.push({ text: '> ' });
460
+ segments.push(...parseInlineTokens(innerToken.tokens));
461
+ segments.push({ text: '\n' });
462
+ }
463
+ }
464
+ }
465
+ break;
466
+ }
467
+ case 'hr': {
468
+ segments.push({ text: '---\n' });
469
+ break;
470
+ }
471
+ case 'space': {
472
+ segments.push({ text: '\n' });
473
+ break;
474
+ }
475
+ case 'text': {
476
+ const textToken = token;
477
+ if ('tokens' in textToken && textToken.tokens) {
478
+ segments.push(...parseInlineTokens(textToken.tokens));
479
+ }
480
+ else {
481
+ segments.push({ text: decodeHtmlEntities(textToken.text) });
482
+ }
483
+ break;
484
+ }
485
+ default: {
486
+ // Handle any other token types by extracting raw text
487
+ if ('raw' in token && typeof token.raw === 'string') {
488
+ segments.push({ text: decodeHtmlEntities(token.raw) });
489
+ }
490
+ break;
491
+ }
492
+ }
493
+ }
494
+ // Merge adjacent segments with the same attributes for efficiency
495
+ return mergeAdjacentSegments(segments);
496
+ }
497
+ /**
498
+ * Merges adjacent segments that have the same attributes
499
+ * @param segments - Array of formatted segments
500
+ * @returns Merged array of segments
501
+ * @internal
502
+ */
503
+ function mergeAdjacentSegments(segments) {
504
+ if (segments.length === 0)
505
+ return [];
506
+ const merged = [];
507
+ let current = segments[0];
508
+ for (let i = 1; i < segments.length; i++) {
509
+ const next = segments[i];
510
+ // Check if attributes are the same (or both undefined/empty)
511
+ const currentAttrs = current.attributes || {};
512
+ const nextAttrs = next.attributes || {};
513
+ const attrsEqual = JSON.stringify(currentAttrs) === JSON.stringify(nextAttrs);
514
+ if (attrsEqual) {
515
+ // Merge the text
516
+ current = {
517
+ text: current.text + next.text,
518
+ attributes: Object.keys(currentAttrs).length > 0 ? currentAttrs : undefined,
519
+ };
520
+ }
521
+ else {
522
+ merged.push(current);
523
+ current = next;
524
+ }
525
+ }
526
+ merged.push(current);
527
+ return merged;
528
+ }
529
+ /**
530
+ * Parses markdown content into a document structure with block-level elements.
531
+ *
532
+ * This function converts markdown text into an array of document blocks, where each block
533
+ * represents a block-level element (paragraph, blockquote, horizontal rule, etc.).
534
+ * This structure is suitable for creating proper Yjs XmlElement hierarchies that match
535
+ * Sunsama's rich text editor format.
536
+ *
537
+ * @param markdown - The markdown content to parse
538
+ * @returns Array of document blocks representing the document structure
539
+ *
540
+ * @example
541
+ * ```typescript
542
+ * const blocks = parseMarkdownToBlocks('Hello **world**\n\n> A quote\n\n---');
543
+ * // Returns:
544
+ * // [
545
+ * // { type: 'paragraph', segments: [{ text: 'Hello ' }, { text: 'world', attributes: { bold: true } }] },
546
+ * // { type: 'blockquote', children: [{ type: 'paragraph', segments: [{ text: 'A quote' }] }] },
547
+ * // { type: 'horizontalRule' }
548
+ * // ]
549
+ * ```
550
+ */
551
+ export function parseMarkdownToBlocks(markdown) {
552
+ if (!markdown || markdown.trim() === '') {
553
+ return [];
554
+ }
555
+ const blocks = [];
556
+ // Configure marked for GFM support
557
+ marked.setOptions({
558
+ gfm: true,
559
+ breaks: true,
560
+ });
561
+ // Tokenize the markdown
562
+ const tokens = marked.lexer(markdown);
563
+ for (const token of tokens) {
564
+ switch (token.type) {
565
+ case 'paragraph': {
566
+ const paragraphToken = token;
567
+ if (paragraphToken.tokens) {
568
+ const segments = parseInlineTokens(paragraphToken.tokens);
569
+ if (segments.length > 0) {
570
+ blocks.push({ type: 'paragraph', segments: mergeAdjacentSegments(segments) });
571
+ }
572
+ }
573
+ break;
574
+ }
575
+ case 'heading': {
576
+ // Convert headings to bold paragraphs (Sunsama may not support native headings)
577
+ const headingToken = token;
578
+ if (headingToken.tokens) {
579
+ const segments = parseInlineTokens(headingToken.tokens, { bold: true });
580
+ if (segments.length > 0) {
581
+ blocks.push({ type: 'paragraph', segments: mergeAdjacentSegments(segments) });
582
+ }
583
+ }
584
+ break;
585
+ }
586
+ case 'blockquote': {
587
+ const blockquoteToken = token;
588
+ const children = [];
589
+ if (blockquoteToken.tokens) {
590
+ for (const innerToken of blockquoteToken.tokens) {
591
+ if (innerToken.type === 'paragraph' && 'tokens' in innerToken) {
592
+ const segments = parseInlineTokens(innerToken.tokens);
593
+ if (segments.length > 0) {
594
+ children.push({ type: 'paragraph', segments: mergeAdjacentSegments(segments) });
595
+ }
596
+ }
597
+ }
598
+ }
599
+ if (children.length > 0) {
600
+ blocks.push({ type: 'blockquote', children });
601
+ }
602
+ break;
603
+ }
604
+ case 'hr': {
605
+ blocks.push({ type: 'horizontalRule' });
606
+ break;
607
+ }
608
+ case 'code': {
609
+ const codeToken = token;
610
+ blocks.push({
611
+ type: 'codeBlock',
612
+ segments: [{ text: decodeHtmlEntities(codeToken.text) }],
613
+ });
614
+ break;
615
+ }
616
+ case 'list': {
617
+ // Create proper list structure with listItem elements
618
+ const listToken = token;
619
+ const items = [];
620
+ for (const item of listToken.items) {
621
+ const segments = [];
622
+ if (item.tokens) {
623
+ for (const itemToken of item.tokens) {
624
+ if (itemToken.type === 'text' &&
625
+ 'tokens' in itemToken &&
626
+ itemToken.tokens) {
627
+ segments.push(...parseInlineTokens(itemToken.tokens));
628
+ }
629
+ else if ('tokens' in itemToken && itemToken.tokens) {
630
+ segments.push(...parseInlineTokens(itemToken.tokens));
631
+ }
632
+ else if ('text' in itemToken) {
633
+ segments.push({ text: decodeHtmlEntities(itemToken.text) });
634
+ }
635
+ }
636
+ }
637
+ if (segments.length > 0) {
638
+ items.push({ segments: mergeAdjacentSegments(segments) });
639
+ }
640
+ }
641
+ if (items.length > 0) {
642
+ blocks.push({
643
+ type: listToken.ordered ? 'orderedList' : 'bulletList',
644
+ items,
645
+ start: listToken.ordered && typeof listToken.start === 'number'
646
+ ? listToken.start
647
+ : undefined,
648
+ });
649
+ }
650
+ break;
651
+ }
652
+ case 'space': {
653
+ // Skip pure space tokens - they're handled by paragraph breaks
654
+ break;
655
+ }
656
+ case 'text': {
657
+ const textToken = token;
658
+ const segments = [];
659
+ if ('tokens' in textToken && textToken.tokens) {
660
+ segments.push(...parseInlineTokens(textToken.tokens));
661
+ }
662
+ else {
663
+ segments.push({ text: decodeHtmlEntities(textToken.text) });
664
+ }
665
+ if (segments.length > 0) {
666
+ blocks.push({ type: 'paragraph', segments: mergeAdjacentSegments(segments) });
667
+ }
668
+ break;
669
+ }
670
+ default: {
671
+ // Handle any other token types by extracting raw text
672
+ if ('raw' in token && typeof token.raw === 'string') {
673
+ const raw = token.raw.trim();
674
+ if (raw) {
675
+ blocks.push({ type: 'paragraph', segments: [{ text: raw }] });
676
+ }
677
+ }
678
+ break;
679
+ }
680
+ }
681
+ }
682
+ return blocks;
683
+ }
229
684
  //# sourceMappingURL=conversion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../../src/utils/conversion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../../../src/utils/conversion.ts"],"names":[],"mappings":"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"}
@@ -457,6 +457,21 @@ export declare class SunsamaClient {
457
457
  * ```
458
458
  */
459
459
  updateTaskStream(taskId: string, streamId: string, limitResponsePayload?: boolean): Promise<UpdateTaskPayload>;
460
+ /**
461
+ * Inserts document blocks into a Yjs XmlFragment
462
+ *
463
+ * This method creates the proper XML element hierarchy for Sunsama's rich text editor,
464
+ * including paragraphs, blockquotes, horizontal rules, and text with formatting marks.
465
+ *
466
+ * @param fragment - The Yjs XmlFragment to insert blocks into
467
+ * @param blocks - Array of document blocks to insert
468
+ * @internal
469
+ */
470
+ /**
471
+ * Helper to insert text segments into a text node that's already in the document
472
+ */
473
+ private insertSegmentsIntoTextNode;
474
+ private insertBlocksIntoFragment;
460
475
  /**
461
476
  * Creates an updated collaborative editing snapshot based on existing state
462
477
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,54 @@
9
9
  * These utilities are particularly useful for Sunsama API task notes and comments
10
10
  * where content can be provided in either format and needs conversion to the other.
11
11
  */
12
+ /**
13
+ * Yjs formatting attributes for rich text
14
+ */
15
+ export interface YjsTextAttributes {
16
+ bold?: true;
17
+ italic?: true;
18
+ link?: {
19
+ href: string;
20
+ };
21
+ underline?: true;
22
+ strikethrough?: true;
23
+ code?: true;
24
+ }
25
+ /**
26
+ * Represents a segment of text with optional formatting attributes
27
+ */
28
+ export interface FormattedSegment {
29
+ /** The text content */
30
+ text: string;
31
+ /** Formatting attributes (e.g., bold, italic, link) */
32
+ attributes?: YjsTextAttributes;
33
+ }
34
+ /**
35
+ * Block types supported by Sunsama's editor
36
+ */
37
+ export type BlockType = 'paragraph' | 'blockquote' | 'horizontalRule' | 'codeBlock' | 'bulletList' | 'orderedList';
38
+ /**
39
+ * Represents a list item in a bullet or ordered list
40
+ */
41
+ export interface ListItem {
42
+ /** Content segments for the list item */
43
+ segments: FormattedSegment[];
44
+ }
45
+ /**
46
+ * Represents a block-level element in the document
47
+ */
48
+ export interface DocumentBlock {
49
+ /** The type of block */
50
+ type: BlockType;
51
+ /** Content segments (for paragraph, codeBlock) */
52
+ segments?: FormattedSegment[];
53
+ /** Nested blocks (for blockquote) */
54
+ children?: DocumentBlock[];
55
+ /** List items (for bulletList, orderedList) */
56
+ items?: ListItem[];
57
+ /** Start number for ordered lists */
58
+ start?: number;
59
+ }
12
60
  /**
13
61
  * Configuration options for HTML to Markdown conversion
14
62
  */
@@ -105,4 +153,58 @@ export declare function sanitizeHtml(html: string): string;
105
153
  * ```
106
154
  */
107
155
  export declare function convertContent(content: string, fromFormat: 'html' | 'markdown', toFormat: 'html' | 'markdown', options?: ConversionOptions): string;
156
+ /**
157
+ * Parses markdown content into formatted segments suitable for Yjs XmlText insertion.
158
+ *
159
+ * This function converts markdown text into an array of segments, where each segment
160
+ * contains the text content and optional formatting attributes (bold, italic, link, etc.).
161
+ * The segments can be used to insert rich text into a Yjs document with proper formatting.
162
+ *
163
+ * @param markdown - The markdown content to parse
164
+ * @returns Array of formatted segments with text and Yjs-compatible attributes
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * const segments = parseMarkdownToSegments('This is **bold** and *italic* text');
169
+ * // Returns:
170
+ * // [
171
+ * // { text: 'This is ' },
172
+ * // { text: 'bold', attributes: { bold: true } },
173
+ * // { text: ' and ' },
174
+ * // { text: 'italic', attributes: { italic: true } },
175
+ * // { text: ' text' }
176
+ * // ]
177
+ *
178
+ * const linkSegments = parseMarkdownToSegments('Visit [Google](https://google.com)');
179
+ * // Returns:
180
+ * // [
181
+ * // { text: 'Visit ' },
182
+ * // { text: 'Google', attributes: { link: 'https://google.com' } }
183
+ * // ]
184
+ * ```
185
+ */
186
+ export declare function parseMarkdownToSegments(markdown: string): FormattedSegment[];
187
+ /**
188
+ * Parses markdown content into a document structure with block-level elements.
189
+ *
190
+ * This function converts markdown text into an array of document blocks, where each block
191
+ * represents a block-level element (paragraph, blockquote, horizontal rule, etc.).
192
+ * This structure is suitable for creating proper Yjs XmlElement hierarchies that match
193
+ * Sunsama's rich text editor format.
194
+ *
195
+ * @param markdown - The markdown content to parse
196
+ * @returns Array of document blocks representing the document structure
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * const blocks = parseMarkdownToBlocks('Hello **world**\n\n> A quote\n\n---');
201
+ * // Returns:
202
+ * // [
203
+ * // { type: 'paragraph', segments: [{ text: 'Hello ' }, { text: 'world', attributes: { bold: true } }] },
204
+ * // { type: 'blockquote', children: [{ type: 'paragraph', segments: [{ text: 'A quote' }] }] },
205
+ * // { type: 'horizontalRule' }
206
+ * // ]
207
+ * ```
208
+ */
209
+ export declare function parseMarkdownToBlocks(markdown: string): DocumentBlock[];
108
210
  //# sourceMappingURL=conversion.d.ts.map