-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmakecode-render-blocks.stories.tsx
More file actions
94 lines (81 loc) · 2.06 KB
/
makecode-render-blocks.stories.tsx
File metadata and controls
94 lines (81 loc) · 2.06 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import { Meta, StoryObj } from '@storybook/react';
import {
createMakeCodeRenderBlocks,
MakeCodeRenderBlocksOptions,
} from '../../vanilla/makecode-render-blocks.js';
import {
initialProject,
project,
projectWithCustomBlock,
projectWithDatalogging,
projectWithExtensionBlock,
projectWithLayout,
projectWithMelody,
projectWithTwoExtensions,
} from '../fixtures.js';
import { MakeCodeProject } from '../../vanilla/pxt.js';
import StoryWrapper from '../StoryWrapper.js';
interface StoryArgs {
options: MakeCodeRenderBlocksOptions | undefined;
project: MakeCodeProject;
}
const meta: Meta<StoryArgs> = {
title: 'stories/VanillaJS/createMakeCodeRenderBlocks',
};
export default meta;
type Story = StoryObj<StoryArgs>;
const renderBlocks = (args: StoryArgs) => {
const cbRef = (e: HTMLElement | null) => {
if (!e) {
return;
}
const renderer = createMakeCodeRenderBlocks(args.options ?? {});
renderer.initialize();
renderer.renderBlocks({ code: args.project }).then((r) => {
if (r.svg) {
e.innerHTML = `
<div>
${r.svg}
</div>
`;
}
});
};
return (
<StoryWrapper>
<div ref={cbRef}>Loading...</div>
</StoryWrapper>
);
};
export const Simple: Story = {
render: renderBlocks,
args: { project: project },
};
export const XML: Story = {
render: renderBlocks,
args: { project: projectWithLayout },
};
export const Melody: Story = {
render: renderBlocks,
args: { project: projectWithMelody },
};
export const ExtensionBlockSingle: Story = {
render: renderBlocks,
args: { project: projectWithExtensionBlock },
};
export const ExtensionBlockTwo: Story = {
render: renderBlocks,
args: { project: projectWithTwoExtensions },
};
export const ExtensionBlockDatalogging: Story = {
render: renderBlocks,
args: { project: projectWithDatalogging },
};
export const CustomBlock: Story = {
render: renderBlocks,
args: { project: projectWithCustomBlock },
};
export const InitialBlankProject: Story = {
render: renderBlocks,
args: { project: initialProject },
};