vite-plugin-vue-devtools 0.0.1-alpha.9 → 0.0.2

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.
Files changed (26) hide show
  1. package/README.md +85 -2
  2. package/dist/client/assets/{VCard-2c64c235.js → VCard-bd163775.js} +1 -1
  3. package/dist/client/assets/{VIcon.vue_vue_type_script_setup_true_lang-8f4aa88f.js → VIcon.vue_vue_type_script_setup_true_lang-ace21790.js} +1 -1
  4. package/dist/client/assets/{VIconTitle.vue_vue_type_script_setup_true_lang-7396a93b.js → VIconTitle.vue_vue_type_script_setup_true_lang-158277be.js} +1 -1
  5. package/dist/client/assets/{VPanelGrids-258e71bf.js → VPanelGrids-aa63351b.js} +1 -1
  6. package/dist/client/assets/{VTextInput.vue_vue_type_script_setup_true_lang-bf165828.js → VTextInput.vue_vue_type_script_setup_true_lang-f891cb2d.js} +3 -3
  7. package/dist/client/assets/{__inspecting-ac0f47cd.js → __inspecting-286ae191.js} +2 -2
  8. package/dist/client/assets/{assets-16670a42.js → assets-cd4715cf.js} +7 -7
  9. package/dist/client/assets/{components-d61f66d3.js → components-9972c4c4.js} +38 -8
  10. package/dist/client/assets/{graph-06e5c153.js → graph-57712452.js} +3 -2
  11. package/dist/client/assets/{index-ecdbdbf3.js → index-46e82560.js} +121 -37
  12. package/dist/client/assets/{inspect-debc5551.js → inspect-78d7aad4.js} +2 -2
  13. package/dist/client/assets/{overview-8074b6b6.js → overview-b595f4c8.js} +4 -4
  14. package/dist/client/assets/{pages-8bbcb7f6.js → pages-d2cd252f.js} +4 -4
  15. package/dist/client/assets/{pinia-704b2690.js → pinia-663071c7.js} +9 -8
  16. package/dist/client/assets/{routes-2f7ef553.js → routes-4ac43e84.js} +5 -5
  17. package/dist/client/assets/{rpc-ff946cbe.js → rpc-b3f8e657.js} +1 -1
  18. package/dist/client/assets/{settings-0b0be9f6.js → settings-56399403.js} +3 -3
  19. package/dist/client/assets/{splitpanes.es-aae37be3.js → splitpanes.es-39cc6ffd.js} +8 -9
  20. package/dist/client/assets/timeline-3b917d7d.js +1500 -0
  21. package/dist/client/assets/timeline-b315b2e0.css +1 -0
  22. package/dist/client/index.html +1 -1
  23. package/dist/index.d.ts +2 -2
  24. package/package.json +19 -14
  25. package/src/node/Container.vue +1 -0
  26. package/dist/client/assets/timeline-32808aaa.js +0 -209
package/README.md CHANGED
@@ -1,7 +1,22 @@
1
- <h1>
1
+ <p align="center">
2
+ <img src="./assets/bg.png" />
3
+ </p>
4
+ <h1 align="center">
2
5
  Vue DevTools <sup>Preview</sup>
3
6
  </h1>
4
7
 
8
+
9
+ <p align="center">
10
+ <a href="https://www.npmjs.com/package/vite-plugin-vue-devtools" target="_blank" rel="noopener noreferrer"><img src="https://badgen.net/npm/v/vite-plugin-vue-devtools" alt="NPM Version" /></a>
11
+ <!-- <a href="https://www.npmjs.com/package/vite-plugin-vue-devtools" target="_blank" rel="noopener noreferrer"><img src="https://badgen.net/npm/dt/vite-plugin-vue-devtools" alt="NPM Downloads" /></a> -->
12
+ <a href="https://github.com/webfansplz/vite-plugin-vue-devtools/blob/main/LICENSE" target="_blank" rel="noopener noreferrer"><img src="https://badgen.net/github/license/webfansplz/vite-plugin-vue-devtools" alt="License" /></a>
13
+ </p>
14
+
15
+ <p align="center">
16
+ <a href="https://stackblitz.com/edit/vitejs-vite-oxbwzk?embed=1&file=vite.config.ts&view=preview"><img src="https://developer.stackblitz.com/img/open_in_stackblitz.svg" alt=""></a>
17
+ </p>
18
+
19
+
5
20
  ## 📖 Introduction
6
21
 
7
22
  `vite-plugin-vue-devtools` is a Vite plugin designed to enhance the Vue developer experience.
@@ -11,6 +26,62 @@ Vue DevTools <sup>Preview</sup>
11
26
  <a href="https://github.com/webfansplz/vite-plugin-vue-devtools/discussions/2">🗺️ Project Roadmap</a> |
12
27
  </p> -->
13
28
 
