-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathindex.js
More file actions
121 lines (104 loc) · 2.47 KB
/
index.js
File metadata and controls
121 lines (104 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import * as monaco from 'monaco-editor/esm/vs/editor/editor.main.js'
import { convert } from '../dist/index.browser'
const defaultCode = `import Vue from 'vue'
import { Prop, Component, Ref, Model, Provide, Inject } from 'vue-property-decorator'
const symbol = Symbol('baz')
/**
* My basic tag
*/
@Component({
name: 'oao',
props: ['bar', 'qaq', 'cac'],
data () {
const a = 'pa';
return {
a: a
}
}
})
export default class BasicPropertyClass extends Vue {
@Ref() readonly anotherComponent!: HTMLElement
@Model('change', { type: Boolean }) readonly checked!: boolean
/**
* My foo
*/
@Prop({ type: Boolean, default: false }) foo: any
@Provide() foa = 'foo'
@Provide('bar') baz = 'bar'
@Inject() readonly foai!: string
@Inject('bar') readonly bari!: string
@Inject({ from: 'optional', default: 'default' }) readonly optional!: string
@Inject(symbol) readonly bazi!: string
/**
* My msg
*/
msg = 'Vetur means "Winter" in icelandic.' //foo
/**
* My count
*/
get count () {
return this.$store.state.count
}
/**
* My greeting
*/
hello () {
console.log(this.msg)
}
}`
self.MonacoEnvironment = {
getWorkerUrl: function (moduleId, label) {
if (label === 'typescript' || label === 'javascript') {
return './ts.worker.js'
}
return './editor.worker.js'
}
}
const vc2cConfig = {
compatible: false
}
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
experimentalDecorators: true,
noResolve: true,
target: 'esnext',
allowNonTsExtensions: true,
noEmit: true,
lib: [
'esnext',
'dom',
'dom.iterable',
'scripthost'
],
module: 'esnext',
strict: true,
esModuleInterop: true,
resolveJsonModule: true
})
const editor = monaco.editor.create(document.getElementById('editor'), {
value: defaultCode,
language: 'typescript',
theme: 'vs-dark',
minimap: {
enabled: false
}
})
const output = monaco.editor.create(document.getElementById('output'), {
value: convert(defaultCode, vc2cConfig),
language: 'typescript',
theme: 'vs-dark'
})
const setOutput = () => {
output.setValue(convert(editor.getValue(), vc2cConfig))
}
editor.onDidChangeModelContent(() => {
setOutput()
})
window.addEventListener('resize', () => {
editor.layout()
output.layout()
})
const compatibleCheckbox = document.getElementById('compatible')
compatibleCheckbox.addEventListener('change', () => {
vc2cConfig.compatible = compatibleCheckbox.checked
setOutput()
})