66} from '../vanilla/makecode-frame-driver.js' ;
77import { Project } from '../vanilla/pxt.js' ;
88import { defaultMakeCodeProject } from '../vanilla/examples.js' ;
9+ import { HtmlToReactWrapper } from './HtmlToReactWrapper.js' ;
910
1011interface StoryArgs {
1112 options ?: {
@@ -26,9 +27,15 @@ export default meta;
2627
2728type Story = StoryObj < StoryArgs > ;
2829
29- const renderEditor = ( args : StoryArgs ) => {
30- const elementId = 'story-wrapper' ;
30+ const toolbarStyles = {
31+ fontFamily : 'sans-serif' ,
32+ display : 'flex' ,
33+ flexWrap : 'wrap' ,
34+ gap : '5px' ,
35+ margin : '10px 0' ,
36+ } as const ;
3137
38+ const renderEditor = ( args : StoryArgs ) => {
3239 // Create an iframe element.
3340 const iframe = document . createElement ( 'iframe' ) ;
3441 iframe . allow = 'usb; autoplay; camera; microphone;' ;
@@ -43,13 +50,6 @@ const renderEditor = (args: StoryArgs) => {
4350 iframe . height = '100%' ;
4451
4552 const savedProjects : Map < string , Project > = new Map ( ) ;
46- const toolbarStyles = {
47- fontFamily : 'sans-serif' ,
48- display : 'flex' ,
49- flexWrap : 'wrap' ,
50- gap : '5px' ,
51- margin : '10px 0' ,
52- } as const ;
5353
5454 // Create and initialise an instance of MakeCodeFrameDriver.
5555 const driverRef = new MakeCodeFrameDriver (
@@ -71,19 +71,10 @@ const renderEditor = (args: StoryArgs) => {
7171 ( ) => iframe
7272 ) ;
7373
74- const waitForElementLoaded = ( ) => {
75- const targetEl = document . getElementById ( elementId ) ;
76- if ( ! targetEl ) {
77- window . setTimeout ( waitForElementLoaded , 500 ) ;
78- return ;
79- }
80- targetEl . replaceChildren ( iframe ) ;
81- driverRef . initialize ( ) ;
82- } ;
83- waitForElementLoaded ( ) ;
74+ driverRef . initialize ( ) ;
8475
8576 return (
86- < >
77+ < HtmlToReactWrapper htmlEl = { iframe } >
8778 < div style = { { display : 'flex' , flexDirection : 'column' } } >
8879 < div style = { toolbarStyles } >
8980 < button onClick = { ( ) => driverRef . switchJavascript ( ) } >
@@ -264,18 +255,7 @@ const renderEditor = (args: StoryArgs) => {
264255 </ button >
265256 </ div >
266257 </ div >
267- < div
268- id = { elementId }
269- style = { {
270- display : 'flex' ,
271- flexDirection : 'column' ,
272- width : '100%' ,
273- height : 700 ,
274- } }
275- >
276- < p > Loading...</ p >
277- </ div >
278- </ >
258+ </ HtmlToReactWrapper >
279259 ) ;
280260} ;
281261
0 commit comments