Files
babel-plugin-jsx/packages/jsx-explorer/src/options.tsx
2024-01-24 02:42:21 +08:00

112 lines
3.2 KiB
TypeScript

import { createApp, defineComponent, reactive } from 'vue';
import { type VueJSXPluginOptions } from '@vue/babel-plugin-jsx';
export { VueJSXPluginOptions };
export const compilerOptions: VueJSXPluginOptions = reactive({
mergeProps: true,
optimize: false,
transformOn: false,
enableObjectSlots: true,
resolveType: false,
});
const App = defineComponent({
setup() {
return () => [
<>
<h1>Vue 3 JSX Explorer</h1>
<a
href="https://app.netlify.com/sites/vue-jsx-explorer/deploys"
target="_blank"
>
History
</a>
<div id="options-wrapper">
<div id="options-label">Options </div>
<ul id="options">
<li>
<input
type="checkbox"
id="mergeProps"
name="mergeProps"
checked={compilerOptions.mergeProps}
onChange={(e: Event) => {
compilerOptions.mergeProps = (
e.target as HTMLInputElement
).checked;
}}
/>
<label for="mergeProps">mergeProps</label>
</li>
<li>
<input
type="checkbox"
id="optimize"
name="optimize"
checked={compilerOptions.optimize}
onChange={(e: Event) => {
compilerOptions.optimize = (
e.target as HTMLInputElement
).checked;
}}
/>
<label for="optimize">optimize</label>
</li>
<li>
<input
type="checkbox"
id="transformOn"
name="transformOn"
checked={compilerOptions.transformOn}
onChange={(e: Event) => {
compilerOptions.transformOn = (
e.target as HTMLInputElement
).checked;
}}
/>
<label for="transformOn">transformOn</label>
</li>
<li>
<input
type="checkbox"
id="enableObjectSlots"
name="enableObjectSlots"
checked={compilerOptions.enableObjectSlots}
onChange={(e: Event) => {
compilerOptions.enableObjectSlots = (
e.target as HTMLInputElement
).checked;
}}
/>
<label for="enableObjectSlots">enableObjectSlots</label>
</li>
<li>
<input
type="checkbox"
id="resolveType"
name="resolveType"
checked={!!compilerOptions.resolveType}
onChange={(e: Event) => {
compilerOptions.resolveType = (
e.target as HTMLInputElement
).checked;
}}
/>
<label for="resolveType">resolveType</label>
</li>
</ul>
</div>
</>,
];
},
});
export function initOptions() {
createApp(App).mount(document.getElementById('header')!);
}