add codemirror

This commit is contained in:
2022-10-26 07:23:35 +02:00
parent 57f1533f4a
commit fc40f1b9c8
3 changed files with 347 additions and 1326 deletions

View File

@@ -1,12 +1,66 @@
<script setup>
<script>
import Worker from '../file.worker.js?worker';
const worker = new Worker();
// const lodash = await fetch('https://registry.npmjs.org/lodash');
import { defineComponent, shallowRef } from 'vue'
import { Codemirror } from 'vue-codemirror'
// import { javascript } from '@codemirror/lang-javascript'
// import { oneDark } from '@codemirror/theme-one-dark'
export default defineComponent({
components: {
Codemirror
},
setup() {
const code = `console.log('Hello, world!')`;
const extensions = [];//[javascript(), oneDark]
// Codemirror EditorView instance ref
const view = shallowRef()
const handleReady = (payload) => {
view.value = payload.view
}
// Status is available at all times via Codemirror EditorView
const getCodemirrorStates = () => {
const state = view.value.state
const ranges = state.selection.ranges
const selected = ranges.reduce((r, range) => r + range.to - range.from, 0)
const cursor = ranges[0].anchor
const length = state.doc.length
const lines = state.doc.lines
// more state info ...
// return ...
}
return {
code,
extensions,
handleReady,
log: console.log,
}
}
})
</script>
<template>
<main>
Hello World!
<codemirror
v-model="code"
placeholder="Code goes here..."
:style="{ height: '400px' }"
:autofocus="true"
:indent-with-tab="true"
:tab-size="2"
:extensions="extensions"
@ready="handleReady"
@change="log('change', $event)"
@focus="log('focus', $event)"
@blur="log('blur', $event)"
/>
</main>
</template>