Skip to content

Commit 56ebe4c

Browse files
committed
Some smaller fixes
1 parent 60696e6 commit 56ebe4c

3 files changed

Lines changed: 13 additions & 15 deletions

File tree

src/components/AstronomicalViewer.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ onMounted(() => {
1919
store.execute()
2020
})
2121
22-
// Save to localStorage whenever values change
22+
// Save to localStorage whenever values change, debounced to avoid writing on every keystroke
23+
let saveTimer: ReturnType<typeof setTimeout> | undefined
2324
watch([jsCode, queryString], () => {
24-
store.saveToLocalStorage()
25+
clearTimeout(saveTimer)
26+
saveTimer = setTimeout(() => store.saveToLocalStorage(), 500)
2527
})
2628
</script>
2729

src/components/TreeContainer.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { ref, computed, onMounted, onUnmounted, nextTick, watch } from 'vue'
2+
import { ref, computed, onMounted, onUnmounted, nextTick, watch, provide } from 'vue'
33
import TreeNode from './TreeNode.vue'
44
import type { TreeNode as TreeNodeType } from '../utils/astTreeBuilder'
55
@@ -86,6 +86,10 @@ const handleMinimapClick = (e: MouseEvent) => {
8686
)
8787
}
8888
89+
provide('toggleNode', (node: TreeNodeType) => {
90+
node.isExpanded = !node.isExpanded
91+
})
92+
8993
let resizeObserver: ResizeObserver | null = null
9094
9195
onMounted(() => {

src/components/TreeNode.vue

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { computed, ref } from 'vue'
2+
import { computed, ref, inject } from 'vue'
33
import type { TreeNode } from '../utils/astTreeBuilder'
44
import { usePrimitiveMatching } from '../composables/usePrimitiveMatching'
55
@@ -10,23 +10,15 @@ const props = defineProps<{
1010
path?: string
1111
}>()
1212
13-
const emit = defineEmits<{
14-
'update:expanded': [node: TreeNode, expanded: boolean]
15-
}>()
16-
1713
const { hasMatchedPrimitiveValue, showPrimitiveMatch } = usePrimitiveMatching(
1814
props.primitiveResults,
1915
)
2016
17+
const toggleNode = inject<(node: TreeNode) => void>('toggleNode')
18+
2119
const toggleExpand = () => {
2220
if (props.node.children.length > 0) {
23-
const updatedNode = {
24-
...props.node,
25-
isExpanded: !props.node.isExpanded,
26-
}
27-
emit('update:expanded', updatedNode, !props.node.isExpanded)
28-
// eslint-disable-next-line vue/no-mutating-props
29-
props.node.isExpanded = !props.node.isExpanded
21+
toggleNode?.(props.node)
3022
}
3123
}
3224

0 commit comments

Comments
 (0)