29
+ ## 🎉 Features
30
+
31
+ ### Pages
32
+
33
+ The pages tab shows your current routes and provide a quick way to navigate to them. For dynamic routes, it also provide a form to fill with each params interactively. You can also use the textbox to play and test how each route is matched.
34
+
35
+ <img src="./assets/pages.png" />
36
+
37
+
38
+ ### Components
39
+
40
+ Components tab show all the components you are using in your app and hierarchy. You can also select them to see the details of the component (e.g. data,props).
41
+
42
+ <img src="./assets/components.png" />
43
+
44
+ ### Assets
45
+
46
+ Assets tab that shows all your static assets (vite config.publicDir only now) and their information. You can open the asset in the browser or download it.
47
+
48
+ <img src="./assets/assets.png" />
49
+
50
+ ### Timeline
51
+
52
+ Timeline tab has three categories: Performance, Router Navigations, and Pinia. You can switch between them to see the state changes and timelines.
53
+
54
+ <img src="./assets/timeline.png" />
55
+
56
+ ### Routes
57
+
58
+ Routes tab is a feature integrated with [Vue Router](https://github.com/vuejs/router), allowing you to view the registered routes and their details.
59
+
60
+ <img src="./assets/routes.png" />
61
+
62
+ ### Pinia
63
+
64
+ Pinia tab is a feature integrated with [Pinia](https://github.com/vuejs/pinia), allowing you to view the registered modules and their details.
65
+
66
+ <img src="./assets/pinia.png" />
67
+
68
+ ### Graph
69
+
70
+ Graph tab provides a graph view that show the relationship between components.
71
+
72
+ <img src="./assets/graph.png" />
73
+
74
+ ### Inspect
75
+
76
+ Inspect expose the [vite-plugin-inspect](https://github.com/antfu/vite-plugin-inspect) integration, allowing you to inspect transformation steps of Vite. It can be helpful to understand how each plugin is transforming your code and spot potential issues.
77
+
78
+ <img src="./assets/inspect.png" />
79
+
80
+ ### Inspector
81
+
82
+ You can also use the "Inspector" feature to inspect the DOM tree and see which component is rendering it. Click to go to your editor of the specific line. Making it much easier to make changes, without the requirement of understanding the project structure thoroughly. (This feature is implemented based on the [vite-plugin-vue-inspector](https://github.com/webfansplz/vite-plugin-vue-inspector))
83
+
84
+ <img src="./assets/inspector.png" height=450 />
14
85
 
15
86
  ## 📦 Installation
16
87
 
@@ -42,11 +113,23 @@ export default defineConfig({
42
113
 
43
114
  - Only available in development mode.
44
115
  - Only support Vue3.0+.
116
+ - Currently only supports single-instance Vue applications (multi-instance support is coming soon).
45
117
  - Doesn't support SSR (If you're using Nuxt, use [nuxt/devtools](https://github.com/nuxt/devtools) directly).
118
+ - The plugin follows Vue's devtools configuration, so if you have configured the `hide` option, it will also be applied in this plugin. e.g.
119
+
120
+ ```js
121
+ // This Vue instance will be ignored by the plugin.
122
+ createApp({
123
+ render: () => h(App),
124
+ devtools: {
125
+ hide: true,
126
+ },
127
+ })
128
+ ```
46
129
 
47
130
  ## 🌸 Credits
48
131
 
49
- - This project is highly inspired by [nuxt/devtools](https://github.com/nuxt/devtools).
132
+ - This project is highly inspired by [nuxt/devtools](https://github.com/nuxt/devtools). Kudos to Anthony Fu for the awesome work!
50
133
 
51
134
  ## 📄 License
52
135
 
@@ -1,4 +1,4 @@
1
- import { ax as _export_sfc, o as openBlock, c as createElementBlock, v as renderSlot } from './index-ecdbdbf3.js';
1
+ import { aF as _export_sfc, o as openBlock, e as createElementBlock, f as renderSlot } from './index-46e82560.js';
2
2
 
3
3
  /* unplugin-vue-components disabled */const _sfc_main = {};
4
4
 
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, o as openBlock, c as createElementBlock, n as normalizeClass } from './index-ecdbdbf3.js';
1
+ import { v as defineComponent, o as openBlock, e as createElementBlock, q as normalizeClass } from './index-46e82560.js';
2
2
 
3
3
  const _sfc_main = /* @__PURE__ */ defineComponent({
4
4
  __name: "VIcon",
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, o as openBlock, c as createElementBlock, n as normalizeClass, m as createCommentVNode, v as renderSlot, e as createBaseVNode, t as toDisplayString } from './index-ecdbdbf3.js';
1
+ import { v as defineComponent, o as openBlock, e as createElementBlock, q as normalizeClass, g as createCommentVNode, f as renderSlot, x as createBaseVNode, y as toDisplayString } from './index-46e82560.js';
2
2
 
3
3
  const _hoisted_1 = {
4
4
  flex: "~ gap-3",
@@ -1,4 +1,4 @@
1
- import { ax as _export_sfc, o as openBlock, c as createElementBlock, v as renderSlot } from './index-ecdbdbf3.js';
1
+ import { aF as _export_sfc, o as openBlock, e as createElementBlock, f as renderSlot } from './index-46e82560.js';
2
2
 
3
3
  /* unplugin-vue-components disabled */const _sfc_main = {};
4
4
 
@@ -1,6 +1,6 @@
1
- import { _ as _sfc_main$2 } from './VIconTitle.vue_vue_type_script_setup_true_lang-7396a93b.js';
2
- import { _ as _sfc_main$3 } from './VIcon.vue_vue_type_script_setup_true_lang-8f4aa88f.js';
3
- import { d as defineComponent, s as useVModel, o as openBlock, c as createElementBlock, e as createBaseVNode, n as normalizeClass, b as createVNode, w as withCtx, v as renderSlot, m as createCommentVNode, a as createBlock, u as unref, x as withDirectives, F as Fragment, ay as resolveDirective, E as createTextVNode, t as toDisplayString, az as pushScopeId, aA as popScopeId, ax as _export_sfc, aB as vModelDynamic, ao as mergeProps, z as isRef } from './index-ecdbdbf3.js';
1
+ import { _ as _sfc_main$2 } from './VIconTitle.vue_vue_type_script_setup_true_lang-158277be.js';
2
+ import { _ as _sfc_main$3 } from './VIcon.vue_vue_type_script_setup_true_lang-ace21790.js';
3
+ import { v as defineComponent, K as useVModel, o as openBlock, e as createElementBlock, x as createBaseVNode, q as normalizeClass, u as createVNode, h as withCtx, f as renderSlot, g as createCommentVNode, c as createBlock, z as unref, d as withDirectives, F as Fragment, b as resolveDirective, R as createTextVNode, y as toDisplayString, p as pushScopeId, a as popScopeId, aF as _export_sfc, aG as vModelDynamic, k as mergeProps, M as isRef } from './index-46e82560.js';
4
4
 
5
5
  const _withScopeId = (n) => (pushScopeId("data-v-cf2e46eb"), n = n(), popScopeId(), n);
6
6
  const _hoisted_1$1 = ["open"];
@@ -1,5 +1,5 @@
1
- import { _ as __unplugin_components_0 } from './VPanelGrids-258e71bf.js';
2
- import { d as defineComponent, aD as useEventListener, o as openBlock, a as createBlock, w as withCtx, e as createBaseVNode, aE as useDevtoolsClient } from './index-ecdbdbf3.js';
1
+ import { _ as __unplugin_components_0 } from './VPanelGrids-aa63351b.js';
2
+ import { v as defineComponent, aI as useEventListener, o as openBlock, c as createBlock, h as withCtx, x as createBaseVNode, aJ as useDevtoolsClient } from './index-46e82560.js';
3
3
 
4
4
  const _hoisted_1 = /* @__PURE__ */ createBaseVNode("div", null, " Inspecting Vue components ", -1);
5
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,11 +1,11 @@
1
- import { _ as __unplugin_components_0 } from './VPanelGrids-258e71bf.js';
2
- import { _ as __unplugin_components_7 } from './VCard-2c64c235.js';
3
- import { _ as _sfc_main$a } from './VIcon.vue_vue_type_script_setup_true_lang-8f4aa88f.js';
4
- import { d as defineComponent, o as openBlock, a as createBlock, w as withCtx, b as createVNode, ao as mergeProps, ap as resolveDynamicComponent, Q as ref, aq as useElementSize, ar as onClickOutside, c as createElementBlock, e as createBaseVNode, v as renderSlot, u as unref, m as createCommentVNode, as as Transition, R as computed, t as toDisplayString, n as normalizeClass, at as useStyleTag, O as normalizeStyle, au as computedAsync, av as useTimeAgo, F as Fragment, E as createTextVNode, _ as _sfc_main$b, aw as onKeyDown, z as isRef, r as renderList } from './index-ecdbdbf3.js';
5
- import { r as rpc } from './rpc-ff946cbe.js';
6
- import { _ as _sfc_main$c, a as __unplugin_components_3 } from './VTextInput.vue_vue_type_script_setup_true_lang-bf165828.js';
1
+ import { _ as __unplugin_components_0 } from './VPanelGrids-aa63351b.js';
2
+ import { _ as __unplugin_components_7 } from './VCard-bd163775.js';
3
+ import { _ as _sfc_main$a } from './VIcon.vue_vue_type_script_setup_true_lang-ace21790.js';
4
+ import { v as defineComponent, o as openBlock, c as createBlock, h as withCtx, u as createVNode, k as mergeProps, j as resolveDynamicComponent, a0 as ref, ay as useElementSize, az as onClickOutside, e as createElementBlock, x as createBaseVNode, f as renderSlot, z as unref, g as createCommentVNode, aA as Transition, a1 as computed, y as toDisplayString, q as normalizeClass, aB as useStyleTag, l as normalizeStyle, aC as computedAsync, aD as useTimeAgo, F as Fragment, R as createTextVNode, _ as _sfc_main$b, aE as onKeyDown, M as isRef, i as renderList } from './index-46e82560.js';
5
+ import { r as rpc } from './rpc-b3f8e657.js';
6
+ import { _ as _sfc_main$c, a as __unplugin_components_3 } from './VTextInput.vue_vue_type_script_setup_true_lang-f891cb2d.js';
7
7
  import { F as Fuse } from './fuse.esm-c317b696.js';
8
- import './VIconTitle.vue_vue_type_script_setup_true_lang-7396a93b.js';
8
+ import './VIconTitle.vue_vue_type_script_setup_true_lang-158277be.js';
9
9
 
10
10
  const _sfc_main$9 = /* @__PURE__ */ defineComponent({
11
11
  __name: "VIconButton",
@@ -1,6 +1,8 @@
1
- import { a as _sfc_main$2, g, M, _ as _sfc_main$3 } from './splitpanes.es-aae37be3.js';
2
- import { ab as getInstanceName, ac as classify, ad as kebabize, ae as isFragment, af as camelize, ag as returnError, ah as isBeingDestroyed, ai as getUniqueComponentId, aj as getRenderKey, Q as ref, ak as shallowRef, R as computed, d as defineComponent, X as resolveComponent, o as openBlock, c as createElementBlock, e as createBaseVNode, u as unref, a as createBlock, n as normalizeClass, t as toDisplayString, O as normalizeStyle, F as Fragment, r as renderList, m as createCommentVNode, f as onMounted, al as onVueInstanceUpdate, b as createVNode, w as withCtx, a3 as reactive, am as instance } from './index-ecdbdbf3.js';
3
- import './VIcon.vue_vue_type_script_setup_true_lang-8f4aa88f.js';
1
+ import { _ as __unplugin_components_0 } from './VPanelGrids-aa63351b.js';
2
+ import { _ as __unplugin_components_7 } from './VCard-bd163775.js';
3
+ import { a as _sfc_main$2, g, M, _ as _sfc_main$3 } from './splitpanes.es-39cc6ffd.js';
4
+ import { aj as getInstanceName, ak as classify, al as kebabize, am as isFragment, an as camelize, ao as returnError, ap as isBeingDestroyed, aq as getUniqueComponentId, ar as getRenderKey, a0 as ref, as as shallowRef, a1 as computed, v as defineComponent, r as resolveComponent, o as openBlock, e as createElementBlock, x as createBaseVNode, z as unref, c as createBlock, q as normalizeClass, y as toDisplayString, l as normalizeStyle, F as Fragment, i as renderList, g as createCommentVNode, A as onMounted, at as onVueInstanceUpdate, u as createVNode, h as withCtx, ac as reactive, au as instance } from './index-46e82560.js';
5
+ import './VIcon.vue_vue_type_script_setup_true_lang-ace21790.js';
4
6
 
5
7
  class ComponentFilter {
6
8
  filter;
@@ -603,12 +605,18 @@ const _hoisted_2 = {
603
605
  class: "no-scrollbar"
604
606
  };
605
607
  const _hoisted_3 = {
608
+ key: 0,
606
609
  "h-screen": "",
607
610
  "select-none": "",
608
611
  "overflow-scroll": "",
609
612
  "p-2": "",
610
613
  class: "no-scrollbar"
611
614
  };
615
+ const _hoisted_4 = /* @__PURE__ */ createBaseVNode("h1", {
616
+ "text-sm": "",
617
+ italic: "",
618
+ op50: ""
619
+ }, " No Data ", -1);
612
620
  const _sfc_main = /* @__PURE__ */ defineComponent({
613
621
  __name: "components",
614
622
  setup(__props) {
@@ -652,14 +660,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
652
660
  });
653
661
  }
654
662
  onMounted(() => {
655
- onVueInstanceUpdate(() => {
656
- init();
657
- selected.value = "vue-devtools:root";
663
+ onVueInstanceUpdate((v) => {
664
+ if (v) {
665
+ init();
666
+ selected.value = "vue-devtools:root";
667
+ }
658
668
  });
659
669
  });
660
670
  return (_ctx, _cache) => {
661
671
  const _component_ComponentTreeNode = _sfc_main$1;
662
672
  const _component_StateFields = _sfc_main$3;
673
+ const _component_VCard = __unplugin_components_7;
674
+ const _component_VPanelGrids = __unplugin_components_0;
663
675
  return openBlock(), createElementBlock("div", _hoisted_1, [
664
676
  createVNode(unref(M), null, {
665
677
  default: withCtx(() => [
@@ -678,7 +690,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
678
690
  }),
679
691
  createVNode(unref(g), null, {
680
692
  default: withCtx(() => [
681
- createBaseVNode("div", _hoisted_3, [
693
+ unref(normalizedComponentState).length ? (openBlock(), createElementBlock("div", _hoisted_3, [
682
694
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(normalizedComponentState), (item, index) => {
683
695
  return openBlock(), createBlock(_component_StateFields, {
684
696
  id: index,
@@ -686,7 +698,25 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
686
698
  data: item
687
699
  }, null, 8, ["id", "data"]);
688
700
  }), 128))
689
- ])
701
+ ])) : (openBlock(), createBlock(_component_VPanelGrids, {
702
+ key: 1,
703
+ px5: ""
704
+ }, {
705
+ default: withCtx(() => [
706
+ createVNode(_component_VCard, {
707
+ flex: "~ col gap2",
708
+ "min-w-30": "",
709
+ "items-center": "",
710
+ p3: ""
711
+ }, {
712
+ default: withCtx(() => [
713
+ _hoisted_4
714
+ ]),
715
+ _: 1
716
+ })
717
+ ]),
718
+ _: 1
719
+ }))
690
720
  ]),
691
721
  _: 1
692
722
  })
@@ -1,6 +1,6 @@
1
- import { Q as ref, a7 as useStorage, R as computed, d as defineComponent, o as openBlock, c as createElementBlock, x as withDirectives, a8 as vModelText, u as unref, e as createBaseVNode, z as isRef, A as vModelCheckbox, a9 as useDark, f as onMounted, aa as watch, b as createVNode } from './index-ecdbdbf3.js';
1
+ import { a0 as ref, af as useStorage, a1 as computed, v as defineComponent, o as openBlock, e as createElementBlock, d as withDirectives, ag as vModelText, z as unref, x as createBaseVNode, M as isRef, N as vModelCheckbox, ah as useDark, A as onMounted, ai as watch, u as createVNode } from './index-46e82560.js';
2
2
  import { F as Fuse } from './fuse.esm-c317b696.js';
3
- import { r as rpc } from './rpc-ff946cbe.js';
3
+ import { r as rpc } from './rpc-b3f8e657.js';
4
4
 
5
5
  const list = ref(await rpc.componentGraph());
6
6
  const searchText = useStorage("vite-inspect-search-text", "");
@@ -13203,6 +13203,7 @@ function isDataViewLike(idProp, v) {
13203
13203
  * vis.js may be distributed under either license.
13204
13204
  */
13205
13205
 
13206
+
13206
13207
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
13207
13208
 
13208
13209
  function getDefaultExportFromCjs (x) {
@@ -1654,6 +1654,8 @@ function flushJobs(seen) {
1654
1654
  }
1655
1655
  }
1656
1656
  }
1657
+ new Set();
1658
+ new Map();
1657
1659
 
1658
1660
  function emit(instance, event, ...rawArgs) {
1659
1661
  if (instance.isUnmounted)
@@ -2957,6 +2959,20 @@ function ensureValidVNode(vnodes) {
2957
2959
  : null;
2958
2960
  }
2959
2961
 
2962
+ /**
2963
+ * For prefixing keys in v-on="obj" with "on"
2964
+ * @private
2965
+ */
2966
+ function toHandlers(obj, preserveCaseIfNecessary) {
2967
+ const ret = {};
2968
+ for (const key in obj) {
2969
+ ret[preserveCaseIfNecessary && /[A-Z]/.test(key)
2970
+ ? `on:${key}`
2971
+ : toHandlerKey(key)] = obj[key];
2972
+ }
2973
+ return ret;
2974
+ }
2975
+
2960
2976
  /**
2961
2977
  * #2437 In Vue 3, functional components do not have a public instance proxy but
2962
2978
  * they exist in the internal parent chain. For code that relies on traversing
@@ -6658,6 +6674,9 @@ function forceReflow() {
6658
6674
  return document.body.offsetHeight;
6659
6675
  }
6660
6676
 
6677
+ new WeakMap();
6678
+ new WeakMap();
6679
+
6661
6680
  const getModelAssigner = (vnode) => {
6662
6681
  const fn = vnode.props['onUpdate:modelValue'] ||
6663
6682
  (false );
@@ -6960,6 +6979,48 @@ const withKeys = (fn, modifiers) => {
6960
6979
  };
6961
6980
  };
6962
6981
 
6982
+ const vShow = {
6983
+ beforeMount(el, { value }, { transition }) {
6984
+ el._vod = el.style.display === 'none' ? '' : el.style.display;
6985
+ if (transition && value) {
6986
+ transition.beforeEnter(el);
6987
+ }
6988
+ else {
6989
+ setDisplay(el, value);
6990
+ }
6991
+ },
6992
+ mounted(el, { value }, { transition }) {
6993
+ if (transition && value) {
6994
+ transition.enter(el);
6995
+ }
6996
+ },
6997
+ updated(el, { value, oldValue }, { transition }) {
6998
+ if (!value === !oldValue)
6999
+ return;
7000
+ if (transition) {
7001
+ if (value) {
7002
+ transition.beforeEnter(el);
7003
+ setDisplay(el, true);
7004
+ transition.enter(el);
7005
+ }
7006
+ else {
7007
+ transition.leave(el, () => {
7008
+ setDisplay(el, false);
7009
+ });
7010
+ }
7011
+ }
7012
+ else {
7013
+ setDisplay(el, value);
7014
+ }
7015
+ },
7016
+ beforeUnmount(el, { value }) {
7017
+ setDisplay(el, value);
7018
+ }
7019
+ };
7020
+ function setDisplay(el, value) {
7021
+ el.style.display = value ? el._vod : 'none';
7022
+ }
7023
+
6963
7024
  const rendererOptions = /*#__PURE__*/ extend({ patchProp }, nodeOps);
6964
7025
  // lazy create the renderer - this makes core renderer logic tree-shakable
6965
7026
  // in case the user only imports reactivity utilities from Vue.
@@ -12715,12 +12776,6 @@ function toRef(...args) {
12715
12776
  return typeof r === "function" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);
12716
12777
  }
12717
12778
 
12718
- function reactivePick(obj, ...keys) {
12719
- const flatKeys = keys.flat();
12720
- const predicate = flatKeys[0];
12721
- return reactiveComputed(() => typeof predicate === "function" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));
12722
- }
12723
-
12724
12779
  var __defProp$9 = Object.defineProperty;
12725
12780
  var __defProps$7 = Object.defineProperties;
12726
12781
  var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors;
@@ -14102,17 +14157,17 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
14102
14157
 
14103
14158
  /* Injected with object hook! */
14104
14159
 
14105
- const __pages_import_0__ = () => __vitePreload(() => import('./timeline-32808aaa.js'),true?["./timeline-32808aaa.js","./splitpanes.es-aae37be3.js","./VIcon.vue_vue_type_script_setup_true_lang-8f4aa88f.js","./VPanelGrids-258e71bf.js","./VCard-2c64c235.js"]:void 0,import.meta.url);
14106
- const __pages_import_1__ = () => __vitePreload(() => import('./settings-0b0be9f6.js'),true?["./settings-0b0be9f6.js","./VIcon.vue_vue_type_script_setup_true_lang-8f4aa88f.js","./VIconTitle.vue_vue_type_script_setup_true_lang-7396a93b.js"]:void 0,import.meta.url);
14107
- const __pages_import_2__ = () => __vitePreload(() => import('./routes-2f7ef553.js'),true?["./routes-2f7ef553.js","./VPanelGrids-258e71bf.js","./VCard-2c64c235.js","./splitpanes.es-aae37be3.js","./VIcon.vue_vue_type_script_setup_true_lang-8f4aa88f.js"]:void 0,import.meta.url);
14108
- const __pages_import_3__ = () => __vitePreload(() => import('./pinia-704b2690.js'),true?["./pinia-704b2690.js","./splitpanes.es-aae37be3.js","./VIcon.vue_vue_type_script_setup_true_lang-8f4aa88f.js"]:void 0,import.meta.url);
14109
- const __pages_import_4__ = () => __vitePreload(() => import('./pages-8bbcb7f6.js'),true?["./pages-8bbcb7f6.js","./VTextInput.vue_vue_type_script_setup_true_lang-bf165828.js","./VIconTitle.vue_vue_type_script_setup_true_lang-7396a93b.js","./VIcon.vue_vue_type_script_setup_true_lang-8f4aa88f.js","./VTextInput-52804693.css"]:void 0,import.meta.url);
14110
- const __pages_import_5__ = () => __vitePreload(() => import('./overview-8074b6b6.js'),true?["./overview-8074b6b6.js","./VPanelGrids-258e71bf.js","./rpc-ff946cbe.js"]:void 0,import.meta.url);
14111
- const __pages_import_6__ = () => __vitePreload(() => import('./inspect-debc5551.js'),true?["./inspect-debc5551.js","./rpc-ff946cbe.js"]:void 0,import.meta.url);
14112
- const __pages_import_8__ = () => __vitePreload(() => import('./graph-06e5c153.js'),true?["./graph-06e5c153.js","./fuse.esm-c317b696.js","./rpc-ff946cbe.js"]:void 0,import.meta.url);
14113
- const __pages_import_9__ = () => __vitePreload(() => import('./components-d61f66d3.js'),true?["./components-d61f66d3.js","./splitpanes.es-aae37be3.js","./VIcon.vue_vue_type_script_setup_true_lang-8f4aa88f.js"]:void 0,import.meta.url);
14114
- const __pages_import_10__ = () => __vitePreload(() => import('./assets-16670a42.js'),true?["./assets-16670a42.js","./VPanelGrids-258e71bf.js","./VCard-2c64c235.js","./VIcon.vue_vue_type_script_setup_true_lang-8f4aa88f.js","./rpc-ff946cbe.js","./VTextInput.vue_vue_type_script_setup_true_lang-bf165828.js","./VIconTitle.vue_vue_type_script_setup_true_lang-7396a93b.js","./VTextInput-52804693.css","./fuse.esm-c317b696.js"]:void 0,import.meta.url);
14115
- const __pages_import_11__ = () => __vitePreload(() => import('./__inspecting-ac0f47cd.js'),true?["./__inspecting-ac0f47cd.js","./VPanelGrids-258e71bf.js"]:void 0,import.meta.url);
14160
+ const __pages_import_0__ = () => __vitePreload(() => import('./timeline-3b917d7d.js'),true?["./timeline-3b917d7d.js","./splitpanes.es-39cc6ffd.js","./VIcon.vue_vue_type_script_setup_true_lang-ace21790.js","./VPanelGrids-aa63351b.js","./VCard-bd163775.js","./timeline-b315b2e0.css"]:void 0,import.meta.url);
14161
+ const __pages_import_1__ = () => __vitePreload(() => import('./settings-56399403.js'),true?["./settings-56399403.js","./VIcon.vue_vue_type_script_setup_true_lang-ace21790.js","./VIconTitle.vue_vue_type_script_setup_true_lang-158277be.js"]:void 0,import.meta.url);
14162
+ const __pages_import_2__ = () => __vitePreload(() => import('./routes-4ac43e84.js'),true?["./routes-4ac43e84.js","./VPanelGrids-aa63351b.js","./VCard-bd163775.js","./splitpanes.es-39cc6ffd.js","./VIcon.vue_vue_type_script_setup_true_lang-ace21790.js"]:void 0,import.meta.url);
14163
+ const __pages_import_3__ = () => __vitePreload(() => import('./pinia-663071c7.js'),true?["./pinia-663071c7.js","./splitpanes.es-39cc6ffd.js","./VIcon.vue_vue_type_script_setup_true_lang-ace21790.js"]:void 0,import.meta.url);
14164
+ const __pages_import_4__ = () => __vitePreload(() => import('./pages-d2cd252f.js'),true?["./pages-d2cd252f.js","./VTextInput.vue_vue_type_script_setup_true_lang-f891cb2d.js","./VIconTitle.vue_vue_type_script_setup_true_lang-158277be.js","./VIcon.vue_vue_type_script_setup_true_lang-ace21790.js","./VTextInput-52804693.css"]:void 0,import.meta.url);
14165
+ const __pages_import_5__ = () => __vitePreload(() => import('./overview-b595f4c8.js'),true?["./overview-b595f4c8.js","./VPanelGrids-aa63351b.js","./rpc-b3f8e657.js"]:void 0,import.meta.url);
14166
+ const __pages_import_6__ = () => __vitePreload(() => import('./inspect-78d7aad4.js'),true?["./inspect-78d7aad4.js","./rpc-b3f8e657.js"]:void 0,import.meta.url);
14167
+ const __pages_import_8__ = () => __vitePreload(() => import('./graph-57712452.js'),true?["./graph-57712452.js","./fuse.esm-c317b696.js","./rpc-b3f8e657.js"]:void 0,import.meta.url);
14168
+ const __pages_import_9__ = () => __vitePreload(() => import('./components-9972c4c4.js'),true?["./components-9972c4c4.js","./VPanelGrids-aa63351b.js","./VCard-bd163775.js","./splitpanes.es-39cc6ffd.js","./VIcon.vue_vue_type_script_setup_true_lang-ace21790.js"]:void 0,import.meta.url);
14169
+ const __pages_import_10__ = () => __vitePreload(() => import('./assets-cd4715cf.js'),true?["./assets-cd4715cf.js","./VPanelGrids-aa63351b.js","./VCard-bd163775.js","./VIcon.vue_vue_type_script_setup_true_lang-ace21790.js","./rpc-b3f8e657.js","./VTextInput.vue_vue_type_script_setup_true_lang-f891cb2d.js","./VIconTitle.vue_vue_type_script_setup_true_lang-158277be.js","./VTextInput-52804693.css","./fuse.esm-c317b696.js"]:void 0,import.meta.url);
14170
+ const __pages_import_11__ = () => __vitePreload(() => import('./__inspecting-286ae191.js'),true?["./__inspecting-286ae191.js","./VPanelGrids-aa63351b.js"]:void 0,import.meta.url);
14116
14171
 
14117
14172
  const routes$1 = [{"name":"timeline","path":"/timeline","component":__pages_import_0__,"props":true},{"name":"settings","path":"/settings","component":__pages_import_1__,"props":true},{"name":"routes","path":"/routes","component":__pages_import_2__,"props":true},{"name":"pinia","path":"/pinia","component":__pages_import_3__,"props":true},{"name":"pages","path":"/pages","component":__pages_import_4__,"props":true},{"name":"overview","path":"/overview","component":__pages_import_5__,"props":true},{"name":"inspect","path":"/inspect","component":__pages_import_6__,"props":true},{"name":"index","path":"/","component":_sfc_main$6,"props":true},{"name":"graph","path":"/graph","component":__pages_import_8__,"props":true},{"name":"components","path":"/components","component":__pages_import_9__,"props":true},{"name":"assets","path":"/assets","component":__pages_import_10__,"props":true},{"name":"__inspecting","path":"/__inspecting","component":__pages_import_11__,"props":true}];
14118
14173
  /* Injected with object hook! */
@@ -14632,6 +14687,23 @@ var MutationType;
14632
14687
 
14633
14688
  /* Injected with object hook! */
14634
14689
 
14690
+ let nanoid = (size = 21) =>
14691
+ crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {
14692
+ byte &= 63;
14693
+ if (byte < 36) {
14694
+ id += byte.toString(36);
14695
+ } else if (byte < 62) {
14696
+ id += (byte - 26).toString(36).toUpperCase();
14697
+ } else if (byte > 62) {
14698
+ id += '-';
14699
+ } else {
14700
+ id += '_';
14701
+ }
14702
+ return id
14703
+ }, '');
14704
+
14705
+ /* Injected with object hook! */
14706
+
14635
14707
  function isBeingDestroyed(instance) {
14636
14708
  return instance._isBeingDestroyed || instance.isUnmounted;
14637
14709
  }
@@ -14726,7 +14798,7 @@ const timelineLayer = ref([]);
14726
14798
  const timelineEvent = ref([]);
14727
14799
  const activeLayerId = ref("performance");
14728
14800
  const activeTimelineEvents = computed(() => {
14729
- return timelineEvent.value.filter((item) => item.layerId === activeLayerId.value);
14801
+ return timelineEvent.value.map((item) => ({ ...item, id: nanoid() })).filter((item) => item.layerId === activeLayerId.value);
14730
14802
  });
14731
14803
  const activeTimelineEventIndex = ref(0);
14732
14804
  function toggleTimelineLayer(id) {
@@ -14834,7 +14906,7 @@ function initPerfTimeline(events) {
14834
14906
  const LAYER_ID$1 = "pinia";
14835
14907
  const piniaVisible = ref(false);
14836
14908
  const stores = ref();
14837
- const subscribes = ref([]);
14909
+ const subscribes = ref({});
14838
14910
  const piniaStoresId = ref(["🍍 Pinia (root)"]);
14839
14911
  const piniaState = ref({});
14840
14912
  const piniaGetters = ref({});
@@ -14930,7 +15002,10 @@ function subscribeStore(store) {
14930
15002
  });
14931
15003
  });
14932
15004
  }, true);
14933
- subscribes.value.push(action);
15005
+ if (subscribes.value[store.$id])
15006
+ subscribes.value[store.$id].push(action);
15007
+ else
15008
+ subscribes.value[store.$id] = [action];
14934
15009
  store._customProperties.forEach((name) => {
14935
15010
  const stop = watch(
14936
15011
  () => unref(store[name]),
@@ -14951,7 +15026,7 @@ function subscribeStore(store) {
14951
15026
  },
14952
15027
  { deep: true }
14953
15028
  );
14954
- subscribes.value.push(stop);
15029
+ subscribes.value[store.$id].push(stop);
14955
15030
  });
14956
15031
  const subscribe = store.$subscribe(
14957
15032
  ({ events, type }, state) => {
@@ -14977,7 +15052,7 @@ function subscribeStore(store) {
14977
15052
  },
14978
15053
  { detached: true, flush: "sync" }
14979
15054
  );
14980
- subscribes.value.push(subscribe);
15055
+ subscribes.value[store.$id].push(subscribe);
14981
15056
  store._hotUpdate = markRaw((newStore) => {
14982
15057
  timeApi.addTimelineEvent({
14983
15058
  layerId: LAYER_ID$1,
@@ -14996,6 +15071,15 @@ function subscribeStore(store) {
14996
15071
  }
14997
15072
  function normalizePiniaInfo() {
14998
15073
  Object.values(stores.value)?.forEach((store) => {
15074
+ let insertIndex = -1;
15075
+ if (piniaStoresId.value.includes(store.$id)) {
15076
+ subscribes.value[store.$id].forEach((stop) => stop());
15077
+ subscribes.value[store.$id] = [];
15078
+ delete piniaState.value[store.$id];
15079
+ delete piniaGetters.value[store.$id];
15080
+ insertIndex = piniaStoresId.value.indexOf(store.$id);
15081
+ piniaStoresId.value.splice(insertIndex, 1);
15082
+ }
14999
15083
  const state = store._isOptionsAPI ? toRaw(store.$state) : Object.keys(store.$state).reduce((state2, key) => {
15000
15084
  state2[key] = store.$state[key];
15001
15085
  return state2;
@@ -15007,25 +15091,23 @@ function normalizePiniaInfo() {
15007
15091
  return getters;
15008
15092
  }, {});
15009
15093
  }
15010
- piniaStoresId.value.push(store.$id);
15094
+ if (insertIndex)
15095
+ piniaStoresId.value.splice(insertIndex, 0, store.$id);
15096
+ else
15097
+ piniaStoresId.value.push(store.$id);
15011
15098
  subscribeStore(store);
15012
15099
  });
15013
15100
  }
15014
15101
  function updatePinia(component) {
15102
+ const proxy = component?.proxy;
15103
+ const _stores = proxy?._pStores;
15104
+ if (!_stores)
15105
+ return;
15015
15106
  stores.value = null;
15016
- subscribes.value.forEach((stop) => stop());
15017
- subscribes.value = [];
15018
- piniaState.value = {};
15019
- piniaGetters.value = {};
15020
- piniaStoresId.value = ["🍍 Pinia (root)"];
15021
15107
  nextTick(() => {
15022
- const proxy = component?.proxy;
15023
- const _stores = proxy?._pStores;
15024
15108
  piniaVisible.value = !!_stores;
15025
- if (_stores) {
15026
- stores.value = _stores;
15027
- normalizePiniaInfo();
15028
- }
15109
+ stores.value = _stores;
15110
+ normalizePiniaInfo();
15029
15111
  });
15030
15112
  }
15031
15113
  function initPinia() {
@@ -15099,6 +15181,7 @@ function produceHook() {
15099
15181
  return !app || typeof uid !== "number" && !uid || !component || hideInDevtools(component);
15100
15182
  }
15101
15183
  hook.on("component:updated" /* COMPONENT_UPDATED */, (app, uid, parentUid, component) => {
15184
+ updatePinia(component);
15102
15185
  if (skipCollect(app, uid, component))
15103
15186
  return;
15104
15187
  updateApp(app, component);
@@ -15110,11 +15193,13 @@ function produceHook() {
15110
15193
  updateApp(app, component);
15111
15194
  });
15112
15195
  hook.on("component:removed" /* COMPONENT_REMOVED */, (app, uid, parentUid, component) => {
15196
+ updatePinia(component);
15113
15197
  if (skipCollect(app, uid, component))
15114
15198
  return;
15115
15199
  updateApp(app, component);
15116
15200
  });
15117
15201
  hook.on("component:emit" /* COMPONENT_EMIT */, (app, uid, parentUid, component) => {
15202
+ updatePinia(component);
15118
15203
  if (skipCollect(app, uid, component))
15119
15204
  return;
15120
15205
  updateApp(app, component);
@@ -15122,8 +15207,7 @@ function produceHook() {
15122
15207
  }
15123
15208
  function ConsumeHook(buffer) {
15124
15209
  buffer.forEach(([eventType, { app, component }]) => {
15125
- if (eventType === "component:added" /* COMPONENT_ADDED */)
15126
- updatePinia(component);
15210
+ updatePinia(component);
15127
15211
  updateApp(app, component);
15128
15212
  });
15129
15213
  }
@@ -15397,4 +15481,4 @@ app.mount("#app");
15397
15481
 
15398
15482
  /* Injected with object hook! */
15399
15483
 
15400
- export { routes as $, vModelCheckbox as A, withKeys as B, useTabs as C, useCategorizedTabs as D, createTextVNode as E, Fragment as F, useDevToolsSettings as G, _sfc_main$3 as H, _sfc_main$5 as I, router$1 as J, routeRecordMatcherState as K, activeRouteRecordMatcherState as L, activeRouteRecordIndex as M, toggleRouteRecordMatcher as N, normalizeStyle as O, __unplugin_components_1 as P, ref as Q, computed as R, piniaStoresId as S, reactivePick as T, toRaw as U, piniaState as V, piniaGetters as W, resolveComponent as X, withModifiers as Y, currentRoute as Z, _sfc_main$9 as _, createBlock as a, vueVersion as a0, __unplugin_components_0 as a1, useColorMode as a2, reactive as a3, useElementBounding as a4, nextTick as a5, watchEffect as a6, useStorage as a7, vModelText as a8, useDark as a9, popScopeId as aA, vModelDynamic as aB, __vitePreload as aC, useEventListener as aD, useDevtoolsClient as aE, watch as aa, getInstanceName as ab, classify as ac, kebabize as ad, isFragment as ae, camelize as af, returnError as ag, isBeingDestroyed as ah, getUniqueComponentId as ai, getRenderKey as aj, shallowRef as ak, onVueInstanceUpdate as al, instance as am, h as an, mergeProps as ao, resolveDynamicComponent as ap, useElementSize as aq, onClickOutside as ar, Transition as as, useStyleTag as at, computedAsync as au, useTimeAgo as av, onKeyDown as aw, _export_sfc as ax, resolveDirective as ay, pushScopeId as az, createVNode as b, createElementBlock as c, defineComponent as d, createBaseVNode as e, onMounted as f, onUnmounted as g, timelineLayer as h, activeTimelineEvents as i, activeTimelineEventIndex as j, toggleTimelineEventIndex as k, timelineEventDetails as l, createCommentVNode as m, normalizeClass as n, openBlock as o, activeLayerId as p, toggleTimelineLayer as q, renderList as r, useVModel as s, toDisplayString as t, unref as u, renderSlot as v, withCtx as w, withDirectives as x, vModelSelect as y, isRef as z };
15484
+ export { __unplugin_components_1 as $, onMounted as A, onUnmounted as B, timelineLayer as C, activeTimelineEvents as D, activeTimelineEventIndex as E, Fragment as F, toggleTimelineEventIndex as G, timelineEventDetails as H, activeLayerId as I, toggleTimelineLayer as J, useVModel as K, vModelSelect as L, isRef as M, vModelCheckbox as N, withKeys as O, useTabs as P, useCategorizedTabs as Q, createTextVNode as R, useDevToolsSettings as S, _sfc_main$3 as T, _sfc_main$5 as U, router$1 as V, routeRecordMatcherState as W, activeRouteRecordMatcherState as X, activeRouteRecordIndex as Y, toggleRouteRecordMatcher as Z, _sfc_main$9 as _, popScopeId as a, ref as a0, computed as a1, piniaStoresId as a2, toRaw as a3, piniaState as a4, piniaGetters as a5, withModifiers as a6, currentRoute as a7, routes as a8, vueVersion as a9, Transition as aA, useStyleTag as aB, computedAsync as aC, useTimeAgo as aD, onKeyDown as aE, _export_sfc as aF, vModelDynamic as aG, __vitePreload as aH, useEventListener as aI, useDevtoolsClient as aJ, __unplugin_components_0 as aa, useColorMode as ab, reactive as ac, useElementBounding as ad, watchEffect as ae, useStorage as af, vModelText as ag, useDark as ah, watch as ai, getInstanceName as aj, classify as ak, kebabize as al, isFragment as am, camelize as an, returnError as ao, isBeingDestroyed as ap, getUniqueComponentId as aq, getRenderKey as ar, shallowRef as as, onVueInstanceUpdate as at, instance as au, nanoid as av, vShow as aw, h as ax, useElementSize as ay, onClickOutside as az, resolveDirective as b, createBlock as c, withDirectives as d, createElementBlock as e, renderSlot as f, createCommentVNode as g, withCtx as h, renderList as i, resolveDynamicComponent as j, mergeProps as k, normalizeStyle as l, markRaw as m, nextTick as n, openBlock as o, pushScopeId as p, normalizeClass as q, resolveComponent as r, shallowReactive as s, toHandlers as t, createVNode as u, defineComponent as v, withScopeId as w, createBaseVNode as x, toDisplayString as y, unref as z };
@@ -1,5 +1,5 @@
1
- import { d as defineComponent, a2 as useColorMode, Q as ref, R as computed, a3 as reactive, a4 as useElementBounding, f as onMounted, a5 as nextTick, a6 as watchEffect, g as onUnmounted, o as openBlock, c as createElementBlock, b as createVNode, u as unref } from './index-ecdbdbf3.js';
2
- import { i as inspectClientUrl } from './rpc-ff946cbe.js';
1
+ import { v as defineComponent, ab as useColorMode, a0 as ref, a1 as computed, ac as reactive, ad as useElementBounding, A as onMounted, n as nextTick, ae as watchEffect, B as onUnmounted, o as openBlock, e as createElementBlock, u as createVNode, z as unref } from './index-46e82560.js';
2
+ import { i as inspectClientUrl } from './rpc-b3f8e657.js';
3
3
 
4
4
  const iframeCacheMap = /* @__PURE__ */ new Map();
5
5
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
@@ -1,8 +1,8 @@
1
- import { _ as __unplugin_components_0$1 } from './VPanelGrids-258e71bf.js';
2
- import { Q as ref, R as computed, $ as routes, d as defineComponent, o as openBlock, a as createBlock, w as withCtx, e as createBaseVNode, b as createVNode, t as toDisplayString, u as unref, a0 as vueVersion, E as createTextVNode, c as createElementBlock, F as Fragment, a1 as __unplugin_components_0, P as __unplugin_components_1, X as resolveComponent, _ as _sfc_main$1 } from './index-ecdbdbf3.js';
3
- import { r as rpc } from './rpc-ff946cbe.js';
1
+ import { _ as __unplugin_components_0$1 } from './VPanelGrids-aa63351b.js';
2
+ import { a0 as ref, a1 as computed, a8 as routes, v as defineComponent, o as openBlock, c as createBlock, h as withCtx, x as createBaseVNode, u as createVNode, y as toDisplayString, z as unref, a9 as vueVersion, R as createTextVNode, e as createElementBlock, F as Fragment, aa as __unplugin_components_0, $ as __unplugin_components_1, r as resolveComponent, _ as _sfc_main$1 } from './index-46e82560.js';
3
+ import { r as rpc } from './rpc-b3f8e657.js';
4
4
 
5
- const version = "0.0.1-alpha.9";
5
+ const version = "0.0.2";
6
6
 
7
7
  /* Injected with object hook! */
8
8