Skip to content

Commit 434d64a

Browse files
committed
refactor: fix component types, use defineModel
1 parent a445c93 commit 434d64a

File tree

7 files changed

+30
-46
lines changed

7 files changed

+30
-46
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"@rollup/plugin-replace": "^5.0.2",
5555
"@types/codemirror": "^5.60.2",
5656
"@types/node": "^18.15.3",
57-
"@vitejs/plugin-vue": "^4.1.0",
57+
"@vitejs/plugin-vue": "^4.2.3",
5858
"@volar/monaco": "1.7.8",
5959
"@volar/typescript": "1.7.8",
6060
"@vue/language-service": "1.8.1",

pnpm-lock.yaml

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/editor/CodeMirrorEditor.vue

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,17 @@
11
<script setup lang="ts">
22
import CodeMirror, { type Props } from '../codemirror/CodeMirror.vue'
33
import { computed } from 'vue'
4-
import type { PreviewMode } from './types'
4+
import type { EditorEmits, EditorProps } from './types'
55
66
defineOptions({
77
editorType: 'codemirror',
88
})
99
10-
const props = defineProps<{
11-
value: string
12-
filename: string
13-
readonly?: boolean
14-
mode?: PreviewMode
15-
}>()
16-
17-
const emits = defineEmits<{
18-
(e: 'change', code: string): void
19-
}>()
10+
const props = defineProps<EditorProps>()
11+
const emit = defineEmits<EditorEmits>()
2012
2113
const onChange = (code: string) => {
22-
emits('change', code)
14+
emit('change', code)
2315
}
2416
2517
const modes: Record<string, Props['mode']> = {

src/editor/MessageToggle.vue

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,16 @@
11
<script setup lang="ts">
2-
withDefaults(
3-
defineProps<{
4-
modelValue?: boolean
5-
}>(),
6-
{
7-
modelValue: false,
8-
}
9-
)
10-
11-
defineEmits<{
12-
(e: 'update:modelValue', value: boolean): void
13-
}>()
2+
const visible = defineModel<boolean>()
143
</script>
4+
155
<template>
16-
<div class="wrapper" @click="$emit('update:modelValue', !modelValue)">
6+
<div class="wrapper" @click="visible = !visible">
177
<span>Show Error</span>
188
<div class="toggle" :class="[{ active: modelValue }]">
199
<div class="indicator" />
2010
</div>
2111
</div>
2212
</template>
13+
2314
<style scoped>
2415
.wrapper {
2516
position: absolute;

src/editor/MonacoEditor.vue

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,9 @@
11
<script setup lang="ts">
22
import Monaco from '../monaco/Monaco.vue'
3-
import type { PreviewMode } from './types'
3+
import type { EditorEmits, EditorProps } from './types'
44
5-
defineProps<{
6-
value: string
7-
filename: string
8-
readonly?: boolean
9-
mode?: PreviewMode
10-
}>()
11-
12-
const emit = defineEmits<{
13-
(e: 'change', code: string): void
14-
}>()
5+
defineProps<EditorProps>()
6+
const emit = defineEmits<EditorEmits>()
157
168
defineOptions({
179
editorType: 'monaco',

src/editor/types.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
1-
import { Component } from 'vue'
1+
import { type FunctionalComponent } from 'vue'
22

33
export type PreviewMode = 'js' | 'css' | 'ssr'
44

5-
interface EditorProps {
5+
export interface EditorProps {
66
value: string
77
filename: string
88
readonly?: boolean
99
mode?: PreviewMode
1010
}
1111

12-
interface EditorEmits {
12+
export interface EditorEmits {
1313
(e: 'change', code: string): void
1414
}
1515

16-
export type EditorComponentType = Component<EditorProps, EditorEmits> & {
16+
export type EditorComponentType = FunctionalComponent<
17+
EditorProps,
18+
{ change: (code: string) => void }
19+
> & {
1720
editorType: 'monaco' | 'codemirror'
1821
}
1922

vite.preview.config.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@ import vue from '@vitejs/plugin-vue'
33
import replace from '@rollup/plugin-replace'
44

55
export default defineConfig({
6-
plugins: [vue()],
6+
plugins: [
7+
vue({
8+
script: {
9+
defineModel: true,
10+
},
11+
}),
12+
],
713
resolve: {
814
alias: {
915
path: 'path-browserify',

0 commit comments

Comments
 (0)