@@ -164,6 +164,7 @@ import { appLanguages } from './i18n/app-languages';
164164import { themeColors } from './UI/theme-colors' ;
165165import { getCommandMenuActions } from './UI/command-menu-actions' ;
166166import { createLanguageMenus , createProcessorItem } from './UI/create-language-menus' ;
167+ import { hasJsx } from './editor/ts-compiler-options' ;
167168
168169// declare global dependencies
169170declare global {
@@ -370,8 +371,9 @@ const loadModuleTypes = async (
370371 ...config . types ,
371372 ...config . customSettings . types ,
372373 } ;
374+ const reactImport = hasJsx . includes ( scriptLanguage ) ? `import React from 'react';\n` : '' ;
373375 const libs = await typeLoader . load (
374- getConfig ( ) . script . content + '\n' + getConfig ( ) . markup . content ,
376+ reactImport + getConfig ( ) . script . content + '\n' + getConfig ( ) . markup . content ,
375377 configTypes ,
376378 loadAll ,
377379 force ,
@@ -649,6 +651,7 @@ const showMode = (mode?: Config['mode'], view?: Config['view']) => {
649651 document . body . classList . toggle ( 'focus-mode' , mode === 'focus' ) ;
650652 document . body . classList . toggle ( 'lite-mode' , mode === 'lite' ) ;
651653 document . body . classList . toggle ( 'result' , mode === 'result' ) ;
654+ document . body . classList . toggle ( 'no-result' , mode === 'editor' || mode === 'codeblock' ) ;
652655 if ( ( mode === 'full' || mode === 'simple' ) && ! split ) {
653656 split = createSplitPanes ( ) ;
654657 }
@@ -4790,7 +4793,7 @@ const handleDropFiles = () => {
47904793 } ) ;
47914794} ;
47924795
4793- const handleResultMode = ( ) => {
4796+ const handleResultModeDrawer = ( ) => {
47944797 const drawer = UI . getResultModeDrawer ( ) ;
47954798 const drawerLink = drawer . querySelector ( 'a' ) as HTMLAnchorElement ;
47964799 const closeBtn = drawer . querySelector ( '#drawer-close' ) as HTMLButtonElement ;
@@ -5051,15 +5054,9 @@ const extraHandlers = async () => {
50515054 showConsoleMessage ( ) ;
50525055} ;
50535056
5054- const configureEmbed = ( config : Config , eventsManager : EventsManager ) => {
5057+ const configureEmbed = ( eventsManager : EventsManager ) => {
50555058 document . body . classList . add ( 'embed' ) ;
5056- if ( config . mode === 'result' ) {
5057- document . body . classList . add ( 'result' ) ;
5058- handleResultMode ( ) ;
5059- }
5060- if ( config . mode === 'editor' || config . mode === 'codeblock' ) {
5061- document . body . classList . add ( 'no-result' ) ;
5062- }
5059+ handleResultModeDrawer ( ) ;
50635060
50645061 const logoLink = UI . getLogoLink ( ) ;
50655062 logoLink . title = window . deps . translateString ( 'generic.embed.logoHint' , 'Edit on LiveCodes 🡕' ) ;
@@ -5114,7 +5111,7 @@ const configureModes = ({
51145111 configureLite ( ) ;
51155112 }
51165113 if ( isEmbed || config . mode === 'result' ) {
5117- configureEmbed ( config , eventsManager ) ;
5114+ configureEmbed ( eventsManager ) ;
51185115 }
51195116 if ( config . mode === 'simple' ) {
51205117 configureSimpleMode ( config ) ;
@@ -5653,6 +5650,7 @@ const initEmbed = async (config: Partial<Config>, baseUrl: string) => {
56535650 } ) ;
56545651 return createApi ( ) ;
56555652} ;
5653+
56565654const initHeadless = async ( config : Partial < Config > , baseUrl : string ) => {
56575655 window . deps = {
56585656 showMode : ( ) => undefined ,
0 commit comments