Skip to content

Commit ada3aaa

Browse files
Allow configuring of MakeCode URL for render blocks (#9)
so that we can plug in a different renderer. This aligns with MakeCodeFrame component props which allows for baseUrl configuration.
1 parent e379b59 commit ada3aaa

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
lines changed

src/react/MakeCodeRenderBlocksProvider.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const MakeCodeRenderBlocksProvider = ({
1414
disabled,
1515
version,
1616
lang,
17+
baseUrl,
1718
children,
1819
}: {
1920
/**
@@ -28,11 +29,15 @@ export const MakeCodeRenderBlocksProvider = ({
2829
* MakeCode language code.
2930
*/
3031
lang?: string;
32+
/**
33+
* MakeCode base URL for renderer.
34+
*/
35+
baseUrl?: string;
3136
children: ReactNode;
3237
}) => {
3338
const options = useMemo(() => {
34-
return { disabled, version, lang };
35-
}, [disabled, lang, version]);
39+
return { disabled, version, lang, baseUrl };
40+
}, [disabled, lang, version, baseUrl]);
3641
const value = useMakeCodeRenderBlocks(options);
3742
return (
3843
<MakeCodeRenderBlocksContext.Provider value={value}>

src/react/useMakeCodeRenderBlocks.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ export interface UseMakeCodeRenderBlocksReturn {
1414
const useMakeCodeRenderBlocks = (
1515
options: MakeCodeRenderBlocksOptions
1616
): UseMakeCodeRenderBlocksReturn => {
17-
const { disabled, lang, version } = options;
17+
const { disabled, lang, version, baseUrl } = options;
1818
const memoizedOptions = useMemo(() => {
19-
return { disabled, lang, version };
20-
}, [disabled, lang, version]);
19+
return { disabled, lang, version, baseUrl };
20+
}, [disabled, lang, version, baseUrl]);
2121
const returnValue = useMemo<MakeCodeRenderBlocksReturn>(
2222
() => createMakeCodeRenderBlocks(memoizedOptions),
2323
[memoizedOptions]

src/vanilla/makecode-render-blocks.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface MakeCodeRenderBlocksOptions {
1313
disabled?: boolean;
1414
version?: string;
1515
lang?: string;
16+
baseUrl?: string;
1617
}
1718

1819
export interface MakeCodeRenderBlocksReturn {
@@ -86,7 +87,7 @@ export const createMakeCodeRenderBlocks = (
8687
const defaultedOptions: MakeCodeRenderBlocksOptions = {
8788
...options,
8889
};
89-
const makecodeOrigin = 'https://makecode.microbit.org';
90+
const makecodeOrigin = options.baseUrl ?? 'https://makecode.microbit.org';
9091

9192
let iframe: HTMLIFrameElement | undefined;
9293
let status: MakeCodeState = 'loading';
@@ -290,11 +291,12 @@ function defaultPackageFromDependencies(
290291

291292
function createIframe(
292293
makecodeOrigin: string,
293-
{ lang, version }: MakeCodeRenderBlocksOptions
294+
{ lang, version, baseUrl }: MakeCodeRenderBlocksOptions
294295
): HTMLIFrameElement {
295296
const query = `?render=1${lang ? `&lang=${encodeURIComponent(lang)}` : ''}`;
296-
const src =
297-
[makecodeOrigin, version, '--docs'].filter(Boolean).join('/') + query;
297+
const src = baseUrl
298+
? makecodeOrigin + query
299+
: [makecodeOrigin, version, '--docs'].filter(Boolean).join('/') + query;
298300
const f = document.createElement('iframe');
299301
f.style.position = 'absolute';
300302
f.style.width = '1px';

0 commit comments

Comments
 (0)