Date: Sat, 25 Nov 2023 13:48:32 +0800
Subject: [PATCH 05/10] fix: cleanup states
---
packages/client/src/App.vue | 2 +-
packages/client/src/composables/graph.ts | 10 ++++----
packages/client/src/composables/state.ts | 21 +++++++++-------
packages/client/src/pages/index.vue | 2 +-
packages/client/src/pages/settings.vue | 32 ++++++++++++++----------
5 files changed, 38 insertions(+), 29 deletions(-)
diff --git a/packages/client/src/App.vue b/packages/client/src/App.vue
index 8232566c..d2045b54 100644
--- a/packages/client/src/App.vue
+++ b/packages/client/src/App.vue
@@ -8,7 +8,7 @@ useColorMode()
const router = useRouter()
const route = useRoute()
const { connected } = useDevToolsState()
-const clientState = useDevToolsClientState()
+const clientState = devtoolsClientState
const viewMode = inject
[>('viewMode', ref('overlay'))
const viewModeSwitchVisible = computed(() => viewMode.value === 'overlay' && isInChromePanel)
diff --git a/packages/client/src/composables/graph.ts b/packages/client/src/composables/graph.ts
index bb53d71a..26c081a7 100644
--- a/packages/client/src/composables/graph.ts
+++ b/packages/client/src/composables/graph.ts
@@ -1,7 +1,6 @@
import type { ModuleInfo } from '@vue-devtools-next/core'
import { DataSet } from 'vis-network/standalone'
import type { Edge, Node, Options } from 'vis-network'
-import type { RemovableRef } from '@vueuse/core'
// #region file types
export const fileTypes = {
@@ -86,10 +85,11 @@ export interface GraphSettings {
lib: boolean
}
-export const graphSettings: RemovableRef = useLocalStorage('vue-devtools-next-graph-settings', {
- node_modules: false,
- virtual: false,
- lib: false,
+export const graphSettings = computed({
+ get: () => devtoolsClientState.value.graphSettings,
+ set: (value: GraphSettings) => {
+ devtoolsClientState.value.graphSettings = value
+ },
})
watch(graphSettings, () => {
diff --git a/packages/client/src/composables/state.ts b/packages/client/src/composables/state.ts
index fae4d45b..d87b3fd0 100644
--- a/packages/client/src/composables/state.ts
+++ b/packages/client/src/composables/state.ts
@@ -1,13 +1,16 @@
import type { RemovableRef } from '@vueuse/core'
+import type { GraphSettings } from './graph'
-export function useDevToolsClientState(): RemovableRef<{
+export const devtoolsClientState: RemovableRef<{
isFirstVisit: boolean
route: string
-}> {
- const state = useLocalStorage('__VUE_DEVTOOLS_CLIENT_STATE__', {
- isFirstVisit: true,
- route: '/',
- })
-
- return state
-}
+ graphSettings: GraphSettings
+}> = useLocalStorage('__VUE_DEVTOOLS_CLIENT_STATE__', {
+ isFirstVisit: true,
+ route: '/',
+ graphSettings: {
+ node_modules: false,
+ virtual: false,
+ lib: false,
+ },
+}, { mergeDefaults: true })
diff --git a/packages/client/src/pages/index.vue b/packages/client/src/pages/index.vue
index fb3798a3..8021c27a 100644
--- a/packages/client/src/pages/index.vue
+++ b/packages/client/src/pages/index.vue
@@ -2,7 +2,7 @@
import { VueButton } from '@vue-devtools-next/ui'
const router = useRouter()
-const clientState = useDevToolsClientState()
+const clientState = devtoolsClientState
function visit() {
clientState.value.isFirstVisit = false
diff --git a/packages/client/src/pages/settings.vue b/packages/client/src/pages/settings.vue
index 62430fa8..d3378ee5 100644
--- a/packages/client/src/pages/settings.vue
+++ b/packages/client/src/pages/settings.vue
@@ -86,20 +86,26 @@ function pinMove(name: string, delta: number) {
{{ tab.title }}
-
-
+
+
- ]
From 0b9d31a6555b28260c6eb8ec7b36ee93a2fa28a7 Mon Sep 17 00:00:00 2001
From: alexzhang1030 <1642114555@qq.com>
Date: Sat, 25 Nov 2023 14:43:18 +0800
Subject: [PATCH 06/10] feat: dynamic sidebar
---
.../client/src/components/common/SideNav.vue | 7 ++--
packages/client/src/composables/settings.ts | 0
packages/client/src/composables/state-tab.ts | 35 +++++++++++++++++++
packages/client/src/composables/state.ts | 7 ++++
packages/client/src/pages/settings.vue | 17 ++++-----
5 files changed, 53 insertions(+), 13 deletions(-)
delete mode 100644 packages/client/src/composables/settings.ts
create mode 100644 packages/client/src/composables/state-tab.ts
diff --git a/packages/client/src/components/common/SideNav.vue b/packages/client/src/components/common/SideNav.vue
index 02f6e058..69055d91 100644
--- a/packages/client/src/components/common/SideNav.vue
+++ b/packages/client/src/components/common/SideNav.vue
@@ -10,7 +10,7 @@ const sidebarExpanded = ref(false)
const sidebarScrollable = ref(false)
// @TODO: dynamic tabs
-const displayedTabs = builtinTab
+const displayedTabs = categorizedTabs