Skip to content

Commit 434c1ae

Browse files
committed
chore: refactor
1 parent 6b653ce commit 434c1ae

8 files changed

Lines changed: 37 additions & 54 deletions

File tree

packages/core/src/client/standalone/App.vue

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
<script setup lang="ts">
22
import type { DocksContext } from '@vitejs/devtools-kit/client'
33
import { getDevToolsRpcClient } from '@vitejs/devtools-kit/client'
4-
import { computed, markRaw, ref, useTemplateRef, watch } from 'vue'
4+
import { markRaw, ref, useTemplateRef, watch } from 'vue'
55
import DockEntriesWithCategories from '../webcomponents/components/DockEntriesWithCategories.vue'
66
import FloatingElements from '../webcomponents/components/FloatingElements.vue'
77
import VitePlus from '../webcomponents/components/icons/VitePlus.vue'
88
import ViewBuiltinClientAuthNotice from '../webcomponents/components/ViewBuiltinClientAuthNotice.vue'
99
import ViewEntry from '../webcomponents/components/ViewEntry.vue'
1010
import { createDocksContext } from '../webcomponents/state/context'
11-
import { groupDockEntries } from '../webcomponents/state/dock-settings'
12-
import { sharedStateToRef } from '../webcomponents/state/docks'
1311
import { PersistedDomViewsManager } from '../webcomponents/utils/PersistedDomViewsManager'
1412
1513
const rpc = await getDevToolsRpcClient()
@@ -30,19 +28,13 @@ context.rpc.events.on('rpc:is-trusted:updated', (isTrusted) => {
3028
isRpcTrusted.value = isTrusted
3129
})
3230
33-
const settings = sharedStateToRef(await context.docks.getSettingsStore())
34-
3531
watch(
3632
() => context.docks.entries,
3733
() => {
3834
context.docks.selectedId ||= context.docks.entries[0]?.id ?? null
3935
},
4036
{ immediate: true },
4137
)
42-
43-
const groupedEntries = computed(() => {
44-
return groupDockEntries(context.docks.entries, settings.value)
45-
})
4638
</script>
4739

