@contember/react-client 1.3.0-alpha.6 → 1.3.0-alpha.8
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.
- package/dist/development/index.cjs +9 -5
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +1 -4
- package/dist/development/index.js.map +1 -1
- package/dist/development/upload/useFileUpload.cjs.map +1 -1
- package/dist/development/upload/useFileUpload.js.map +1 -1
- package/dist/development/useGraphQlClient.cjs.map +1 -1
- package/dist/development/useGraphQlClient.js.map +1 -1
- package/dist/production/index.cjs +9 -5
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +1 -4
- package/dist/production/index.js.map +1 -1
- package/dist/production/upload/useFileUpload.cjs.map +1 -1
- package/dist/production/upload/useFileUpload.js.map +1 -1
- package/dist/production/useGraphQlClient.cjs.map +1 -1
- package/dist/production/useGraphQlClient.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/src/index.ts +1 -1
- package/src/tsconfig.json +1 -0
- package/dist/development/components/RichTextRenderer/ElementRenderer.cjs +0 -27
- package/dist/development/components/RichTextRenderer/ElementRenderer.cjs.map +0 -1
- package/dist/development/components/RichTextRenderer/ElementRenderer.js +0 -27
- package/dist/development/components/RichTextRenderer/ElementRenderer.js.map +0 -1
- package/dist/development/components/RichTextRenderer/LeafRenderer.cjs +0 -28
- package/dist/development/components/RichTextRenderer/LeafRenderer.cjs.map +0 -1
- package/dist/development/components/RichTextRenderer/LeafRenderer.js +0 -28
- package/dist/development/components/RichTextRenderer/LeafRenderer.js.map +0 -1
- package/dist/development/components/RichTextRenderer/RenderElementFallback.cjs +0 -155
- package/dist/development/components/RichTextRenderer/RenderElementFallback.cjs.map +0 -1
- package/dist/development/components/RichTextRenderer/RenderElementFallback.js +0 -155
- package/dist/development/components/RichTextRenderer/RenderElementFallback.js.map +0 -1
- package/dist/development/components/RichTextRenderer/RenderLeafFallback.cjs +0 -74
- package/dist/development/components/RichTextRenderer/RenderLeafFallback.cjs.map +0 -1
- package/dist/development/components/RichTextRenderer/RenderLeafFallback.js +0 -74
- package/dist/development/components/RichTextRenderer/RenderLeafFallback.js.map +0 -1
- package/dist/development/components/RichTextRenderer/RichTextRenderMetadataContext.cjs +0 -15
- package/dist/development/components/RichTextRenderer/RichTextRenderMetadataContext.cjs.map +0 -1
- package/dist/development/components/RichTextRenderer/RichTextRenderMetadataContext.js +0 -15
- package/dist/development/components/RichTextRenderer/RichTextRenderMetadataContext.js.map +0 -1
- package/dist/development/components/RichTextRenderer/RichTextRenderer.cjs +0 -124
- package/dist/development/components/RichTextRenderer/RichTextRenderer.cjs.map +0 -1
- package/dist/development/components/RichTextRenderer/RichTextRenderer.js +0 -124
- package/dist/development/components/RichTextRenderer/RichTextRenderer.js.map +0 -1
- package/dist/development/components/RichTextRenderer/RichTextRendererError.cjs +0 -6
- package/dist/development/components/RichTextRenderer/RichTextRendererError.cjs.map +0 -1
- package/dist/development/components/RichTextRenderer/RichTextRendererError.js +0 -6
- package/dist/development/components/RichTextRenderer/RichTextRendererError.js.map +0 -1
- package/dist/development/components/RichTextRenderer/defaultDeserialize.cjs +0 -14
- package/dist/development/components/RichTextRenderer/defaultDeserialize.cjs.map +0 -1
- package/dist/development/components/RichTextRenderer/defaultDeserialize.js +0 -14
- package/dist/development/components/RichTextRenderer/defaultDeserialize.js.map +0 -1
- package/dist/development/components/RichTextRenderer/renderChildren.cjs +0 -33
- package/dist/development/components/RichTextRenderer/renderChildren.cjs.map +0 -1
- package/dist/development/components/RichTextRenderer/renderChildren.js +0 -33
- package/dist/development/components/RichTextRenderer/renderChildren.js.map +0 -1
- package/dist/development/components/RichTextRenderer/resolveRichTextElementMetadata.cjs +0 -29
- package/dist/development/components/RichTextRenderer/resolveRichTextElementMetadata.cjs.map +0 -1
- package/dist/development/components/RichTextRenderer/resolveRichTextElementMetadata.js +0 -29
- package/dist/development/components/RichTextRenderer/resolveRichTextElementMetadata.js.map +0 -1
- package/dist/production/components/RichTextRenderer/ElementRenderer.cjs +0 -23
- package/dist/production/components/RichTextRenderer/ElementRenderer.cjs.map +0 -1
- package/dist/production/components/RichTextRenderer/ElementRenderer.js +0 -23
- package/dist/production/components/RichTextRenderer/ElementRenderer.js.map +0 -1
- package/dist/production/components/RichTextRenderer/LeafRenderer.cjs +0 -24
- package/dist/production/components/RichTextRenderer/LeafRenderer.cjs.map +0 -1
- package/dist/production/components/RichTextRenderer/LeafRenderer.js +0 -24
- package/dist/production/components/RichTextRenderer/LeafRenderer.js.map +0 -1
- package/dist/production/components/RichTextRenderer/RenderElementFallback.cjs +0 -82
- package/dist/production/components/RichTextRenderer/RenderElementFallback.cjs.map +0 -1
- package/dist/production/components/RichTextRenderer/RenderElementFallback.js +0 -82
- package/dist/production/components/RichTextRenderer/RenderElementFallback.js.map +0 -1
- package/dist/production/components/RichTextRenderer/RenderLeafFallback.cjs +0 -38
- package/dist/production/components/RichTextRenderer/RenderLeafFallback.cjs.map +0 -1
- package/dist/production/components/RichTextRenderer/RenderLeafFallback.js +0 -38
- package/dist/production/components/RichTextRenderer/RenderLeafFallback.js.map +0 -1
- package/dist/production/components/RichTextRenderer/RichTextRenderMetadataContext.cjs +0 -15
- package/dist/production/components/RichTextRenderer/RichTextRenderMetadataContext.cjs.map +0 -1
- package/dist/production/components/RichTextRenderer/RichTextRenderMetadataContext.js +0 -15
- package/dist/production/components/RichTextRenderer/RichTextRenderMetadataContext.js.map +0 -1
- package/dist/production/components/RichTextRenderer/RichTextRenderer.cjs +0 -109
- package/dist/production/components/RichTextRenderer/RichTextRenderer.cjs.map +0 -1
- package/dist/production/components/RichTextRenderer/RichTextRenderer.js +0 -109
- package/dist/production/components/RichTextRenderer/RichTextRenderer.js.map +0 -1
- package/dist/production/components/RichTextRenderer/RichTextRendererError.cjs +0 -6
- package/dist/production/components/RichTextRenderer/RichTextRendererError.cjs.map +0 -1
- package/dist/production/components/RichTextRenderer/RichTextRendererError.js +0 -6
- package/dist/production/components/RichTextRenderer/RichTextRendererError.js.map +0 -1
- package/dist/production/components/RichTextRenderer/defaultDeserialize.cjs +0 -14
- package/dist/production/components/RichTextRenderer/defaultDeserialize.cjs.map +0 -1
- package/dist/production/components/RichTextRenderer/defaultDeserialize.js +0 -14
- package/dist/production/components/RichTextRenderer/defaultDeserialize.js.map +0 -1
- package/dist/production/components/RichTextRenderer/renderChildren.cjs +0 -21
- package/dist/production/components/RichTextRenderer/renderChildren.cjs.map +0 -1
- package/dist/production/components/RichTextRenderer/renderChildren.js +0 -21
- package/dist/production/components/RichTextRenderer/renderChildren.js.map +0 -1
- package/dist/production/components/RichTextRenderer/resolveRichTextElementMetadata.cjs +0 -29
- package/dist/production/components/RichTextRenderer/resolveRichTextElementMetadata.cjs.map +0 -1
- package/dist/production/components/RichTextRenderer/resolveRichTextElementMetadata.js +0 -29
- package/dist/production/components/RichTextRenderer/resolveRichTextElementMetadata.js.map +0 -1
- package/dist/types/components/RichTextRenderer/BuiltinElements.d.ts +0 -49
- package/dist/types/components/RichTextRenderer/BuiltinElements.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/BuiltinLeaves.d.ts +0 -21
- package/dist/types/components/RichTextRenderer/BuiltinLeaves.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/ElementRenderer.d.ts +0 -22
- package/dist/types/components/RichTextRenderer/ElementRenderer.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/LeafRenderer.d.ts +0 -14
- package/dist/types/components/RichTextRenderer/LeafRenderer.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/NormalizedRichTextBlock.d.ts +0 -14
- package/dist/types/components/RichTextRenderer/NormalizedRichTextBlock.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/ReferenceRenderer.d.ts +0 -14
- package/dist/types/components/RichTextRenderer/ReferenceRenderer.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RenderElementFallback.d.ts +0 -12
- package/dist/types/components/RichTextRenderer/RenderElementFallback.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RenderLeafFallback.d.ts +0 -6
- package/dist/types/components/RichTextRenderer/RenderLeafFallback.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RichTextBlock.d.ts +0 -2
- package/dist/types/components/RichTextRenderer/RichTextBlock.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RichTextElement.d.ts +0 -7
- package/dist/types/components/RichTextRenderer/RichTextElement.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RichTextElementMetadata.d.ts +0 -11
- package/dist/types/components/RichTextRenderer/RichTextElementMetadata.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RichTextLeaf.d.ts +0 -4
- package/dist/types/components/RichTextRenderer/RichTextLeaf.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RichTextLeafMetadata.d.ts +0 -4
- package/dist/types/components/RichTextRenderer/RichTextLeafMetadata.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RichTextReference.d.ts +0 -4
- package/dist/types/components/RichTextRenderer/RichTextReference.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RichTextRenderMetadata.d.ts +0 -12
- package/dist/types/components/RichTextRenderer/RichTextRenderMetadata.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RichTextRenderMetadataContext.d.ts +0 -7
- package/dist/types/components/RichTextRenderer/RichTextRenderMetadataContext.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RichTextRenderer.d.ts +0 -33
- package/dist/types/components/RichTextRenderer/RichTextRenderer.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RichTextRendererError.d.ts +0 -3
- package/dist/types/components/RichTextRenderer/RichTextRendererError.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/RootEditorNode.d.ts +0 -9
- package/dist/types/components/RichTextRenderer/RootEditorNode.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/defaultDeserialize.d.ts +0 -5
- package/dist/types/components/RichTextRenderer/defaultDeserialize.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/index.d.ts +0 -16
- package/dist/types/components/RichTextRenderer/index.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/renderChildren.d.ts +0 -14
- package/dist/types/components/RichTextRenderer/renderChildren.d.ts.map +0 -1
- package/dist/types/components/RichTextRenderer/resolveRichTextElementMetadata.d.ts +0 -8
- package/dist/types/components/RichTextRenderer/resolveRichTextElementMetadata.d.ts.map +0 -1
- package/dist/types/components/index.d.ts +0 -2
- package/dist/types/components/index.d.ts.map +0 -1
- package/src/components/RichTextRenderer/BuiltinElements.ts +0 -112
- package/src/components/RichTextRenderer/BuiltinLeaves.ts +0 -32
- package/src/components/RichTextRenderer/ElementRenderer.tsx +0 -71
- package/src/components/RichTextRenderer/LeafRenderer.tsx +0 -39
- package/src/components/RichTextRenderer/NormalizedRichTextBlock.ts +0 -17
- package/src/components/RichTextRenderer/ReferenceRenderer.ts +0 -26
- package/src/components/RichTextRenderer/RenderElementFallback.tsx +0 -147
- package/src/components/RichTextRenderer/RenderLeafFallback.tsx +0 -43
- package/src/components/RichTextRenderer/RichTextBlock.ts +0 -1
- package/src/components/RichTextRenderer/RichTextElement.ts +0 -10
- package/src/components/RichTextRenderer/RichTextElementMetadata.ts +0 -15
- package/src/components/RichTextRenderer/RichTextLeaf.ts +0 -3
- package/src/components/RichTextRenderer/RichTextLeafMetadata.ts +0 -3
- package/src/components/RichTextRenderer/RichTextReference.ts +0 -3
- package/src/components/RichTextRenderer/RichTextRenderMetadata.ts +0 -16
- package/src/components/RichTextRenderer/RichTextRenderMetadataContext.ts +0 -20
- package/src/components/RichTextRenderer/RichTextRenderer.tsx +0 -168
- package/src/components/RichTextRenderer/RichTextRendererError.ts +0 -1
- package/src/components/RichTextRenderer/RootEditorNode.ts +0 -12
- package/src/components/RichTextRenderer/defaultDeserialize.ts +0 -19
- package/src/components/RichTextRenderer/index.ts +0 -15
- package/src/components/RichTextRenderer/renderChildren.tsx +0 -50
- package/src/components/RichTextRenderer/resolveRichTextElementMetadata.ts +0 -50
- package/src/components/index.ts +0 -1
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { createContext, useContext } from 'react'
|
|
2
|
-
import type { RichTextElement } from './RichTextElement'
|
|
3
|
-
import type { RichTextLeaf } from './RichTextLeaf'
|
|
4
|
-
import type { RichTextReference } from './RichTextReference'
|
|
5
|
-
import type { RichTextRenderMetadata } from './RichTextRenderMetadata'
|
|
6
|
-
|
|
7
|
-
export const RichTextRenderMetadataContext = createContext<RichTextRenderMetadata<any, any, any>>({
|
|
8
|
-
formatVersion: 0,
|
|
9
|
-
referencesField: undefined,
|
|
10
|
-
referenceDiscriminationField: undefined,
|
|
11
|
-
referenceRenderers: {},
|
|
12
|
-
references: undefined,
|
|
13
|
-
})
|
|
14
|
-
RichTextRenderMetadataContext.displayName = 'RichTextRenderMetadataContext'
|
|
15
|
-
|
|
16
|
-
export const useRichTextRenderMetadata = <
|
|
17
|
-
CustomElements extends RichTextElement = never,
|
|
18
|
-
CustomLeaves extends RichTextLeaf = never,
|
|
19
|
-
Reference extends RichTextReference = RichTextReference,
|
|
20
|
-
>() => useContext(RichTextRenderMetadataContext) as RichTextRenderMetadata<CustomElements, CustomLeaves, Reference>
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { ComponentType, createElement, memo, ReactElement, ReactNode, useMemo } from 'react'
|
|
2
|
-
import { defaultDeserialize } from './defaultDeserialize'
|
|
3
|
-
import type { RenderElement } from './ElementRenderer'
|
|
4
|
-
import type { RenderLeaf } from './LeafRenderer'
|
|
5
|
-
import type { NormalizedRichTextBlock } from './NormalizedRichTextBlock'
|
|
6
|
-
import type { ReferenceRenderer } from './ReferenceRenderer'
|
|
7
|
-
import { renderChildren } from './renderChildren'
|
|
8
|
-
import type { RichTextBlock } from './RichTextBlock'
|
|
9
|
-
import type { RichTextElement } from './RichTextElement'
|
|
10
|
-
import type { RichTextLeaf } from './RichTextLeaf'
|
|
11
|
-
import type { RichTextReference } from './RichTextReference'
|
|
12
|
-
import { RichTextRendererError } from './RichTextRendererError'
|
|
13
|
-
import { RichTextRenderMetadataContext } from './RichTextRenderMetadataContext'
|
|
14
|
-
import type { RootEditorNode } from './RootEditorNode'
|
|
15
|
-
|
|
16
|
-
export interface RichTextRendererFieldProps {
|
|
17
|
-
source: string | null
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface RichTextRendererBlockProps<
|
|
21
|
-
CustomElements extends RichTextElement = never,
|
|
22
|
-
CustomLeaves extends RichTextLeaf = never,
|
|
23
|
-
> {
|
|
24
|
-
blocks: readonly RichTextBlock[]
|
|
25
|
-
referenceRenderers?: Record<string, ReferenceRenderer<any, CustomElements, CustomLeaves>>
|
|
26
|
-
sourceField?: string
|
|
27
|
-
referencesField?: string
|
|
28
|
-
referenceDiscriminationField?: string
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export type RichTextRendererProps<
|
|
32
|
-
CustomElements extends RichTextElement = never,
|
|
33
|
-
CustomLeaves extends RichTextLeaf = never,
|
|
34
|
-
> = {
|
|
35
|
-
deserialize?: (source: string) => RootEditorNode<CustomElements, CustomLeaves>
|
|
36
|
-
renderElement?: RenderElement<CustomElements, CustomLeaves>
|
|
37
|
-
renderLeaf?: RenderLeaf<CustomLeaves>
|
|
38
|
-
attributeNamePrefix?: string
|
|
39
|
-
renderBlock?: ComponentType<{ block: unknown, children?: ReactNode }>
|
|
40
|
-
} & (RichTextRendererFieldProps | RichTextRendererBlockProps<CustomElements, CustomLeaves>)
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* @group Content rendering
|
|
44
|
-
*/
|
|
45
|
-
export const RichTextRenderer = memo(function RichTextRenderer<
|
|
46
|
-
CustomElements extends RichTextElement = never,
|
|
47
|
-
CustomLeaves extends RichTextLeaf = never,
|
|
48
|
-
>({
|
|
49
|
-
deserialize = defaultDeserialize,
|
|
50
|
-
renderElement,
|
|
51
|
-
renderLeaf,
|
|
52
|
-
renderBlock = ({ children }) => <>{children}</>,
|
|
53
|
-
attributeNamePrefix,
|
|
54
|
-
...sourceProps
|
|
55
|
-
}: RichTextRendererProps<CustomElements, CustomLeaves>) {
|
|
56
|
-
const normalizedSource = useMemo<NormalizedRichTextBlock<CustomElements, CustomLeaves>[]>(() => {
|
|
57
|
-
if ('source' in sourceProps && !('blocks' in sourceProps)) {
|
|
58
|
-
return [
|
|
59
|
-
{
|
|
60
|
-
content: sourceProps.source
|
|
61
|
-
? deserialize(sourceProps.source)
|
|
62
|
-
: {
|
|
63
|
-
formatVersion: 0,
|
|
64
|
-
children: [],
|
|
65
|
-
},
|
|
66
|
-
id: undefined,
|
|
67
|
-
referencesField: undefined,
|
|
68
|
-
referenceDiscriminationField: undefined,
|
|
69
|
-
referenceRenderers: {},
|
|
70
|
-
references: undefined,
|
|
71
|
-
},
|
|
72
|
-
]
|
|
73
|
-
}
|
|
74
|
-
if (!('source' in sourceProps)) {
|
|
75
|
-
const sourceField = sourceProps.sourceField ?? 'source'
|
|
76
|
-
const referencesField = sourceProps.referencesField ?? 'references'
|
|
77
|
-
const referenceDiscriminationField = sourceProps.referenceDiscriminationField ?? 'type'
|
|
78
|
-
|
|
79
|
-
return sourceProps.blocks.map(block => {
|
|
80
|
-
if (!(sourceField in block)) {
|
|
81
|
-
throw new RichTextRendererError(
|
|
82
|
-
`Found a block without a '${sourceField}' field. ` +
|
|
83
|
-
(sourceProps.sourceField === undefined
|
|
84
|
-
? `The 'sourceField' prop has not been supplied, and so '${sourceField}' was used as a default.`
|
|
85
|
-
: `That is what the 'sourceField' prop has been set to, and so either this is a typo, ` +
|
|
86
|
-
`or the data supplied is invalid.`),
|
|
87
|
-
)
|
|
88
|
-
}
|
|
89
|
-
const source = block[sourceField]
|
|
90
|
-
if (typeof source !== 'string') {
|
|
91
|
-
throw new RichTextRendererError(`Found a block whose source is not a string.`)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (sourceProps.referencesField !== undefined && !(referencesField in block)) {
|
|
95
|
-
throw new RichTextRendererError(
|
|
96
|
-
`The 'referencesField' prop is set to '${referencesField}' but a block without such field ` +
|
|
97
|
-
`has been encountered. Unless this is just a typo, ` +
|
|
98
|
-
`if you do not wish to use references, avoid supplying the 'referencesField' prop.`,
|
|
99
|
-
)
|
|
100
|
-
}
|
|
101
|
-
const references = block[referencesField]
|
|
102
|
-
|
|
103
|
-
let normalizedReferences: Map<string, RichTextReference> | undefined = undefined
|
|
104
|
-
if (references) {
|
|
105
|
-
if (typeof Object(references)[Symbol.iterator] !== 'function') {
|
|
106
|
-
throw new RichTextRendererError(`The set of references must be an iterable!`)
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
normalizedReferences = new Map()
|
|
110
|
-
for (const reference of references as Iterable<RichTextReference>) {
|
|
111
|
-
if (!('id' in reference)) {
|
|
112
|
-
throw new RichTextRendererError(`Found a reference without an id field.`)
|
|
113
|
-
}
|
|
114
|
-
if (!(referenceDiscriminationField in reference)) {
|
|
115
|
-
throw new RichTextRendererError(
|
|
116
|
-
`Found a reference without a '${referenceDiscriminationField}' field. ` +
|
|
117
|
-
(sourceProps.referenceDiscriminationField === undefined
|
|
118
|
-
? `The 'referenceDiscriminationField' prop has not been supplied, ` +
|
|
119
|
-
`and so '${referenceDiscriminationField}' was used as a default.`
|
|
120
|
-
: `That is what the 'referenceDiscriminationField' prop has been set to, ` +
|
|
121
|
-
`and so either this is a typo, or the data supplied is invalid.`),
|
|
122
|
-
)
|
|
123
|
-
}
|
|
124
|
-
normalizedReferences.set(reference.id, reference)
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return {
|
|
128
|
-
id: typeof block.id === 'string' ? block.id : undefined,
|
|
129
|
-
content: deserialize(source),
|
|
130
|
-
referenceDiscriminationField,
|
|
131
|
-
referenceRenderers: sourceProps.referenceRenderers ?? {},
|
|
132
|
-
referencesField,
|
|
133
|
-
references: normalizedReferences,
|
|
134
|
-
}
|
|
135
|
-
})
|
|
136
|
-
}
|
|
137
|
-
throw new RichTextRendererError(`RichTextRenderer: invalid data supplied.`)
|
|
138
|
-
}, [deserialize, sourceProps])
|
|
139
|
-
|
|
140
|
-
return (
|
|
141
|
-
<>
|
|
142
|
-
{normalizedSource.map((block, i) => (
|
|
143
|
-
<RichTextRenderMetadataContext.Provider
|
|
144
|
-
key={block.id ?? i}
|
|
145
|
-
value={{
|
|
146
|
-
formatVersion: block.content.formatVersion,
|
|
147
|
-
referenceRenderers: block.referenceRenderers,
|
|
148
|
-
referencesField: block.referencesField,
|
|
149
|
-
referenceDiscriminationField: block.referenceDiscriminationField,
|
|
150
|
-
references: block.references,
|
|
151
|
-
}}
|
|
152
|
-
>
|
|
153
|
-
{createElement(
|
|
154
|
-
renderBlock, {
|
|
155
|
-
block,
|
|
156
|
-
}, renderChildren(block.content.children, {
|
|
157
|
-
renderLeaf,
|
|
158
|
-
renderElement,
|
|
159
|
-
attributeNamePrefix,
|
|
160
|
-
}),
|
|
161
|
-
)}
|
|
162
|
-
</RichTextRenderMetadataContext.Provider>
|
|
163
|
-
))}
|
|
164
|
-
</>
|
|
165
|
-
)
|
|
166
|
-
}) as <CustomElements extends RichTextElement = never, CustomLeaves extends RichTextLeaf = never>(
|
|
167
|
-
props: RichTextRendererProps<CustomElements, CustomLeaves>,
|
|
168
|
-
) => ReactElement
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export class RichTextRendererError extends Error {}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { BuiltinElements } from './BuiltinElements'
|
|
2
|
-
import type { BuiltinLeaves } from './BuiltinLeaves'
|
|
3
|
-
import type { RichTextElement } from './RichTextElement'
|
|
4
|
-
import type { RichTextLeaf } from './RichTextLeaf'
|
|
5
|
-
|
|
6
|
-
export interface RootEditorNode<
|
|
7
|
-
CustomElements extends RichTextElement = never,
|
|
8
|
-
CustomLeaves extends RichTextLeaf = never,
|
|
9
|
-
> {
|
|
10
|
-
formatVersion: number
|
|
11
|
-
children: Array<BuiltinElements<CustomElements, CustomLeaves> | CustomElements | BuiltinLeaves | CustomLeaves>
|
|
12
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { RichTextElement } from './RichTextElement'
|
|
2
|
-
import type { RichTextLeaf } from './RichTextLeaf'
|
|
3
|
-
import type { RootEditorNode } from './RootEditorNode'
|
|
4
|
-
|
|
5
|
-
export const defaultDeserialize = <
|
|
6
|
-
CustomElements extends RichTextElement = never,
|
|
7
|
-
CustomLeaves extends RichTextLeaf = never,
|
|
8
|
-
>(
|
|
9
|
-
source: string,
|
|
10
|
-
): RootEditorNode<CustomElements, CustomLeaves> => {
|
|
11
|
-
try {
|
|
12
|
-
return JSON.parse(source)
|
|
13
|
-
} catch (e) {
|
|
14
|
-
return {
|
|
15
|
-
formatVersion: 0,
|
|
16
|
-
children: [],
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export * from './BuiltinElements'
|
|
2
|
-
export * from './BuiltinLeaves'
|
|
3
|
-
export * from './ReferenceRenderer'
|
|
4
|
-
export * from './RichTextBlock'
|
|
5
|
-
export * from './RichTextElement'
|
|
6
|
-
export * from './RichTextElementMetadata'
|
|
7
|
-
export * from './RichTextLeaf'
|
|
8
|
-
export * from './RichTextLeafMetadata'
|
|
9
|
-
export * from './RichTextReference'
|
|
10
|
-
export * from './RichTextRenderer'
|
|
11
|
-
export * from './RichTextRendererError'
|
|
12
|
-
export * from './RootEditorNode'
|
|
13
|
-
export type { RenderChildrenOptions } from './renderChildren'
|
|
14
|
-
export type { RenderElement } from './ElementRenderer'
|
|
15
|
-
export type { RenderLeaf } from './LeafRenderer'
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { ReactElement } from 'react'
|
|
2
|
-
import type { BuiltinElements } from './BuiltinElements'
|
|
3
|
-
import type { BuiltinLeaves } from './BuiltinLeaves'
|
|
4
|
-
import { ElementRenderer, RenderElement } from './ElementRenderer'
|
|
5
|
-
import { LeafRenderer, RenderLeaf } from './LeafRenderer'
|
|
6
|
-
import type { RichTextElement } from './RichTextElement'
|
|
7
|
-
import type { RichTextLeaf } from './RichTextLeaf'
|
|
8
|
-
|
|
9
|
-
export interface RenderChildrenOptions<
|
|
10
|
-
CustomElements extends RichTextElement = never,
|
|
11
|
-
CustomLeaves extends RichTextLeaf = never,
|
|
12
|
-
> {
|
|
13
|
-
renderElement?: RenderElement<CustomElements, CustomLeaves>
|
|
14
|
-
renderLeaf?: RenderLeaf<CustomLeaves>
|
|
15
|
-
attributeNamePrefix?: string
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const renderChildren = <
|
|
19
|
-
CustomElements extends RichTextElement = never,
|
|
20
|
-
CustomLeaves extends RichTextLeaf = never,
|
|
21
|
-
>(
|
|
22
|
-
children:
|
|
23
|
-
| CustomElements
|
|
24
|
-
| BuiltinElements<CustomElements, CustomLeaves>
|
|
25
|
-
| CustomLeaves
|
|
26
|
-
| BuiltinLeaves
|
|
27
|
-
| Array<CustomElements | BuiltinElements<CustomElements, CustomLeaves> | CustomLeaves | BuiltinLeaves>,
|
|
28
|
-
options: RenderChildrenOptions<CustomElements, CustomLeaves>,
|
|
29
|
-
): ReactElement => {
|
|
30
|
-
if (!Array.isArray(children)) {
|
|
31
|
-
children = [children]
|
|
32
|
-
}
|
|
33
|
-
return (
|
|
34
|
-
<>
|
|
35
|
-
{children.map((child, i) => {
|
|
36
|
-
if ('text' in child) {
|
|
37
|
-
return <LeafRenderer<CustomLeaves> key={i} leaf={child} renderLeaf={options.renderLeaf} />
|
|
38
|
-
}
|
|
39
|
-
if ('children' in child) {
|
|
40
|
-
return (
|
|
41
|
-
<ElementRenderer<CustomElements, CustomLeaves> key={i} element={child} options={options}>
|
|
42
|
-
{renderChildren<CustomElements, CustomLeaves>(child.children as typeof children, options)}
|
|
43
|
-
</ElementRenderer>
|
|
44
|
-
)
|
|
45
|
-
}
|
|
46
|
-
return null // Throw?
|
|
47
|
-
})}
|
|
48
|
-
</>
|
|
49
|
-
)
|
|
50
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { BuiltinElements } from './BuiltinElements'
|
|
2
|
-
import type { ReferenceRenderer } from './ReferenceRenderer'
|
|
3
|
-
import type { RichTextElement } from './RichTextElement'
|
|
4
|
-
import type { RichTextElementMetadata } from './RichTextElementMetadata'
|
|
5
|
-
import type { RichTextLeaf } from './RichTextLeaf'
|
|
6
|
-
import type { RichTextReference } from './RichTextReference'
|
|
7
|
-
import { RichTextRendererError } from './RichTextRendererError'
|
|
8
|
-
import type { RichTextRenderMetadata } from './RichTextRenderMetadata'
|
|
9
|
-
|
|
10
|
-
export const resolveRichTextElementMetadata = <
|
|
11
|
-
CustomElements extends RichTextElement = never,
|
|
12
|
-
CustomLeaves extends RichTextLeaf = never,
|
|
13
|
-
Reference extends RichTextReference = RichTextReference,
|
|
14
|
-
>(
|
|
15
|
-
element: CustomElements | BuiltinElements<CustomElements, CustomLeaves>,
|
|
16
|
-
metadata: RichTextRenderMetadata<CustomElements, CustomLeaves, Reference>,
|
|
17
|
-
): RichTextElementMetadata<CustomElements, CustomLeaves, Reference> => {
|
|
18
|
-
let reference: Reference | undefined = undefined
|
|
19
|
-
|
|
20
|
-
if ('referenceId' in element && typeof element['referenceId'] === 'string') {
|
|
21
|
-
const resolved = metadata.references?.get(element['referenceId'])
|
|
22
|
-
|
|
23
|
-
if (resolved === undefined) {
|
|
24
|
-
throw new RichTextRendererError(
|
|
25
|
-
`Cannot find reference id '${element['referenceId']}'` +
|
|
26
|
-
(metadata.references === undefined
|
|
27
|
-
? ` because its containing block's lacks the '${metadata.referencesField}' field. `
|
|
28
|
-
: `.`),
|
|
29
|
-
)
|
|
30
|
-
}
|
|
31
|
-
reference = resolved as Reference
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
let referenceRenderer: ReferenceRenderer<Reference, CustomElements, CustomLeaves> | undefined = undefined
|
|
35
|
-
let referenceType: string | undefined = undefined
|
|
36
|
-
|
|
37
|
-
if (reference && metadata.referenceDiscriminationField) {
|
|
38
|
-
referenceType = (reference as Reference & Record<typeof metadata.referenceDiscriminationField, string>)[
|
|
39
|
-
metadata.referenceDiscriminationField
|
|
40
|
-
]
|
|
41
|
-
referenceRenderer = metadata.referenceRenderers[referenceType]
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return {
|
|
45
|
-
formatVersion: metadata.formatVersion,
|
|
46
|
-
reference,
|
|
47
|
-
referenceType,
|
|
48
|
-
referenceRenderer,
|
|
49
|
-
}
|
|
50
|
-
}
|
package/src/components/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './RichTextRenderer'
|