feat: refresh string value keep scrolltop

This commit is contained in:
raojinlin 2024-02-22 17:53:01 +08:00
parent cb9a9ebb8a
commit 62c0079a8d
1 changed files with 18 additions and 2 deletions

View File

@ -24,7 +24,9 @@ const props = defineProps({
},
})
const emit = defineEmits(['reset', 'input', 'save'])
const emit = defineEmits(['reset', 'input', 'save', 'scroll'])
const scrollTop = ref(0)
const themeVars = useThemeVars()
/** @type {HTMLElement|null} */
@ -71,6 +73,7 @@ onMounted(async () => {
scrollbar: {
useShadows: false,
verticalScrollbarSize: '10px',
alwaysConsumeMouseWheel: true,
},
// formatOnType: true,
contextmenu: false,
@ -86,6 +89,13 @@ onMounted(async () => {
// add shortcut for save
editorNode.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, (event) => {
emit('save')
});
editorNode.onDidScrollChange((event) => {
//
if (!event.scrollHeightChanged) {
scrollTop.value = event.scrollTop;
}
})
// editorNode.onDidChangeModelLanguageConfiguration(() => {
@ -105,6 +115,12 @@ watch(
async (content) => {
if (editorNode != null) {
editorNode.setValue(content)
editorNode.onDidLayoutChange(() => {
if (scrollTop.value > 0) {
console.log(scrollTop.value);
editorNode.setScrollTop(scrollTop.value);
}
})
await nextTick(() => emit('reset', content))
}
},