vite-plugin-vue-devtools 1.0.0-beta.3 → 1.0.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/client/assets/{Icon.vue_vue_type_script_setup_true_lang-bf37ec60.js → Icon.vue_vue_type_script_setup_true_lang-d08cd842.js} +1 -1
- package/dist/client/assets/{IconButton.vue_vue_type_script_setup_true_lang-9417e3da.js → IconButton.vue_vue_type_script_setup_true_lang-4cfd93a4.js} +2 -2
- package/dist/client/assets/{IconTitle.vue_vue_type_script_setup_true_lang-a710fbe0.js → IconTitle.vue_vue_type_script_setup_true_lang-49104706.js} +1 -1
- package/dist/client/assets/{IframeView.vue_vue_type_script_setup_true_lang-f1ea8625.js → IframeView.vue_vue_type_script_setup_true_lang-44366dc8.js} +1 -1
- package/dist/client/assets/{PanelGrids-09fbe816.js → PanelGrids-ed6a1457.js} +1 -1
- package/dist/client/assets/{SectionBlock-740d82f0.js → SectionBlock-13c3495f.js} +3 -3
- package/dist/client/assets/{StateFields.vue_vue_type_script_setup_true_lang-ed4f449a.js → StateFields.vue_vue_type_script_setup_true_lang-26d7d382.js} +4 -4
- package/dist/client/assets/{Switch.vue_vue_type_script_setup_true_lang-86be5e4b.js → Switch.vue_vue_type_script_setup_true_lang-32354ae4.js} +2 -2
- package/dist/client/assets/{TextInput.vue_vue_type_script_setup_true_lang-217531ea.js → TextInput.vue_vue_type_script_setup_true_lang-d100073c.js} +2 -2
- package/dist/client/assets/{__eyedropper-3339cbcc.js → __eyedropper-7b934b64.js} +3 -3
- package/dist/client/assets/{assets-8fd9db77.js → assets-0f9235a3.js} +7 -7
- package/dist/client/assets/{component-docs-94c9d80e.js → component-docs-516f2bde.js} +4 -4
- package/dist/client/assets/{components-133974b2.js → components-e048284d.js} +8 -8
- package/dist/client/assets/{data-1a736865.js → data-37773a62.js} +2 -2
- package/dist/client/assets/{documentations-bb1c038c.js → documentations-6fd78b0c.js} +2 -2
- package/dist/client/assets/{graph-7e8bbdd3.js → graph-23026554.js} +3 -3
- package/dist/client/assets/{index-57b0b18f.js → index-b327a261.js} +1 -1
- package/dist/client/assets/{index-056bb29c.js → index-c2b0ba3e.js} +19 -15
- package/dist/client/assets/{index-c3d74b48.css → index-f4f0a93b.css} +1 -1
- package/dist/client/assets/{inspect-d8a11fe1.js → inspect-9bd11a46.js} +2 -2
- package/dist/client/assets/{npm-3ad72929.js → npm-c03c6e14.js} +37 -38
- package/dist/client/assets/{overview-f7d1a936.js → overview-dfa4c675.js} +4 -4
- package/dist/client/assets/{pages-26acd942.js → pages-09d83e7f.js} +5 -5
- package/dist/client/assets/{pinia-f75a2b94.js → pinia-84d8d62d.js} +6 -6
- package/dist/client/assets/rerender-trace-0675adcd.css +14 -0
- package/dist/client/assets/{rerender-trace-a3fe7edb.js → rerender-trace-ce322913.js} +101 -35
- package/dist/client/assets/{routes-f320ef35.js → routes-a1298ce3.js} +7 -7
- package/dist/client/assets/{settings-b70ac3bb.js → settings-2ebfa83e.js} +6 -6
- package/dist/client/assets/{splitpanes.es-166029e0.js → splitpanes.es-695b5d63.js} +1 -1
- package/dist/client/assets/{timeline-92a66364.js → timeline-052b0db1.js} +7 -7
- package/dist/client/index.html +2 -2
- package/dist/vite.cjs +5 -2
- package/dist/vite.d.ts +5 -0
- package/dist/vite.mjs +5 -2
- package/package.json +3 -3
- package/src/views/ComponentInspector.vue +1 -0
- package/src/views/Main.vue +7 -1
- package/src/views/RerenderIndicator.vue +37 -0
- package/src/views/composables.ts +43 -1
- package/src/views/utils.ts +13 -0
- package/dist/client/assets/rerender-trace-6c5229c1.css +0 -14
package/dist/vite.cjs
CHANGED
|
@@ -13757,7 +13757,8 @@ function getVueDevtoolsPath() {
|
|
|
13757
13757
|
}
|
|
13758
13758
|
const defaultOptions = {
|
|
13759
13759
|
appendTo: "",
|
|
13760
|
-
analyze: compiler.analyzeOptionsDefault
|
|
13760
|
+
analyze: compiler.analyzeOptionsDefault,
|
|
13761
|
+
openInEditorHost: false
|
|
13761
13762
|
};
|
|
13762
13763
|
function mergeOptions(options) {
|
|
13763
13764
|
return Object.assign({}, defaultOptions, options);
|
|
@@ -13868,7 +13869,9 @@ import 'virtual:vue-devtools-path:app.js'`;
|
|
|
13868
13869
|
inspect,
|
|
13869
13870
|
VueInspector__default({
|
|
13870
13871
|
toggleComboKey: "",
|
|
13871
|
-
toggleButtonVisibility: "never"
|
|
13872
|
+
toggleButtonVisibility: "never",
|
|
13873
|
+
openInEditorHost: pluginOptions.openInEditorHost,
|
|
13874
|
+
...pluginOptions.appendTo ? { appendTo: pluginOptions.appendTo } : {}
|
|
13872
13875
|
})
|
|
13873
13876
|
];
|
|
13874
13877
|
}
|
package/dist/vite.d.ts
CHANGED
|
@@ -18,6 +18,11 @@ interface VitePluginVueDevToolsOptions {
|
|
|
18
18
|
* }
|
|
19
19
|
*/
|
|
20
20
|
analyze?: Partial<AnalyzeOptions>;
|
|
21
|
+
/**
|
|
22
|
+
* Customize openInEditor host (e.g. http://localhost:3000)
|
|
23
|
+
* @default false
|
|
24
|
+
*/
|
|
25
|
+
openInEditorHost?: string | false;
|
|
21
26
|
}
|
|
22
27
|
declare function VitePluginVueDevTools(options?: VitePluginVueDevToolsOptions): PluginOption;
|
|
23
28
|
|
package/dist/vite.mjs
CHANGED
|
@@ -13731,7 +13731,8 @@ function getVueDevtoolsPath() {
|
|
|
13731
13731
|
}
|
|
13732
13732
|
const defaultOptions = {
|
|
13733
13733
|
appendTo: "",
|
|
13734
|
-
analyze: analyzeOptionsDefault
|
|
13734
|
+
analyze: analyzeOptionsDefault,
|
|
13735
|
+
openInEditorHost: false
|
|
13735
13736
|
};
|
|
13736
13737
|
function mergeOptions(options) {
|
|
13737
13738
|
return Object.assign({}, defaultOptions, options);
|
|
@@ -13842,7 +13843,9 @@ import 'virtual:vue-devtools-path:app.js'`;
|
|
|
13842
13843
|
inspect,
|
|
13843
13844
|
VueInspector({
|
|
13844
13845
|
toggleComboKey: "",
|
|
13845
|
-
toggleButtonVisibility: "never"
|
|
13846
|
+
toggleButtonVisibility: "never",
|
|
13847
|
+
openInEditorHost: pluginOptions.openInEditorHost,
|
|
13848
|
+
...pluginOptions.appendTo ? { appendTo: pluginOptions.appendTo } : {}
|
|
13846
13849
|
})
|
|
13847
13850
|
];
|
|
13848
13851
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vite-plugin-vue-devtools",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.5",
|
|
5
5
|
"description": "A vite plugin for Vue DevTools",
|
|
6
6
|
"author": "webfansplz",
|
|
7
7
|
"license": "MIT",
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
"execa": "^7.1.1",
|
|
53
53
|
"sirv": "^2.0.3",
|
|
54
54
|
"vite-plugin-inspect": "^0.7.33",
|
|
55
|
-
"vite-plugin-vue-inspector": "^3.
|
|
56
|
-
"@vite-plugin-vue-devtools/core": "1.0.0-beta.
|
|
55
|
+
"vite-plugin-vue-inspector": "^3.5.0",
|
|
56
|
+
"@vite-plugin-vue-devtools/core": "1.0.0-beta.5"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@types/node": "^20.4.4",
|
|
@@ -28,6 +28,7 @@ const inspectorCardStyle = computed(() => ({ top: props.bounds.top < 35 ? 0 : '-
|
|
|
28
28
|
<span class="vue-devtools-component-inspector-card" :style="inspectorCardStyle">
|
|
29
29
|
<{{ name }}>
|
|
30
30
|
<i>{{ Math.round(bounds.width * 100) / 100 }} x {{ Math.round(bounds.height * 100) / 100 }}</i>
|
|
31
|
+
<slot name="header-extra" />
|
|
31
32
|
</span>
|
|
32
33
|
</div>
|
|
33
34
|
</template>
|
package/src/views/Main.vue
CHANGED
|
@@ -6,8 +6,9 @@ import vueDevToolsOptions from 'virtual:vue-devtools-options'
|
|
|
6
6
|
import { DevToolsHooks, collectDevToolsHookBuffer } from '@vite-plugin-vue-devtools/core'
|
|
7
7
|
import Frame from './FrameBox.vue'
|
|
8
8
|
import ComponentInspector from './ComponentInspector.vue'
|
|
9
|
-
import { useHighlightComponent, useIframe, useInspector, usePanelVisible, usePiPMode, usePosition } from './composables'
|
|
9
|
+
import { useHighlightComponent, useIframe, useInspector, usePanelVisible, usePiPMode, usePosition, useRerenderHighlight } from './composables'
|
|
10
10
|
import { checkIsSafari, useColorScheme, usePreferredColorScheme, warn } from './utils'
|
|
11
|
+
import RerenderIndicator from './RerenderIndicator.vue'
|
|
11
12
|
|
|
12
13
|
const props = defineProps({
|
|
13
14
|
hook: {
|
|
@@ -79,6 +80,7 @@ const { iframe, getIframe } = useIframe(clientUrl, async () => {
|
|
|
79
80
|
// Picture-in-Picture mode
|
|
80
81
|
const { popup } = usePiPMode(getIframe, hook)
|
|
81
82
|
const { overlayVisible, name: componentName, bounds, highlight, unHighlight } = useHighlightComponent()
|
|
83
|
+
const { updateRerenderHighlightInfo } = useRerenderHighlight()
|
|
82
84
|
|
|
83
85
|
async function setupClient(iframe: HTMLIFrameElement) {
|
|
84
86
|
const injection: any = iframe?.contentWindow?.__VUE_DEVTOOLS_VIEW__
|
|
@@ -124,6 +126,9 @@ async function setupClient(iframe: HTMLIFrameElement) {
|
|
|
124
126
|
}, 2000)
|
|
125
127
|
},
|
|
126
128
|
},
|
|
129
|
+
rerenderHighlight: {
|
|
130
|
+
updateInfo: updateRerenderHighlightInfo,
|
|
131
|
+
},
|
|
127
132
|
})
|
|
128
133
|
}
|
|
129
134
|
|
|
@@ -284,6 +289,7 @@ collectHookBuffer()
|
|
|
284
289
|
</div>
|
|
285
290
|
<!-- component inspector -->
|
|
286
291
|
<ComponentInspector v-if="overlayVisible" :bounds="bounds" :name="componentName" />
|
|
292
|
+
<RerenderIndicator />
|
|
287
293
|
</template>
|
|
288
294
|
|
|
289
295
|
<style scoped>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import ComponentInspector from './ComponentInspector.vue'
|
|
3
|
+
import { useRerenderHighlight } from './composables'
|
|
4
|
+
|
|
5
|
+
const { rerenderHighlightMap } = useRerenderHighlight()
|
|
6
|
+
|
|
7
|
+
const colors = [
|
|
8
|
+
['#ff5555', 50],
|
|
9
|
+
['#fff888', 20],
|
|
10
|
+
] as const
|
|
11
|
+
|
|
12
|
+
function getColors(times: number) {
|
|
13
|
+
const [color] = colors.find(([_, t]) => times >= t) || '#fff'
|
|
14
|
+
return color as string
|
|
15
|
+
}
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<template>
|
|
19
|
+
<template v-for="[uid, { bound, rerenderCount, name }] in rerenderHighlightMap.entries()" :key="uid">
|
|
20
|
+
<ComponentInspector
|
|
21
|
+
:bounds="bound"
|
|
22
|
+
:name="name"
|
|
23
|
+
>
|
|
24
|
+
<template #header-extra>
|
|
25
|
+
<span
|
|
26
|
+
v-if="rerenderCount"
|
|
27
|
+
>
|
|
28
|
+
(Rerender Count: <span
|
|
29
|
+
:style="{
|
|
30
|
+
color: getColors(rerenderCount),
|
|
31
|
+
}"
|
|
32
|
+
>{{ rerenderCount + 1 }})</span>
|
|
33
|
+
</span>
|
|
34
|
+
</template>
|
|
35
|
+
</ComponentInspector>
|
|
36
|
+
</template>
|
|
37
|
+
</template>
|
package/src/views/composables.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { computed, onMounted, reactive, ref, shallowRef, watchEffect } from 'vue'
|
|
2
2
|
import type { CSSProperties, Ref } from 'vue'
|
|
3
|
-
import { clamp, useObjectStorage, useScreenSafeArea, useWindowEventListener, warn } from './utils'
|
|
3
|
+
import { clamp, createDebounceFn, useObjectStorage, useScreenSafeArea, useWindowEventListener, warn } from './utils'
|
|
4
4
|
|
|
5
5
|
interface DevToolsFrameState {
|
|
6
6
|
width: number
|
|
@@ -474,3 +474,45 @@ export function useHighlightComponent() {
|
|
|
474
474
|
unHighlight,
|
|
475
475
|
}
|
|
476
476
|
}
|
|
477
|
+
|
|
478
|
+
// use rerender highlight
|
|
479
|
+
|
|
480
|
+
interface RerenderHighlightData {
|
|
481
|
+
name: string
|
|
482
|
+
rerenderCount: number
|
|
483
|
+
bound: {
|
|
484
|
+
width: number
|
|
485
|
+
height: number
|
|
486
|
+
left: number
|
|
487
|
+
top: number
|
|
488
|
+
}
|
|
489
|
+
debounceFn: () => void
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
const rerenderHighlightMap = ref<Map</* component instance uid */string, RerenderHighlightData>>(new Map())
|
|
493
|
+
|
|
494
|
+
function updateRerenderHighlightInfo(uid: string, name: string, bound: RerenderHighlightData['bound']) {
|
|
495
|
+
const data = rerenderHighlightMap.value.get(uid)
|
|
496
|
+
if (!data) {
|
|
497
|
+
const debounceFn = createDebounceFn(() => {
|
|
498
|
+
rerenderHighlightMap.value.delete(uid)
|
|
499
|
+
}, 3000)
|
|
500
|
+
rerenderHighlightMap.value.set(uid, {
|
|
501
|
+
rerenderCount: 0,
|
|
502
|
+
bound,
|
|
503
|
+
debounceFn,
|
|
504
|
+
name,
|
|
505
|
+
})
|
|
506
|
+
debounceFn()
|
|
507
|
+
return
|
|
508
|
+
}
|
|
509
|
+
data.rerenderCount += 1
|
|
510
|
+
data.debounceFn()
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
export function useRerenderHighlight() {
|
|
514
|
+
return {
|
|
515
|
+
rerenderHighlightMap,
|
|
516
|
+
updateRerenderHighlightInfo,
|
|
517
|
+
}
|
|
518
|
+
}
|
package/src/views/utils.ts
CHANGED
|
@@ -226,3 +226,16 @@ export function usePreferredColorScheme() {
|
|
|
226
226
|
|
|
227
227
|
return computed(() => isDark.value ? 'dark' : 'light')
|
|
228
228
|
}
|
|
229
|
+
|
|
230
|
+
export function createDebounceFn<const P, T>(fn: (this: T, ...args: P[]) => void, delay = 100) {
|
|
231
|
+
let timer: any | null = null
|
|
232
|
+
return function (this: T, ...args: P[]) {
|
|
233
|
+
if (timer)
|
|
234
|
+
clearTimeout(timer)
|
|
235
|
+
|
|
236
|
+
timer = setTimeout(() => {
|
|
237
|
+
fn.apply(this, args)
|
|
238
|
+
timer = null
|
|
239
|
+
}, delay)
|
|
240
|
+
}
|
|
241
|
+
}
|