1
1
import { Meta , StoryObj } from '@storybook/react' ;
2
2
import { ReactNode , useState } from 'react' ;
3
3
import MakeCodeBlocksRendering from '../../react/MakeCodeBlocksRendering.js' ;
4
+ import { MakeCodeRenderBlocksProvider } from '../../react/MakeCodeRenderBlocksProvider.js' ;
5
+ import { BlockLayout , Project } from '../../vanilla/pxt.js' ;
4
6
import {
5
7
initialProject ,
6
8
project ,
9
+ projectWithCustomBlock ,
7
10
projectWithDatalogging ,
8
11
projectWithExtensionBlock ,
9
12
projectWithLayout ,
10
- projectWithCustomBlock ,
11
13
projectWithMelody ,
12
14
projectWithTwoExtensions ,
13
15
projectWithUserLayout ,
14
16
strawbeesExample ,
15
17
} from '../fixtures.js' ;
16
- import { MakeCodeRenderBlocksProvider } from '../../react/MakeCodeRenderBlocksProvider.js' ;
17
- import { MakeCodeRenderBlocksOptions } from '../../vanilla/makecode-render-blocks.js' ;
18
- import { BlockLayout , Project } from '../../vanilla/pxt.js' ;
19
18
20
19
const meta : Meta < typeof MakeCodeRenderBlocksProvider > = {
21
20
title : 'stories/React/MakeCodeBlocksRendering' ,
22
21
component : MakeCodeRenderBlocksProvider ,
23
22
argTypes : {
24
- options : {
23
+ version : {
25
24
options : [ 'default' , 'beta' ] ,
26
25
defaultValue : 'default' ,
27
- name : 'version' ,
28
26
control : { type : 'radio' } ,
29
27
} ,
30
28
} ,
@@ -47,23 +45,17 @@ const StoryWrapper = (props: { children: ReactNode }) => (
47
45
</ div >
48
46
) ;
49
47
50
- const getOptionsFromVersion = (
51
- version : string
52
- ) : MakeCodeRenderBlocksOptions => {
53
- const options : MakeCodeRenderBlocksOptions = { } ;
54
- if ( version && version !== 'default' ) {
55
- options [ 'version' ] = version ;
56
- }
57
- return options ;
48
+ const adaptStorybookVersion = (
49
+ version : string | undefined
50
+ ) : string | undefined => {
51
+ return version && version !== 'default' ? version : undefined ;
58
52
} ;
59
53
60
54
export const Simple : Story = {
61
- render : ( args ) => {
62
- const { options : version } = args ;
63
- const options = getOptionsFromVersion ( version as string ) ;
55
+ render : ( { version } ) => {
64
56
return (
65
- < StoryWrapper key = { options . version } >
66
- < MakeCodeRenderBlocksProvider options = { options } >
57
+ < StoryWrapper key = { version } >
58
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
67
59
< MakeCodeBlocksRendering code = { project . text ! [ 'main.ts' ] } />
68
60
</ MakeCodeRenderBlocksProvider >
69
61
</ StoryWrapper >
@@ -72,12 +64,10 @@ export const Simple: Story = {
72
64
} ;
73
65
74
66
export const XML : Story = {
75
- render : ( args ) => {
76
- const { options : version } = args ;
77
- const options = getOptionsFromVersion ( version as string ) ;
67
+ render : ( { version } ) => {
78
68
return (
79
- < StoryWrapper key = { options . version } >
80
- < MakeCodeRenderBlocksProvider options = { options } >
69
+ < StoryWrapper key = { version } >
70
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
81
71
< MakeCodeBlocksRendering code = { projectWithLayout } />
82
72
</ MakeCodeRenderBlocksProvider >
83
73
</ StoryWrapper >
@@ -87,12 +77,10 @@ export const XML: Story = {
87
77
88
78
export const Published : Story = {
89
79
render : ( args ) => {
90
- const { options : version } = args ;
91
- const options = getOptionsFromVersion ( version as string ) ;
92
- console . log ( options ) ;
80
+ const { version } = args ;
93
81
return (
94
- < StoryWrapper key = { options . version } >
95
- < MakeCodeRenderBlocksProvider options = { options } >
82
+ < StoryWrapper key = { version } >
83
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
96
84
< MakeCodeBlocksRendering packageId = "_iHY3J9371HLf" />
97
85
</ MakeCodeRenderBlocksProvider >
98
86
</ StoryWrapper >
@@ -102,11 +90,10 @@ export const Published: Story = {
102
90
103
91
export const Melody : Story = {
104
92
render : ( args ) => {
105
- const { options : version } = args ;
106
- const options = getOptionsFromVersion ( version as string ) ;
93
+ const { version } = args ;
107
94
return (
108
- < StoryWrapper key = { options . version } >
109
- < MakeCodeRenderBlocksProvider options = { options } >
95
+ < StoryWrapper key = { version } >
96
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
110
97
< MakeCodeBlocksRendering code = { projectWithMelody } />
111
98
</ MakeCodeRenderBlocksProvider >
112
99
</ StoryWrapper >
@@ -117,11 +104,10 @@ export const Melody: Story = {
117
104
export const ExtensionBlockSingle : Story = {
118
105
name : 'Extension block (single)' ,
119
106
render : ( args ) => {
120
- const { options : version } = args ;
121
- const options = getOptionsFromVersion ( version as string ) ;
107
+ const { version } = args ;
122
108
return (
123
- < StoryWrapper key = { options . version } >
124
- < MakeCodeRenderBlocksProvider options = { options } >
109
+ < StoryWrapper key = { version } >
110
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
125
111
< MakeCodeBlocksRendering code = { projectWithExtensionBlock } />
126
112
</ MakeCodeRenderBlocksProvider >
127
113
</ StoryWrapper >
@@ -132,11 +118,10 @@ export const ExtensionBlockSingle: Story = {
132
118
export const ExtensionBlockTwo : Story = {
133
119
name : 'Extension block (two different)' ,
134
120
render : ( args ) => {
135
- const { options : version } = args ;
136
- const options = getOptionsFromVersion ( version as string ) ;
121
+ const { version } = args ;
137
122
return (
138
- < StoryWrapper key = { options . version } >
139
- < MakeCodeRenderBlocksProvider options = { options } >
123
+ < StoryWrapper key = { version } >
124
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
140
125
< MakeCodeBlocksRendering code = { projectWithTwoExtensions } />
141
126
</ MakeCodeRenderBlocksProvider >
142
127
</ StoryWrapper >
@@ -147,11 +132,10 @@ export const ExtensionBlockTwo: Story = {
147
132
export const ExtensionBlockStrawbees : Story = {
148
133
name : 'Extension block (Strawbees - spaces in name)' ,
149
134
render : ( args ) => {
150
- const { options : version } = args ;
151
- const options = getOptionsFromVersion ( version as string ) ;
135
+ const { version } = args ;
152
136
return (
153
- < StoryWrapper key = { options . version } >
154
- < MakeCodeRenderBlocksProvider options = { options } >
137
+ < StoryWrapper key = { version } >
138
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
155
139
< MakeCodeBlocksRendering code = { strawbeesExample } />
156
140
</ MakeCodeRenderBlocksProvider >
157
141
</ StoryWrapper >
@@ -162,11 +146,10 @@ export const ExtensionBlockStrawbees: Story = {
162
146
export const ExtensionBlockDatalogging : Story = {
163
147
name : 'Extension block (Datalogging)' ,
164
148
render : ( args ) => {
165
- const { options : version } = args ;
166
- const options = getOptionsFromVersion ( version as string ) ;
149
+ const { version } = args ;
167
150
return (
168
- < StoryWrapper key = { options . version } >
169
- < MakeCodeRenderBlocksProvider options = { options } >
151
+ < StoryWrapper key = { version } >
152
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
170
153
< MakeCodeBlocksRendering code = { projectWithDatalogging } />
171
154
</ MakeCodeRenderBlocksProvider >
172
155
</ StoryWrapper >
@@ -177,11 +160,10 @@ export const ExtensionBlockDatalogging: Story = {
177
160
export const CustomBlock : Story = {
178
161
name : 'Custom block' ,
179
162
render : ( args ) => {
180
- const { options : version } = args ;
181
- const options = getOptionsFromVersion ( version as string ) ;
163
+ const { version } = args ;
182
164
return (
183
- < StoryWrapper key = { options . version } >
184
- < MakeCodeRenderBlocksProvider options = { options } >
165
+ < StoryWrapper key = { version } >
166
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
185
167
< MakeCodeBlocksRendering code = { projectWithCustomBlock } />
186
168
</ MakeCodeRenderBlocksProvider >
187
169
</ StoryWrapper >
@@ -193,7 +175,7 @@ export const Error: Story = {
193
175
render : ( ) => {
194
176
return (
195
177
< StoryWrapper >
196
- < MakeCodeRenderBlocksProvider options = { { version : ' intentional-404' } } >
178
+ < MakeCodeRenderBlocksProvider version = " intentional-404" >
197
179
< MakeCodeBlocksRendering code = { project . text ! [ 'main.ts' ] } />
198
180
</ MakeCodeRenderBlocksProvider >
199
181
</ StoryWrapper >
@@ -204,11 +186,10 @@ export const Error: Story = {
204
186
export const Robust : Story = {
205
187
name : 'Robust against invalid/empty project' ,
206
188
render : ( args ) => {
207
- const { options : version } = args ;
208
- const options = getOptionsFromVersion ( version as string ) ;
189
+ const { version } = args ;
209
190
return (
210
- < StoryWrapper key = { options . version } >
211
- < MakeCodeRenderBlocksProvider options = { options } >
191
+ < StoryWrapper key = { version } >
192
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
212
193
< MakeCodeBlocksRendering code = { { } as Project } />
213
194
</ MakeCodeRenderBlocksProvider >
214
195
</ StoryWrapper >
@@ -219,11 +200,10 @@ export const Robust: Story = {
219
200
export const InitialBlankProject : Story = {
220
201
name : 'Initial blank project' ,
221
202
render : ( args ) => {
222
- const { options : version } = args ;
223
- const options = getOptionsFromVersion ( version as string ) ;
203
+ const { version } = args ;
224
204
return (
225
- < StoryWrapper key = { options . version } >
226
- < MakeCodeRenderBlocksProvider options = { options } >
205
+ < StoryWrapper key = { version } >
206
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
227
207
< MakeCodeBlocksRendering code = { initialProject } />
228
208
</ MakeCodeRenderBlocksProvider >
229
209
</ StoryWrapper >
@@ -234,11 +214,10 @@ export const InitialBlankProject: Story = {
234
214
export const EmptyString : Story = {
235
215
name : 'Empty string' ,
236
216
render : ( args ) => {
237
- const { options : version } = args ;
238
- const options = getOptionsFromVersion ( version as string ) ;
217
+ const { version } = args ;
239
218
return (
240
- < StoryWrapper key = { options . version } >
241
- < MakeCodeRenderBlocksProvider options = { options } >
219
+ < StoryWrapper key = { version } >
220
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
242
221
< MakeCodeBlocksRendering code = "" />
243
222
</ MakeCodeRenderBlocksProvider >
244
223
</ StoryWrapper >
@@ -249,13 +228,14 @@ export const EmptyString: Story = {
249
228
export const EmptyToBlocksTransition : Story = {
250
229
name : 'Empty to blocks transition' ,
251
230
render : ( args ) => {
252
- const { options : version } = args ;
253
- const options = getOptionsFromVersion ( version as string ) ;
231
+ const { version } = args ;
254
232
const [ project , setProject ] = useState < Project > ( initialProject ) ;
255
233
return (
256
- < StoryWrapper key = { options . version } >
234
+ < StoryWrapper key = { version } >
257
235
< div style = { { display : 'grid' , gridTemplateColumns : '50% 50%' } } >
258
- < MakeCodeRenderBlocksProvider options = { options } >
236
+ < MakeCodeRenderBlocksProvider
237
+ version = { adaptStorybookVersion ( version ) }
238
+ >
259
239
< MakeCodeBlocksRendering code = { project } />
260
240
</ MakeCodeRenderBlocksProvider >
261
241
< div >
@@ -280,11 +260,10 @@ export const EmptyToBlocksTransition: Story = {
280
260
export const RespectUserLayout : Story = {
281
261
name : 'Respect user layout' ,
282
262
render : ( args ) => {
283
- const { options : version } = args ;
284
- const options = getOptionsFromVersion ( version as string ) ;
263
+ const { version } = args ;
285
264
return (
286
- < StoryWrapper key = { options . version } >
287
- < MakeCodeRenderBlocksProvider options = { options } >
265
+ < StoryWrapper key = { version } >
266
+ < MakeCodeRenderBlocksProvider version = { adaptStorybookVersion ( version ) } >
288
267
< MakeCodeBlocksRendering
289
268
code = { projectWithUserLayout }
290
269
layout = { BlockLayout . Clean }
0 commit comments