Skip to content

Commit d6dcff8

Browse files
authored
Merge pull request #218 from CrystallizeAPI/feature/content-transformer-no-context
Drop context, use prop drilling
2 parents 9a07339 + 4b2c006 commit d6dcff8

File tree

2 files changed

+8
-16
lines changed

2 files changed

+8
-16
lines changed

src/content-transformer/component.tsx

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
'use client';
2-
3-
import { Fragment, createContext, useContext } from 'react';
1+
import { Fragment } from 'react';
42
import { NodeProps, Overrides } from './types';
53
export { NodeProps, Overrides };
64

@@ -154,8 +152,6 @@ export interface Props {
154152
json?: NodeProps[] | NodeProps;
155153
}
156154

157-
export const OverridesContext = createContext<Overrides | null>(null);
158-
159155
export const NodeContent = (props: NodeProps) => {
160156
const { textContent } = props;
161157

@@ -202,9 +198,8 @@ export function renderTextContent(text: String) {
202198

203199
export const ContentTransformerNode = (props: NodeProps): JSX.Element => {
204200
let Renderer = Renderers.span;
205-
const overrides = useContext(OverridesContext);
206201

207-
const { type, kind, textContent } = props;
202+
const { type, kind, textContent, overrides } = props;
208203

209204
if (type) {
210205
const tag = type as keyof typeof Renderers;
@@ -234,19 +229,15 @@ export const ContentTransformer = ({ overrides = null, json }: Props) => {
234229
if (Array.isArray(json)) {
235230
const nodes: NodeProps[] = json;
236231
return (
237-
<OverridesContext.Provider value={overrides}>
232+
<Fragment>
238233
{nodes.map((j, i) => (
239-
<ContentTransformerNode key={i} {...j} />
234+
<ContentTransformerNode key={i} {...j} overrides={overrides} />
240235
))}
241-
</OverridesContext.Provider>
236+
</Fragment>
242237
);
243238
}
244239

245240
const node: NodeProps = json;
246241

247-
return (
248-
<OverridesContext.Provider value={overrides}>
249-
<ContentTransformerNode {...node} />
250-
</OverridesContext.Provider>
251-
);
242+
return <ContentTransformerNode {...node} overrides={overrides} />;
252243
};

src/content-transformer/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ export interface NodeProps {
88
textContent?: string;
99
children?: [NodeProps];
1010
metadata?: NodeMetadata;
11+
overrides?: Overrides | null;
1112
}
1213

13-
export type Override = (props: NodeProps) => JSX.Element;
14+
export type Override = (props: NodeProps) => React.ReactNode;
1415

1516
export interface Overrides {
1617
link?: Override;

0 commit comments

Comments
 (0)