react-datocms 2.1.2 → 3.0.2
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/README.md +26 -14
- package/dist/cjs/Image/__tests__/index.test.js +1 -0
- package/dist/cjs/Image/__tests__/index.test.js.map +1 -1
- package/dist/cjs/Image/index.js +4 -6
- package/dist/cjs/Image/index.js.map +1 -1
- package/dist/cjs/StructuredText/__tests__/index.test.js +77 -67
- package/dist/cjs/StructuredText/__tests__/index.test.js.map +1 -1
- package/dist/cjs/StructuredText/index.js +76 -61
- package/dist/cjs/StructuredText/index.js.map +1 -1
- package/dist/esm/Image/__tests__/index.test.d.ts +1 -1
- package/dist/esm/Image/__tests__/index.test.js +1 -0
- package/dist/esm/Image/__tests__/index.test.js.map +1 -1
- package/dist/esm/Image/index.d.ts +0 -1
- package/dist/esm/Image/index.js +4 -6
- package/dist/esm/Image/index.js.map +1 -1
- package/dist/esm/StructuredText/__tests__/index.test.js +81 -71
- package/dist/esm/StructuredText/__tests__/index.test.js.map +1 -1
- package/dist/esm/StructuredText/index.d.ts +12 -7
- package/dist/esm/StructuredText/index.js +78 -63
- package/dist/esm/StructuredText/index.js.map +1 -1
- package/dist/types/Image/__tests__/index.test.d.ts +1 -1
- package/dist/types/Image/index.d.ts +0 -1
- package/dist/types/StructuredText/index.d.ts +12 -7
- package/package.json +7 -6
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
2
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
3
|
+
to[j] = from[i];
|
|
4
|
+
return to;
|
|
5
|
+
};
|
|
6
|
+
import { defaultMetaTransformer, render, renderNodeRule, renderMarkRule, } from 'datocms-structured-text-generic-html-renderer';
|
|
7
|
+
import { isBlock, isInlineItem, isItemLink, RenderError, isStructuredText, } from 'datocms-structured-text-utils';
|
|
8
|
+
import React, { cloneElement, isValidElement } from 'react';
|
|
9
|
+
export { renderNodeRule, renderMarkRule, RenderError };
|
|
10
|
+
// deprecated
|
|
11
|
+
export { renderNodeRule as renderRule };
|
|
5
12
|
export var defaultAdapter = {
|
|
6
13
|
renderNode: React.createElement,
|
|
7
14
|
renderFragment: function (children, key) { return React.createElement(React.Fragment, { key: key }, children); },
|
|
@@ -14,64 +21,72 @@ export function appendKeyToValidElement(element, key) {
|
|
|
14
21
|
return element;
|
|
15
22
|
}
|
|
16
23
|
export function StructuredText(_a) {
|
|
17
|
-
var data = _a.data, renderInlineRecord = _a.renderInlineRecord, renderLinkToRecord = _a.renderLinkToRecord, renderBlock = _a.renderBlock, renderText = _a.renderText, renderNode = _a.renderNode, renderFragment = _a.renderFragment, customRules = _a.customRules, metaTransformer = _a.metaTransformer;
|
|
18
|
-
var result = render({
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
24
|
+
var data = _a.data, renderInlineRecord = _a.renderInlineRecord, renderLinkToRecord = _a.renderLinkToRecord, renderBlock = _a.renderBlock, renderText = _a.renderText, renderNode = _a.renderNode, renderFragment = _a.renderFragment, customMarkRules = _a.customMarkRules, customRules = _a.customRules, customNodeRules = _a.customNodeRules, metaTransformer = _a.metaTransformer;
|
|
25
|
+
var result = render(data, {
|
|
26
|
+
adapter: {
|
|
27
|
+
renderText: renderText || defaultAdapter.renderText,
|
|
28
|
+
renderNode: renderNode || defaultAdapter.renderNode,
|
|
29
|
+
renderFragment: renderFragment || defaultAdapter.renderFragment
|
|
30
|
+
},
|
|
31
|
+
metaTransformer: metaTransformer,
|
|
32
|
+
customMarkRules: customMarkRules,
|
|
33
|
+
customNodeRules: __spreadArray([
|
|
34
|
+
renderNodeRule(isInlineItem, function (_a) {
|
|
35
|
+
var node = _a.node, key = _a.key;
|
|
36
|
+
if (!renderInlineRecord) {
|
|
37
|
+
throw new RenderError("The Structured Text document contains an 'inlineItem' node, but no 'renderInlineRecord' prop is specified!", node);
|
|
38
|
+
}
|
|
39
|
+
if (!isStructuredText(data) || !data.links) {
|
|
40
|
+
throw new RenderError("The document contains an 'itemLink' node, but the passed data prop is not a Structured Text GraphQL response, or data.links is not present!", node);
|
|
41
|
+
}
|
|
42
|
+
var item = data.links.find(function (item) { return item.id === node.item; });
|
|
43
|
+
if (!item) {
|
|
44
|
+
throw new RenderError("The Structured Text document contains an 'inlineItem' node, but cannot find a record with ID " + node.item + " inside data.links!", node);
|
|
45
|
+
}
|
|
46
|
+
return appendKeyToValidElement(renderInlineRecord({ record: item }), key);
|
|
47
|
+
}),
|
|
48
|
+
renderNodeRule(isItemLink, function (_a) {
|
|
49
|
+
var node = _a.node, key = _a.key, children = _a.children;
|
|
50
|
+
if (!renderLinkToRecord) {
|
|
51
|
+
throw new RenderError("The Structured Text document contains an 'itemLink' node, but no 'renderLinkToRecord' prop is specified!", node);
|
|
52
|
+
}
|
|
53
|
+
if (!isStructuredText(data) || !data.links) {
|
|
54
|
+
throw new RenderError("The document contains an 'itemLink' node, but the passed data prop is not a Structured Text GraphQL response, or data.links is not present!", node);
|
|
55
|
+
}
|
|
56
|
+
var item = data.links.find(function (item) { return item.id === node.item; });
|
|
57
|
+
if (!item) {
|
|
58
|
+
throw new RenderError("The Structured Text document contains an 'itemLink' node, but cannot find a record with ID " + node.item + " inside data.links!", node);
|
|
59
|
+
}
|
|
60
|
+
return appendKeyToValidElement(renderLinkToRecord({
|
|
61
|
+
record: item,
|
|
62
|
+
children: children,
|
|
63
|
+
transformedMeta: node.meta
|
|
64
|
+
? (metaTransformer || defaultMetaTransformer)({
|
|
65
|
+
node: node,
|
|
66
|
+
meta: node.meta
|
|
67
|
+
})
|
|
68
|
+
: null
|
|
69
|
+
}), key);
|
|
70
|
+
}),
|
|
71
|
+
renderNodeRule(isBlock, function (_a) {
|
|
72
|
+
var node = _a.node, key = _a.key;
|
|
73
|
+
if (!renderBlock) {
|
|
74
|
+
throw new RenderError("The Structured Text document contains a 'block' node, but no 'renderBlock' prop is specified!", node);
|
|
75
|
+
}
|
|
76
|
+
if (!isStructuredText(data) || !data.blocks) {
|
|
77
|
+
throw new RenderError("The document contains an 'block' node, but the passed data prop is not a Structured Text GraphQL response, or data.blocks is not present!", node);
|
|
78
|
+
}
|
|
79
|
+
var item = data.blocks.find(function (item) { return item.id === node.item; });
|
|
80
|
+
if (!item) {
|
|
81
|
+
throw new RenderError("The Structured Text document contains a 'block' node, but cannot find a record with ID " + node.item + " inside data.blocks!", node);
|
|
82
|
+
}
|
|
83
|
+
return appendKeyToValidElement(renderBlock({ record: item }), key);
|
|
84
|
+
})
|
|
85
|
+
], (customNodeRules || customRules || []))
|
|
86
|
+
});
|
|
87
|
+
if (typeof result === 'string') {
|
|
88
|
+
return React.createElement(React.Fragment, null, result);
|
|
89
|
+
}
|
|
90
|
+
return result || null;
|
|
76
91
|
}
|
|
77
92
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/StructuredText/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,MAAM,EACN,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/StructuredText/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import 'intersection-observer';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Record as StructuredTextGraphQlResponseRecord, Document as StructuredTextDocument, RenderError, RenderResult, RenderRule, Node, StructuredText as StructuredTextGraphQlResponse } from
|
|
3
|
-
import { ReactElement } from
|
|
4
|
-
export {
|
|
1
|
+
import { renderNodeRule, renderMarkRule, TransformedMeta, TransformMetaFn, RenderMarkRule } from 'datocms-structured-text-generic-html-renderer';
|
|
2
|
+
import { Record as StructuredTextGraphQlResponseRecord, Document as StructuredTextDocument, RenderError, RenderResult, RenderRule, Node, StructuredText as StructuredTextGraphQlResponse } from 'datocms-structured-text-utils';
|
|
3
|
+
import { ReactElement } from 'react';
|
|
4
|
+
export { renderNodeRule, renderMarkRule, RenderError };
|
|
5
|
+
export { renderNodeRule as renderRule };
|
|
5
6
|
export type { StructuredTextGraphQlResponse, StructuredTextDocument, StructuredTextGraphQlResponseRecord, };
|
|
6
7
|
declare type AdapterReturn = ReactElement | string | null;
|
|
7
8
|
export declare const defaultAdapter: {
|
|
@@ -27,8 +28,10 @@ declare type RenderBlockContext<R extends StructuredTextGraphQlResponseRecord> =
|
|
|
27
28
|
export declare type StructuredTextPropTypes<R extends StructuredTextGraphQlResponseRecord> = {
|
|
28
29
|
/** The actual field value you get from DatoCMS **/
|
|
29
30
|
data: StructuredTextGraphQlResponse<R> | StructuredTextDocument | Node | null | undefined;
|
|
30
|
-
/** A set of additional rules to convert
|
|
31
|
-
|
|
31
|
+
/** A set of additional rules to convert nodes to JSX **/
|
|
32
|
+
customNodeRules?: RenderRule<H, T, F>[];
|
|
33
|
+
/** A set of additional rules to convert marks to JSX **/
|
|
34
|
+
customMarkRules?: RenderMarkRule<H, T, F>[];
|
|
32
35
|
/** Fuction that converts an 'inlineItem' node into React **/
|
|
33
36
|
renderInlineRecord?: (context: RenderInlineRecordContext<R>) => ReactElement | null;
|
|
34
37
|
/** Fuction that converts an 'itemLink' node into React **/
|
|
@@ -43,5 +46,7 @@ export declare type StructuredTextPropTypes<R extends StructuredTextGraphQlRespo
|
|
|
43
46
|
renderNode?: H;
|
|
44
47
|
/** Function to use to generate a React.Fragment **/
|
|
45
48
|
renderFragment?: F;
|
|
49
|
+
/** @deprecated use customNodeRules **/
|
|
50
|
+
customRules?: RenderRule<H, T, F>[];
|
|
46
51
|
};
|
|
47
|
-
export declare function StructuredText<R extends StructuredTextGraphQlResponseRecord>({ data, renderInlineRecord, renderLinkToRecord, renderBlock, renderText, renderNode, renderFragment, customRules, metaTransformer, }: StructuredTextPropTypes<R>): ReactElement | null;
|
|
52
|
+
export declare function StructuredText<R extends StructuredTextGraphQlResponseRecord>({ data, renderInlineRecord, renderLinkToRecord, renderBlock, renderText, renderNode, renderFragment, customMarkRules, customRules, customNodeRules, metaTransformer, }: StructuredTextPropTypes<R>): ReactElement | null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-datocms",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"types": "dist/types/index.d.ts",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"doctoc": "^2.0.0",
|
|
28
28
|
"enzyme": "^3.11.0",
|
|
29
29
|
"enzyme-to-json": "^3.6.2",
|
|
30
|
+
"intersection-observer": "^0.12.0",
|
|
30
31
|
"jest": "^26.6.3",
|
|
31
32
|
"np": "^7.5.0",
|
|
32
33
|
"raf": "^3.4.1",
|
|
@@ -74,11 +75,11 @@
|
|
|
74
75
|
]
|
|
75
76
|
},
|
|
76
77
|
"dependencies": {
|
|
77
|
-
"datocms-listen": "^0.1.
|
|
78
|
-
"datocms-structured-text-generic-html-renderer": "^
|
|
79
|
-
"datocms-structured-text-utils": "^
|
|
80
|
-
"intersection-observer": "^
|
|
81
|
-
"
|
|
78
|
+
"datocms-listen": "^0.1.7",
|
|
79
|
+
"datocms-structured-text-generic-html-renderer": "^2.0.0",
|
|
80
|
+
"datocms-structured-text-utils": "^2.0.0",
|
|
81
|
+
"react-intersection-observer": "^8.33.1",
|
|
82
|
+
"universal-base64": "^2.1.0",
|
|
82
83
|
"use-deep-compare-effect": "^1.6.1"
|
|
83
84
|
}
|
|
84
85
|
}
|