4840
<template>
@@ -57,7 +49,7 @@ const groupedEntries = computed(() => {
5749
<div class="transition duration-200 p2">
5850
<DockEntriesWithCategories
5951
:context="context"
60-
:groups="groupedEntries"
52+
:groups="context.docks.groupedEntries"
6153
:is-vertical="false"
6254
:selected="context.docks.selected"
6355
@select="(e) => context.docks.switchEntry(e?.id)"

packages/core/src/client/webcomponents/components/Dock.vue

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
<script setup lang="ts">
2-
import type { DevToolsDocksUserSettings } from '@vitejs/devtools-kit'
32
import type { DocksContext } from '@vitejs/devtools-kit/client'
43
import { useEventListener, useScreenSafeArea } from '@vueuse/core'
5-
import { computed, onMounted, reactive, ref, shallowRef, useTemplateRef, watch, watchEffect } from 'vue'
4+
import { computed, onMounted, reactive, ref, useTemplateRef, watchEffect } from 'vue'
65
import { BUILTIN_ENTRY_CLIENT_AUTH_NOTICE } from '../constants'
7-
import { groupDockEntries, splitGroupsWithCapacity } from '../state/dock-settings'
8-
import { sharedStateToRef } from '../state/docks'
6+
import { docksSplitGroupsWithCapacity } from '../state/dock-settings'
97
import DockEntriesWithCategories from './DockEntriesWithCategories.vue'
108
import DockOverflowButton from './DockOverflowButton.vue'
119
import BracketLeft from './icons/BracketLeft.vue'
@@ -76,24 +74,11 @@ context.rpc.events.on('rpc:is-trusted:updated', (isTrusted) => {
7674
context.docks.switchEntry(null)
7775
})
7876
79-
const settings = shallowRef<DevToolsDocksUserSettings>({
80-
hiddenDocks: [],
81-
hiddenCategories: [],
82-
pinnedDocks: [],
83-
customOrder: {},
84-
})
85-
86-
const groupedEntries = computed(() => {
87-
const groups = groupDockEntries(context.docks.entries, settings.value)
88-
return splitGroupsWithCapacity(groups, 5)
77+
const splitedEntries = computed(() => {
78+
return docksSplitGroupsWithCapacity(context.docks.groupedEntries, 5)
8979
})
9080
9181
onMounted(async () => {
92-
const settingsStore = await context.docks.getSettingsStore()
93-
const settingsRef = sharedStateToRef(settingsStore)
94-
settings.value = settingsRef.value
95-
watch(settingsRef, v => settings.value = v)
96-
9782
windowSize.width = window.innerWidth
9883
windowSize.height = window.innerHeight
9984
@@ -332,18 +317,18 @@ onMounted(() => {
332317
>
333318
<DockEntriesWithCategories
334319
:context="context"
335-
:groups="groupedEntries.visible"
320+
:groups="splitedEntries.visible"
336321
:is-vertical="context.panel.isVertical"
337322
:selected="context.docks.selected"
338323
@select="(e) => context.docks.switchEntry(e?.id)"
339324
/>
340325

341-
<template v-if="groupedEntries.overflow.length > 0">
326+
<template v-if="splitedEntries.overflow.length > 0">
342327
<div class="border-base m1 h-20px w-px border-r-1.5" />
343328
<DockOverflowButton
344329
:context="context"
345330
:is-vertical="context.panel.isVertical"
346-
:groups="groupedEntries.overflow"
331+
:groups="splitedEntries.overflow"
347332
:selected="context.docks.selected"
348333
@select="(e) => context.docks.switchEntry(e?.id)"
349334
/>

packages/core/src/client/webcomponents/components/DockEntriesWithCategories.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<script setup lang="ts">
22
import type { DevToolsDockEntry } from '@vitejs/devtools-kit'
33
import type { DocksContext } from '@vitejs/devtools-kit/client'
4-
import type { GroupedDockEntries } from '../state/dock-settings'
4+
import type { DevToolsDockEntriesGrouped } from '../state/dock-settings'
55
import DockEntries from './DockEntries.vue'
66
77
defineProps<{
88
context: DocksContext
9-
groups: GroupedDockEntries
9+
groups: DevToolsDockEntriesGrouped
1010
selected: DevToolsDockEntry | null
1111
isVertical: boolean
1212
}>()

packages/core/src/client/webcomponents/components/DockOverflowButton.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script setup lang="ts">
22
import type { DevToolsDockEntry } from '@vitejs/devtools-kit'
33
import type { DocksContext } from '@vitejs/devtools-kit/client'
4-
import type { GroupedDockEntries } from '../state/dock-settings'
4+
import type { DevToolsDockEntriesGrouped } from '../state/dock-settings'
55
import { watchDebounced } from '@vueuse/core'
66
import { computed, h, ref, useTemplateRef } from 'vue'
77
import { setDocksOverflowPanel, useDocksOverflowPanel } from '../state/floating-tooltip'
@@ -11,7 +11,7 @@ import DockEntry from './DockEntry.vue'
1111
const props = defineProps<{
1212
context: DocksContext
1313
isVertical: boolean
14-
groups: GroupedDockEntries
14+
groups: DevToolsDockEntriesGrouped
1515
selected: DevToolsDockEntry | null
1616
}>()
1717

packages/core/src/client/webcomponents/components/ViewBuiltinSettings.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import type { DevToolsViewBuiltin } from '@vitejs/devtools-kit'
33
import type { DocksContext } from '@vitejs/devtools-kit/client'
44
import { computed } from 'vue'
5-
import { defaultDocksSettings, groupDockEntries } from '../state/dock-settings'
5+
import { defaultDocksSettings, docksGroupByCategories } from '../state/dock-settings'
66
import { sharedStateToRef } from '../state/docks'
77
import DockIcon from './DockIcon.vue'
88
@@ -11,11 +11,11 @@ const props = defineProps<{
1111
entry: DevToolsViewBuiltin
1212
}>()
1313
14-
const settingsStore = await props.context.docks.getSettingsStore()
14+
const settingsStore = props.context.docks.settings
1515
const settings = sharedStateToRef(settingsStore)
1616
1717
const categories = computed(() => {
18-
return groupDockEntries(props.context.docks.entries, settingsStore.value(), { includeHidden: true })
18+
return docksGroupByCategories(props.context.docks.entries, settingsStore.value(), { includeHidden: true })
1919
})
2020
2121
function getCategoryLabel(category: string): string {

packages/core/src/client/webcomponents/state/context.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { Ref } from 'vue'
44
import type { DevToolsDocksUserSettings } from './dock-settings'
55
import { computed, markRaw, reactive, ref, toRefs, watchEffect } from 'vue'
66
import { BUILTIN_ENTRIES } from '../constants'
7-
import { defaultDocksSettings } from './dock-settings'
7+
import { defaultDocksSettings, docksGroupByCategories } from './dock-settings'
88
import { createDockEntryState, DEFAULT_DOCK_PANEL_STORE, useDocksEntries } from './docks'
99
import { executeSetupScript } from './setup-script'
1010

@@ -92,6 +92,12 @@ export async function createDocksContext(
9292
return _settingsStorePromise
9393
}
9494

95+
// Get settings store and create computed grouped entries
96+
const settingsStore = markRaw(await getSettingsStore())
97+
const groupedEntries = computed(() => {
98+
return docksGroupByCategories(dockEntries.value, settingsStore.value())
99+
})
100+
95101
_docksContext = reactive({
96102
panel: {
97103
store: panelStore,
@@ -104,8 +110,9 @@ export async function createDocksContext(
104110
selected,
105111
entries: dockEntries,
106112
entryToStateMap: markRaw(dockEntryStateMap),
113+
groupedEntries,
114+
settings: settingsStore,
107115
getStateById: (id: string) => dockEntryStateMap.get(id),
108-
getSettingsStore,
109116
switchEntry,
110117
toggleEntry,
111118
},

packages/core/src/client/webcomponents/state/dock-settings.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import { DEFAULT_CATEGORIES_ORDER } from '../constants'
44

55
export type { DevToolsDocksUserSettings }
66

7-
export type GroupedDockEntries = [category: string, entries: DevToolsDockEntry[]][]
7+
export type DevToolsDockEntriesGrouped = [category: string, entries: DevToolsDockEntry[]][]
88

99
export interface SplitGroupsResult {
10-
visible: GroupedDockEntries
11-
overflow: GroupedDockEntries
10+
visible: DevToolsDockEntriesGrouped
11+
overflow: DevToolsDockEntriesGrouped
1212
}
1313

1414
export function defaultDocksSettings(): DevToolsDocksUserSettings {
@@ -24,11 +24,11 @@ export function defaultDocksSettings(): DevToolsDocksUserSettings {
2424
* Group and sort dock entries based on user settings.
2525
* Filters out hidden entries and categories, sorts by pinned status, custom order, and default order.
2626
*/
27-
export function groupDockEntries(
27+
export function docksGroupByCategories(
2828
entries: DevToolsDockEntry[],
2929
settings: Immutable<DevToolsDocksUserSettings>,
3030
options?: { includeHidden?: boolean },
31-
): GroupedDockEntries {
31+
): DevToolsDockEntriesGrouped {
3232
const { hiddenDocks, hiddenCategories, customOrder, pinnedDocks } = settings
3333
const { includeHidden = false } = options ?? {}
3434

@@ -85,12 +85,12 @@ export function groupDockEntries(
8585
/**
8686
* Split grouped entries into visible and overflow based on capacity.
8787
*/
88-
export function splitGroupsWithCapacity(
89-
groups: GroupedDockEntries,
88+
export function docksSplitGroupsWithCapacity(
89+
groups: DevToolsDockEntriesGrouped,
9090
capacity: number,
9191
): SplitGroupsResult {
92-
const visible: GroupedDockEntries = []
93-
const overflow: GroupedDockEntries = []
92+
const visible: DevToolsDockEntriesGrouped = []
93+
const overflow: DevToolsDockEntriesGrouped = []
9494
let left = capacity
9595

9696
for (const [category, items] of groups) {

packages/kit/src/client/docks.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { RpcFunctionsCollector } from 'birpc-x'
22
import type { Raw } from 'vue'
3+
import type { DevToolsDockEntriesGrouped } from '../../../core/src/client/webcomponents/state/dock-settings'
34
import type { DevToolsDockEntry, DevToolsDocksUserSettings, DevToolsDockUserEntry, DevToolsRpcClientFunctions, EventEmitter } from '../types'
45
import type { SharedState } from '../utils/shared-state'
56
import type { DevToolsRpcClient } from './rpc'
@@ -55,14 +56,12 @@ export interface DocksEntriesContext {
5556
readonly selected: DevToolsDockEntry | null
5657
entries: DevToolsDockEntry[]
5758
entryToStateMap: Map<string, DockEntryState>
59+
groupedEntries: DevToolsDockEntriesGrouped
60+
settings: SharedState<DevToolsDocksUserSettings>
5861
/**
5962
* Get the state of a dock entry by its ID
6063
*/
6164
getStateById: (id: string) => DockEntryState | undefined
62-
/**
63-
* Get the user settings store for dock entries (hiddenDocks, pinnedDocks, customOrder, etc.)
64-
*/
65-
getSettingsStore: () => Promise<SharedState<DevToolsDocksUserSettings>>
6665
/**
6766
* Switch to the selected dock entry, pass `null` to clear the selection
6867
*

0 commit comments

Comments
 (0)