diff options
author | 2023-08-26 16:43:47 +0200 | |
---|---|---|
committer | 2023-08-26 16:43:47 +0200 | |
commit | 81bfe57cb85690f4153683754ffb09f35a816dac (patch) | |
tree | 15360fc716336d75319123aeb469d9a5aac4a4d4 /src/ui/c-diff-editor/c-diff-editor.vue | |
parent | a9cd91ca9cc31dd47973b2f87b5e1912c8cb75fd (diff) | |
download | it-tools-81bfe57cb85690f4153683754ffb09f35a816dac.tar.gz it-tools-81bfe57cb85690f4153683754ffb09f35a816dac.tar.zst it-tools-81bfe57cb85690f4153683754ffb09f35a816dac.zip |
feat(new tool): text diff and comparator (#588)
* feat(new tool): text diff and comparator
* chore(ci): increased memory in CI
Diffstat (limited to '')
-rw-r--r-- | src/ui/c-diff-editor/c-diff-editor.vue | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/ui/c-diff-editor/c-diff-editor.vue b/src/ui/c-diff-editor/c-diff-editor.vue new file mode 100644 index 0000000..2aa2947 --- /dev/null +++ b/src/ui/c-diff-editor/c-diff-editor.vue @@ -0,0 +1,68 @@ +<script setup lang="ts"> +import * as monaco from 'monaco-editor'; +import { useStyleStore } from '@/stores/style.store'; + +const props = withDefaults(defineProps<{ options?: monaco.editor.IDiffEditorOptions }>(), { options: () => ({}) }); +const { options } = toRefs(props); + +const editorContainer = ref<HTMLElement | null>(null); +let editor: monaco.editor.IStandaloneDiffEditor | null = null; + +monaco.editor.defineTheme('it-tools-dark', { + base: 'vs-dark', + inherit: true, + rules: [], + colors: { + 'editor.background': '#00000000', + }, +}); + +monaco.editor.defineTheme('it-tools-light', { + base: 'vs', + inherit: true, + rules: [], + colors: { + 'editor.background': '#00000000', + }, +}); + +const styleStore = useStyleStore(); + +watch( + () => styleStore.isDarkTheme, + isDarkTheme => monaco.editor.setTheme(isDarkTheme ? 'it-tools-dark' : 'it-tools-light'), + { immediate: true }, +); + +watch( + () => options.value, + options => editor?.updateOptions(options), + { immediate: true, deep: true }, +); + +useResizeObserver(editorContainer, () => { + editor?.layout(); +}); + +onMounted(() => { + if (!editorContainer.value) { + return; + } + + editor = monaco.editor.createDiffEditor(editorContainer.value, { + originalEditable: true, + minimap: { + enabled: false, + }, + }); + + editor.setModel({ + original: monaco.editor.createModel('original text', 'txt'), + modified: monaco.editor.createModel('modified text', 'txt'), + }); +}); +</script> + +<template> + <div ref="editorContainer" h-600px /> +</template> |