isResizing = { bottom: true, left: true }"
/>
isResizing = { bottom: true, right: true }"
@@ -221,6 +222,7 @@ const viewModeClass = computed(() => {
width: 100vw !important;
height: 100vh !important;
z-index: 1 !important;
+ left: 0 !important;
bottom: 0 !important;
transform: none !important;
}
diff --git a/packages/node/src/views/Main.vue b/packages/node/src/views/Main.vue
index b2dacfa8..66b638e5 100644
--- a/packages/node/src/views/Main.vue
+++ b/packages/node/src/views/Main.vue
@@ -6,7 +6,7 @@ import vueDevToolsOptions from 'virtual:vue-devtools-options'
import { DevToolsHooks, collectDevToolsHookBuffer } from '@vite-plugin-vue-devtools/core'
import Frame from './FrameBox.vue'
import ComponentInspector from './ComponentInspector.vue'
-import { useHighlightComponent, useIframe, useInspector, usePanelVisible, usePiPMode, usePosition, useRerenderHighlight } from './composables'
+import { useHighlightComponent, useIframe, useInspector, usePanelState, usePanelVisible, usePiPMode, usePosition, useRerenderHighlight } from './composables'
import { checkIsSafari, useColorScheme, usePreferredColorScheme, warn } from './utils'
import RerenderIndicator from './RerenderIndicator.vue'
@@ -22,15 +22,11 @@ const hook = props.hook
const { hookBuffer, collect } = collectDevToolsHookBuffer()
let isAppCreated = false
-const panelState = ref<{
- viewMode: ViewMode
-}>({
- viewMode: 'default',
-})
const { togglePanelVisible, closePanel, panelVisible } = usePanelVisible()
const panelEl = ref()
const { onPointerDown, bringUp, anchorStyle, iframeStyle, isDragging, isVertical, isHidden, panelStyle } = usePosition(panelEl)
+const { viewMode, toggleViewMode } = usePanelState()
const vars = computed(() => {
const colorScheme = useColorScheme()
const dark = colorScheme.value === 'auto'
@@ -91,9 +87,7 @@ async function setupClient(iframe: HTMLIFrameElement) {
hook,
hookBuffer,
panel: {
- toggleViewMode: (mode?: ViewMode) => {
- panelState.value.viewMode = mode ?? 'default'
- },
+ toggleViewMode,
toggle: togglePanelVisible,
popup,
},
@@ -237,7 +231,7 @@ collectHookBuffer()
:class="{
'vue-devtools-vertical': isVertical,
'vue-devtools-hide': isHidden,
- 'fullscreen': panelState.viewMode === 'fullscreen',
+ 'fullscreen': viewMode === 'fullscreen',
}"
@mousemove="bringUp"
>
@@ -284,7 +278,7 @@ collectHookBuffer()
},
getIFrame: getIframe,
}"
- :view-mode="panelState.viewMode"
+ :view-mode="viewMode"
/>
@@ -301,7 +295,6 @@ collectHookBuffer()
}
#vue-devtools-anchor.fullscreen {
transform: none !important;
- left: 0 !important;
}
#vue-devtools-anchor .vue-devtools-icon-button {
diff --git a/packages/node/src/views/composables.ts b/packages/node/src/views/composables.ts
index 186c0913..e4096066 100644
--- a/packages/node/src/views/composables.ts
+++ b/packages/node/src/views/composables.ts
@@ -14,6 +14,7 @@ interface DevToolsFrameState {
isFirstVisit: boolean
closeOnOutsideClick: boolean
minimizePanelInactive: number
+ viewMode: ViewMode
}
interface ComponentInspectorBounds {
@@ -41,6 +42,7 @@ export const state = useObjectStorage
('__vue-devtools-frame-
isFirstVisit: true,
closeOnOutsideClick: false,
minimizePanelInactive: 5000,
+ viewMode: 'default',
})
// ---- useIframe ----
@@ -501,6 +503,27 @@ export function usePosition(panelEl: Ref) {
}
}
+// ---- usePanelState ----
+export function usePanelState() {
+ const viewMode = computed({
+ get() {
+ return state.value.viewMode
+ },
+ set(value) {
+ state.value.viewMode = value
+ },
+ })
+ let preViewMode = viewMode.value
+
+ function toggleViewMode(mode: ViewMode) {
+ const newMode = mode ?? preViewMode
+ preViewMode = viewMode.value
+ viewMode.value = newMode
+ }
+
+ return { viewMode, toggleViewMode }
+}
+
// ---- useHighlightComponent ----
export function useHighlightComponent() {