-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakeCodeRenderBlocksProvider.tsx
More file actions
50 lines (47 loc) · 1.19 KB
/
MakeCodeRenderBlocksProvider.tsx
File metadata and controls
50 lines (47 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
import { ReactNode, createContext, useContext, useMemo } from 'react';
import useMakeCodeRenderBlocks, {
UseMakeCodeRenderBlocksReturn,
} from './useMakeCodeRenderBlocks.js';
const MakeCodeRenderBlocksContext =
createContext<UseMakeCodeRenderBlocksReturn>({
renderBlocks: () => {
throw new Error('Configure MakeCodeRenderBlocksProvider.');
},
});
export const MakeCodeRenderBlocksProvider = ({
disabled,
version,
lang,
baseUrl,
children,
}: {
/**
* This can be used to disable loading MakeCode in scenarios where it will be unused.
*/
disabled?: boolean;
/**
* MakeCode version.
*/
version?: string;
/**
* MakeCode language code.
*/
lang?: string;
/**
* MakeCode base URL for renderer.
*/
baseUrl?: string;
children: ReactNode;
}) => {
const options = useMemo(() => {
return { disabled, version, lang, baseUrl };
}, [disabled, lang, version, baseUrl]);
const value = useMakeCodeRenderBlocks(options);
return (
<MakeCodeRenderBlocksContext.Provider value={value}>
{children}
</MakeCodeRenderBlocksContext.Provider>
);
};
export const useMakeCodeRenderBlocksContext = () =>
useContext(MakeCodeRenderBlocksContext);