react-datocms 2.0.1 → 2.2.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.
- package/README.md +143 -58
- package/dist/cjs/Seo/__tests__/index.test.js +272 -37
- package/dist/cjs/Seo/__tests__/index.test.js.map +1 -1
- package/dist/cjs/Seo/index.js +13 -60
- package/dist/cjs/Seo/index.js.map +1 -1
- package/dist/cjs/Seo/remixUtils.js +33 -0
- package/dist/cjs/Seo/remixUtils.js.map +1 -0
- package/dist/cjs/Seo/renderMetaTags.js +40 -0
- package/dist/cjs/Seo/renderMetaTags.js.map +1 -0
- package/dist/cjs/Seo/renderMetaTagsToString.js +22 -0
- package/dist/cjs/Seo/renderMetaTagsToString.js.map +1 -0
- package/dist/cjs/Seo/types.js +5 -0
- package/dist/cjs/Seo/types.js.map +1 -0
- 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/cjs/useQuerySubscription/index.js +1 -1
- package/dist/cjs/useQuerySubscription/index.js.map +1 -1
- package/dist/esm/Seo/__tests__/index.test.js +271 -36
- package/dist/esm/Seo/__tests__/index.test.js.map +1 -1
- package/dist/esm/Seo/index.d.ts +4 -12
- package/dist/esm/Seo/index.js +4 -55
- package/dist/esm/Seo/index.js.map +1 -1
- package/dist/esm/Seo/remixUtils.d.ts +6 -0
- package/dist/esm/Seo/remixUtils.js +29 -0
- package/dist/esm/Seo/remixUtils.js.map +1 -0
- package/dist/esm/Seo/renderMetaTags.d.ts +3 -0
- package/dist/esm/Seo/renderMetaTags.js +33 -0
- package/dist/esm/Seo/renderMetaTags.js.map +1 -0
- package/dist/esm/Seo/renderMetaTagsToString.d.ts +2 -0
- package/dist/esm/Seo/renderMetaTagsToString.js +18 -0
- package/dist/esm/Seo/renderMetaTagsToString.js.map +1 -0
- package/dist/esm/Seo/types.d.ts +37 -0
- package/dist/esm/Seo/types.js +4 -0
- package/dist/esm/Seo/types.js.map +1 -0
- 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/esm/useQuerySubscription/index.js +1 -1
- package/dist/esm/useQuerySubscription/index.js.map +1 -1
- package/dist/types/Seo/index.d.ts +4 -12
- package/dist/types/Seo/remixUtils.d.ts +6 -0
- package/dist/types/Seo/renderMetaTags.d.ts +3 -0
- package/dist/types/Seo/renderMetaTagsToString.d.ts +2 -0
- package/dist/types/Seo/types.d.ts +37 -0
- package/dist/types/StructuredText/index.d.ts +12 -7
- package/package.json +2 -2
package/dist/cjs/Seo/index.js
CHANGED
|
@@ -1,64 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
11
|
};
|
|
16
12
|
exports.__esModule = true;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var tag = _a.tag, attributes = _a.attributes, content = _a.content;
|
|
22
|
-
var key = [tag];
|
|
23
|
-
if (attributes && "property" in attributes) {
|
|
24
|
-
key.push(attributes.property);
|
|
25
|
-
}
|
|
26
|
-
if (attributes && "name" in attributes) {
|
|
27
|
-
key.push(attributes.name);
|
|
28
|
-
}
|
|
29
|
-
if (attributes && "rel" in attributes) {
|
|
30
|
-
key.push(attributes.rel);
|
|
31
|
-
}
|
|
32
|
-
if (attributes && "sizes" in attributes) {
|
|
33
|
-
key.push(attributes.sizes);
|
|
34
|
-
}
|
|
35
|
-
var Tag = tag;
|
|
36
|
-
return (react_1["default"].createElement(Tag, __assign({ key: key.join("-") }, attributes), content));
|
|
37
|
-
});
|
|
38
|
-
};
|
|
39
|
-
exports.renderMetaTags = renderMetaTags;
|
|
40
|
-
var serializeAttributes = function (attributes) {
|
|
41
|
-
if (!attributes) {
|
|
42
|
-
return "";
|
|
43
|
-
}
|
|
44
|
-
var serializedAttrs = [];
|
|
45
|
-
for (var key in attributes) {
|
|
46
|
-
if (Object.prototype.hasOwnProperty.call(attributes, key)) {
|
|
47
|
-
serializedAttrs.push(key + "=\"" + attributes[key] + "\"");
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return " " + serializedAttrs.join(" ");
|
|
51
|
-
};
|
|
52
|
-
var renderMetaTagsToString = function (data) {
|
|
53
|
-
return data
|
|
54
|
-
.map(function (_a) {
|
|
55
|
-
var tag = _a.tag, attributes = _a.attributes, content = _a.content;
|
|
56
|
-
if (content) {
|
|
57
|
-
return "<" + tag + serializeAttributes(attributes) + ">" + content + "</" + tag + ">";
|
|
58
|
-
}
|
|
59
|
-
return "<" + tag + serializeAttributes(attributes) + " />";
|
|
60
|
-
})
|
|
61
|
-
.join("\n");
|
|
62
|
-
};
|
|
63
|
-
exports.renderMetaTagsToString = renderMetaTagsToString;
|
|
13
|
+
__exportStar(require("./types"), exports);
|
|
14
|
+
__exportStar(require("./remixUtils"), exports);
|
|
15
|
+
__exportStar(require("./renderMetaTags"), exports);
|
|
16
|
+
__exportStar(require("./renderMetaTagsToString"), exports);
|
|
64
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Seo/index.
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Seo/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB;AACxB,+CAA6B;AAC7B,mDAAiC;AACjC,2DAAyC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
exports.__esModule = true;
|
|
14
|
+
exports.toRemixMeta = void 0;
|
|
15
|
+
function toRemixMeta(metaTags) {
|
|
16
|
+
if (!metaTags) {
|
|
17
|
+
return {};
|
|
18
|
+
}
|
|
19
|
+
return metaTags.reduce(function (acc, tag) {
|
|
20
|
+
var _a;
|
|
21
|
+
if (tag.tag === 'title') {
|
|
22
|
+
return tag.content ? __assign(__assign({}, acc), { title: tag.content }) : acc;
|
|
23
|
+
}
|
|
24
|
+
if (tag.tag === 'link') {
|
|
25
|
+
return acc;
|
|
26
|
+
}
|
|
27
|
+
return __assign(__assign({}, acc), (_a = {}, _a['property' in tag.attributes
|
|
28
|
+
? tag.attributes.property
|
|
29
|
+
: tag.attributes.name] = tag.attributes.content, _a));
|
|
30
|
+
}, {});
|
|
31
|
+
}
|
|
32
|
+
exports.toRemixMeta = toRemixMeta;
|
|
33
|
+
//# sourceMappingURL=remixUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remixUtils.js","sourceRoot":"","sources":["../../../src/Seo/remixUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAiCA,SAAgB,WAAW,CACzB,QAAkC;IAElC,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,EAAE,CAAC;KACX;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG;;QAC9B,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE;YACvB,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,uBAAM,GAAG,KAAE,KAAK,EAAE,GAAG,CAAC,OAAO,IAAG,CAAC,CAAC,GAAG,CAAC;SAC3D;QAED,IAAI,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE;YACtB,OAAO,GAAG,CAAC;SACZ;QAED,6BACK,GAAG,gBACL,UAAU,IAAI,GAAG,CAAC,UAAU;YAC3B,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ;YACzB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAG,GAAG,CAAC,UAAU,CAAC,OAAO,OAChD;IACJ,CAAC,EAAE,EAA6B,CAAC,CAAC;AACpC,CAAC;AAvBD,kCAuBC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
exports.__esModule = true;
|
|
17
|
+
exports.renderMetaTags = void 0;
|
|
18
|
+
var react_1 = __importDefault(require("react"));
|
|
19
|
+
function renderMetaTags(data) {
|
|
20
|
+
return data.map(function (_a) {
|
|
21
|
+
var tag = _a.tag, attributes = _a.attributes, content = _a.content;
|
|
22
|
+
var key = [tag];
|
|
23
|
+
if (attributes && 'property' in attributes) {
|
|
24
|
+
key.push(attributes.property);
|
|
25
|
+
}
|
|
26
|
+
if (attributes && 'name' in attributes) {
|
|
27
|
+
key.push(attributes.name);
|
|
28
|
+
}
|
|
29
|
+
if (attributes && 'rel' in attributes) {
|
|
30
|
+
key.push(attributes.rel);
|
|
31
|
+
}
|
|
32
|
+
if (attributes && 'sizes' in attributes) {
|
|
33
|
+
key.push(attributes.sizes);
|
|
34
|
+
}
|
|
35
|
+
var Tag = tag;
|
|
36
|
+
return (react_1["default"].createElement(Tag, __assign({ key: key.join('-') }, attributes), content));
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
exports.renderMetaTags = renderMetaTags;
|
|
40
|
+
//# sourceMappingURL=renderMetaTags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderMetaTags.js","sourceRoot":"","sources":["../../../src/Seo/renderMetaTags.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAG1B,SAAgB,cAAc,CAAC,IAAuB;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,UAAC,EAA4B;YAA1B,GAAG,SAAA,EAAE,UAAU,gBAAA,EAAE,OAAO,aAAA;QACzC,IAAI,GAAG,GAAa,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,EAAE;YAC1C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAED,IAAI,UAAU,IAAI,MAAM,IAAI,UAAU,EAAE;YACtC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC3B;QAED,IAAI,UAAU,IAAI,KAAK,IAAI,UAAU,EAAE;YACrC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAC1B;QAED,IAAI,UAAU,IAAI,OAAO,IAAI,UAAU,EAAE;YACvC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC5B;QAED,IAAM,GAAG,GAAG,GAAG,CAAC;QAEhB,OAAO,CACL,iCAAC,GAAG,aAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAM,UAAU,GACpC,OAAO,CACJ,CACP,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AA5BD,wCA4BC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.renderMetaTagsToString = void 0;
|
|
4
|
+
function renderMetaTagsToString(data) {
|
|
5
|
+
return data
|
|
6
|
+
.map(function (tag) {
|
|
7
|
+
if (tag.tag === 'title') {
|
|
8
|
+
return "<title>" + tag.content + "</title>";
|
|
9
|
+
}
|
|
10
|
+
var serializedAttrs = [];
|
|
11
|
+
for (var key in tag.attributes) {
|
|
12
|
+
if (Object.prototype.hasOwnProperty.call(tag.attributes, key)) {
|
|
13
|
+
serializedAttrs.push(key + "=\"" + tag.attributes[key] + "\"");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return "<" + tag.tag + " " + serializedAttrs.join(' ') + " />";
|
|
17
|
+
})
|
|
18
|
+
.join('\n');
|
|
19
|
+
}
|
|
20
|
+
exports.renderMetaTagsToString = renderMetaTagsToString;
|
|
21
|
+
;
|
|
22
|
+
//# sourceMappingURL=renderMetaTagsToString.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderMetaTagsToString.js","sourceRoot":"","sources":["../../../src/Seo/renderMetaTagsToString.tsx"],"names":[],"mappings":";;;AAEA,SAAgB,sBAAsB,CAAC,IAAuB;IAC5D,OAAO,IAAI;SACR,GAAG,CAAC,UAAC,GAAG;QACP,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE;YACvB,OAAO,YAAU,GAAG,CAAC,OAAO,aAAU,CAAC;SACxC;QAED,IAAM,eAAe,GAAG,EAAE,CAAC;QAE3B,KAAK,IAAM,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE;YAChC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;gBAC7D,eAAe,CAAC,IAAI,CAAI,GAAG,WAAM,GAAG,CAAC,UAAkB,CAAC,GAAG,CAAC,OAAG,CAAC,CAAC;aAClE;SACF;QAED,OAAO,MAAI,GAAG,CAAC,GAAG,SAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,QAAK,CAAC;IACvD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAlBD,wDAkBC;AAAA,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Seo/types.tsx"],"names":[],"mappings":";;AASC,CAAC;AAKD,CAAC"}
|
|
@@ -34,63 +34,75 @@ var enzyme_1 = require("enzyme");
|
|
|
34
34
|
var React = __importStar(require("react"));
|
|
35
35
|
var index_1 = require("../index");
|
|
36
36
|
var datocms_structured_text_utils_1 = require("datocms-structured-text-utils");
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
var datocms_structured_text_generic_html_renderer_1 = require("datocms-structured-text-generic-html-renderer");
|
|
38
|
+
describe('StructuredText', function () {
|
|
39
|
+
describe('with no value', function () {
|
|
40
|
+
it('renders null', function () {
|
|
40
41
|
var wrapper = enzyme_1.mount(React.createElement(index_1.StructuredText, { data: null }));
|
|
41
42
|
expect(wrapper).toMatchSnapshot();
|
|
42
43
|
});
|
|
43
44
|
});
|
|
44
|
-
describe(
|
|
45
|
+
describe('simple dast /2', function () {
|
|
45
46
|
var structuredText = {
|
|
46
|
-
schema:
|
|
47
|
+
schema: 'dast',
|
|
47
48
|
document: {
|
|
48
|
-
type:
|
|
49
|
+
type: 'root',
|
|
49
50
|
children: [
|
|
50
51
|
{
|
|
51
|
-
type:
|
|
52
|
+
type: 'heading',
|
|
52
53
|
level: 1,
|
|
53
54
|
children: [
|
|
54
55
|
{
|
|
55
|
-
type:
|
|
56
|
-
value:
|
|
56
|
+
type: 'span',
|
|
57
|
+
value: 'This\nis a '
|
|
57
58
|
},
|
|
58
59
|
{
|
|
59
|
-
type:
|
|
60
|
-
marks: [
|
|
61
|
-
value:
|
|
60
|
+
type: 'span',
|
|
61
|
+
marks: ['strong'],
|
|
62
|
+
value: 'title'
|
|
62
63
|
},
|
|
63
64
|
]
|
|
64
65
|
},
|
|
65
66
|
]
|
|
66
67
|
}
|
|
67
68
|
};
|
|
68
|
-
describe(
|
|
69
|
-
it(
|
|
69
|
+
describe('with default rules', function () {
|
|
70
|
+
it('renders the document', function () {
|
|
70
71
|
var wrapper = enzyme_1.mount(React.createElement(index_1.StructuredText, { data: structuredText }));
|
|
71
72
|
expect(wrapper).toMatchSnapshot();
|
|
72
73
|
});
|
|
73
74
|
});
|
|
75
|
+
describe('with custom mark rules', function () {
|
|
76
|
+
it('renders the document', function () {
|
|
77
|
+
var wrapper = enzyme_1.mount(React.createElement(index_1.StructuredText, { data: structuredText, customMarkRules: [
|
|
78
|
+
datocms_structured_text_generic_html_renderer_1.renderMarkRule('strong', function (_a) {
|
|
79
|
+
var children = _a.children, key = _a.key;
|
|
80
|
+
return (React.createElement("b", { key: key }, children));
|
|
81
|
+
}),
|
|
82
|
+
] }));
|
|
83
|
+
expect(wrapper).toMatchSnapshot();
|
|
84
|
+
});
|
|
85
|
+
});
|
|
74
86
|
});
|
|
75
|
-
describe(
|
|
87
|
+
describe('simple dast with no links/blocks', function () {
|
|
76
88
|
var structuredText = {
|
|
77
89
|
value: {
|
|
78
|
-
schema:
|
|
90
|
+
schema: 'dast',
|
|
79
91
|
document: {
|
|
80
|
-
type:
|
|
92
|
+
type: 'root',
|
|
81
93
|
children: [
|
|
82
94
|
{
|
|
83
|
-
type:
|
|
95
|
+
type: 'heading',
|
|
84
96
|
level: 1,
|
|
85
97
|
children: [
|
|
86
98
|
{
|
|
87
|
-
type:
|
|
88
|
-
value:
|
|
99
|
+
type: 'span',
|
|
100
|
+
value: 'This\nis a '
|
|
89
101
|
},
|
|
90
102
|
{
|
|
91
|
-
type:
|
|
92
|
-
marks: [
|
|
93
|
-
value:
|
|
103
|
+
type: 'span',
|
|
104
|
+
marks: ['strong'],
|
|
105
|
+
value: 'title'
|
|
94
106
|
},
|
|
95
107
|
]
|
|
96
108
|
},
|
|
@@ -98,18 +110,18 @@ describe("StructuredText", function () {
|
|
|
98
110
|
}
|
|
99
111
|
}
|
|
100
112
|
};
|
|
101
|
-
describe(
|
|
102
|
-
it(
|
|
113
|
+
describe('with default rules', function () {
|
|
114
|
+
it('renders the document', function () {
|
|
103
115
|
var wrapper = enzyme_1.mount(React.createElement(index_1.StructuredText, { data: structuredText }));
|
|
104
116
|
expect(wrapper).toMatchSnapshot();
|
|
105
117
|
});
|
|
106
118
|
});
|
|
107
|
-
describe(
|
|
108
|
-
it(
|
|
119
|
+
describe('with custom rules', function () {
|
|
120
|
+
it('renders the document', function () {
|
|
109
121
|
var wrapper = enzyme_1.mount(React.createElement(index_1.StructuredText, { data: structuredText, renderText: function (text, key) {
|
|
110
|
-
return (React.createElement(React.Fragment, { key: key }, text.replace(/This/,
|
|
111
|
-
},
|
|
112
|
-
index_1.
|
|
122
|
+
return (React.createElement(React.Fragment, { key: key }, text.replace(/This/, 'That')));
|
|
123
|
+
}, customNodeRules: [
|
|
124
|
+
index_1.renderNodeRule(datocms_structured_text_utils_1.isHeading, function (_a) {
|
|
113
125
|
var renderNode = _a.adapter.renderNode, node = _a.node, children = _a.children, key = _a.key;
|
|
114
126
|
return renderNode("h" + (node.level + 1), { key: key }, children);
|
|
115
127
|
}),
|
|
@@ -118,70 +130,68 @@ describe("StructuredText", function () {
|
|
|
118
130
|
});
|
|
119
131
|
});
|
|
120
132
|
});
|
|
121
|
-
describe(
|
|
133
|
+
describe('with links/blocks', function () {
|
|
122
134
|
var structuredText = {
|
|
123
135
|
value: {
|
|
124
|
-
schema:
|
|
136
|
+
schema: 'dast',
|
|
125
137
|
document: {
|
|
126
|
-
type:
|
|
138
|
+
type: 'root',
|
|
127
139
|
children: [
|
|
128
140
|
{
|
|
129
|
-
type:
|
|
141
|
+
type: 'heading',
|
|
130
142
|
level: 1,
|
|
131
143
|
children: [
|
|
132
144
|
{
|
|
133
|
-
type:
|
|
134
|
-
value:
|
|
145
|
+
type: 'span',
|
|
146
|
+
value: 'This is a'
|
|
135
147
|
},
|
|
136
148
|
{
|
|
137
|
-
type:
|
|
138
|
-
marks: [
|
|
139
|
-
value:
|
|
149
|
+
type: 'span',
|
|
150
|
+
marks: ['highlight'],
|
|
151
|
+
value: 'title'
|
|
140
152
|
},
|
|
141
153
|
{
|
|
142
|
-
type:
|
|
143
|
-
item:
|
|
154
|
+
type: 'inlineItem',
|
|
155
|
+
item: '123'
|
|
144
156
|
},
|
|
145
157
|
{
|
|
146
|
-
type:
|
|
147
|
-
item:
|
|
148
|
-
meta: [
|
|
149
|
-
|
|
150
|
-
],
|
|
151
|
-
children: [{ type: "span", value: "here!" }]
|
|
158
|
+
type: 'itemLink',
|
|
159
|
+
item: '123',
|
|
160
|
+
meta: [{ id: 'target', value: '_blank' }],
|
|
161
|
+
children: [{ type: 'span', value: 'here!' }]
|
|
152
162
|
},
|
|
153
163
|
]
|
|
154
164
|
},
|
|
155
165
|
{
|
|
156
|
-
type:
|
|
157
|
-
item:
|
|
166
|
+
type: 'block',
|
|
167
|
+
item: '456'
|
|
158
168
|
},
|
|
159
169
|
]
|
|
160
170
|
}
|
|
161
171
|
},
|
|
162
172
|
blocks: [
|
|
163
173
|
{
|
|
164
|
-
id:
|
|
165
|
-
__typename:
|
|
166
|
-
quote:
|
|
167
|
-
author:
|
|
174
|
+
id: '456',
|
|
175
|
+
__typename: 'QuoteRecord',
|
|
176
|
+
quote: 'Foo bar.',
|
|
177
|
+
author: 'Mark Smith'
|
|
168
178
|
},
|
|
169
179
|
],
|
|
170
180
|
links: [
|
|
171
181
|
{
|
|
172
|
-
id:
|
|
173
|
-
__typename:
|
|
174
|
-
title:
|
|
175
|
-
slug:
|
|
182
|
+
id: '123',
|
|
183
|
+
__typename: 'DocPageRecord',
|
|
184
|
+
title: 'How to code',
|
|
185
|
+
slug: 'how-to-code'
|
|
176
186
|
},
|
|
177
187
|
]
|
|
178
188
|
};
|
|
179
|
-
describe(
|
|
180
|
-
it(
|
|
189
|
+
describe('with default rules', function () {
|
|
190
|
+
it('renders the document', function () {
|
|
181
191
|
var wrapper = enzyme_1.mount(React.createElement(index_1.StructuredText, { data: structuredText, renderInlineRecord: function (_a) {
|
|
182
192
|
var record = _a.record;
|
|
183
193
|
switch (record.__typename) {
|
|
184
|
-
case
|
|
194
|
+
case 'DocPageRecord':
|
|
185
195
|
return React.createElement("a", { href: "/docs/" + record.slug }, record.title);
|
|
186
196
|
default:
|
|
187
197
|
return null;
|
|
@@ -189,15 +199,15 @@ describe("StructuredText", function () {
|
|
|
189
199
|
}, renderLinkToRecord: function (_a) {
|
|
190
200
|
var record = _a.record, children = _a.children, transformedMeta = _a.transformedMeta;
|
|
191
201
|
switch (record.__typename) {
|
|
192
|
-
case
|
|
193
|
-
return React.createElement("a", __assign({}, transformedMeta, { href: "/docs/" + record.slug }), children);
|
|
202
|
+
case 'DocPageRecord':
|
|
203
|
+
return (React.createElement("a", __assign({}, transformedMeta, { href: "/docs/" + record.slug }), children));
|
|
194
204
|
default:
|
|
195
205
|
return null;
|
|
196
206
|
}
|
|
197
207
|
}, renderBlock: function (_a) {
|
|
198
208
|
var record = _a.record;
|
|
199
209
|
switch (record.__typename) {
|
|
200
|
-
case
|
|
210
|
+
case 'QuoteRecord':
|
|
201
211
|
return (React.createElement("figure", null,
|
|
202
212
|
React.createElement("blockquote", null, record.quote),
|
|
203
213
|
React.createElement("figcaption", null, record.author)));
|
|
@@ -208,15 +218,15 @@ describe("StructuredText", function () {
|
|
|
208
218
|
expect(wrapper).toMatchSnapshot();
|
|
209
219
|
});
|
|
210
220
|
});
|
|
211
|
-
describe(
|
|
212
|
-
it(
|
|
221
|
+
describe('with missing renderInlineRecord prop', function () {
|
|
222
|
+
it('raises an error', function () {
|
|
213
223
|
expect(function () {
|
|
214
224
|
enzyme_1.shallow(React.createElement(index_1.StructuredText, { data: structuredText }));
|
|
215
225
|
}).toThrow(index_1.RenderError);
|
|
216
226
|
});
|
|
217
227
|
});
|
|
218
|
-
describe(
|
|
219
|
-
it(
|
|
228
|
+
describe('with missing record', function () {
|
|
229
|
+
it('raises an error', function () {
|
|
220
230
|
expect(function () {
|
|
221
231
|
enzyme_1.shallow(React.createElement(index_1.StructuredText, { data: __assign(__assign({}, structuredText), { links: [] }), renderInlineRecord: function () {
|
|
222
232
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/StructuredText/__tests__/index.test.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAgD;AAChD,2CAA+B;AAC/B,kCAMkB;AAClB,+EAA0D;
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/StructuredText/__tests__/index.test.tsx"],"names":[],"mappings":"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"}
|