Skip to content
This repository was archived by the owner on Feb 10, 2025. It is now read-only.

Commit 8de583a

Browse files
committed
refactor: add resize observer
1 parent b389c8f commit 8de583a

File tree

4 files changed

+12
-4
lines changed

4 files changed

+12
-4
lines changed

src/Diff.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ export default defineComponent({
8181
return {
8282
height: 500,
8383
lineMinHeight: 24,
84-
scrollDelay: 250,
84+
delay: 100,
8585
...(typeof props.virtualScroll === 'object' ? toRaw(props.virtualScroll) : {})
8686
}
8787
})

src/Line.vue

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141

4242
<script lang="ts">
4343
import { computed, defineComponent, ref } from 'vue'
44+
import { useResizeObserver, useThrottleFn } from '@vueuse/core'
4445
import Code from './Code.vue'
4546
import { renderWords } from './utils'
4647
@@ -106,6 +107,13 @@ export default defineComponent({
106107
emit('setLineHeight', props.meta.index, line.value.offsetHeight)
107108
}
108109
110+
if (props.scrollOptions) {
111+
useResizeObserver(line, useThrottleFn(() => {
112+
if (!line.value) return
113+
emit('setLineHeight', props.meta.index, line.value.offsetHeight)
114+
}, props.scrollOptions.delay))
115+
}
116+
109117
return { line, rendered, rowStyle, setCode }
110118
}
111119
})

src/hooks.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ export const useVirtualScroll = (props: Props, viewer: Ref<null|HTMLElement>, sc
9191

9292
onMounted(() => {
9393
if (!scrollOptions.value) return
94-
viewer.value?.addEventListener('scroll', useThrottleFn(setMeta, scrollOptions.value.scrollDelay))
94+
viewer.value?.addEventListener('scroll', useThrottleFn(setMeta, scrollOptions.value.delay))
9595

9696
debouncedWatch(
9797
[() => props.mode, () => props.prev, () => props.current],
@@ -111,7 +111,7 @@ export const useVirtualScroll = (props: Props, viewer: Ref<null|HTMLElement>, sc
111111

112112
onBeforeUnmount(() => {
113113
if (!scrollOptions.value) return
114-
viewer.value?.removeEventListener('scroll', useThrottleFn(setMeta, scrollOptions.value.scrollDelay))
114+
viewer.value?.removeEventListener('scroll', useThrottleFn(setMeta, scrollOptions.value.delay))
115115
})
116116

117117
return {

src/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@ export interface Meta {
2929
export interface VirtualScroll {
3030
height: number;
3131
lineMinHeight: number;
32-
scrollDelay: number;
32+
delay: number;
3333
}

0 commit comments

Comments
 (0)