@remkoj/optimizely-cms-react 5.0.1 → 5.1.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/dist/components/cms-content/client.d.ts +2 -2
- package/dist/components/cms-content/client.js +20 -12
- package/dist/components/cms-content/client.js.map +1 -1
- package/dist/components/cms-content/get-content.js +65 -28
- package/dist/components/cms-content/get-content.js.map +1 -1
- package/dist/components/cms-content/resolve-component.d.ts +5 -1
- package/dist/components/cms-content/resolve-component.js +14 -1
- package/dist/components/cms-content/resolve-component.js.map +1 -1
- package/dist/components/cms-content/rsc.js +1 -1
- package/dist/components/cms-content/rsc.js.map +1 -1
- package/dist/components/cms-content/utils.d.ts +2 -2
- package/dist/components/cms-content/utils.js +1 -1
- package/dist/components/cms-content/utils.js.map +1 -1
- package/dist/components/rich-text/components.d.ts +10 -0
- package/dist/components/rich-text/components.js +19 -0
- package/dist/components/rich-text/components.js.map +1 -1
- package/dist/components/rich-text/index.d.ts +3 -4
- package/dist/components/rich-text/index.js +15 -9
- package/dist/components/rich-text/index.js.map +1 -1
- package/dist/components/rich-text/types.d.ts +9 -6
- package/dist/components/type-utils.d.ts +20 -11
- package/dist/components/visual-builder/functions.js +6 -5
- package/dist/components/visual-builder/functions.js.map +1 -1
- package/dist/components.d.ts +1 -1
- package/dist/types.d.ts +2 -1
- package/package.json +8 -8
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import type { BaseCmsContentProps } from './types.js';
|
|
3
|
-
export type * from
|
|
3
|
+
export type * from './types.js';
|
|
4
4
|
/**
|
|
5
5
|
* React Server Side component for the CmsContent
|
|
6
6
|
*
|
|
7
7
|
* @param param0
|
|
8
8
|
* @returns
|
|
9
9
|
*/
|
|
10
|
-
export declare function CmsContent<LocalesType = string>({ contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentData, layoutProps, noDataLoad, variant, ctx }: BaseCmsContentProps<LocalesType>): ReactNode;
|
|
10
|
+
export declare function CmsContent<LocalesType = string>({ contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentData, layoutProps, noDataLoad, variant, ctx, }: BaseCmsContentProps<LocalesType>): ReactNode;
|
|
11
11
|
export default CmsContent;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import getContentType from './get-content-type.js';
|
|
4
4
|
import getContent from './get-content.js';
|
|
5
|
-
import { AuthMode, normalizeContentLink, contentLinkToString } from '@remkoj/optimizely-graph-client';
|
|
6
|
-
import resolveComponent, { isComponentMissingComponent } from './resolve-component.js';
|
|
5
|
+
import { AuthMode, normalizeContentLink, contentLinkToString, } from '@remkoj/optimizely-graph-client';
|
|
6
|
+
import resolveComponent, { isComponentMissingComponent, } from './resolve-component.js';
|
|
7
7
|
import resolveContentType from './resolve-content-type.js';
|
|
8
8
|
import { useState, useMemo, useEffect } from 'react';
|
|
9
9
|
/**
|
|
@@ -14,18 +14,25 @@ import { useState, useMemo, useEffect } from 'react';
|
|
|
14
14
|
*/
|
|
15
15
|
export function CmsContent({
|
|
16
16
|
// Own properties
|
|
17
|
-
contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentData, layoutProps, noDataLoad, variant, ctx }) {
|
|
17
|
+
contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentData, layoutProps, noDataLoad, variant, ctx, }) {
|
|
18
18
|
// Prepare context
|
|
19
19
|
const graphClient = ctx.client;
|
|
20
20
|
const [myContentType, setMyContentType] = useState(resolveContentType(contentType, fragmentData));
|
|
21
21
|
const contentLink = useMemo(() => normalizeContentLink(rawContentLink), [rawContentLink]);
|
|
22
22
|
const Component = useMemo(() => resolveComponent(myContentType, contentTypePrefix, variant, ctx), [myContentType, variant, contentTypePrefix, ctx]);
|
|
23
|
-
const [data, setData] = useState(
|
|
23
|
+
const [data, setData] = useState(
|
|
24
|
+
//@ts-expect-error
|
|
25
|
+
getContent(graphClient, contentLink, Component, fragmentData, true));
|
|
24
26
|
// Provide a bit of debugging context
|
|
25
27
|
if (graphClient?.debug) {
|
|
26
|
-
const mode = ctx.inEditMode
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
const mode = ctx.inEditMode
|
|
29
|
+
? 'Edit'
|
|
30
|
+
: ctx.inPreviewMode
|
|
31
|
+
? 'Preview'
|
|
32
|
+
: 'Public';
|
|
33
|
+
console.log(`👔 [CmsContent] ${mode} mode active for content with id: ${contentLinkToString(contentLink)} of type ${myContentType?.join('/') ?? 'unknown'}`);
|
|
34
|
+
if ((ctx.inEditMode || ctx.inPreviewMode) &&
|
|
35
|
+
graphClient.currentAuthMode == AuthMode.Public)
|
|
29
36
|
console.warn(`🟠 [CmsContent] ${mode} mode active without an authenticated graphClient, this will cause problems. Make sure the context has an authenticated client.`);
|
|
30
37
|
}
|
|
31
38
|
// Ensure we have a content type to work with
|
|
@@ -39,7 +46,7 @@ contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentD
|
|
|
39
46
|
}
|
|
40
47
|
if (graphClient.debug)
|
|
41
48
|
console.warn(`🟠 [CmsContent] No content type provided for content ${contentLinkToString(contentLink)}, this causes an additional GraphQL query to resolve the myContentType`);
|
|
42
|
-
getContentType(contentLink, graphClient).then(ct => {
|
|
49
|
+
getContentType(contentLink, graphClient).then((ct) => {
|
|
43
50
|
if (!isCancelled)
|
|
44
51
|
setMyContentType(ct);
|
|
45
52
|
});
|
|
@@ -56,7 +63,8 @@ contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentD
|
|
|
56
63
|
console.warn(`🔴 [CmsContent] No Optimizely Graph Client present unable to load content type`);
|
|
57
64
|
return;
|
|
58
65
|
}
|
|
59
|
-
|
|
66
|
+
//@ts-expect-error
|
|
67
|
+
getContent(graphClient, contentLink, Component, fragmentData).then((newData) => {
|
|
60
68
|
if (!isCancelled)
|
|
61
69
|
setData(newData);
|
|
62
70
|
});
|
|
@@ -65,8 +73,8 @@ contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentD
|
|
|
65
73
|
};
|
|
66
74
|
}, [graphClient, contentLink, Component, fragmentData, noDataLoad]);
|
|
67
75
|
if (isComponentMissingComponent(Component))
|
|
68
|
-
return _jsx(Component, {});
|
|
69
|
-
return _jsx(Component, { contentLink: contentLink, data: data, inEditMode: ctx.inEditMode, layoutProps: layoutProps, children: children });
|
|
76
|
+
return _jsx(Component, { contentLink: contentLink });
|
|
77
|
+
return (_jsx(Component, { contentLink: contentLink, data: data, inEditMode: ctx.inEditMode, layoutProps: layoutProps, children: children }));
|
|
70
78
|
}
|
|
71
79
|
export default CmsContent;
|
|
72
80
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/components/cms-content/client.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAIZ,OAAO,cAAc,MAAM,uBAAuB,CAAA;AAClD,OAAO,UAAU,MAAM,kBAAkB,CAAA;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/components/cms-content/client.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,38 +2,47 @@ import { print } from 'graphql';
|
|
|
2
2
|
import { isContentLink, isInlineContentLink, OptiCmsSchema } from "@remkoj/optimizely-graph-client";
|
|
3
3
|
import { CmsContentFragments } from "../../data/queries.js";
|
|
4
4
|
import { validatesFragment, contentLinkToRequestVariables, isCmsComponentWithFragment, isCmsComponentWithDataQuery } from "../../utilities.js";
|
|
5
|
+
import { getComponentLabel } from './resolve-component.js';
|
|
5
6
|
export function getContent(client, contentLink, Component, fragmentData, noDataLoad) {
|
|
6
7
|
const debug = client?.debug ?? false;
|
|
7
8
|
// Handle provided fragment
|
|
8
|
-
const componentLabel = Component
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (validatesFragment(Component) && !Component.validateFragment(
|
|
13
|
-
|
|
9
|
+
const componentLabel = getComponentLabel(Component);
|
|
10
|
+
const fragmentProps = fragmentData ? Object.getOwnPropertyNames(fragmentData).filter(x => !CmsContentFragments.IContentDataProps.includes(x)) : [];
|
|
11
|
+
if (fragmentData && fragmentProps.length > 0) {
|
|
12
|
+
// Invalid fragment
|
|
13
|
+
if (validatesFragment(Component) && !Component.validateFragment(fragmentData)) {
|
|
14
|
+
if (debug)
|
|
15
|
+
console.warn("🔴 [CmsContent][getContent] Invalid fragment data received, falling back to loading for ", componentLabel);
|
|
16
|
+
// Preview mode, so load data for changeset
|
|
17
|
+
}
|
|
18
|
+
else if (client?.isPreviewEnabled() && isContentLink(contentLink) && !isInlineContentLink(contentLink)) {
|
|
19
|
+
if (debug)
|
|
20
|
+
console.warn("🔴 [CmsContent][getContent] Rendering shared instance, while in preview mode, falling back to loading for ", componentLabel);
|
|
21
|
+
contentLink.version = null;
|
|
22
|
+
// Default mode, use fragment
|
|
23
|
+
}
|
|
14
24
|
else {
|
|
15
25
|
if (debug)
|
|
16
|
-
console.log("⚪ [CmsContent][getContent] Rendering CMS Component using fragment information");
|
|
17
|
-
return (noDataLoad ?
|
|
26
|
+
console.log("⚪ [CmsContent][getContent] Rendering CMS Component using fragment information", fragmentProps);
|
|
27
|
+
return (noDataLoad ? fragmentData : Promise.resolve(fragmentData));
|
|
18
28
|
}
|
|
19
29
|
}
|
|
20
30
|
// No meaningful fragment provided with inline content, warn in debug, but just return an empty dataset
|
|
21
31
|
if (isInlineContentLink(contentLink)) {
|
|
22
32
|
if (debug)
|
|
23
33
|
console.warn(`🟠 [CmsContent][getContent] No data present for inline content item, this may cause errors if your component expects certain fields to be present`);
|
|
24
|
-
return (noDataLoad ?
|
|
34
|
+
return (noDataLoad ? fragmentData ?? {} : Promise.resolve(fragmentData ?? {}));
|
|
25
35
|
}
|
|
26
|
-
// If no data may be loaded, stop here
|
|
27
36
|
if (noDataLoad) {
|
|
28
37
|
if (debug)
|
|
29
38
|
console.log(`⚪ [CmsContent][getContent] Component of type "${componentLabel}" was prohibited to load data`);
|
|
30
|
-
return
|
|
39
|
+
return (noDataLoad ? {} : Promise.resolve({}));
|
|
31
40
|
}
|
|
32
41
|
// If we don't have a valid link, stop here
|
|
33
42
|
if (!isContentLink(contentLink)) {
|
|
34
43
|
if (debug)
|
|
35
44
|
console.warn(`🟠 [CmsContent][getContent] Unable to load data for "${componentLabel}" without a valid content link`);
|
|
36
|
-
return Promise.resolve(
|
|
45
|
+
return Promise.resolve({});
|
|
37
46
|
}
|
|
38
47
|
// Return immediately when there's no client
|
|
39
48
|
if (!client) {
|
|
@@ -45,6 +54,9 @@ export function getContent(client, contentLink, Component, fragmentData, noDataL
|
|
|
45
54
|
if (isCmsComponentWithDataQuery(Component)) {
|
|
46
55
|
const gqlQuery = Component.getDataQuery();
|
|
47
56
|
const gqlVariables = contentLinkToRequestVariables(contentLink);
|
|
57
|
+
// If the CMS Preview mode has been enabled, make sure we include that in the query
|
|
58
|
+
if (client.isPreviewEnabled())
|
|
59
|
+
gqlVariables.changeset = client.getChangeset();
|
|
48
60
|
if (client.debug)
|
|
49
61
|
console.log("⚪ [CmsContent][getContent] Component fetching data using query, provided variables:", gqlVariables);
|
|
50
62
|
return client.request(gqlQuery, gqlVariables);
|
|
@@ -52,29 +64,21 @@ export function getContent(client, contentLink, Component, fragmentData, noDataL
|
|
|
52
64
|
// Assume there's no data load required for the component
|
|
53
65
|
if (client.debug)
|
|
54
66
|
console.log(`⚪ [CmsContent] Component of type "${componentLabel}" did not request loading of data`);
|
|
55
|
-
return Promise.resolve(
|
|
67
|
+
return Promise.resolve({});
|
|
56
68
|
}
|
|
57
69
|
export default getContent;
|
|
58
70
|
async function getComponentDataFromFragment(Component, contentLink, client) {
|
|
59
71
|
const [name, fragment] = Component.getDataFragment();
|
|
60
72
|
if (client.debug)
|
|
61
73
|
console.log(`⚪ [CmsContent] Component data fetching using fragment: ${name}`);
|
|
62
|
-
const fragmentQuery = client.currentOptiCmsSchema == OptiCmsSchema.CMS12 ?
|
|
63
|
-
`query getContentFragmentById($key: String!, $version: Int, $locale: [Locales!]) { contentById: Content(where: { ContentLink: { GuidValue: { eq: $key }, WorkId: { eq: $version } } }, locale: $locale) { total, items { _type: __typename, _metadata: ContentLink { key: GuidValue, version: WorkId }, _locale: Language { name: Name } ...${name} }}}\n ${print(fragment)}` :
|
|
64
|
-
`query getContentFragmentById($key: String!, $version: String, $locale: [Locales!]) {contentById: _Content(where: {_metadata: {key: { eq: $key }, version: { eq: $version }}} locale: $locale) { total, items { _type: __typename, _metadata { key, version, locale } ...${name} }}}\n ${print(fragment)}`;
|
|
74
|
+
const fragmentQuery = client.currentOptiCmsSchema == OptiCmsSchema.CMS12 ? buildCms12Query(name, fragment) : buildCms13Query(name, fragment);
|
|
65
75
|
const fragmentVariables = contentLinkToRequestVariables(contentLink);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
fragmentVariables.version = undefined;
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
fragmentVariables.version = undefined;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
76
|
+
// CMS 12 Requires the version number to be an Int
|
|
77
|
+
if (client.currentOptiCmsSchema == OptiCmsSchema.CMS12)
|
|
78
|
+
fragmentVariables.version = tryParsePositiveInt(fragmentVariables.version);
|
|
79
|
+
// If the CMS Preview mode has been enabled, make sure we include that in the query
|
|
80
|
+
if (client.isPreviewEnabled())
|
|
81
|
+
fragmentVariables.changeset = client.getChangeset();
|
|
78
82
|
if (client.debug)
|
|
79
83
|
console.log(`⚪ [CmsContent] Component data fetching using variables: ${JSON.stringify(fragmentVariables)}`);
|
|
80
84
|
const fragmentResponse = await client.request(fragmentQuery, fragmentVariables);
|
|
@@ -90,4 +94,37 @@ async function getComponentDataFromFragment(Component, contentLink, client) {
|
|
|
90
94
|
}
|
|
91
95
|
return fragmentResponse.contentById.items[0];
|
|
92
96
|
}
|
|
97
|
+
function tryParsePositiveInt(value, defaultValue) {
|
|
98
|
+
try {
|
|
99
|
+
const versionNr = value ? Number.parseInt(value) : 0;
|
|
100
|
+
if (!isNaN(versionNr) && versionNr > 0)
|
|
101
|
+
return versionNr;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Ignore
|
|
105
|
+
}
|
|
106
|
+
return defaultValue;
|
|
107
|
+
}
|
|
108
|
+
const buildCms12Query = (name, fragment) => `query getContentFragmentById($key: String!, $version: Int, $locale: [Locales!]) { contentById: Content(where: { ContentLink: { GuidValue: { eq: $key }, WorkId: { eq: $version } } }, locale: $locale) { total, items { _type: __typename, _metadata: ContentLink { key: GuidValue, version: WorkId }, _locale: Language { name: Name } ...${name} }}}\n${typeof (fragment) == 'string' ? fragment : print(fragment)}`;
|
|
109
|
+
const buildCms13Query = (name, fragment) => `query getContentFragmentById($key: String!, $version: String, $locale: [Locales!], $changeset: String) {
|
|
110
|
+
contentById: _Content(
|
|
111
|
+
where: {
|
|
112
|
+
_metadata: { key: { eq: $key }, version: { eq: $version }, changeset: { eq: $changeset } }
|
|
113
|
+
}
|
|
114
|
+
locale: $locale
|
|
115
|
+
) {
|
|
116
|
+
total
|
|
117
|
+
items {
|
|
118
|
+
_type: __typename
|
|
119
|
+
__typename
|
|
120
|
+
_metadata {
|
|
121
|
+
key
|
|
122
|
+
version
|
|
123
|
+
locale
|
|
124
|
+
}
|
|
125
|
+
...${name}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
${typeof (fragment) == 'string' ? fragment : print(fragment)}`;
|
|
93
130
|
//# sourceMappingURL=get-content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-content.js","sourceRoot":"","sources":["../../../src/components/cms-content/get-content.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"get-content.js","sourceRoot":"","sources":["../../../src/components/cms-content/get-content.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import { type ComponentTypeHandle } from '../../factory/types.js';
|
|
|
2
2
|
import { type EnhancedCmsComponent } from './types.js';
|
|
3
3
|
import { type GenericContext } from '../../context/types.js';
|
|
4
4
|
import { type FunctionComponent, type PropsWithChildren, type ComponentType } from 'react';
|
|
5
|
+
import { type ContentLink } from '@remkoj/optimizely-graph-client';
|
|
6
|
+
export declare function getComponentLabel(componentInstance?: ComponentType | null): string;
|
|
5
7
|
/**
|
|
6
8
|
* Helper function to safely resolve a component from the ContentType information to
|
|
7
9
|
*
|
|
@@ -12,7 +14,9 @@ import { type FunctionComponent, type PropsWithChildren, type ComponentType } fr
|
|
|
12
14
|
*/
|
|
13
15
|
export declare function resolveComponent(contentType: ComponentTypeHandle | null | undefined, prefix: string | null | undefined, variant: string | null | undefined, ctx: GenericContext): EnhancedCmsComponent | ComponentMissingComponent;
|
|
14
16
|
export default resolveComponent;
|
|
15
|
-
export type ComponentMissingComponent = FunctionComponent<PropsWithChildren
|
|
17
|
+
export type ComponentMissingComponent = FunctionComponent<PropsWithChildren<{
|
|
18
|
+
contentLink?: ContentLink;
|
|
19
|
+
}>> & {
|
|
16
20
|
displayName: 'Opti::ComponentMissing';
|
|
17
21
|
};
|
|
18
22
|
export declare function isComponentMissingComponent(toTest: ComponentType<any> | null | undefined): toTest is ComponentMissingComponent;
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import * as Utils from '../../utilities.js';
|
|
3
|
+
export function getComponentLabel(componentInstance) {
|
|
4
|
+
if (!componentInstance)
|
|
5
|
+
return 'n/a';
|
|
6
|
+
if (componentInstance.displayName)
|
|
7
|
+
return componentInstance.displayName;
|
|
8
|
+
if (typeof componentInstance == 'function' && componentInstance.name)
|
|
9
|
+
return componentInstance.name;
|
|
10
|
+
return componentInstance.toString();
|
|
11
|
+
}
|
|
3
12
|
/**
|
|
4
13
|
* Helper function to safely resolve a component from the ContentType information to
|
|
5
14
|
*
|
|
@@ -34,8 +43,10 @@ export function resolveComponent(contentType, prefix, variant, ctx) {
|
|
|
34
43
|
const contentTypeDisplay = Array.isArray(myContentType)
|
|
35
44
|
? myContentType.join('/')
|
|
36
45
|
: myContentType;
|
|
46
|
+
if (isDebug)
|
|
47
|
+
console.warn(`🟠 [CmsContent] Component of type "${contentTypeDisplay}" not resolved by factory`);
|
|
37
48
|
if (isDebug || inEditMode) {
|
|
38
|
-
const ErrorComponent = (
|
|
49
|
+
const ErrorComponent = ({ children, contentLink, }) => (_jsxs(_Fragment, { children: [_jsxs("div", { className: "opti-error", children: ["Component of type \"", contentTypeDisplay, "\" not resolved by factory for", ' ', contentLink?.key ?? '', " version ", contentLink?.version ?? ''] }), children] }));
|
|
39
50
|
ErrorComponent.displayName = 'Opti::ComponentMissing';
|
|
40
51
|
return ErrorComponent;
|
|
41
52
|
}
|
|
@@ -44,6 +55,8 @@ export function resolveComponent(contentType, prefix, variant, ctx) {
|
|
|
44
55
|
return ErrorComponent;
|
|
45
56
|
}
|
|
46
57
|
// Return the component
|
|
58
|
+
if (isDebug)
|
|
59
|
+
console.log('⚪ [CmsContent] Rendering item using component:', getComponentLabel(Component));
|
|
47
60
|
return Component;
|
|
48
61
|
}
|
|
49
62
|
export default resolveComponent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-component.js","sourceRoot":"","sources":["../../../src/components/cms-content/resolve-component.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"resolve-component.js","sourceRoot":"","sources":["../../../src/components/cms-content/resolve-component.tsx"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,7 @@ contentType, contentTypePrefix, contentLink: rawContentLink, children, fragmentD
|
|
|
47
47
|
// Retrieve the Component used to render this item
|
|
48
48
|
const Component = resolveComponent(myContentType, contentTypePrefix, variant, ctx);
|
|
49
49
|
if (isComponentMissingComponent(Component))
|
|
50
|
-
return _jsx(Component, {});
|
|
50
|
+
return _jsx(Component, { contentLink: contentLink });
|
|
51
51
|
// Ensure we have the data the Component requested
|
|
52
52
|
const data = await getContent(graphClient, contentLink, Component, fragmentData, noDataLoad);
|
|
53
53
|
// Output the actual component
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsc.js","sourceRoot":"","sources":["../../../src/components/cms-content/rsc.tsx"],"names":[],"mappings":";AAEA,OAAO,cAAc,MAAM,uBAAuB,CAAA;AAClD,OAAO,UAAU,MAAM,kBAAkB,CAAA;AACzC,OAAO,EACL,QAAQ,EACR,oBAAoB,GAGrB,MAAM,iCAAiC,CAAA;AACxC,OAAO,gBAAgB,EAAE,EACvB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,kBAAkB,MAAM,2BAA2B,CAAA;AAI1D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAuB;AACrD,iBAAiB;AACjB,WAAW,EACX,iBAAiB,EACjB,WAAW,EAAE,cAAc,EAC3B,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,UAAU,EACV,OAAO,EACP,GAAG,GAC8B;IACjC,kBAAkB;IAClB,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAA;IAE9B,4BAA4B;IAC5B,MAAM,WAAW,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;IAExD,iCAAiC;IACjC,IAAI,aAAa,GAAG,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IACjE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CACX,kFAAkF,CACnF,CAAA;YACD,OAAM;QACR,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CACX,uEAAuE,CACxE,CAAA;YACD,OAAM;QACR,CAAC;QACD,aAAa,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAChE,CAAC;IAED,qCAAqC;IACrC,IAAI,WAAW,EAAE,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU;YACzB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,GAAG,CAAC,aAAa;gBACjB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,QAAQ,CAAA;QACd;;WAEG;QACH,IACE,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,aAAa,CAAC;YACrC,WAAW,CAAC,eAAe,IAAI,QAAQ,CAAC,MAAM;YAE9C,OAAO,CAAC,IAAI,CACV,mBAAmB,IAAI,iIAAiI,CACzJ,CAAA;IACL,CAAC;IAED,kDAAkD;IAClD,MAAM,SAAS,GAAG,gBAAgB,CAChC,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,GAAG,CACJ,CAAA;IACD,IAAI,2BAA2B,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"rsc.js","sourceRoot":"","sources":["../../../src/components/cms-content/rsc.tsx"],"names":[],"mappings":";AAEA,OAAO,cAAc,MAAM,uBAAuB,CAAA;AAClD,OAAO,UAAU,MAAM,kBAAkB,CAAA;AACzC,OAAO,EACL,QAAQ,EACR,oBAAoB,GAGrB,MAAM,iCAAiC,CAAA;AACxC,OAAO,gBAAgB,EAAE,EACvB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,kBAAkB,MAAM,2BAA2B,CAAA;AAI1D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAuB;AACrD,iBAAiB;AACjB,WAAW,EACX,iBAAiB,EACjB,WAAW,EAAE,cAAc,EAC3B,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,UAAU,EACV,OAAO,EACP,GAAG,GAC8B;IACjC,kBAAkB;IAClB,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAA;IAE9B,4BAA4B;IAC5B,MAAM,WAAW,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;IAExD,iCAAiC;IACjC,IAAI,aAAa,GAAG,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IACjE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CACX,kFAAkF,CACnF,CAAA;YACD,OAAM;QACR,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CACX,uEAAuE,CACxE,CAAA;YACD,OAAM;QACR,CAAC;QACD,aAAa,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAChE,CAAC;IAED,qCAAqC;IACrC,IAAI,WAAW,EAAE,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU;YACzB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,GAAG,CAAC,aAAa;gBACjB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,QAAQ,CAAA;QACd;;WAEG;QACH,IACE,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,aAAa,CAAC;YACrC,WAAW,CAAC,eAAe,IAAI,QAAQ,CAAC,MAAM;YAE9C,OAAO,CAAC,IAAI,CACV,mBAAmB,IAAI,iIAAiI,CACzJ,CAAA;IACL,CAAC;IAED,kDAAkD;IAClD,MAAM,SAAS,GAAG,gBAAgB,CAChC,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,GAAG,CACJ,CAAA;IACD,IAAI,2BAA2B,CAAC,SAAS,CAAC;QACxC,OAAO,KAAC,SAAS,IAAC,WAAW,EAAE,WAA0B,GAAI,CAAA;IAE/D,kDAAkD;IAClD,MAAM,IAAI,GAAG,MAAM,UAAU,CAC3B,WAAW,EACX,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,CACX,CAAA;IAED,8BAA8B;IAC9B,OAAO,CACL,KAAC,SAAS,IACR,WAAW,EAAE,WAA0B,EACvC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,GAAG,CAAC,UAAU,EAC1B,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,GAAG,YAEP,QAAQ,GACC,CACb,CAAA;AACH,CAAC;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type ComponentType } from
|
|
2
|
-
import { type CmsContentComponent, type PropsWithCmsContent } from
|
|
1
|
+
import { type ComponentType } from 'react';
|
|
2
|
+
import { type CmsContentComponent, type PropsWithCmsContent } from './types.js';
|
|
3
3
|
export declare function cmsContentAware<P = any>(component: ComponentType<PropsWithCmsContent<P>>, cmsContentComponent: CmsContentComponent): ComponentType<P>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
export function cmsContentAware(component, cmsContentComponent) {
|
|
3
3
|
const BaseComponent = component;
|
|
4
|
-
return (props) => _jsx(BaseComponent, { cmsContent: cmsContentComponent, ...props });
|
|
4
|
+
return (props) => (_jsx(BaseComponent, { cmsContent: cmsContentComponent, ...props }));
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/cms-content/utils.tsx"],"names":[],"mappings":";AAGA,MAAM,UAAU,eAAe,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/cms-content/utils.tsx"],"names":[],"mappings":";AAGA,MAAM,UAAU,eAAe,CAC7B,SAAgD,EAChD,mBAAwC;IAExC,MAAM,aAAa,GAAG,SAAS,CAAA;IAC/B,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,CACnB,KAAC,aAAa,IAAC,UAAU,EAAE,mBAAmB,KAAM,KAAK,GAAI,CAC9D,CAAA;AACH,CAAC"}
|
|
@@ -23,6 +23,16 @@ export declare function createHtmlComponent<E extends keyof JSX.IntrinsicElement
|
|
|
23
23
|
export declare const DefaultTextNode: FunctionComponent<PropsWithOptionalContext<{
|
|
24
24
|
node: TextNode;
|
|
25
25
|
}>>;
|
|
26
|
+
/**
|
|
27
|
+
* Default component for Rich Text elements that should not be part of the HTML fragment
|
|
28
|
+
* and should not be rendered if they are.
|
|
29
|
+
*
|
|
30
|
+
* @param param0 The component parameters
|
|
31
|
+
* @returns The children, if any
|
|
32
|
+
*/
|
|
33
|
+
export declare const DefaultNoRenderNode: FunctionComponent<PropsWithOptionalContext<PropsWithChildren<{
|
|
34
|
+
node: TypedNode;
|
|
35
|
+
}>>>;
|
|
26
36
|
/**
|
|
27
37
|
* A default component dictionary that allows to serialize the structured HTML
|
|
28
38
|
* into React, using the component library shared across the react SDK.
|
|
@@ -60,6 +60,19 @@ export const DefaultTextNode = ({ ctx, node }) => {
|
|
|
60
60
|
console.warn('🟠 [Rich Text] Text node with unsupported additional properties:', unsupportedProps.join(', '));
|
|
61
61
|
return decodeHTML(node.text);
|
|
62
62
|
};
|
|
63
|
+
/**
|
|
64
|
+
* Default component for Rich Text elements that should not be part of the HTML fragment
|
|
65
|
+
* and should not be rendered if they are.
|
|
66
|
+
*
|
|
67
|
+
* @param param0 The component parameters
|
|
68
|
+
* @returns The children, if any
|
|
69
|
+
*/
|
|
70
|
+
export const DefaultNoRenderNode = ({ children, ctx, node }) => {
|
|
71
|
+
if (ctx?.isDebugOrDevelopment) {
|
|
72
|
+
console.warn(`🟠 [Rich Text] Not rendering ${node.type} to prevent React/JSX errors`);
|
|
73
|
+
}
|
|
74
|
+
return children;
|
|
75
|
+
};
|
|
63
76
|
/**
|
|
64
77
|
* A default component dictionary that allows to serialize the structured HTML
|
|
65
78
|
* into React, using the component library shared across the react SDK.
|
|
@@ -73,6 +86,12 @@ export const DefaultComponents = [
|
|
|
73
86
|
}),
|
|
74
87
|
},
|
|
75
88
|
{ type: 'RichText/text', component: DefaultTextNode },
|
|
89
|
+
// Catch elements that should not be in the content
|
|
90
|
+
{ type: 'RichText/html', component: DefaultNoRenderNode },
|
|
91
|
+
{ type: 'RichText/head', component: DefaultNoRenderNode },
|
|
92
|
+
{ type: 'RichText/meta', component: DefaultNoRenderNode },
|
|
93
|
+
{ type: 'RichText/title', component: DefaultNoRenderNode },
|
|
94
|
+
{ type: 'RichText/body', component: DefaultNoRenderNode },
|
|
76
95
|
// Aliased tags
|
|
77
96
|
{ type: 'RichText/paragraph', component: createHtmlComponent('p') },
|
|
78
97
|
{ type: 'RichText/heading-one', component: createHtmlComponent('h1') },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../src/components/rich-text/components.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../../src/components/rich-text/components.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,mBAAmB;AACnB,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;AAE9E,yBAAyB;AACzB;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAU,EACV,iBAA0B,KAAK,EAC/B,YAAgE;IAEhE,MAAM,WAAW,GAAG,OAAiB,CAAA;IACrC,MAAM,SAAS,GAAG,CAAC,EACjB,QAAQ,EACR,IAAI,EACJ,GAAG,EACH,GAAG,KAAK,EAGT,EAAE,EAAE;QACH,MAAM,SAAS,GAA8C,EAAE,CAAA;QAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAElD,CAAA;QAED,+BAA+B;QAC/B,WAAW;aACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACzC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE3C,qDAAqD;QACrD,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;QAEzE,cAAc;QACd,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,MAAM;oBACT,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;oBAC/B,MAAK;gBACP,KAAK,OAAO,CAAC;gBACb,KAAK,OAAO;oBACV,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;oBAC9B,MAAK;gBACP;oBACE,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;oBACnC,MAAK;YACT,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,OAAO,cAAc,CAAC,CAAC,CAAC,CACtB,KAAC,WAAW,OAAK,YAAY,KAAM,SAAS,KAAM,KAAK,GAAI,CAC5D,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,OAAK,YAAY,KAAM,SAAS,KAAM,KAAK,YACpD,QAAQ,GACG,CACf,CAAA;IACH,CAAC,CAAA;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAExB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;IACpB,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,2BAAS,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAU,CAAA;IAC9D,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,uBAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAM,CAAA;IACxD,MAAM,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,CAC9D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CACnB,CAAA;IACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,oBAAoB;QAC1D,OAAO,CAAC,IAAI,CACV,kEAAkE,EAClE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5B,CAAA;IACH,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAE5B,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;IAC9B,IAAI,GAAG,EAAE,oBAAoB,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CACV,gCAAgC,IAAI,CAAC,IAAI,8BAA8B,CACxE,CAAA;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA4B;IACxD,eAAe;IACf;QACE,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE;YAC3C,SAAS,EAAE,eAAe;SAC3B,CAAC;KACH;IACD,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE;IAErD,mDAAmD;IACnD,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE;IACzD,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE;IACzD,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE;IACzD,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,EAAE;IAC1D,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE;IAEzD,eAAe;IACf,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE;IACnE,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE;IACtE,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE;IACtE,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE;IACxE,EAAE,IAAI,EAAE,uBAAuB,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE;IACvE,EAAE,IAAI,EAAE,uBAAuB,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE;IACvE,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE;IACtE,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE;IAC9D,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE;IACxE,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE;IACxE,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE;IACpE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;IAEvE,oBAAoB;IACpB,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;CACpE,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
import { type PropsWithContext } from '../../context/types.js';
|
|
1
|
+
import type { RichTextImplProps } from './types.js';
|
|
2
|
+
import type { ElementWithChildrenType } from '../type-utils.js';
|
|
4
3
|
export * from './types.js';
|
|
5
|
-
export declare const RichText:
|
|
4
|
+
export declare const RichText: <ET extends ElementWithChildrenType>({ factory, text, className, as: Wrapper, debug, noWrapper, cmsFieldName, cmsId, ctx, children, ...props }: RichTextImplProps<ET>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,27 +4,33 @@ import { DefaultComponentFactory } from '../../factory/default.js';
|
|
|
4
4
|
import { DefaultComponents, DefaultTextNode, createHtmlComponent, } from './components.js';
|
|
5
5
|
import { CmsEditable } from '../cms-editable/index.js';
|
|
6
6
|
export * from './types.js';
|
|
7
|
-
export const RichText = ({ factory, text = '{ "type": "richText" }', className = 'rich-text', as: Wrapper = 'div', debug = false, noWrapper = false, cmsFieldName = null, cmsId = null, ctx, ...props }) => {
|
|
7
|
+
export const RichText = ({ factory, text = '{ "type": "richText" }', className = 'rich-text', as: Wrapper = 'div', debug = false, noWrapper = false, cmsFieldName = null, cmsId = null, ctx, children, ...props }) => {
|
|
8
8
|
const id = Utils.getRandomId('rich-text');
|
|
9
9
|
const richTextFactory = ctx.factory ?? factory ?? new DefaultComponentFactory(DefaultComponents);
|
|
10
|
+
const isDebug = ctx.isDebug || debug;
|
|
10
11
|
try {
|
|
11
12
|
const data = Utils.processNodeInput(text);
|
|
12
|
-
const textContent =
|
|
13
|
+
const textContent = data?.children?.map((child, idx) => {
|
|
13
14
|
const elementId = id + '::' + idx;
|
|
14
15
|
return (_jsx(RichTextElement, { factory: richTextFactory, node: child, idPrefix: elementId + '::', ctx: ctx }, elementId));
|
|
15
|
-
});
|
|
16
|
-
if (
|
|
16
|
+
}) || children;
|
|
17
|
+
if (cmsId || cmsFieldName)
|
|
18
|
+
return (_jsx(CmsEditable, { as: (Wrapper ?? 'div'), className: className, cmsId: cmsId || undefined, cmsFieldName: cmsFieldName || undefined, ctx: ctx, ...props, children: textContent }));
|
|
19
|
+
if (noWrapper || !Wrapper)
|
|
17
20
|
return _jsx(_Fragment, { children: textContent });
|
|
18
|
-
return (
|
|
21
|
+
return (
|
|
22
|
+
//@ts-expect-error
|
|
23
|
+
_jsx(Wrapper, { className: className, ...props, children: textContent }));
|
|
19
24
|
}
|
|
20
25
|
catch {
|
|
21
|
-
if (
|
|
26
|
+
if (isDebug)
|
|
22
27
|
console.warn('🟠 [Rich Text] Invalid rich text received: ', text);
|
|
23
|
-
return Object.getOwnPropertyNames(props).length > 0 ? (_jsx("div", { className: className, ...props })) :
|
|
28
|
+
return Object.getOwnPropertyNames(props).length > 0 ? (_jsx("div", { className: className, ...props, children: children })) : (_jsx(_Fragment, { children: children }));
|
|
24
29
|
}
|
|
25
30
|
};
|
|
26
31
|
//#region Supportive React components
|
|
27
32
|
const RichTextElement = ({ factory, node, idPrefix, debug, ctx }) => {
|
|
33
|
+
const isDebug = ctx.isDebug || debug;
|
|
28
34
|
// Render text
|
|
29
35
|
if (Utils.isText(node)) {
|
|
30
36
|
if (node.text.length == 0)
|
|
@@ -34,7 +40,7 @@ const RichTextElement = ({ factory, node, idPrefix, debug, ctx }) => {
|
|
|
34
40
|
}
|
|
35
41
|
// Ignore incorrect data
|
|
36
42
|
if (!Utils.isTypedNode(node)) {
|
|
37
|
-
if (
|
|
43
|
+
if (isDebug)
|
|
38
44
|
console.warn('🟠 [Rich Text] Invalid rich text element data received:', node);
|
|
39
45
|
return null;
|
|
40
46
|
}
|
|
@@ -48,7 +54,7 @@ const RichTextElement = ({ factory, node, idPrefix, debug, ctx }) => {
|
|
|
48
54
|
// Resolve component (and add to factory if not yet present)
|
|
49
55
|
let Component = factory?.resolve(`RichText/${node.type}`);
|
|
50
56
|
if (!Component) {
|
|
51
|
-
if (
|
|
57
|
+
if (isDebug)
|
|
52
58
|
console.warn(`🟠 [Rich Text] No renderer for node type, using and registering HtmlComponent for "${node.type}": RichText/${node.type}`);
|
|
53
59
|
Component = createHtmlComponent(node.type);
|
|
54
60
|
factory?.register(`RichText/${node.type}`, Component);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/rich-text/index.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/rich-text/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FunctionComponent } from "react";
|
|
2
2
|
import type { ComponentFactory } from "../../factory/types.js";
|
|
3
|
-
import type { PropsWithOptionalContext } from "../../context/types.js";
|
|
4
|
-
import type {
|
|
5
|
-
export type RichTextProps = {
|
|
3
|
+
import type { PropsWithOptionalContext, PropsWithContext } from "../../context/types.js";
|
|
4
|
+
import type { ElementProps, ElementWithChildrenType } from "../type-utils.js";
|
|
5
|
+
export type RichTextProps<ET extends ElementWithChildrenType> = {
|
|
6
6
|
/**
|
|
7
7
|
* The component factory used for this rich text content
|
|
8
8
|
*
|
|
@@ -22,9 +22,11 @@ export type RichTextProps = {
|
|
|
22
22
|
* Set the component type of the wrapper to use, defaults to a 'div'
|
|
23
23
|
* element when not defined
|
|
24
24
|
*/
|
|
25
|
-
as?:
|
|
25
|
+
as?: ET | null;
|
|
26
26
|
/**
|
|
27
27
|
* Control the debugging output
|
|
28
|
+
*
|
|
29
|
+
* @deprecated The debug value from the context will be used
|
|
28
30
|
*/
|
|
29
31
|
debug?: boolean;
|
|
30
32
|
/**
|
|
@@ -41,7 +43,8 @@ export type RichTextProps = {
|
|
|
41
43
|
*/
|
|
42
44
|
cmsId?: string | null;
|
|
43
45
|
};
|
|
44
|
-
export type RichTextComponent =
|
|
46
|
+
export type RichTextComponent = <ET extends ElementWithChildrenType>(props: PropsWithOptionalContext<RichTextProps<ET>>) => ReturnType<FunctionComponent>;
|
|
47
|
+
export type RichTextImplProps<ET extends ElementWithChildrenType> = PropsWithContext<RichTextProps<ET> & Omit<ElementProps<ET>, keyof RichTextProps<ET>>>;
|
|
45
48
|
export type RichTextElementProps = Readonly<{
|
|
46
49
|
debug?: boolean;
|
|
47
50
|
factory?: ComponentFactory;
|
|
@@ -1,4 +1,23 @@
|
|
|
1
|
-
import { GenericContext } from "../rsc.js";
|
|
1
|
+
import type { GenericContext } from "../rsc.js";
|
|
2
|
+
import type { PropsWithChildren } from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Define an element as a React Component, React ExoticComponent or string name
|
|
5
|
+
* representing a HTML Element (e.g. "div", "a", etc...), this value can be used
|
|
6
|
+
* as first argument of React.createElement()
|
|
7
|
+
*/
|
|
8
|
+
export type ElementType = (React.ComponentType<any>) | (React.ExoticComponent<any>) | (keyof JSX.IntrinsicElements);
|
|
9
|
+
/**
|
|
10
|
+
* Define an element as a React Component, React ExoticComponent or string name
|
|
11
|
+
* representing a HTML Element (e.g. "div", "a", etc...), this value can be used
|
|
12
|
+
* as first argument of React.createElement()
|
|
13
|
+
*
|
|
14
|
+
* The type must support children
|
|
15
|
+
*/
|
|
16
|
+
export type ElementWithChildrenType = React.ComponentType<PropsWithChildren> | React.ExoticComponent<PropsWithChildren> | keyof Omit<JSX.IntrinsicElements, 'meta' | 'img' | 'video' | 'audio'>;
|
|
17
|
+
/**
|
|
18
|
+
* The properties type of an ElementType
|
|
19
|
+
*/
|
|
20
|
+
export type ElementProps<T extends ElementType> = T extends keyof JSX.IntrinsicElements ? React.HTMLProps<JSX.IntrinsicElements[T]> : React.ComponentProps<T>;
|
|
2
21
|
/**
|
|
3
22
|
* Tests if K is a property of T - if so: it is the type of
|
|
4
23
|
* T[K]; if not: it is equal to never
|
|
@@ -13,10 +32,6 @@ export type TypeIfPropExists<T extends ElementType, K, U> = K extends keyof Elem
|
|
|
13
32
|
* Defines the type to be T or an array of T
|
|
14
33
|
*/
|
|
15
34
|
export type MayBeArray<T> = T | T[];
|
|
16
|
-
/**
|
|
17
|
-
* The properties type of an ElementType
|
|
18
|
-
*/
|
|
19
|
-
export type ElementProps<T extends ElementType> = T extends keyof JSX.IntrinsicElements ? React.HTMLProps<JSX.IntrinsicElements[T]> : React.ComponentProps<T>;
|
|
20
35
|
/**
|
|
21
36
|
* The union of property names of an Element that may receive child elements
|
|
22
37
|
*/
|
|
@@ -26,12 +41,6 @@ export type ElementChildrenProps<T extends ElementType> = keyof {
|
|
|
26
41
|
export type GenericContextProps<T extends ElementType> = keyof {
|
|
27
42
|
[P in keyof ElementProps<T> as GenericContext extends ElementProps<T>[P] ? P : never]: ElementProps<T>[P];
|
|
28
43
|
};
|
|
29
|
-
/**
|
|
30
|
-
* Define an element as a React Component, React ExoticComponent or string name
|
|
31
|
-
* representing a HTML Element (e.g. "div", "a", etc...), this value can be used
|
|
32
|
-
* as first argument of React.createElement()
|
|
33
|
-
*/
|
|
34
|
-
export type ElementType = (React.ComponentType<any>) | (React.ExoticComponent<any>) | (keyof JSX.IntrinsicElements);
|
|
35
44
|
/**
|
|
36
45
|
* Reserved Element properties that may not be passed to CmsContentArea wrappers, as these are auto-injected
|
|
37
46
|
*/
|
|
@@ -47,9 +47,10 @@ export const defaultPropsFactory = (node) => {
|
|
|
47
47
|
if (!isContentType(contentType))
|
|
48
48
|
throw new Error("Invalid content type: " + JSON.stringify(contentType));
|
|
49
49
|
const contentLink = {
|
|
50
|
-
key: node.key || node.
|
|
50
|
+
key: node.component?._metadata?.key || node.key || undefined,
|
|
51
51
|
version: node.component?._metadata?.version,
|
|
52
|
-
locale: node.component?._metadata?.locale
|
|
52
|
+
locale: node.component?._metadata?.locale,
|
|
53
|
+
isInline: node.component?._metadata?.key ? false : true
|
|
53
54
|
};
|
|
54
55
|
if (!(isContentLink(contentLink) || isInlineContentLink(contentLink)))
|
|
55
56
|
throw new Error("Invalid content link: " + JSON.stringify(contentLink));
|
|
@@ -57,7 +58,7 @@ export const defaultPropsFactory = (node) => {
|
|
|
57
58
|
type: node.type,
|
|
58
59
|
layoutType: node.layoutType,
|
|
59
60
|
template: node.template,
|
|
60
|
-
settings: node.settings
|
|
61
|
+
settings: node.settings,
|
|
61
62
|
};
|
|
62
63
|
return [contentLink, contentType, node.component, layoutData];
|
|
63
64
|
};
|
|
@@ -76,8 +77,8 @@ export const defaultNodePropsFactory = (node) => {
|
|
|
76
77
|
["Node", "Content"],
|
|
77
78
|
["Node", "Component", "Content"]
|
|
78
79
|
].filter(x => x);
|
|
79
|
-
const contentLink = { key: node.key ?? '' };
|
|
80
|
-
const componentData = {};
|
|
80
|
+
const contentLink = { key: node.key ?? '', isInline: true };
|
|
81
|
+
const componentData = { __name: node.name };
|
|
81
82
|
const layoutData = {
|
|
82
83
|
type: node.type,
|
|
83
84
|
layoutType: node.layoutType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/components/visual-builder/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAyB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/components/visual-builder/functions.ts"],"names":[],"mappings":"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"}
|
package/dist/components.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* deprecated, use either `@remkoj/optimizely-cms-react` or
|
|
7
7
|
* `@remkoj/optimizely-cms-react/rsc`, dependingn on your context
|
|
8
8
|
*/
|
|
9
|
-
export declare const RichText: import("react").ComponentType<import("./rsc.js").PropsWithOptionalContext<Omit<import("./
|
|
9
|
+
export declare const RichText: import("react").ComponentType<import("./rsc.js").PropsWithOptionalContext<Omit<import("./components/rich-text/types.js").RichTextImplProps<import("./components/type-utils.js").ElementWithChildrenType>, "ctx">>>;
|
|
10
10
|
/**
|
|
11
11
|
* @deprecated The `@remkoj/optimizely-cms-react/components` export has been deprecated
|
|
12
12
|
*/
|
package/dist/types.d.ts
CHANGED
|
@@ -39,6 +39,7 @@ export type ContentQueryProps<LocaleType = string> = ContentLink & {
|
|
|
39
39
|
locale?: Array<LocaleType> | LocaleType | null;
|
|
40
40
|
path?: string | null;
|
|
41
41
|
domain?: string | null;
|
|
42
|
+
changeset?: string | null;
|
|
42
43
|
};
|
|
43
44
|
/**
|
|
44
45
|
* Extract the data type from a GraphQL Query
|
|
@@ -47,7 +48,7 @@ export type ResponseDataType<T extends DocumentNode> = T extends TypedDocumentNo
|
|
|
47
48
|
[key: string]: any;
|
|
48
49
|
};
|
|
49
50
|
export type GetDataQuery<T> = () => TypedDocumentNode<T, ContentQueryProps> | DocumentNode;
|
|
50
|
-
export type GetDataFragment<T> = () => [string, TypedDocumentNode<T, never> | DocumentNode];
|
|
51
|
+
export type GetDataFragment<T> = () => [string, TypedDocumentNode<T, never> | DocumentNode | string];
|
|
51
52
|
export type WithGqlFragment<BaseComponent, DataType> = BaseComponent & {
|
|
52
53
|
getDataFragment: GetDataFragment<DataType>;
|
|
53
54
|
validateFragment?: (data: any) => data is DataType;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remkoj/optimizely-cms-react",
|
|
3
3
|
"license": "Apache-2.0",
|
|
4
|
-
"version": "5.0
|
|
4
|
+
"version": "5.1.0",
|
|
5
5
|
"repository": "https://github.com/remkoj/optimizely-dxp-clients.git",
|
|
6
6
|
"author": "Remko Jantzen <693172+remkoj@users.noreply.github.com>",
|
|
7
7
|
"homepage": "https://github.com/remkoj/optimizely-dxp-clients/tree/main/packages/optimizely-cms-react",
|
|
@@ -27,18 +27,18 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@remkoj/optimizely-graph-client": "5.0
|
|
30
|
+
"@remkoj/optimizely-graph-client": "5.1.0",
|
|
31
31
|
"@types/crypto-js": "^4.2.2",
|
|
32
|
-
"@types/node": "^22.
|
|
33
|
-
"@types/react": "^18.3.
|
|
34
|
-
"@types/react-dom": "18.3.
|
|
35
|
-
"entities": "^6.0.
|
|
36
|
-
"graphql": "^16.
|
|
32
|
+
"@types/node": "^22.16.0",
|
|
33
|
+
"@types/react": "^18.3.23",
|
|
34
|
+
"@types/react-dom": "18.3.7",
|
|
35
|
+
"entities": "^6.0.1",
|
|
36
|
+
"graphql": "^16.11.0",
|
|
37
37
|
"graphql-request": "^6.1.0",
|
|
38
38
|
"prop-types": "^15.8.1",
|
|
39
39
|
"react": "^18.3.1",
|
|
40
40
|
"react-dom": "^18.3.1",
|
|
41
|
-
"scheduler": "^0.
|
|
41
|
+
"scheduler": "^0.26.0",
|
|
42
42
|
"typescript": "^5.8.3"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|