@portabletext/markdown 1.0.0

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.
@@ -0,0 +1,599 @@
1
+ import { PortableTextBlock, PortableTextObject, Schema } from "@portabletext/schema";
2
+ /**
3
+ * Any object with an `_type` that is a string. Can hold any other properties.
4
+ * @public
5
+ */
6
+ declare type ArbitraryTypedObject = TypedObject & {
7
+ [key: string]: any;
8
+ };
9
+ /**
10
+ * A Portable Text Block can be thought of as one paragraph, quote or list item.
11
+ * In other words, it is a container for text, that can have a visual style associated with it.
12
+ * The actual text value is stored in portable text spans inside of the `childen` array.
13
+ *
14
+ * @typeParam M - Mark types that be used for text spans
15
+ * @typeParam C - Types allowed as children of this block
16
+ * @typeParam S - Allowed block styles (eg `normal`, `blockquote`, `h3` etc)
17
+ * @typeParam L - Allowed list item types (eg `number`, `bullet` etc)
18
+ * @public
19
+ */
20
+ declare interface PortableTextBlock$1<M extends PortableTextMarkDefinition = PortableTextMarkDefinition, C extends TypedObject = ArbitraryTypedObject | PortableTextSpan, S extends string = PortableTextBlockStyle, L extends string = PortableTextListItemType> extends TypedObject {
21
+ /**
22
+ * Type name identifying this as a portable text block.
23
+ * All items within a portable text array should have a `_type` property.
24
+ *
25
+ * Usually 'block', but can be customized to other values
26
+ */
27
+ _type: "block" | string;
28
+ /**
29
+ * A key that identifies this block uniquely within the parent array. Used to more easily address
30
+ * the block when editing collaboratively, but is also very useful for keys inside of React and
31
+ * other rendering frameworks that can use keys to optimize operations.
32
+ */
33
+ _key?: string;
34
+ /**
35
+ * Array of inline items for this block. Usually contain text spans, but can be
36
+ * configured to include inline objects of other types as well.
37
+ */
38
+ children: C[];
39
+ /**
40
+ * Array of mark definitions used in child text spans. By having them be on the block level,
41
+ * the same mark definition can be reused for multiple text spans, which is often the case
42
+ * with nested marks.
43
+ */
44
+ markDefs?: M[];
45
+ /**
46
+ * Visual style of the block
47
+ * Common values: 'normal', 'blockquote', 'h1'...'h6'
48
+ */
49
+ style?: S;
50
+ /**
51
+ * If this block is a list item, identifies which style of list item this is
52
+ * Common values: 'bullet', 'number', but can be configured
53
+ */
54
+ listItem?: L;
55
+ /**
56
+ * If this block is a list item, identifies which level of nesting it belongs within
57
+ */
58
+ level?: number;
59
+ }
60
+ /**
61
+ * A set of _common_ (but not required/standarized) block styles
62
+ * @public
63
+ */
64
+ declare type PortableTextBlockStyle = "normal" | "blockquote" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | string;
65
+ /**
66
+ * Strictly speaking the same as a portable text block, but `listItem` is required
67
+ *
68
+ * @typeParam M - Mark types that be used for text spans
69
+ * @typeParam C - Types allowed as children of this block
70
+ * @typeParam S - Allowed block styles (eg `normal`, `blockquote`, `h3` etc)
71
+ * @typeParam L - Allowed list item types (eg `number`, `bullet` etc)
72
+ * @public
73
+ */
74
+ declare interface PortableTextListItemBlock<M extends PortableTextMarkDefinition = PortableTextMarkDefinition, C extends TypedObject = PortableTextSpan, S extends string = PortableTextBlockStyle, L extends string = PortableTextListItemType> extends Omit<PortableTextBlock$1<M, C, S, L>, "listItem"> {
75
+ listItem: L;
76
+ }
77
+ /**
78
+ * A set of _common_ (but not required/standardized) list item types
79
+ * @public
80
+ */
81
+ declare type PortableTextListItemType = "bullet" | "number" | string;
82
+ /**
83
+ * A mark definition holds information for marked text. For instance, a text span could reference
84
+ * a mark definition for a hyperlink, a geoposition, a reference to a document or anything that is
85
+ * representable as a JSON object.
86
+ * @public
87
+ */
88
+ declare interface PortableTextMarkDefinition {
89
+ /**
90
+ * Unknown properties
91
+ */
92
+ [key: string]: unknown;
93
+ /**
94
+ * Identifies the type of mark this is, and is used to pick the correct React components to use
95
+ * when rendering a text span marked with this mark type.
96
+ */
97
+ _type: string;
98
+ /**
99
+ * Uniquely identifies this mark definition within the block
100
+ */
101
+ _key: string;
102
+ }
103
+ /**
104
+ * A Portable Text Span holds a chunk of the actual text value of a Portable Text Block
105
+ * @public
106
+ */
107
+ declare interface PortableTextSpan {
108
+ /**
109
+ * Type is always `span` for portable text spans, as these don't vary in shape
110
+ */
111
+ _type: "span";
112
+ /**
113
+ * Unique (within parent block) key for this portable text span
114
+ */
115
+ _key?: string;
116
+ /**
117
+ * The actual text value of this text span
118
+ */
119
+ text: string;
120
+ /**
121
+ * An array of marks this text span is annotated with, identified by its `_key`.
122
+ * If the key cannot be found in the parent blocks mark definition, the mark is assumed to be a
123
+ * decorator (a simpler mark without any properties - for instance `strong` or `em`)
124
+ */
125
+ marks?: string[];
126
+ }
127
+ /**
128
+ * Any object with an `_type` property (which is required in portable text arrays),
129
+ * as well as a _potential_ `_key` (highly encouraged)
130
+ * @public
131
+ */
132
+ declare interface TypedObject {
133
+ /**
134
+ * Identifies the type of object/span this is, and is used to pick the correct React components
135
+ * to use when rendering a span or inline object with this type.
136
+ */
137
+ _type: string;
138
+ /**
139
+ * Uniquely identifies this object within its parent block.
140
+ * Not _required_, but highly encouraged.
141
+ */
142
+ _key?: string;
143
+ }
144
+ /**
145
+ * @public
146
+ */
147
+ type BlockSpacingRenderer = (options: {
148
+ current: TypedObject;
149
+ next: TypedObject;
150
+ }) => string | undefined;
151
+ /**
152
+ * @public
153
+ */
154
+ declare const DefaultBlockSpacingRenderer: BlockSpacingRenderer;
155
+ /**
156
+ * Generic type for portable text renderers that takes blocks/inline blocks
157
+ *
158
+ * @public
159
+ */
160
+ type PortableTextRenderer<N> = (options: PortableTextRendererOptions<N>) => string;
161
+ /**
162
+ * Renderer function type for rendering portable text blocks (paragraphs, headings, blockquotes etc)
163
+ *
164
+ * @public
165
+ */
166
+ type PortableTextBlockRenderer = PortableTextRenderer<PortableTextBlock$1>;
167
+ /**
168
+ * Renderer function type for rendering portable text list items
169
+ *
170
+ * @public
171
+ */
172
+ type PortableTextListItemRenderer = PortableTextRenderer<PortableTextListItemBlock>;
173
+ /**
174
+ * Renderer function type for rendering portable text marks and/or decorators
175
+ *
176
+ * @public
177
+ */
178
+ type PortableTextMarkRenderer<M extends TypedObject = any> = (options: PortableTextMarkRendererOptions<M>) => string;
179
+ /**
180
+ * @public
181
+ */
182
+ type PortableTextTypeRenderer<V extends TypedObject = any> = (options: PortableTextTypeRendererOptions<V>) => string;
183
+ /**
184
+ * Object defining the different renderer functions to use for rendering various aspects
185
+ * of Portable Text and user-provided types to Markdown.
186
+ *
187
+ * @public
188
+ */
189
+ interface PortableTextRenderers {
190
+ /**
191
+ * Object of renderer functions for different types of objects that might appear
192
+ * both as part of the blocks array, or as inline objects _inside_ of a block,
193
+ * alongside text spans.
194
+ *
195
+ * Use the `isInline` property to check whether or not this is an inline object or a block.
196
+ *
197
+ * The object has the shape `{typeName: RendererFn}`, where `typeName` is the value set
198
+ * in individual `_type` attributes.
199
+ */
200
+ types: Record<string, PortableTextTypeRenderer | undefined>;
201
+ /**
202
+ * Object of renderer functions for different types of marks that might appear in spans.
203
+ *
204
+ * The object has the shape `{markName: RendererFn}`, where `markName` is the value set
205
+ * in individual `_type` attributes, values being stored in the parent blocks `markDefs`.
206
+ */
207
+ marks: Record<string, PortableTextMarkRenderer | undefined>;
208
+ /**
209
+ * Object of renderer functions for blocks with different `style` properties.
210
+ *
211
+ * The object has the shape `{styleName: RendererFn}`, where `styleName` is the value set
212
+ * in individual `style` attributes on blocks.
213
+ *
214
+ * Can also be set to a single renderer function, which would handle block styles of _any_ type.
215
+ */
216
+ block: Record<PortableTextBlockStyle, PortableTextBlockRenderer | undefined> | PortableTextBlockRenderer;
217
+ /**
218
+ * Object of renderer functions used to render different list item styles.
219
+ *
220
+ * The object has the shape `{listItemType: RendererFn}`, where `listItemType` is the value
221
+ * set in individual `listItem` attributes on blocks.
222
+ *
223
+ * Can also be set to a single renderer function, which would handle list items of _any_ type.
224
+ */
225
+ listItem: Record<PortableTextListItemType, PortableTextListItemRenderer | undefined> | PortableTextListItemRenderer;
226
+ /**
227
+ * Renderer for "hard breaks", eg `\n` inside of text spans.
228
+ * By default renders as Markdown hard break (` \n` - two trailing spaces).
229
+ */
230
+ hardBreak: () => string;
231
+ /**
232
+ * Renderer function used when encountering a mark type there is no registered renderer for
233
+ * in the `marks` option.
234
+ */
235
+ unknownMark: PortableTextMarkRenderer;
236
+ /**
237
+ * Renderer function used when encountering an object type there is no registered renderer for
238
+ * in the `types` option.
239
+ */
240
+ unknownType: PortableTextRenderer<UnknownNodeType>;
241
+ /**
242
+ * Renderer function used when encountering a block style there is no registered renderer for
243
+ * in the `block` option. Only used if `block` is an object.
244
+ */
245
+ unknownBlockStyle: PortableTextRenderer<PortableTextBlock$1>;
246
+ /**
247
+ * Renderer function used when encountering a list item style there is no registered renderer for
248
+ * in the `listItem` option. Only used if `listItem` is an object.
249
+ */
250
+ unknownListItem: PortableTextRenderer<PortableTextListItemBlock>;
251
+ }
252
+ /**
253
+ * Options received by most Portable Text renderers
254
+ *
255
+ * @public
256
+ */
257
+ interface PortableTextRendererOptions<T> {
258
+ /**
259
+ * Data associated with this portable text node, eg the raw JSON value of a block/type
260
+ */
261
+ value: T;
262
+ /**
263
+ * Index within its parent
264
+ */
265
+ index: number;
266
+ /**
267
+ * Index of a list item
268
+ */
269
+ listIndex?: number | undefined;
270
+ /**
271
+ * Whether or not this node is "inline" - ie as a child of a text block,
272
+ * alongside text spans, or a block in and of itself.
273
+ */
274
+ isInline: boolean;
275
+ /**
276
+ * Serialized Markdown of child nodes of this block/type
277
+ */
278
+ children?: string;
279
+ /**
280
+ * Function used to render any node that might appear in a portable text array or block,
281
+ * including virtual "toolkit"-nodes like lists and nested spans. You will rarely need
282
+ * to use this.
283
+ */
284
+ renderNode: RenderNode;
285
+ }
286
+ /**
287
+ * Options received by any user-defined type renderer in the input array that is not a text block
288
+ *
289
+ * @public
290
+ */
291
+ type PortableTextTypeRendererOptions<T> = Omit<PortableTextRendererOptions<T>, 'children'>;
292
+ /**
293
+ * Options received by Portable Text mark renderers
294
+ *
295
+ * @public
296
+ */
297
+ interface PortableTextMarkRendererOptions<M extends TypedObject = ArbitraryTypedObject> {
298
+ /**
299
+ * Mark definition, eg the actual data of the annotation. If the mark is a simple decorator, this will be `undefined`
300
+ */
301
+ value?: M;
302
+ /**
303
+ * Text content of this mark
304
+ */
305
+ text: string;
306
+ /**
307
+ * Key for this mark. The same key can be used amongst multiple text spans within the same block, so don't rely on this to be unique.
308
+ */
309
+ markKey: string | undefined;
310
+ /**
311
+ * Type of mark - ie value of `_type` in the case of annotations, or the name of the decorator otherwise - eg `em`, `italic`.
312
+ */
313
+ markType: string;
314
+ /**
315
+ * Serialized Markdown of child nodes of this mark
316
+ */
317
+ children: string;
318
+ /**
319
+ * Function used to render any node that might appear in a portable text array or block,
320
+ * including virtual "toolkit"-nodes like lists and nested spans. You will rarely need
321
+ * to use this.
322
+ */
323
+ renderNode: RenderNode;
324
+ }
325
+ /**
326
+ * Any node type that we can't identify - eg it has an `_type`,
327
+ * but we don't know anything about its other properties
328
+ */
329
+ type UnknownNodeType = {
330
+ [key: string]: unknown;
331
+ _type: string;
332
+ } | TypedObject;
333
+ type RenderNode = <T extends TypedObject>(options: Serializable<T>) => string;
334
+ interface Serializable<T> {
335
+ node: T;
336
+ index: number;
337
+ isInline: boolean;
338
+ renderNode: RenderNode;
339
+ }
340
+ type Options$1 = Partial<PortableTextRenderers> & {
341
+ blockSpacing?: BlockSpacingRenderer;
342
+ };
343
+ /**
344
+ * @public
345
+ */
346
+ declare function portableTextToMarkdown<Block extends TypedObject = PortableTextBlock$1 | ArbitraryTypedObject>(blocks: Array<Block>, options?: Options$1): string;
347
+ /**
348
+ * @public
349
+ */
350
+ declare const DefaultHardBreakRenderer: () => string;
351
+ /**
352
+ * @public
353
+ */
354
+ declare const DefaultListItemRenderer: PortableTextListItemRenderer;
355
+ type PortableTextBlockRenderer$1 = PortableTextRenderer<PortableTextBlock$1>;
356
+ /**
357
+ * @public
358
+ */
359
+ declare const DefaultNormalRenderer: PortableTextBlockRenderer$1;
360
+ /**
361
+ * @public
362
+ */
363
+ declare const DefaultBlockquoteRenderer: PortableTextBlockRenderer$1;
364
+ /**
365
+ * @public
366
+ */
367
+ declare const DefaultH1Renderer: PortableTextBlockRenderer$1;
368
+ /**
369
+ * @public
370
+ */
371
+ declare const DefaultH2Renderer: PortableTextBlockRenderer$1;
372
+ /**
373
+ * @public
374
+ */
375
+ declare const DefaultH3Renderer: PortableTextBlockRenderer$1;
376
+ /**
377
+ * @public
378
+ */
379
+ declare const DefaultH4Renderer: PortableTextBlockRenderer$1;
380
+ /**
381
+ * @public
382
+ */
383
+ declare const DefaultH5Renderer: PortableTextBlockRenderer$1;
384
+ /**
385
+ * @public
386
+ */
387
+ declare const DefaultH6Renderer: PortableTextBlockRenderer$1;
388
+ /**
389
+ * @public
390
+ */
391
+ declare const DefaultEmRenderer: PortableTextMarkRenderer;
392
+ /**
393
+ * @public
394
+ */
395
+ declare const DefaultStrongRenderer: PortableTextMarkRenderer;
396
+ /**
397
+ * @public
398
+ */
399
+ declare const DefaultCodeRenderer: PortableTextMarkRenderer;
400
+ /**
401
+ * @public
402
+ */
403
+ declare const DefaultUnderlineRenderer: PortableTextMarkRenderer;
404
+ /**
405
+ * @public
406
+ */
407
+ declare const DefaultStrikeThroughRenderer: PortableTextMarkRenderer;
408
+ interface DefaultLink extends TypedObject {
409
+ _type: 'link';
410
+ href: string;
411
+ title: string | undefined;
412
+ }
413
+ /**
414
+ * @public
415
+ */
416
+ declare const DefaultLinkRenderer: PortableTextMarkRenderer<DefaultLink>;
417
+ /**
418
+ * @public
419
+ */
420
+ declare const DefaultCodeBlockRenderer: PortableTextTypeRenderer<{
421
+ _type: 'code';
422
+ code: string;
423
+ language: string | undefined;
424
+ }>;
425
+ /**
426
+ * @public
427
+ */
428
+ declare const DefaultHorizontalRuleRenderer: PortableTextTypeRenderer;
429
+ /**
430
+ * @public
431
+ */
432
+ declare const DefaultHtmlRenderer: PortableTextTypeRenderer<{
433
+ _type: 'html';
434
+ html: string;
435
+ }>;
436
+ /**
437
+ * @public
438
+ */
439
+ declare const DefaultImageRenderer: PortableTextTypeRenderer<{
440
+ _type: 'image';
441
+ src: string;
442
+ alt: string | undefined;
443
+ title: string | undefined;
444
+ }>;
445
+ /**
446
+ * @public
447
+ */
448
+ declare const DefaultTableRenderer: PortableTextTypeRenderer<{
449
+ _type: 'table';
450
+ headerRows: number | undefined;
451
+ rows: Array<{
452
+ _key: string;
453
+ cells: Array<{
454
+ _key: string;
455
+ value: Array<PortableTextBlock$1>;
456
+ }>;
457
+ }>;
458
+ }>;
459
+ /**
460
+ * Matcher function for mapping markdown elements to Portable Text block styles.
461
+ *
462
+ * @public
463
+ */
464
+ type StyleMatcher = ({
465
+ context
466
+ }: {
467
+ context: {
468
+ schema: Schema;
469
+ };
470
+ }) => string | undefined;
471
+ /**
472
+ * Matcher function for mapping markdown list items to Portable Text list types.
473
+ *
474
+ * @public
475
+ */
476
+ type ListItemMatcher = ({
477
+ context
478
+ }: {
479
+ context: {
480
+ schema: Schema;
481
+ };
482
+ }) => string | undefined;
483
+ /**
484
+ * Matcher function for mapping markdown inline formatting to Portable Text decorators.
485
+ *
486
+ * @public
487
+ */
488
+ type DecoratorMatcher = ({
489
+ context
490
+ }: {
491
+ context: {
492
+ schema: Schema;
493
+ };
494
+ }) => string | undefined;
495
+ /**
496
+ * Matcher function for mapping markdown links to Portable Text annotations.
497
+ *
498
+ * @public
499
+ */
500
+ type AnnotationMatcher<TValue extends Record<string, unknown> = Record<string, never>> = ({
501
+ context,
502
+ value
503
+ }: {
504
+ context: {
505
+ schema: Schema;
506
+ keyGenerator: () => string;
507
+ };
508
+ value: TValue;
509
+ }) => PortableTextObject | undefined;
510
+ /**
511
+ * Matcher function for mapping markdown objects to Portable Text block or inline objects.
512
+ *
513
+ * @public
514
+ */
515
+ type ObjectMatcher<TValue extends Record<string, unknown> = Record<string, never>> = ({
516
+ context,
517
+ value,
518
+ isInline
519
+ }: {
520
+ context: {
521
+ schema: Schema;
522
+ keyGenerator: () => string;
523
+ };
524
+ value: TValue;
525
+ isInline: boolean;
526
+ }) => PortableTextObject | undefined;
527
+ type Options = {
528
+ schema?: Schema;
529
+ keyGenerator?: () => string;
530
+ marks?: {
531
+ strong?: DecoratorMatcher;
532
+ em?: DecoratorMatcher;
533
+ code?: DecoratorMatcher;
534
+ strikeThrough?: DecoratorMatcher;
535
+ link?: AnnotationMatcher<{
536
+ href: string;
537
+ title: string | undefined;
538
+ }>;
539
+ };
540
+ block?: {
541
+ normal?: StyleMatcher;
542
+ blockquote?: StyleMatcher;
543
+ h1?: StyleMatcher;
544
+ h2?: StyleMatcher;
545
+ h3?: StyleMatcher;
546
+ h4?: StyleMatcher;
547
+ h5?: StyleMatcher;
548
+ h6?: StyleMatcher;
549
+ };
550
+ listItem?: {
551
+ number?: ListItemMatcher;
552
+ bullet?: ListItemMatcher;
553
+ };
554
+ types?: {
555
+ code?: ObjectMatcher<{
556
+ language: string | undefined;
557
+ code: string;
558
+ }>;
559
+ horizontalRule?: ObjectMatcher;
560
+ html?: ObjectMatcher<{
561
+ html: string;
562
+ }>;
563
+ table?: ObjectMatcher<{
564
+ headerRows: number | undefined;
565
+ rows: Array<{
566
+ _key: string;
567
+ _type: 'row';
568
+ cells: Array<{
569
+ _type: 'cell';
570
+ _key: string;
571
+ value: Array<PortableTextBlock>;
572
+ }>;
573
+ }>;
574
+ }>;
575
+ image?: ObjectMatcher<{
576
+ src: string;
577
+ alt: string;
578
+ title: string | undefined;
579
+ }>;
580
+ };
581
+ html?: {
582
+ /**
583
+ * How to handle inline HTML.
584
+ * - 'skip': Ignore inline HTML (default)
585
+ * - 'text': Convert inline HTML to plain text
586
+ *
587
+ * @defaultValue 'skip'
588
+ */
589
+ inline?: 'skip' | 'text';
590
+ };
591
+ };
592
+ /**
593
+ * Converts a markdown string to an array of Portable Text blocks.
594
+ *
595
+ * @public
596
+ */
597
+ declare function markdownToPortableText(markdown: string, options?: Options): Array<PortableTextBlock>;
598
+ export { type AnnotationMatcher, type BlockSpacingRenderer, type DecoratorMatcher, DefaultBlockSpacingRenderer, DefaultBlockquoteRenderer, DefaultCodeBlockRenderer, DefaultCodeRenderer, DefaultEmRenderer, DefaultH1Renderer, DefaultH2Renderer, DefaultH3Renderer, DefaultH4Renderer, DefaultH5Renderer, DefaultH6Renderer, DefaultHardBreakRenderer, DefaultHorizontalRuleRenderer, DefaultHtmlRenderer, DefaultImageRenderer, DefaultLinkRenderer, DefaultListItemRenderer, DefaultNormalRenderer, DefaultStrikeThroughRenderer, DefaultStrongRenderer, DefaultTableRenderer, DefaultUnderlineRenderer, type ListItemMatcher, type ObjectMatcher, type PortableTextBlockRenderer, type PortableTextListItemRenderer, type PortableTextMarkRenderer, type PortableTextMarkRendererOptions, type PortableTextRenderer, type PortableTextRendererOptions, type PortableTextRenderers, type PortableTextTypeRenderer, type PortableTextTypeRendererOptions, type StyleMatcher, markdownToPortableText, portableTextToMarkdown };
599
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":["ArbitraryTypedObject","TypedObject","PortableTextBlock","M","C","S","L","PortableTextMarkDefinition","PortableTextSpan","PortableTextBlockStyle","PortableTextListItemType","PortableTextLink","PortableTextListItemBlock","Omit"],"sources":["../../../node_modules/.pnpm/@portabletext+types@3.0.0/node_modules/@portabletext/types/dist/index.d.ts","../src/from-portable-text/renderers/block-spacing.ts","../src/from-portable-text/types.ts","../src/from-portable-text/portable-text-to-markdown.ts","../src/from-portable-text/renderers/hard-break.ts","../src/from-portable-text/renderers/list-item.ts","../src/from-portable-text/renderers/style.ts","../src/from-portable-text/renderers/marks.ts","../src/from-portable-text/renderers/type.ts","../src/to-portable-text/matchers.ts","../src/to-portable-text/markdown-to-portable-text.ts"],"sourcesContent":["/**\n * Any object with an `_type` that is a string. Can hold any other properties.\n * @public\n */\nexport declare type ArbitraryTypedObject = TypedObject & {\n [key: string]: any;\n};\n\n/**\n * A Portable Text Block can be thought of as one paragraph, quote or list item.\n * In other words, it is a container for text, that can have a visual style associated with it.\n * The actual text value is stored in portable text spans inside of the `childen` array.\n *\n * @typeParam M - Mark types that be used for text spans\n * @typeParam C - Types allowed as children of this block\n * @typeParam S - Allowed block styles (eg `normal`, `blockquote`, `h3` etc)\n * @typeParam L - Allowed list item types (eg `number`, `bullet` etc)\n * @public\n */\nexport declare interface PortableTextBlock<\n M extends PortableTextMarkDefinition = PortableTextMarkDefinition,\n C extends TypedObject = ArbitraryTypedObject | PortableTextSpan,\n S extends string = PortableTextBlockStyle,\n L extends string = PortableTextListItemType,\n> extends TypedObject {\n /**\n * Type name identifying this as a portable text block.\n * All items within a portable text array should have a `_type` property.\n *\n * Usually 'block', but can be customized to other values\n */\n _type: \"block\" | string;\n /**\n * A key that identifies this block uniquely within the parent array. Used to more easily address\n * the block when editing collaboratively, but is also very useful for keys inside of React and\n * other rendering frameworks that can use keys to optimize operations.\n */\n _key?: string;\n /**\n * Array of inline items for this block. Usually contain text spans, but can be\n * configured to include inline objects of other types as well.\n */\n children: C[];\n /**\n * Array of mark definitions used in child text spans. By having them be on the block level,\n * the same mark definition can be reused for multiple text spans, which is often the case\n * with nested marks.\n */\n markDefs?: M[];\n /**\n * Visual style of the block\n * Common values: 'normal', 'blockquote', 'h1'...'h6'\n */\n style?: S;\n /**\n * If this block is a list item, identifies which style of list item this is\n * Common values: 'bullet', 'number', but can be configured\n */\n listItem?: L;\n /**\n * If this block is a list item, identifies which level of nesting it belongs within\n */\n level?: number;\n}\n\n/**\n * A set of _common_ (but not required/standarized) block styles\n * @public\n */\nexport declare type PortableTextBlockStyle =\n | \"normal\"\n | \"blockquote\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | string;\n\n/**\n * The simplest representation of a link\n * @public\n */\nexport declare interface PortableTextLink {\n _type: \"link\";\n href: string;\n}\n\n/**\n * Strictly speaking the same as a portable text block, but `listItem` is required\n *\n * @typeParam M - Mark types that be used for text spans\n * @typeParam C - Types allowed as children of this block\n * @typeParam S - Allowed block styles (eg `normal`, `blockquote`, `h3` etc)\n * @typeParam L - Allowed list item types (eg `number`, `bullet` etc)\n * @public\n */\nexport declare interface PortableTextListItemBlock<\n M extends PortableTextMarkDefinition = PortableTextMarkDefinition,\n C extends TypedObject = PortableTextSpan,\n S extends string = PortableTextBlockStyle,\n L extends string = PortableTextListItemType,\n> extends Omit<PortableTextBlock<M, C, S, L>, \"listItem\"> {\n listItem: L;\n}\n\n/**\n * A set of _common_ (but not required/standardized) list item types\n * @public\n */\nexport declare type PortableTextListItemType = \"bullet\" | \"number\" | string;\n\n/**\n * A mark definition holds information for marked text. For instance, a text span could reference\n * a mark definition for a hyperlink, a geoposition, a reference to a document or anything that is\n * representable as a JSON object.\n * @public\n */\nexport declare interface PortableTextMarkDefinition {\n /**\n * Unknown properties\n */\n [key: string]: unknown;\n /**\n * Identifies the type of mark this is, and is used to pick the correct React components to use\n * when rendering a text span marked with this mark type.\n */\n _type: string;\n /**\n * Uniquely identifies this mark definition within the block\n */\n _key: string;\n}\n\n/**\n * A Portable Text Span holds a chunk of the actual text value of a Portable Text Block\n * @public\n */\nexport declare interface PortableTextSpan {\n /**\n * Type is always `span` for portable text spans, as these don't vary in shape\n */\n _type: \"span\";\n /**\n * Unique (within parent block) key for this portable text span\n */\n _key?: string;\n /**\n * The actual text value of this text span\n */\n text: string;\n /**\n * An array of marks this text span is annotated with, identified by its `_key`.\n * If the key cannot be found in the parent blocks mark definition, the mark is assumed to be a\n * decorator (a simpler mark without any properties - for instance `strong` or `em`)\n */\n marks?: string[];\n}\n\n/**\n * Any object with an `_type` property (which is required in portable text arrays),\n * as well as a _potential_ `_key` (highly encouraged)\n * @public\n */\nexport declare interface TypedObject {\n /**\n * Identifies the type of object/span this is, and is used to pick the correct React components\n * to use when rendering a span or inline object with this type.\n */\n _type: string;\n /**\n * Uniquely identifies this object within its parent block.\n * Not _required_, but highly encouraged.\n */\n _key?: string;\n}\n\nexport {};\n"],"x_google_ignoreList":[0],"mappings":"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xKH;EACA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EACA,KAAA,EAAA,MAAA;CACA,GRuKL,WQvKK;AACA,KRwKG,UAAA,GQxKH,CAAA,URwK2B,WQxK3B,CAAA,CAAA,OAAA,ERyKE,YQzKF,CRyKe,CQzKf,CAAA,EAAA,GAAA,MAAA;AACA,UR2KQ,YQ3KR,CAAA,CAAA,CAAA,CAAA;EAGI,IAAA,ERyKL,CQzKK;EACA,KAAA,EAAA,MAAA;EAGF,QAAA,EAAA,OAAA;EACU,UAAA,ERuKP,UQvKO;;AVpDrB,KGkDK,SAAA,GAAU,OHlDUC,CGkDF,qBHlDmBI,CAAAA,GAAA;EAC9BC,YAAAA,CAAAA,EGkDK,oBHlDLA;CAA6BA;;;;AAEpBE,iBGsDL,sBHtDKA,CAAAA,cGuDL,WHvDKA,GGuDS,mBHvDTA,GGuD6B,oBHvD7BA,CAAAA,CAAAA,MAAAA,EGwDX,KHxDWA,CGwDL,KHxDKA,CAAAA,EAAAA,OAAAA,CAAAA,EGwDY,SHxDZA,CAAAA,EAAAA,MAAAA;;;AAlBrB;AAeyBP,cIhBZ,wBJgB6BI,EAAAA,GAAA,GAAA,MAAA;;AAf1C;AAeA;AACYC,cKfC,uBLeDA,EKf0B,4BLe1BA;AAhBZ,KMDK,2BAAA,GAA4B,oBNCqB,CMDA,mBNCA,CAAA;AAetD;;;AAEYN,cMbC,qBNaDA,EMbwB,2BNaxBA;;;;AAESS,cMDR,yBNCQA,EMDmB,2BNCnBA;;;;AAmCRJ,cMpBA,iBNoBAA,EMpBmB,2BNoBnBA;;;AAWb;AA6ByBM,cMtDZ,iBNsDqC,EMtDlB,2BNsDkB;;;;AAExBJ,cMlDb,iBNkDaA,EMlDM,2BNkDNA;;;;AAGUJ,cM/CvB,iBN+CuBA,EM/CJ,2BN+CIA;;;;AACxBE,cM1CC,iBN0CDA,EM1CoB,2BN0CpBA;;;AAOZ;AAQyBC,cMnDZ,iBNmDsC,EMnDnB,2BNmDmB;AAnHnD;AAeA;;AACyCA,cOd5B,iBPc4BA,EOdT,wBPcSA;;;;AAEpBE,cOVR,qBPUQA,EOVe,wBPUfA;;;;AA+BXJ,cOnCG,mBPmCHA,EOnCwB,wBPmCxBA;;;;AAgBUI,cO7CP,wBP6C6B,EO7CH,wBP6CG;AA6B1C;;;A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"}