/* eslint-disable no-console */ // eslint-disable-next-line import/no-unresolved import * as m from 'monaco-editor'; import { h, createApp } from 'vue'; import { transform } from '@babel/core'; import babelPluginJsx from '../../babel-plugin-jsx/src'; import './index.css'; declare global { interface Window { monaco: typeof m init: () => void } } window.init = () => { const { monaco } = window; createApp( () => h('h1', null, 'Vue JSX Explorer'), ).mount('#header'); // @ts-ignore if (module.hot) { // @ts-ignore module.hot.accept('../../babel-plugin-jsx/src', () => { compile(); }); } const sharedEditorOptions: m.editor.IStandaloneEditorConstructionOptions = { theme: 'vs-dark', fontSize: 14, wordWrap: 'on', scrollBeyondLastLine: false, renderWhitespace: 'selection', contextmenu: false, minimap: { enabled: false, }, }; monaco.languages.typescript.typescriptDefaults.setCompilerOptions({ allowJs: true, allowNonTsExtensions: true, lib: [], jsx: monaco.languages.typescript.JsxEmit.React, target: monaco.languages.typescript.ScriptTarget.Latest, typeRoots: ['node_modules/@types'], }); const editor = monaco.editor.create(document.getElementById('source')!, { value: decodeURIComponent(window.location.hash.slice(1)) || localStorage.getItem('state') || 'const App = () =>