@nuxt/devtools 4.0.0-alpha.15 → 4.0.0-alpha.17

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 (80) hide show
  1. package/dist/_nuxt/AuthRequiredPanel-znjaI7oT.js.map.json +1 -0
  2. package/dist/_nuxt/CodeDiff-DgjeLx6z.js.map.json +1 -0
  3. package/dist/_nuxt/CodeSnippets-CgfcaS4Z.js.map.json +1 -0
  4. package/dist/_nuxt/ComposableItem-BWQR7_fI.js.map.json +1 -0
  5. package/dist/_nuxt/DataSchemaButton-CqEfc2TV.js.map.json +1 -0
  6. package/dist/_nuxt/DataSchemaDrawer-Xj8YzNJN.js.map.json +1 -0
  7. package/dist/_nuxt/DurationDisplay-Dzweg1by.js.map.json +1 -0
  8. package/dist/_nuxt/FilepathItem-D75bkTSa.js.map.json +1 -0
  9. package/dist/_nuxt/HelpFab-CH7NlsDf.js.map.json +1 -0
  10. package/dist/_nuxt/LaunchPage-ByG-3KVi.js.map.json +1 -0
  11. package/dist/_nuxt/NBadge-BNJzHbtD.js.map.json +1 -0
  12. package/dist/_nuxt/NCard-mHVN2GYZ.js.map.json +1 -0
  13. package/dist/_nuxt/NCheckbox-OMIu_LTG.js.map.json +1 -0
  14. package/dist/_nuxt/NCodeBlock-C2Ewa6VO.js.map.json +1 -0
  15. package/dist/_nuxt/NDrawer-C6Opm19C.js.map.json +1 -0
  16. package/dist/_nuxt/NDropdown-DseEG3tA.js.map.json +1 -0
  17. package/dist/_nuxt/NIcon-cjduOh_B.js.map.json +1 -0
  18. package/dist/_nuxt/NIconTitle-C75MU0px.js.map.json +1 -0
  19. package/dist/_nuxt/NLink-Rsxlt1NN.js.map.json +1 -0
  20. package/dist/_nuxt/NMarkdown-DFwJ-ppZ.js.map.json +1 -0
  21. package/dist/_nuxt/NNavbar-CS-Z1Cle.js.map.json +1 -0
  22. package/dist/_nuxt/NPanelGrids-CEorXUWJ.js.map.json +1 -0
  23. package/dist/_nuxt/NSectionBlock-C7kcMkbf.js.map.json +1 -0
  24. package/dist/_nuxt/NSelect-geGP1eOG.js.map.json +1 -0
  25. package/dist/_nuxt/NSelectTabs-nUMnNQy-.js.map.json +1 -0
  26. package/dist/_nuxt/NSplitPane-Bh0o_t5e.js.map.json +1 -0
  27. package/dist/_nuxt/NTip-DRnTpLjG.js.map.json +1 -0
  28. package/dist/_nuxt/ServerRouteInputs-BhIrPxPN.js.map.json +1 -0
  29. package/dist/_nuxt/StacktraceList-B-ehJIQ-.js.map.json +1 -0
  30. package/dist/_nuxt/StateEditor-Yqdbqk_c.js.map.json +1 -0
  31. package/dist/_nuxt/__blank-BM2yOFO6.js.map.json +1 -0
  32. package/dist/_nuxt/analyze-build-Cemp_oBq.js.map.json +1 -0
  33. package/dist/_nuxt/assets-rTFAaows.js.map.json +1 -0
  34. package/dist/_nuxt/client-r5qP-99Q.js.map.json +1 -0
  35. package/dist/_nuxt/color-BL_mIEWV.js.map.json +1 -0
  36. package/dist/_nuxt/components-BJnHweOE.js.map.json +1 -0
  37. package/dist/_nuxt/constants-D9kP6ji9.js.map.json +1 -0
  38. package/dist/_nuxt/custom-_name_-DI8dnRDD.js.map.json +1 -0
  39. package/dist/_nuxt/debug-BcJZ8M6i.js.map.json +1 -0
  40. package/dist/_nuxt/default-Bzh4dZQ5.js.map.json +1 -0
  41. package/dist/_nuxt/entry-DZwY6FLS.js.map.json +1 -0
  42. package/dist/_nuxt/error-404-dySA7T2P.js.map.json +1 -0
  43. package/dist/_nuxt/error-500-2Ody89Er.js.map.json +1 -0
  44. package/dist/_nuxt/error-hGc4cWUU.js.map.json +1 -0
  45. package/dist/_nuxt/full-CvSnaO29.js.map.json +1 -0
  46. package/dist/_nuxt/head-BTCtirw3.js.map.json +1 -0
  47. package/dist/_nuxt/hooks-BVzlIVXR.js.map.json +1 -0
  48. package/dist/_nuxt/imports-B3k4BZF7.js.map.json +1 -0
  49. package/dist/_nuxt/modules-Ck915TxZ.js.map.json +1 -0
  50. package/dist/_nuxt/none-Df66KJph.js.map.json +1 -0
  51. package/dist/_nuxt/nuxt-C5VITehY.js.map.json +1 -0
  52. package/dist/_nuxt/nuxt-link-C-BBeF5l.js.map.json +1 -0
  53. package/dist/_nuxt/open-graph-ll_bjX_m.js.map.json +1 -0
  54. package/dist/_nuxt/overview-CyqDmfdE.js.map.json +1 -0
  55. package/dist/_nuxt/pages-BddDWJsZ.js.map.json +1 -0
  56. package/dist/_nuxt/pages-CrUWMxGz.js.map.json +1 -0
  57. package/dist/_nuxt/pages-DWELoQlh.js.map.json +1 -0
  58. package/dist/_nuxt/payload-29bFuqLh.js.map.json +1 -0
  59. package/dist/_nuxt/plugins-fmmRaH-S.js.map.json +1 -0
  60. package/dist/_nuxt/ready-BQ1fhXgL.js.map.json +1 -0
  61. package/dist/_nuxt/runtime-configs-iL68LNkj.js.map.json +1 -0
  62. package/dist/_nuxt/server-routes-Dy5_Ljmu.js.map.json +1 -0
  63. package/dist/_nuxt/server-tasks-CD-7IPFD.js.map.json +1 -0
  64. package/dist/_nuxt/settings-Qa45tU8e.js.map.json +1 -0
  65. package/dist/_nuxt/state-components-CksF081b.js.map.json +1 -0
  66. package/dist/_nuxt/state-modules-CyH4hWeN.js.map.json +1 -0
  67. package/dist/_nuxt/state-tabs-m1o-BX5R.js.map.json +1 -0
  68. package/dist/_nuxt/storage-BylO3p9r.js.map.json +1 -0
  69. package/dist/_nuxt/timeline-Dukbqafi.js.map.json +1 -0
  70. package/dist/_nuxt/utils-BfB0tRbX.js.map.json +1 -0
  71. package/dist/_nuxt/virtual-files-BQJM45QE.js.map.json +1 -0
  72. package/dist/chunks/module-main.mjs +1 -1
  73. package/dist/dirs.d.cts +1 -0
  74. package/dist/index.mjs.map.json +1 -0
  75. package/dist/module.d.cts +2 -0
  76. package/dist/module.json +1 -1
  77. package/dist/server.mjs.map.json +1 -0
  78. package/dist/types.d.cts +2 -0
  79. package/dist/webcomponents/index.d.cts +1 -0
  80. package/package.json +30 -30
@@ -0,0 +1 @@
1
+ {"file":"settings-Qa45tU8e.js","mappings":"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","names":[],"sources":["../../../../../../../../pages/settings.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../pages/settings.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createBlock as _createBlock, toDisplayString as _toDisplayString, createVNode as _createVNode, isRef as _isRef, createTextVNode as _createTextVNode, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent, ssrRenderAttr as _ssrRenderAttr, ssrRenderAttrs as _ssrRenderAttrs, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport { definePageMeta } from '#imports'\nimport { useClient } from '~/composables/client'\nimport { rpc } from '~/composables/rpc'\nimport { telemetryEnabled } from '~/composables/telemetry'\nimport { useDevToolsOptions } from '../composables/storage-options'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'settings',\n __ssrInlineRender: true,\n setup(__props) {\n\ndefinePageMeta({\n layout: 'full',\n})\n\nconst {\n showHelpButtons,\n scale,\n} = useDevToolsOptions('ui')\n\nconst {\n openInEditor,\n} = useDevToolsOptions('behavior')\n\nconst client = useClient()\n\nconst editorOptions = [\n ['Auto', undefined],\n ['VS Code', 'vscode'],\n ['VS Code Insider', 'vscode-insider'],\n ['Cursor', 'cursor'],\n ['Zed', 'zed'],\n ['Zed (zeditor)', 'zeditor'],\n ['WebStorm', 'webstorm'],\n ['Sublime Text', 'sublime'],\n ['Atom', 'atom'],\n ['Windsurf', 'windsurf'],\n]\n\nconst scaleOptions = [\n ['Tiny', 12 / 15],\n ['Small', 14 / 15],\n ['Normal', 1],\n ['Large', 16 / 15],\n ['Huge', 18 / 15],\n]\n\nasync function clearOptions() {\n // eslint-disable-next-line no-alert\n if (confirm('Are you sure you to reset all local settings & state? The app will reload.')) {\n Object.keys(localStorage).forEach((key) => {\n if (key.startsWith('nuxt-devtools-'))\n localStorage.removeItem(key)\n })\n await rpc.clearOptions()\n client.value?.app?.reload?.()\n window.location.reload()\n }\n}\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NIconTitle = _resolveComponent(\"NIconTitle\")!\n const _component_NCard = _resolveComponent(\"NCard\")!\n const _component_NSelect = _resolveComponent(\"NSelect\")!\n const _component_NCheckbox = _resolveComponent(\"NCheckbox\")!\n const _component_NLink = _resolveComponent(\"NLink\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n\n _push(`<div${_ssrRenderAttrs(_mergeProps({\n px8: \"\",\n py6: \"\"\n }, _attrs))}>`)\n _push(_ssrRenderComponent(_component_NIconTitle, {\n class: \"mb-5 text-xl op75\",\n icon: \"i-carbon-settings-adjust\",\n text: \"DevTools Settings\"\n }, null, _parent))\n _push(`<div grid=\"~ lg:cols-2 gap-x-10 gap-y-3\" max-w-300><div flex=\"~ col gap-2\"><h3 text-lg> Appearance </h3>`)\n _push(_ssrRenderComponent(_component_NCard, {\n p4: \"\",\n flex: \"~ col gap-2\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<p${_scopeId}>UI Scale</p>`)\n _push(_ssrRenderComponent(_component_NSelect, {\n modelValue: _unref(scale),\n \"onUpdate:modelValue\": ($event: any) => (_isRef(scale) ? (scale).value = $event : null),\n n: \"primary\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<!--[-->`)\n _ssrRenderList(scaleOptions, (i) => {\n _push(`<option${\n _ssrRenderAttr(\"value\", i[1])\n }${\n _scopeId\n }>${\n _ssrInterpolate(i[0])\n }</option>`)\n })\n _push(`<!--]-->`)\n } else {\n return [\n (_openBlock(), _createBlock(_Fragment, null, _renderList(scaleOptions, (i) => {\n return _createVNode(\"option\", {\n key: i[0],\n value: i[1]\n }, _toDisplayString(i[0]), 9, [\"value\"])\n }), 64))\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(\"p\", null, \"UI Scale\"),\n _createVNode(_component_NSelect, {\n modelValue: _unref(scale),\n \"onUpdate:modelValue\": ($event: any) => (_isRef(scale) ? (scale).value = $event : null),\n n: \"primary\"\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_Fragment, null, _renderList(scaleOptions, (i) => {\n return _createVNode(\"option\", {\n key: i[0],\n value: i[1]\n }, _toDisplayString(i[0]), 9, [\"value\"])\n }), 64))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<h3 mt2 text-lg> Features </h3>`)\n _push(_ssrRenderComponent(_component_NCard, {\n p4: \"\",\n flex: \"~ col gap-2\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NCheckbox, {\n modelValue: _unref(showHelpButtons),\n \"onUpdate:modelValue\": ($event: any) => (_isRef(showHelpButtons) ? (showHelpButtons).value = $event : null),\n \"n-primary\": \"\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<span${_scopeId}>Show help buttons</span>`)\n } else {\n return [\n _createVNode(\"span\", null, \"Show help buttons\")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`<div mx--2 my1 h-1px border=\"b base\" op75${\n _scopeId\n }></div><p${\n _scopeId\n }>Open In Editor</p>`)\n _push(_ssrRenderComponent(_component_NSelect, {\n modelValue: _unref(openInEditor),\n \"onUpdate:modelValue\": ($event: any) => (_isRef(openInEditor) ? (openInEditor).value = $event : null),\n \"n-primary\": \"\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<!--[-->`)\n _ssrRenderList(editorOptions, (i) => {\n _push(`<option${\n _ssrRenderAttr(\"value\", i[1])\n }${\n _scopeId\n }>${\n _ssrInterpolate(i[0])\n }</option>`)\n })\n _push(`<!--]-->`)\n } else {\n return [\n (_openBlock(), _createBlock(_Fragment, null, _renderList(editorOptions, (i) => {\n return _createVNode(\"option\", {\n key: i[0],\n value: i[1]\n }, _toDisplayString(i[0]), 9, [\"value\"])\n }), 64))\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NCheckbox, {\n modelValue: _unref(showHelpButtons),\n \"onUpdate:modelValue\": ($event: any) => (_isRef(showHelpButtons) ? (showHelpButtons).value = $event : null),\n \"n-primary\": \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", null, \"Show help buttons\")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(\"div\", {\n \"mx--2\": \"\",\n my1: \"\",\n \"h-1px\": \"\",\n border: \"b base\",\n op75: \"\"\n }),\n _createVNode(\"p\", null, \"Open In Editor\"),\n _createVNode(_component_NSelect, {\n modelValue: _unref(openInEditor),\n \"onUpdate:modelValue\": ($event: any) => (_isRef(openInEditor) ? (openInEditor).value = $event : null),\n \"n-primary\": \"\"\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_Fragment, null, _renderList(editorOptions, (i) => {\n return _createVNode(\"option\", {\n key: i[0],\n value: i[1]\n }, _toDisplayString(i[0]), 9, [\"value\"])\n }), 64))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<h3 mt2 text-lg> Feedback </h3>`)\n _push(_ssrRenderComponent(_component_NCard, {\n p4: \"\",\n flex: \"~ col gap-2\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NCheckbox, {\n modelValue: _unref(telemetryEnabled),\n \"onUpdate:modelValue\": ($event: any) => (_isRef(telemetryEnabled) ? (telemetryEnabled).value = $event : null),\n \"n-primary\": \"\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<span${_scopeId}>Send anonymous statistics, help us improving DevTools</span>`)\n _push(_ssrRenderComponent(_component_NLink, {\n href: \"https://github.com/nuxt/devtools#anonymous-usage-analytics\",\n target: \"_blank\",\n ml1: \"\",\n op50: \"\"\n }, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(\"span\", null, \"Send anonymous statistics, help us improving DevTools\"),\n _createVNode(_component_NLink, {\n href: \"https://github.com/nuxt/devtools#anonymous-usage-analytics\",\n target: \"_blank\",\n ml1: \"\",\n op50: \"\",\n textContent: 'Learn more'\n })\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`<div mx--2 my1 h-1px border=\"b base\" op75${\n _scopeId\n }></div><div flex=\"~ gap-2\"${\n _scopeId\n }>`)\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"blue\",\n to: \"https://github.com/nuxt/devtools/discussions/29\",\n target: \"_blank\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div i-carbon-data-enrichment${_scopeId}></div> Ideas &amp; Suggestions `)\n } else {\n return [\n _createVNode(\"div\", { \"i-carbon-data-enrichment\": \"\" }),\n _createTextVNode(\" Ideas & Suggestions \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"orange\",\n to: \"https://github.com/nuxt/devtools/issues\",\n target: \"_blank\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div i-carbon-debug${_scopeId}></div> Bug Reports `)\n } else {\n return [\n _createVNode(\"div\", { \"i-carbon-debug\": \"\" }),\n _createTextVNode(\" Bug Reports \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`</div>`)\n } else {\n return [\n _createVNode(_component_NCheckbox, {\n modelValue: _unref(telemetryEnabled),\n \"onUpdate:modelValue\": ($event: any) => (_isRef(telemetryEnabled) ? (telemetryEnabled).value = $event : null),\n \"n-primary\": \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", null, \"Send anonymous statistics, help us improving DevTools\"),\n _createVNode(_component_NLink, {\n href: \"https://github.com/nuxt/devtools#anonymous-usage-analytics\",\n target: \"_blank\",\n ml1: \"\",\n op50: \"\",\n textContent: 'Learn more'\n })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(\"div\", {\n \"mx--2\": \"\",\n my1: \"\",\n \"h-1px\": \"\",\n border: \"b base\",\n op75: \"\"\n }),\n _createVNode(\"div\", { flex: \"~ gap-2\" }, [\n _createVNode(_component_NButton, {\n n: \"blue\",\n to: \"https://github.com/nuxt/devtools/discussions/29\",\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"div\", { \"i-carbon-data-enrichment\": \"\" }),\n _createTextVNode(\" Ideas & Suggestions \")\n ]),\n _: 1\n }),\n _createVNode(_component_NButton, {\n n: \"orange\",\n to: \"https://github.com/nuxt/devtools/issues\",\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"div\", { \"i-carbon-debug\": \"\" }),\n _createTextVNode(\" Bug Reports \")\n ]),\n _: 1\n })\n ])\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<h3 mt2 text-lg> Debug </h3><div flex=\"~ gap-2\">`)\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"orange\",\n onClick: clearOptions\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div i-carbon-breaking-change${_scopeId}></div> Reset Local Settings &amp; State `)\n } else {\n return [\n _createVNode(\"div\", { \"i-carbon-breaking-change\": \"\" }),\n _createTextVNode(\" Reset Local Settings & State \")\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`</div></div></div></div>`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport { definePageMeta } from '#imports'\nimport { useClient } from '~/composables/client'\nimport { rpc } from '~/composables/rpc'\nimport { telemetryEnabled } from '~/composables/telemetry'\nimport { useDevToolsOptions } from '../composables/storage-options'\n\ndefinePageMeta({\n layout: 'full',\n})\n\nconst {\n showHelpButtons,\n scale,\n} = useDevToolsOptions('ui')\n\nconst {\n openInEditor,\n} = useDevToolsOptions('behavior')\n\nconst client = useClient()\n\nconst editorOptions = [\n ['Auto', undefined],\n ['VS Code', 'vscode'],\n ['VS Code Insider', 'vscode-insider'],\n ['Cursor', 'cursor'],\n ['Zed', 'zed'],\n ['Zed (zeditor)', 'zeditor'],\n ['WebStorm', 'webstorm'],\n ['Sublime Text', 'sublime'],\n ['Atom', 'atom'],\n ['Windsurf', 'windsurf'],\n]\n\nconst scaleOptions = [\n ['Tiny', 12 / 15],\n ['Small', 14 / 15],\n ['Normal', 1],\n ['Large', 16 / 15],\n ['Huge', 18 / 15],\n]\n\nasync function clearOptions() {\n // eslint-disable-next-line no-alert\n if (confirm('Are you sure you to reset all local settings & state? The app will reload.')) {\n Object.keys(localStorage).forEach((key) => {\n if (key.startsWith('nuxt-devtools-'))\n localStorage.removeItem(key)\n })\n await rpc.clearOptions()\n client.value?.app?.reload?.()\n window.location.reload()\n }\n}\n</script>\n\n<template>\n <div px8 py6>\n <NIconTitle\n class=\"mb-5 text-xl op75\"\n icon=\"i-carbon-settings-adjust\"\n text=\"DevTools Settings\"\n />\n <div grid=\"~ lg:cols-2 gap-x-10 gap-y-3\" max-w-300>\n <div flex=\"~ col gap-2\">\n <h3 text-lg>\n Appearance\n </h3>\n <NCard p4 flex=\"~ col gap-2\">\n <p>UI Scale</p>\n <NSelect v-model=\"scale\" n=\"primary\">\n <option v-for=\"i of scaleOptions\" :key=\"i[0]\" :value=\"i[1]\">\n {{ i[0] }}\n </option>\n </NSelect>\n </NCard>\n\n <h3 mt2 text-lg>\n Features\n </h3>\n <NCard p4 flex=\"~ col gap-2\">\n <NCheckbox v-model=\"showHelpButtons\" n-primary>\n <span>Show help buttons</span>\n </NCheckbox>\n\n <div mx--2 my1 h-1px border=\"b base\" op75 />\n\n <p>Open In Editor</p>\n <NSelect v-model=\"openInEditor\" n-primary>\n <option v-for=\"i of editorOptions\" :key=\"i[0]\" :value=\"i[1]\">\n {{ i[0] }}\n </option>\n </NSelect>\n </NCard>\n\n <h3 mt2 text-lg>\n Feedback\n </h3>\n <NCard p4 flex=\"~ col gap-2\">\n <NCheckbox v-model=\"telemetryEnabled\" n-primary>\n <span>Send anonymous statistics, help us improving DevTools</span>\n <NLink href=\"https://github.com/nuxt/devtools#anonymous-usage-analytics\" target=\"_blank\" ml1 op50 v-text=\"'Learn more'\" />\n </NCheckbox>\n\n <div mx--2 my1 h-1px border=\"b base\" op75 />\n\n <div flex=\"~ gap-2\">\n <NButton n=\"blue\" to=\"https://github.com/nuxt/devtools/discussions/29\" target=\"_blank\">\n <div i-carbon-data-enrichment />\n Ideas & Suggestions\n </NButton>\n <NButton n=\"orange\" to=\"https://github.com/nuxt/devtools/issues\" target=\"_blank\">\n <div i-carbon-debug />\n Bug Reports\n </NButton>\n </div>\n </NCard>\n\n <h3 mt2 text-lg>\n Debug\n </h3>\n <div flex=\"~ gap-2\">\n <NButton n=\"orange\" @click=\"clearOptions\">\n <div i-carbon-breaking-change />\n Reset Local Settings & State\n </NButton>\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"version":3}
@@ -0,0 +1 @@
1
+ {"file":"state-components-CksF081b.js","mappings":";;;;AAMA,IAAM,oBAAoB;AAE1B,SAAgB,gBAAgB;CAC9B,MAAM,SAAS,UAAU;CACzB,MAAM,mBAAmB,cAAc,uBAAuB,IAAI,cAAc,CAAC;CAEjF,MAAM,mBAAmB,eACvB,OACG,QAAQ,OAAO,OAAO,MAAM,OAAO,SAAS,cAAc,CAAC,CAAC,CAAC,CAC7D,KAAK,CAAC,UAAU;EACf,YAAY;EACZ,QAAQ;CACV,EAA0B,CAAC,CAE1B,QAAO,MAAK,CAAC,kBAAkB,KAAK,EAAE,UAAU,CAAC,CAAC,CAElD,QAAO,MAAK,CAAC,iBAAiB,SAAS,CAAC,CAAC,CAAC,MAAM,MAAW,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;CAE/F,OAAO,eAAe,CACpB,GAAG,iBAAiB,OACpB,GAAG,iBAAiB,SAAS,CAAC,CAChC,CAAC,CAAC,MAAM,GAAQ,MAAW,EAAE,WAAW,cAAc,EAAE,UAAU,CAAC,CAAC;AACtE;AAEA,SAAgB,6BAA6B;CAC3C,OAAO,cAAc,oCAAoC,IAAI,2BAA2B,CAAC;AAC3F","names":[],"sources":["../../../../../../../../composables/state-components.ts"],"sourcesContent":["import type { Component } from 'nuxt/schema'\nimport { computed } from 'vue'\nimport { useClient } from './client'\nimport { rpc } from './rpc'\nimport { useAsyncState } from './utils'\n\nconst LAZY_COMPONENT_RE = /^Lazy[A-Z]/\n\nexport function useComponents() {\n const client = useClient()\n const serverComponents = useAsyncState('getComponents', () => rpc.getComponents())\n\n const globalComponents = computed(() =>\n Object\n .entries(client.value?.nuxt?.vueApp._context.components || {})\n .map(([key]) => ({\n pascalName: key,\n global: true,\n } as unknown as Component))\n // filter out lazy components\n .filter(i => !LAZY_COMPONENT_RE.test(i.pascalName))\n // dedupe server components\n .filter(i => !serverComponents.value || [].some((s: any) => s.pascalName === i.pascalName)))\n\n return computed(() => [\n ...globalComponents.value,\n ...serverComponents.value || [],\n ].sort((a: any, b: any) => a.pascalName.localeCompare(b.pascalName)))\n}\n\nexport function useComponentsRelationships() {\n return useAsyncState('getComponentsRelationships', () => rpc.getComponentsRelationships())\n}\n"],"version":3}
@@ -0,0 +1 @@
1
+ {"file":"state-modules-CyH4hWeN.js","mappings":"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","names":[],"sources":["../../../../../../../../components/NpmVersionCheck.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/NpmVersionCheck.vue","../../../../../../../../composables/state-modules.ts"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, withCtx as _withCtx, createTextVNode as _createTextVNode, toDisplayString as _toDisplayString, createVNode as _createVNode } from \"vue\"\nimport { ssrRenderSlot as _ssrRenderSlot, ssrRenderComponent as _ssrRenderComponent, ssrInterpolate as _ssrInterpolate } from \"vue/server-renderer\"\n\nimport type { NpmCommandOptions } from '../../src/types'\nimport { createTemplatePromise } from '@vueuse/core'\nimport { ref } from 'vue'\nimport { useRestartDialogs } from '~/composables/dialog'\nimport { usePackageUpdate } from '~/composables/npm'\nimport { rpc } from '~/composables/rpc'\nimport { telemetry } from '~/composables/telemetry'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'NpmVersionCheck',\n __ssrInlineRender: true,\n props: {\n packageName: {},\n options: {},\n showVersion: { type: Boolean, default: true }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst {\n info,\n update,\n state,\n processId,\n restart,\n} = usePackageUpdate(props.packageName, props.options)\n\nconst shouldRevealTerminal = ref(true)\nconst shouldRestartServer = ref(true)\nconst restartDialogs = useRestartDialogs()\n\nconst PromiseConfirm = createTemplatePromise<boolean, [string]>()\n\nasync function updateWithConfirm() {\n const processId = await update(async (command) => {\n return PromiseConfirm.start(command)\n })\n\n telemetry('npm:update', {\n packageName: props.packageName,\n oldVersion: info.value?.current,\n })\n\n if (processId && shouldRestartServer.value) {\n restartDialogs.value.push({\n id: processId,\n message: `${props.packageName} has been updated. Do you want to restart the Nuxt server now?`,\n })\n }\n if (processId && shouldRevealTerminal.value)\n rpc.revealTerminal(processId)\n}\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NBadge = _resolveComponent(\"NBadge\")!\n const _component_NDialog = _resolveComponent(\"NDialog\")!\n const _component_NCodeBlock = _resolveComponent(\"NCodeBlock\")!\n const _component_NCheckbox = _resolveComponent(\"NCheckbox\")!\n const _component_NTip = _resolveComponent(\"NTip\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n\n _push(`<!--[-->`)\n _ssrRenderSlot(_ctx.$slots, \"default\", {\n id: _unref(processId),\n info: _unref(info),\n update: updateWithConfirm,\n state: _unref(state),\n restart: _unref(restart)\n }, () => {\n if (_unref(info) && __props.showVersion) {\n _push(`<code>${_ssrInterpolate(`v${_unref(info).current}`)}</code>`)\n } else {\n _push(`<!---->`)\n }\n if (_unref(info)?.latest) {\n _push(`<!--[-->`)\n if (_unref(info).needsUpdate) {\n _push(`<button>`)\n _push(_ssrRenderComponent(_component_NBadge, {\n n: \"green\",\n title: \"updates available\"\n }, null, _parent))\n _push(`</button>`)\n } else {\n _push(_ssrRenderComponent(_component_NBadge, {\n n: \"gray\",\n title: \"latest\"\n }, null, _parent))\n }\n _push(`<!--]-->`)\n } else {\n _push(`<!---->`)\n }\n }, _push, _parent)\n _push(_ssrRenderComponent(_unref(PromiseConfirm), null, {\n default: _withCtx(({ resolve, args }, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NDialog, {\n \"model-value\": true,\n onClose: ($event: any) => (resolve(false))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div p4 flex=\"~ col gap-1\"${\n _scopeId\n }><h3 class=\"text-lg font-medium leading-6\"${\n _scopeId\n }> Update ${\n _ssrInterpolate(props.packageName)\n }? </h3><p op50${\n _scopeId\n }> The following command will be executed in your terminal: </p>`)\n _push(_ssrRenderComponent(_component_NCodeBlock, {\n code: args[0],\n lang: \"bash\",\n my3: \"\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NCheckbox, {\n modelValue: shouldRevealTerminal.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRevealTerminal).value = $event),\n n: \"primary\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Open the Terminals dock `)\n } else {\n return [\n _createTextVNode(\" Open the Terminals dock \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NCheckbox, {\n modelValue: shouldRestartServer.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRestartServer).value = $event),\n n: \"primary\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Restart Nuxt server after update `)\n } else {\n return [\n _createTextVNode(\" Restart Nuxt server after update \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`<div flex=\"~ gap-3\" mt2 justify-end${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NTip, {\n n: \"sm amber\",\n \"flex-auto\": \"\",\n icon: \"i-carbon-data-backup\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Please make sure to backup your project first. `)\n } else {\n return [\n _createTextVNode(\" Please make sure to backup your project first. \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Cancel `)\n } else {\n return [\n _createTextVNode(\" Cancel \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"solid primary\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Update `)\n } else {\n return [\n _createTextVNode(\" Update \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`</div></div>`)\n } else {\n return [\n _createVNode(\"div\", {\n p4: \"\",\n flex: \"~ col gap-1\"\n }, [\n _createVNode(\"h3\", { class: \"text-lg font-medium leading-6\" }, \" Update \" + _toDisplayString(props.packageName) + \"? \", 1),\n _createVNode(\"p\", { op50: \"\" }, \" The following command will be executed in your terminal: \"),\n _createVNode(_component_NCodeBlock, {\n code: args[0],\n lang: \"bash\",\n my3: \"\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, 8, [\"code\"]),\n _createVNode(_component_NCheckbox, {\n modelValue: shouldRevealTerminal.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRevealTerminal).value = $event),\n n: \"primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Open the Terminals dock \")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(_component_NCheckbox, {\n modelValue: shouldRestartServer.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRestartServer).value = $event),\n n: \"primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Restart Nuxt server after update \")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(\"div\", {\n flex: \"~ gap-3\",\n mt2: \"\",\n \"justify-end\": \"\"\n }, [\n _createVNode(_component_NTip, {\n n: \"sm amber\",\n \"flex-auto\": \"\",\n icon: \"i-carbon-data-backup\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Please make sure to backup your project first. \")\n ]),\n _: 1\n }),\n _createVNode(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Cancel \")\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_NButton, {\n n: \"solid primary\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Update \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ])\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NDialog, {\n \"model-value\": true,\n onClose: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createVNode(\"div\", {\n p4: \"\",\n flex: \"~ col gap-1\"\n }, [\n _createVNode(\"h3\", { class: \"text-lg font-medium leading-6\" }, \" Update \" + _toDisplayString(props.packageName) + \"? \", 1),\n _createVNode(\"p\", { op50: \"\" }, \" The following command will be executed in your terminal: \"),\n _createVNode(_component_NCodeBlock, {\n code: args[0],\n lang: \"bash\",\n my3: \"\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, 8, [\"code\"]),\n _createVNode(_component_NCheckbox, {\n modelValue: shouldRevealTerminal.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRevealTerminal).value = $event),\n n: \"primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Open the Terminals dock \")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(_component_NCheckbox, {\n modelValue: shouldRestartServer.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRestartServer).value = $event),\n n: \"primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Restart Nuxt server after update \")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(\"div\", {\n flex: \"~ gap-3\",\n mt2: \"\",\n \"justify-end\": \"\"\n }, [\n _createVNode(_component_NTip, {\n n: \"sm amber\",\n \"flex-auto\": \"\",\n icon: \"i-carbon-data-backup\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Please make sure to backup your project first. \")\n ]),\n _: 1\n }),\n _createVNode(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Cancel \")\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_NButton, {\n n: \"solid primary\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Update \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ])\n ]),\n _: 2\n }, 1032, [\"onClose\"])\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<!--]-->`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { NpmCommandOptions } from '../../src/types'\nimport { createTemplatePromise } from '@vueuse/core'\nimport { ref } from 'vue'\nimport { useRestartDialogs } from '~/composables/dialog'\nimport { usePackageUpdate } from '~/composables/npm'\nimport { rpc } from '~/composables/rpc'\nimport { telemetry } from '~/composables/telemetry'\n\nconst props = withDefaults(\n defineProps<{\n packageName: string\n options?: NpmCommandOptions\n showVersion?: boolean\n }>(),\n {\n showVersion: true,\n },\n)\n\nconst {\n info,\n update,\n state,\n processId,\n restart,\n} = usePackageUpdate(props.packageName, props.options)\n\nconst shouldRevealTerminal = ref(true)\nconst shouldRestartServer = ref(true)\nconst restartDialogs = useRestartDialogs()\n\nconst PromiseConfirm = createTemplatePromise<boolean, [string]>()\n\nasync function updateWithConfirm() {\n const processId = await update(async (command) => {\n return PromiseConfirm.start(command)\n })\n\n telemetry('npm:update', {\n packageName: props.packageName,\n oldVersion: info.value?.current,\n })\n\n if (processId && shouldRestartServer.value) {\n restartDialogs.value.push({\n id: processId,\n message: `${props.packageName} has been updated. Do you want to restart the Nuxt server now?`,\n })\n }\n if (processId && shouldRevealTerminal.value)\n rpc.revealTerminal(processId)\n}\n</script>\n\n<template>\n <slot :id=\"processId\" :info=\"info\" :update=\"updateWithConfirm\" :state=\"state\" :restart=\"restart\">\n <code v-if=\"info && showVersion\">{{ `v${info.current}` }}</code>\n <template v-if=\"info?.latest\">\n <button v-if=\"info.needsUpdate\" @click=\"updateWithConfirm()\">\n <NBadge\n n=\"green\"\n title=\"updates available\"\n v-text=\"'updates available'\"\n />\n </button>\n <NBadge\n v-else\n n=\"gray\"\n title=\"latest\"\n v-text=\"'latest'\"\n />\n </template>\n </slot>\n\n <PromiseConfirm v-slot=\"{ resolve, args }\">\n <NDialog :model-value=\"true\" @close=\"resolve(false)\">\n <div p4 flex=\"~ col gap-1\">\n <h3 class=\"text-lg font-medium leading-6\">\n Update {{ props.packageName }}?\n </h3>\n <p op50>\n The following command will be executed in your terminal:\n </p>\n <NCodeBlock :code=\"args[0]\" lang=\"bash\" my3 px4 py2 border=\"~ base rounded\" :lines=\"false\" />\n <NCheckbox v-model=\"shouldRevealTerminal\" n=\"primary\">\n Open the Terminals dock\n </NCheckbox>\n <NCheckbox v-model=\"shouldRestartServer\" n=\"primary\">\n Restart Nuxt server after update\n </NCheckbox>\n\n <div flex=\"~ gap-3\" mt2 justify-end>\n <NTip n=\"sm amber\" flex-auto icon=\"i-carbon-data-backup\">\n Please make sure to backup your project first.\n </NTip>\n\n <NButton @click=\"resolve(false)\">\n Cancel\n </NButton>\n <NButton n=\"solid primary\" @click=\"resolve(true)\">\n Update\n </NButton>\n </div>\n </div>\n </NDialog>\n </PromiseConfirm>\n</template>\n","import type { InstalledModuleInfo, ModuleStaticInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { useState } from '#imports'\nimport { useServerConfig } from './state'\nimport { getModuleNameFromPath, isNodeModulePath, parseReadablePath, useAsyncState } from './utils'\n\nconst ignoredModules = [\n 'pages',\n 'meta',\n 'components',\n 'imports',\n 'nuxt-config-schema',\n '@nuxt/devtools',\n '@nuxt/telemetry',\n]\n\nexport function useModulesList() {\n return useAsyncState('getModulesList', async () => {\n // eslint-disable-next-line unimport/auto-insert\n const m = await $fetch<{ modules: ModuleStaticInfo[] }>('https://api.nuxt.com/modules?version=3')\n return m.modules\n .filter((item: ModuleStaticInfo) => !ignoredModules.includes(item.npm) && item.compatibility.nuxt.includes('>=3'))\n })\n}\n\nexport function useInstalledModules() {\n return useState('installed-modules', () => {\n const config = useServerConfig()\n const modules = useModulesList()\n\n return computed(() => (config.value?._installedModules || [])\n .map((mod): InstalledModuleInfo => {\n // hide inline modules\n if (!mod.entryPath)\n return undefined!\n\n const isPackageModule = !!(mod.entryPath && isNodeModulePath(mod.entryPath))\n const name = mod.meta?.name\n ? mod.meta?.name\n : mod.entryPath\n ? isPackageModule\n ? getModuleNameFromPath(mod.entryPath)\n : config.value?.rootDir\n ? parseReadablePath(mod.entryPath, config.value?.rootDir).path\n : undefined\n : undefined\n\n const isUninstallable = !!config.value?.modules?.includes(name)\n const info = modules.value?.find(m => m.npm === name) || modules.value?.find(m => m.name === name)\n\n return {\n name,\n isPackageModule,\n isUninstallable,\n info,\n ...mod,\n }\n })\n .filter(i => i && (!i.name || !ignoredModules.includes(i.name))))\n })\n}\n"],"version":3}
@@ -0,0 +1 @@
1
+ {"file":"state-tabs-m1o-BX5R.js","mappings":";;;;;;AAQA,SAAgB,aAAa;CAC3B,MAAM,aAAa,cAAc;CACjC,MAAM,WAAW,mBAAmB,IAAI;CACxC,MAAM,SAAS,UAAU;CAEzB,MAAM,UAAU,eAAe,CAC7B,GAAG,OAAO,UAAU,CAAC,CAClB,QAAO,UAAS,MAAM,KAAK,WAAW,WAAW,KAAK,MAAM,KAAK,SAAS,CAAC,MAAM,KAAK,GAAG,CAAC,CAC1F,QAAO,UAAS,CAAC,MAAM,KAAK,gBAAiB,MAAM,KAAK,gBAAgB,SAAS,yBAAyB,KAAM,CAAC,CACjH,MAAM,GAAG,OAAO,EAAE,KAAK,SAAmB,QAAQ,EAAE,KAAK,SAAmB,IAAI,CAAC,CACjF,KAAK,MAAwB;EAC5B,OAAO;GACL,MAAM,EAAE;GACR,MAAM,EAAE;GACR,cAAc,EAAE,KAAK;GACrB,GAAG,EAAE;EACP;CACF,CAAC,GAeH,IAAI,WAAW,SAAS,CAAC,EAAA,CAAG,QAAO,MAAK,EAAE,KAAK,WAAW,UAAU,CAAC,CACvE,CAAC;CAED,MAAM,SAAS,gBAAgB,WAAW,SAAS,CAAC,EAAA,CACjD,QAAO,MAAK,CAAC,EAAE,KAAK,WAAW,UAAU,CAAC,CAAC;CAE9C,OAAO,eAAe,CACpB,GAAG,QAAQ,OACX,GAAG,OAAO,KACZ,CAAC;AACH;AAEA,SAAS,uBAAoF;CAC3F,OAAO;EACL,QAAQ,CAAC;EACT,KAAK,CAAC;EACN,SAAS,CAAC;EACV,QAAQ,CAAC;EACT,SAAS,CAAC;EACV,eAAe,CAAC;EAChB,UAAU,CAAC;CACb;AACF;AAEA,SAAgB,iBAAiB;CAC/B,MAAM,OAAO,WAAW;CACxB,MAAM,WAAW,mBAAmB,IAAI;CACxC,MAAM,gBAAgB,OAAO,KAAK,qBAAqB,CAAC;CACxD,MAAM,WAAW,KAAK,MAAM,KAAI,QAAQ,KAA0B,OAAO,CAAC;CAE1E,OAAO,eAAe,KAAK,MACxB,QAAQ,KAAK,QAAQ;EACpB,MAAM,OAAO;EACb,MAAM,WAAW,SAAS,WAAW,MAAM,SAAS,KAAK,IAAI;EAC7D,IAAI,YAAY,SAAS,oBAAoB,MAAM,SAAS,QAAQ,GAClE,OAAO;EACT,IAAI,SAAS,QAAQ,CAAC,QAAQ,SAAS,IAAI,GACzC,OAAO;EACT,IAAI,SAAS,WAAW,MAAM,SAAS,KAAK,IAAI,GAC9C,OAAO;EACT,IAAI,SAAS,oBAAoB,MAAM,SAAS,IAAI,YAAY,KAAK,KAAK,CAAC,UACzE,OAAO;EACT,OAAO;CACT,CAAC,CAAC,CACD,MAAM,GAAG,MAAM,cAAc,QAAQ,EAAE,YAAY,KAAK,IAAI,cAAc,QAAQ,EAAE,YAAY,KAAK,CAAC,CAAC;AAC5G;AAEA,SAAgB,eAAe;CAC7B,MAAM,SAAS,gBAAgB;CAC/B,MAAM,cAAc,eAAe;CACnC,OAAO,eAA4B;EACjC,QAAQ,OAAO,OAAO,UAAU,KAAK,CAAC,EAAA,CACnC,KAAI,MAAK,WAAW,GAAG;GAAC;GAAQ;GAAQ;GAAQ;GAAS;EAAU,CAAC,CAAC,CAAC,CACtE,KAAK,MAAM;GACV,OAAO;IACL,GAAG,YAAY,OAAO,MAAK,MAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI;IAC3D,GAAG;GACL;EACF,CAAC;CACL,CAAC;AACH","names":[],"sources":["../../../../../../../../composables/state-tabs.ts"],"sourcesContent":["import type { ModuleBuiltinTab, ModuleCustomTab, RouteInfo, TabCategory } from '../../src/types'\nimport { objectPick } from '@antfu/utils'\nimport { computed, toValue } from 'vue'\nimport { useRouter } from '#app/composables/router'\nimport { useClientRouter } from './client'\nimport { useCustomTabs, useServerPages } from './state'\nimport { useDevToolsOptions } from './storage-options'\n\nexport function useAllTabs() {\n const customTabs = useCustomTabs()\n const settings = useDevToolsOptions('ui')\n const router = useRouter()\n\n const builtin = computed(() => [\n ...router.getRoutes()\n .filter(route => route.path.startsWith('/modules/') && route.meta.title && !route.meta.wip)\n .filter(route => !route.meta.experimental || (route.meta.experimental && settings.showExperimentalFeatures.value))\n .sort((a, b) => (a.meta.order as number || 100) - (b.meta.order as number || 100))\n .map((i): ModuleBuiltinTab => {\n return {\n name: i.name as string,\n path: i.path,\n defaultOrder: i.meta.order as number | undefined,\n ...i.meta,\n }\n }),\n // <ModuleBuiltinTab>{\n // name: 'builtin-inspector',\n // title: 'Inspect Vue components',\n // icon: 'i-tabler-focus-2',\n // category: 'app',\n // show() {\n // return () => !!client.value?.inspector?.instance\n // },\n // onClick() {\n // if (!client.value?.inspector?.instance)\n // return\n // client.value.inspector.enable()\n // },\n // },\n ...(customTabs.value || []).filter(i => i.name.startsWith('builtin-')),\n ])\n\n const custom = computed(() => (customTabs.value || [])\n .filter(i => !i.name.startsWith('builtin-')))\n\n return computed(() => [\n ...builtin.value,\n ...custom.value,\n ])\n}\n\nfunction getCategorizedRecord(): Record<TabCategory, (ModuleCustomTab | ModuleBuiltinTab)[]> {\n return {\n pinned: [],\n app: [],\n analyze: [],\n server: [],\n modules: [],\n documentation: [],\n advanced: [],\n }\n}\n\nexport function useEnabledTabs() {\n const tabs = useAllTabs()\n const settings = useDevToolsOptions('ui')\n const categoryOrder = Object.keys(getCategorizedRecord())\n const tabShows = tabs.value.map(tab => (tab as ModuleBuiltinTab)?.show?.())\n\n return computed(() => tabs.value\n .filter((tab, idx) => {\n const _tab = tab as ModuleBuiltinTab\n const isPinned = settings.pinnedTabs.value.includes(_tab.name)\n if (isPinned && settings.hiddenTabCategories.value.includes('pinned'))\n return false\n if (tabShows[idx] && !toValue(tabShows[idx]))\n return false\n if (settings.hiddenTabs.value.includes(_tab.name))\n return false\n if (settings.hiddenTabCategories.value.includes(tab.category || 'app') && !isPinned)\n return false\n return true\n })\n .sort((a, b) => categoryOrder.indexOf(a.category || 'app') - categoryOrder.indexOf(b.category || 'app')))\n}\n\nexport function useAllRoutes() {\n const router = useClientRouter()\n const serverPages = useServerPages()\n return computed((): RouteInfo[] => {\n return (router.value?.getRoutes() || [])\n .map(i => objectPick(i, ['path', 'name', 'meta', 'props', 'children']))\n .map((i) => {\n return {\n ...serverPages.value?.find(j => j.name && j.name === i.name),\n ...i,\n }\n })\n })\n}\n"],"version":3}
@@ -0,0 +1 @@
1
+ {"file":"storage-BylO3p9r.js","mappings":"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","names":[],"sources":["../../../../../../../../components/StorageDetails.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/StorageDetails.vue","../../../../../../../../pages/modules/storage.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../pages/modules/storage.vue"],"sourcesContent":["import { withAsyncContext as _withAsyncContext, defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createBlock as _createBlock, toDisplayString as _toDisplayString, isRef as _isRef, createTextVNode as _createTextVNode, mergeProps as _mergeProps, createVNode as _createVNode, withKeys as _withKeys, createCommentVNode as _createCommentVNode, vModelText as _vModelText, withModifiers as _withModifiers, withDirectives as _withDirectives } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent, ssrRenderAttr as _ssrRenderAttr, ssrRenderClass as _ssrRenderClass, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport { useEventListener } from '@vueuse/core'\nimport JsonEditorVue from 'json-editor-vue'\nimport { computed, onUnmounted, ref, watch, watchEffect } from 'vue'\nimport { useAsyncData } from '#app/composables/asyncData'\nimport { useRouter } from '#app/composables/router'\nimport { useNuxtApp } from '#app/nuxt'\nimport { getColorMode } from '~/composables/client'\nimport { rpc } from '~/composables/rpc'\nimport { useSessionState } from '~/composables/utils'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'StorageDetails',\n __ssrInlineRender: true,\n async setup(__props) {\n\nlet __temp: any, __restore: any\n\nconst colorMode = getColorMode()\nconst nuxtApp = useNuxtApp()\nconst router = useRouter()\nconst searchString = ref('')\nconst newKey = ref('')\nconst currentStorage = useSessionState<string>('storage:current', '')\nconst currentItem = ref()\nconst fileKey = useSessionState<string>('storage:file:state', '')\n\nconst { data: storageMounts } = (\n ([__temp,__restore] = _withAsyncContext(() => useAsyncData('storageMounts', () => rpc.getStorageMounts()))),\n __temp = await __temp,\n __restore(),\n __temp\n)\nconst { data: storageKeys, refresh: refreshStorageKeys } = (\n ([__temp,__restore] = _withAsyncContext(async () => useAsyncData('storageKeys', async () => {\n if (currentStorage.value)\n return await rpc.getStorageKeys(currentStorage.value)\n return []\n}))),\n __temp = await __temp,\n __restore(),\n __temp\n)\n\nconst closeWatcher = nuxtApp.hook('storage:key:update' as any, async (key: string, event: any) => {\n if (!currentStorage.value || key.split(':')[0] !== currentStorage.value)\n return\n await refreshStorageKeys()\n if (fileKey.value === key) {\n if (event === 'remove')\n return router.replace({ query: { storage: currentStorage.value } })\n await fetchItem(fileKey.value)\n }\n})\n\nonUnmounted(closeWatcher)\n\nwatch(currentStorage, () => {\n refreshStorageKeys()\n fileKey.value = ''\n})\n\nwatchEffect(async () => {\n if (!fileKey.value) {\n currentItem.value = null\n return\n }\n fetchItem(fileKey.value)\n})\n\n// Save on Ctrl/Cmd + S\nuseEventListener('keydown', (e) => {\n if (e.key === 's' && (e.ctrlKey || e.metaKey)) {\n saveCurrentItem()\n e.preventDefault()\n }\n})\n\nfunction keyName(key: string) {\n return key.replace(`${currentStorage.value}:`, '')\n}\n\nconst filteredKeys = computed(() => {\n if (!storageKeys.value)\n return []\n return storageKeys.value.filter(key => key.includes(searchString.value))\n})\n\nasync function fetchItem(key: string) {\n const content = await rpc.getStorageItem(key)\n currentItem.value = {\n key,\n updatedKey: keyName(key),\n editingKey: false,\n content,\n updatedContent: content,\n }\n}\n\nasync function saveNewItem() {\n if (!newKey.value || !currentStorage.value)\n return\n // If does not exists\n const key = `${currentStorage.value}:${newKey.value}`\n if (!storageKeys.value?.includes(key))\n await rpc.setStorageItem(key, '')\n\n router.replace({ query: { storage: currentStorage.value, key } })\n newKey.value = ''\n}\n\nasync function saveCurrentItem() {\n if (!currentItem.value)\n return\n await rpc.setStorageItem(currentItem.value.key, currentItem.value.updatedContent)\n await fetchItem(currentItem.value.key)\n}\n\nasync function removeCurrentItem() {\n if (!currentItem.value || !currentStorage.value)\n return\n await rpc.removeStorageItem(currentItem.value.key)\n currentItem.value = null\n}\n\nasync function renameCurrentItem() {\n if (!currentItem.value || !currentStorage.value)\n return\n const renamedKey = `${currentStorage.value}:${currentItem.value.updatedKey}`\n await rpc.setStorageItem(renamedKey, currentItem.value.updatedContent)\n await rpc.removeStorageItem(currentItem.value.key)\n router.replace({ query: { storage: currentStorage.value, key: renamedKey } })\n}\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NSplitPane = _resolveComponent(\"NSplitPane\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n const _component_NSelect = _resolveComponent(\"NSelect\")!\n const _component_NTextInput = _resolveComponent(\"NTextInput\")!\n const _component_NIcon = _resolveComponent(\"NIcon\")!\n const _component_NPanelGrids = _resolveComponent(\"NPanelGrids\")!\n const _component_NCard = _resolveComponent(\"NCard\")!\n const _component_NLink = _resolveComponent(\"NLink\")!\n const _component_FilepathItem = _resolveComponent(\"FilepathItem\")!\n\n if (_unref(currentStorage)) {\n _push(_ssrRenderComponent(_component_NSplitPane, _mergeProps({ \"storage-key\": \"tab-storage\" }, _attrs), {\n left: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div class=\"h-[48px] flex items-center justify-between gap1 px-3\"${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NButton, {\n icon: \"carbon-chevron-left\",\n \"ml--1\": \"\",\n border: false,\n onClick: ($event: any) => (currentStorage.value = '')\n }, null, _parent, _scopeId))\n _push(`<div class=\"w-full text-sm\"${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NSelect, {\n modelValue: _unref(currentStorage),\n \"onUpdate:modelValue\": ($event: any) => (_isRef(currentStorage) ? (currentStorage).value = $event : null),\n n: \"primary\",\n icon: \"carbon-data-base\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<!--[-->`)\n _ssrRenderList(_unref(storageMounts), (_storage, name) => {\n _push(`<option${\n _ssrRenderAttr(\"value\", name)\n }${\n _scopeId\n }>${\n _ssrInterpolate(name)\n }</option>`)\n })\n _push(`<!--]-->`)\n } else {\n return [\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(_unref(storageMounts), (_storage, name) => {\n return (_openBlock(), _createBlock(\"option\", {\n key: name,\n value: name\n }, _toDisplayString(name), 9, [\"value\"]))\n }), 128))\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`</div></div>`)\n _push(_ssrRenderComponent(_component_NTextInput, {\n modelValue: searchString.value,\n \"onUpdate:modelValue\": ($event: any) => ((searchString).value = $event),\n icon: \"carbon-search\",\n placeholder: \"Search...\",\n n: \"primary sm\",\n border: \"y x-none base! rounded-0\",\n class: \"w-full py2 ring-0!\"\n }, null, _parent, _scopeId))\n _push(`<!--[-->`)\n _ssrRenderList(filteredKeys.value, (key) => {\n _push(`<!--[--><button block w-full truncate px2 py1 text-start text-sm font-mono class=\"${\n _ssrRenderClass(key === currentItem.value?.key ? 'text-primary n-bg-active' : 'text-secondary hover:n-bg-hover')\n }\"${\n _scopeId\n }>${\n _ssrInterpolate(keyName(key))\n }</button><div x-divider${\n _scopeId\n }></div><!--]-->`)\n })\n _push(`<!--]-->`)\n _push(_ssrRenderComponent(_component_NTextInput, {\n modelValue: newKey.value,\n \"onUpdate:modelValue\": ($event: any) => ((newKey).value = $event),\n icon: \"carbon-add\",\n placeholder: \"key\",\n n: \"sm\",\n border: \"t-none x-none base! rounded-0\",\n class: \"w-full py2 font-mono ring-0!\",\n onKeyup: saveNewItem\n }, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(\"div\", { class: \"h-[48px] flex items-center justify-between gap1 px-3\" }, [\n _createVNode(_component_NButton, {\n icon: \"carbon-chevron-left\",\n \"ml--1\": \"\",\n border: false,\n onClick: ($event: any) => (currentStorage.value = '')\n }, null, 8, [\"onClick\"]),\n _createVNode(\"div\", { class: \"w-full text-sm\" }, [\n _createVNode(_component_NSelect, {\n modelValue: _unref(currentStorage),\n \"onUpdate:modelValue\": ($event: any) => (_isRef(currentStorage) ? (currentStorage).value = $event : null),\n n: \"primary\",\n icon: \"carbon-data-base\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(_unref(storageMounts), (_storage, name) => {\n return (_openBlock(), _createBlock(\"option\", {\n key: name,\n value: name\n }, _toDisplayString(name), 9, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ])\n ]),\n _createVNode(_component_NTextInput, {\n modelValue: searchString.value,\n \"onUpdate:modelValue\": ($event: any) => ((searchString).value = $event),\n icon: \"carbon-search\",\n placeholder: \"Search...\",\n n: \"primary sm\",\n border: \"y x-none base! rounded-0\",\n class: \"w-full py2 ring-0!\"\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(filteredKeys.value, (key) => {\n return (_openBlock(), _createBlock(_Fragment, { key: key }, [\n _createVNode(\"button\", {\n block: \"\",\n \"w-full\": \"\",\n truncate: \"\",\n px2: \"\",\n py1: \"\",\n \"text-start\": \"\",\n \"text-sm\": \"\",\n \"font-mono\": \"\",\n class: key === currentItem.value?.key ? 'text-primary n-bg-active' : 'text-secondary hover:n-bg-hover',\n onClick: ($event: any) => (fileKey.value = key)\n }, _toDisplayString(keyName(key)), 11, [\"onClick\"]),\n _createVNode(\"div\", { \"x-divider\": \"\" })\n ], 64))\n }), 128)),\n _createVNode(_component_NTextInput, {\n modelValue: newKey.value,\n \"onUpdate:modelValue\": ($event: any) => ((newKey).value = $event),\n icon: \"carbon-add\",\n placeholder: \"key\",\n n: \"sm\",\n border: \"t-none x-none base! rounded-0\",\n class: \"w-full py2 font-mono ring-0!\",\n onKeyup: _withKeys(saveNewItem, [\"enter\"])\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]\n }\n }),\n right: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n if (currentItem.value?.key) {\n _push(`<div h-full of-hidden flex=\"~ col\"${\n _scopeId\n }><div border=\"b base\" class=\"h-[49px] flex flex-none items-center justify-between px-4 text-sm\"${\n _scopeId\n }><div class=\"flex items-center gap-4\"${\n _scopeId\n }>`)\n if (currentItem.value.editingKey) {\n _push(_ssrRenderComponent(_component_NTextInput, {\n modelValue: currentItem.value.updatedKey,\n \"onUpdate:modelValue\": ($event: any) => ((currentItem.value.updatedKey) = $event),\n onKeyup: renameCurrentItem\n }, null, _parent, _scopeId))\n } else {\n _push(`<code${\n _scopeId\n }>${\n _ssrInterpolate(keyName(currentItem.value.key))\n } `)\n _push(_ssrRenderComponent(_component_NIcon, {\n icon: \"carbon-edit\",\n class: \"cursor-pointer op50 hover:op100\",\n onClick: ($event: any) => (currentItem.value.editingKey = true)\n }, null, _parent, _scopeId))\n _push(`</code>`)\n }\n if (!currentItem.value.editingKey) {\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"green xs\",\n disabled: currentItem.value.content === currentItem.value.updatedContent,\n class: { 'border-green': currentItem.value.content !== currentItem.value.updatedContent },\n onClick: saveCurrentItem\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Save `)\n } else {\n return [\n _createTextVNode(\" Save \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n _push(`</div><div${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"red xs\",\n onClick: removeCurrentItem\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Delete `)\n } else {\n return [\n _createTextVNode(\" Delete \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`</div></div>`)\n if (typeof currentItem.value.content === 'object') {\n _push(_ssrRenderComponent(_unref(JsonEditorVue), _mergeProps({\n modelValue: currentItem.value.updatedContent,\n \"onUpdate:modelValue\": ($event: any) => ((currentItem.value.updatedContent) = $event),\n class: [[_unref(colorMode) === 'dark' ? 'jse-theme-dark' : 'light'], \"json-editor-vue h-full of-auto text-sm outline-none\"]\n }, _ctx.$attrs, {\n mode: ('text' as any),\n \"navigation-bar\": false,\n indentation: 2,\n \"tab-size\": 2\n }), null, _parent, _scopeId))\n } else {\n _push(`<textarea placeholder=\"Item value...\" class=\"h-full of-auto p-4 text-sm font-mono outline-none\"${\n _scopeId\n }>${\n _ssrInterpolate(currentItem.value.updatedContent)\n }</textarea>`)\n }\n _push(`</div>`)\n } else {\n _push(_ssrRenderComponent(_component_NPanelGrids, null, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NCard, {\n px6: \"\",\n py4: \"\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Select one key to start.<br${_scopeId}>Learn more about `)\n _push(_ssrRenderComponent(_component_NLink, {\n href: \"https://nitro.unjs.io/guide/storage\",\n n: \"orange\",\n target: \"_blank\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Nitro storage `)\n } else {\n return [\n _createTextVNode(\" Nitro storage \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n _createTextVNode(\" Select one key to start.\"),\n _createVNode(\"br\"),\n _createTextVNode(\"Learn more about \"),\n _createVNode(_component_NLink, {\n href: \"https://nitro.unjs.io/guide/storage\",\n n: \"orange\",\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Nitro storage \")\n ]),\n _: 1\n })\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NCard, {\n px6: \"\",\n py4: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Select one key to start.\"),\n _createVNode(\"br\"),\n _createTextVNode(\"Learn more about \"),\n _createVNode(_component_NLink, {\n href: \"https://nitro.unjs.io/guide/storage\",\n n: \"orange\",\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Nitro storage \")\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n }\n } else {\n return [\n (currentItem.value?.key)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n \"h-full\": \"\",\n \"of-hidden\": \"\",\n flex: \"~ col\"\n }, [\n _createVNode(\"div\", {\n border: \"b base\",\n class: \"h-[49px] flex flex-none items-center justify-between px-4 text-sm\"\n }, [\n _createVNode(\"div\", { class: \"flex items-center gap-4\" }, [\n (currentItem.value.editingKey)\n ? (_openBlock(), _createBlock(_component_NTextInput, {\n key: 0,\n modelValue: currentItem.value.updatedKey,\n \"onUpdate:modelValue\": ($event: any) => ((currentItem.value.updatedKey) = $event),\n onKeyup: _withKeys(renameCurrentItem, [\"enter\"])\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"]))\n : (_openBlock(), _createBlock(\"code\", { key: 1 }, [\n _createTextVNode(_toDisplayString(keyName(currentItem.value.key)) + \" \", 1),\n _createVNode(_component_NIcon, {\n icon: \"carbon-edit\",\n class: \"cursor-pointer op50 hover:op100\",\n onClick: ($event: any) => (currentItem.value.editingKey = true)\n }, null, 8, [\"onClick\"])\n ])),\n (!currentItem.value.editingKey)\n ? (_openBlock(), _createBlock(_component_NButton, {\n key: 2,\n n: \"green xs\",\n disabled: currentItem.value.content === currentItem.value.updatedContent,\n class: { 'border-green': currentItem.value.content !== currentItem.value.updatedContent },\n onClick: saveCurrentItem\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Save \")\n ]),\n _: 1\n }, 8, [\"disabled\", \"class\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(\"div\", null, [\n _createVNode(_component_NButton, {\n n: \"red xs\",\n onClick: removeCurrentItem\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Delete \")\n ]),\n _: 1\n })\n ])\n ]),\n (typeof currentItem.value.content === 'object')\n ? (_openBlock(), _createBlock(_unref(JsonEditorVue), _mergeProps({\n key: 0,\n modelValue: currentItem.value.updatedContent,\n \"onUpdate:modelValue\": ($event: any) => ((currentItem.value.updatedContent) = $event),\n class: [[_unref(colorMode) === 'dark' ? 'jse-theme-dark' : 'light'], \"json-editor-vue h-full of-auto text-sm outline-none\"]\n }, _ctx.$attrs, {\n mode: ('text' as any),\n \"navigation-bar\": false,\n indentation: 2,\n \"tab-size\": 2\n }), null, 16, [\"modelValue\", \"onUpdate:modelValue\", \"class\"]))\n : _withDirectives((_openBlock(), _createBlock(\"textarea\", {\n key: 1,\n \"onUpdate:modelValue\": ($event: any) => ((currentItem.value.updatedContent) = $event),\n placeholder: \"Item value...\",\n class: \"h-full of-auto p-4 text-sm font-mono outline-none\",\n onKeyup: _withKeys(_withModifiers(saveCurrentItem, [\"ctrl\"]), [\"enter\"])\n }, null, 40, [\"onUpdate:modelValue\", \"onKeyup\"])), [\n [_vModelText, currentItem.value.updatedContent]\n ])\n ]))\n : (_openBlock(), _createBlock(_component_NPanelGrids, { key: 1 }, {\n default: _withCtx(() => [\n _createVNode(_component_NCard, {\n px6: \"\",\n py4: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Select one key to start.\"),\n _createVNode(\"br\"),\n _createTextVNode(\"Learn more about \"),\n _createVNode(_component_NLink, {\n href: \"https://nitro.unjs.io/guide/storage\",\n n: \"orange\",\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Nitro storage \")\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n ]\n }\n }),\n _: 1\n }, _parent))\n } else {\n _push(_ssrRenderComponent(_component_NPanelGrids, _attrs, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n if (Object.keys(_unref(storageMounts) as any).length) {\n _push(`<p op50${_scopeId}> Select one storage to start: </p>`)\n } else {\n _push(`<p${\n _scopeId\n }> No custom storage defined in <code${\n _scopeId\n }>nitro.storage</code>.<br${\n _scopeId\n }> Learn more about `)\n _push(_ssrRenderComponent(_component_NLink, {\n href: \"https://nitro.unjs.io/guide/storage\",\n n: \"orange\",\n target: \"_blank\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Nitro storage `)\n } else {\n return [\n _createTextVNode(\" Nitro storage \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`</p>`)\n }\n _push(`<!--[-->`)\n _ssrRenderList(_unref(storageMounts), (storage, name) => {\n _push(_ssrRenderComponent(_component_NCard, {\n key: name,\n \"min-w-80\": \"\",\n \"cursor-pointer\": \"\",\n \"p-4\": \"\",\n \"text-left\": \"\",\n hover: \"border-green\",\n onClick: ($event: any) => (currentStorage.value = name as string)\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<span font-bold${\n _scopeId\n }>${\n _ssrInterpolate(name)\n }</span><br${\n _scopeId\n }><span text-sm${\n _scopeId\n }>${\n _ssrInterpolate(storage.driver)\n } driver</span><br${\n _scopeId\n }>`)\n if (storage.base) {\n _push(_ssrRenderComponent(_component_FilepathItem, {\n \"text-xs\": \"\",\n filepath: storage.base\n }, null, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n } else {\n return [\n _createVNode(\"span\", { \"font-bold\": \"\" }, _toDisplayString(name), 1),\n _createVNode(\"br\"),\n _createVNode(\"span\", { \"text-sm\": \"\" }, _toDisplayString(storage.driver) + \" driver\", 1),\n _createVNode(\"br\"),\n (storage.base)\n ? (_openBlock(), _createBlock(_component_FilepathItem, {\n key: 0,\n \"text-xs\": \"\",\n filepath: storage.base\n }, null, 8, [\"filepath\"]))\n : _createCommentVNode(\"\", true)\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n })\n _push(`<!--]-->`)\n } else {\n return [\n (Object.keys(_unref(storageMounts) as any).length)\n ? (_openBlock(), _createBlock(\"p\", {\n key: 0,\n op50: \"\"\n }, \" Select one storage to start: \"))\n : (_openBlock(), _createBlock(\"p\", { key: 1 }, [\n _createTextVNode(\" No custom storage defined in \"),\n _createVNode(\"code\", null, \"nitro.storage\"),\n _createTextVNode(\".\"),\n _createVNode(\"br\"),\n _createTextVNode(\" Learn more about \"),\n _createVNode(_component_NLink, {\n href: \"https://nitro.unjs.io/guide/storage\",\n n: \"orange\",\n target: \"_blank\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Nitro storage \")\n ]),\n _: 1\n })\n ])),\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(_unref(storageMounts), (storage, name) => {\n return (_openBlock(), _createBlock(_component_NCard, {\n key: name,\n \"min-w-80\": \"\",\n \"cursor-pointer\": \"\",\n \"p-4\": \"\",\n \"text-left\": \"\",\n hover: \"border-green\",\n onClick: ($event: any) => (currentStorage.value = name as string)\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", { \"font-bold\": \"\" }, _toDisplayString(name), 1),\n _createVNode(\"br\"),\n _createVNode(\"span\", { \"text-sm\": \"\" }, _toDisplayString(storage.driver) + \" driver\", 1),\n _createVNode(\"br\"),\n (storage.base)\n ? (_openBlock(), _createBlock(_component_FilepathItem, {\n key: 0,\n \"text-xs\": \"\",\n filepath: storage.base\n }, null, 8, [\"filepath\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1032, [\"onClick\"]))\n }), 128))\n ]\n }\n }),\n _: 1\n }, _parent))\n }\n}\n}\n\n})","<script setup lang=\"ts\">\nimport { useEventListener } from '@vueuse/core'\nimport JsonEditorVue from 'json-editor-vue'\nimport { computed, onUnmounted, ref, watch, watchEffect } from 'vue'\nimport { useAsyncData } from '#app/composables/asyncData'\nimport { useRouter } from '#app/composables/router'\nimport { useNuxtApp } from '#app/nuxt'\nimport { getColorMode } from '~/composables/client'\nimport { rpc } from '~/composables/rpc'\nimport { useSessionState } from '~/composables/utils'\n\nconst colorMode = getColorMode()\nconst nuxtApp = useNuxtApp()\nconst router = useRouter()\nconst searchString = ref('')\nconst newKey = ref('')\nconst currentStorage = useSessionState<string>('storage:current', '')\nconst currentItem = ref()\nconst fileKey = useSessionState<string>('storage:file:state', '')\n\nconst { data: storageMounts } = await useAsyncData('storageMounts', () => rpc.getStorageMounts())\nconst { data: storageKeys, refresh: refreshStorageKeys } = await useAsyncData('storageKeys', async () => {\n if (currentStorage.value)\n return await rpc.getStorageKeys(currentStorage.value)\n return []\n})\n\nconst closeWatcher = nuxtApp.hook('storage:key:update' as any, async (key: string, event: any) => {\n if (!currentStorage.value || key.split(':')[0] !== currentStorage.value)\n return\n await refreshStorageKeys()\n if (fileKey.value === key) {\n if (event === 'remove')\n return router.replace({ query: { storage: currentStorage.value } })\n await fetchItem(fileKey.value)\n }\n})\n\nonUnmounted(closeWatcher)\n\nwatch(currentStorage, () => {\n refreshStorageKeys()\n fileKey.value = ''\n})\n\nwatchEffect(async () => {\n if (!fileKey.value) {\n currentItem.value = null\n return\n }\n fetchItem(fileKey.value)\n})\n\n// Save on Ctrl/Cmd + S\nuseEventListener('keydown', (e) => {\n if (e.key === 's' && (e.ctrlKey || e.metaKey)) {\n saveCurrentItem()\n e.preventDefault()\n }\n})\n\nfunction keyName(key: string) {\n return key.replace(`${currentStorage.value}:`, '')\n}\n\nconst filteredKeys = computed(() => {\n if (!storageKeys.value)\n return []\n return storageKeys.value.filter(key => key.includes(searchString.value))\n})\n\nasync function fetchItem(key: string) {\n const content = await rpc.getStorageItem(key)\n currentItem.value = {\n key,\n updatedKey: keyName(key),\n editingKey: false,\n content,\n updatedContent: content,\n }\n}\n\nasync function saveNewItem() {\n if (!newKey.value || !currentStorage.value)\n return\n // If does not exists\n const key = `${currentStorage.value}:${newKey.value}`\n if (!storageKeys.value?.includes(key))\n await rpc.setStorageItem(key, '')\n\n router.replace({ query: { storage: currentStorage.value, key } })\n newKey.value = ''\n}\n\nasync function saveCurrentItem() {\n if (!currentItem.value)\n return\n await rpc.setStorageItem(currentItem.value.key, currentItem.value.updatedContent)\n await fetchItem(currentItem.value.key)\n}\n\nasync function removeCurrentItem() {\n if (!currentItem.value || !currentStorage.value)\n return\n await rpc.removeStorageItem(currentItem.value.key)\n currentItem.value = null\n}\n\nasync function renameCurrentItem() {\n if (!currentItem.value || !currentStorage.value)\n return\n const renamedKey = `${currentStorage.value}:${currentItem.value.updatedKey}`\n await rpc.setStorageItem(renamedKey, currentItem.value.updatedContent)\n await rpc.removeStorageItem(currentItem.value.key)\n router.replace({ query: { storage: currentStorage.value, key: renamedKey } })\n}\n</script>\n\n<template>\n <NSplitPane v-if=\"currentStorage\" storage-key=\"tab-storage\">\n <template #left>\n <div class=\"h-[48px] flex items-center justify-between gap1 px-3\">\n <NButton icon=\"carbon-chevron-left\" ml--1 :border=\"false\" @click=\"currentStorage = ''\" />\n <div class=\"w-full text-sm\">\n <NSelect v-model=\"currentStorage\" n=\"primary\" icon=\"carbon-data-base\">\n <option v-for=\"(_storage, name) of storageMounts\" :key=\"name\" :value=\"name\">\n {{ name }}\n </option>\n </NSelect>\n </div>\n </div>\n <NTextInput\n v-model=\"searchString\"\n icon=\"carbon-search\"\n placeholder=\"Search...\"\n n=\"primary sm\"\n border=\"y x-none base! rounded-0\"\n class=\"w-full py2 ring-0!\"\n />\n <template v-for=\"key of filteredKeys\" :key=\"key\">\n <button\n block w-full truncate px2 py1 text-start text-sm font-mono\n :class=\"key === currentItem?.key ? 'text-primary n-bg-active' : 'text-secondary hover:n-bg-hover'\"\n @click=\"fileKey = key\"\n >\n {{ keyName(key) }}\n </button>\n <div x-divider />\n </template>\n <NTextInput\n v-model=\"newKey\"\n icon=\"carbon-add\"\n placeholder=\"key\"\n n=\"sm\"\n border=\"t-none x-none base! rounded-0\"\n class=\"w-full py2 font-mono ring-0!\"\n @keyup.enter=\"saveNewItem\"\n />\n </template>\n\n <template #right>\n <div v-if=\"currentItem?.key\" h-full of-hidden flex=\"~ col\">\n <div border=\"b base\" class=\"h-[49px] flex flex-none items-center justify-between px-4 text-sm\">\n <div class=\"flex items-center gap-4\">\n <NTextInput v-if=\"currentItem.editingKey\" v-model=\"currentItem.updatedKey\" @keyup.enter=\"renameCurrentItem\" />\n <code v-else>{{ keyName(currentItem.key) }} <NIcon icon=\"carbon-edit\" class=\"cursor-pointer op50 hover:op100\" @click=\"currentItem.editingKey = true\" /></code>\n <NButton v-if=\"!currentItem.editingKey\" n=\"green xs\" :disabled=\"currentItem.content === currentItem.updatedContent\" :class=\"{ 'border-green': currentItem.content !== currentItem.updatedContent }\" @click=\"saveCurrentItem\">\n Save\n </NButton>\n </div>\n <div>\n <NButton n=\"red xs\" @click=\"removeCurrentItem\">\n Delete\n </NButton>\n </div>\n </div>\n <JsonEditorVue\n v-if=\"typeof currentItem.content === 'object'\"\n v-model=\"currentItem.updatedContent\"\n :class=\"[colorMode === 'dark' ? 'jse-theme-dark' : 'light']\"\n class=\"json-editor-vue h-full of-auto text-sm outline-none\"\n v-bind=\"$attrs\"\n :mode=\"('text' as any)\"\n :navigation-bar=\"false\"\n :indentation=\"2\"\n :tab-size=\"2\"\n />\n <textarea\n v-else v-model=\"currentItem.updatedContent\"\n placeholder=\"Item value...\"\n class=\"h-full of-auto p-4 text-sm font-mono outline-none\"\n @keyup.ctrl.enter=\"saveCurrentItem\"\n />\n </div>\n <NPanelGrids v-else>\n <NCard px6 py4>\n Select one key to start.<br>Learn more about\n <NLink href=\"https://nitro.unjs.io/guide/storage\" n=\"orange\" target=\"_blank\">\n Nitro storage\n </NLink>\n </NCard>\n </NPanelGrids>\n </template>\n </NSplitPane>\n <NPanelGrids v-else>\n <p v-if=\"Object.keys(storageMounts as any).length\" op50>\n Select one storage to start:\n </p>\n <p v-else>\n No custom storage defined in <code>nitro.storage</code>.<br>\n Learn more about\n <NLink href=\"https://nitro.unjs.io/guide/storage\" n=\"orange\" target=\"_blank\">\n Nitro storage\n </NLink>\n </p>\n <NCard\n v-for=\"(storage, name) of storageMounts\"\n :key=\"name\"\n min-w-80 cursor-pointer p-4 text-left\n hover=\"border-green\"\n @click=\"currentStorage = name as string\"\n >\n <span font-bold>{{ name }}</span><br>\n <span text-sm>{{ storage.driver }} driver</span><br>\n <FilepathItem v-if=\"storage.base\" text-xs :filepath=\"storage.base\" />\n </NCard>\n </NPanelGrids>\n</template>\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent } from \"vue/server-renderer\"\n\nimport { definePageMeta } from '#imports'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'storage',\n __ssrInlineRender: true,\n setup(__props) {\n\ndefinePageMeta({\n icon: 'carbon-data-base',\n title: 'Storage',\n layout: 'full',\n category: 'server',\n})\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_AuthRequiredPanel = _resolveComponent(\"AuthRequiredPanel\")!\n const _component_StorageDetails = _resolveComponent(\"StorageDetails\")!\n\n _push(_ssrRenderComponent(_component_AuthRequiredPanel, _attrs, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_StorageDetails, null, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_StorageDetails)\n ]\n }\n }),\n _: 1\n }, _parent))\n}\n}\n\n})","<script setup lang=\"ts\">\nimport { definePageMeta } from '#imports'\n\ndefinePageMeta({\n icon: 'carbon-data-base',\n title: 'Storage',\n layout: 'full',\n category: 'server',\n})\n</script>\n\n<template>\n <AuthRequiredPanel>\n <StorageDetails />\n </AuthRequiredPanel>\n</template>\n"],"version":3}
@@ -0,0 +1 @@
1
+ {"file":"timeline-Dukbqafi.js","mappings":"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","names":[],"sources":["../../../../../../../../components/TimelineItemFunction.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/TimelineItemFunction.vue","../../../../../../../../components/TimelineSegment.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/TimelineSegment.vue","../../../../../../../../composables/timeline.ts","../../../../../../../../components/TimelineTable.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/TimelineTable.vue","../../../../../../../../components/TimelineList.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/TimelineList.vue","../../../../../../../../components/TimelineArgumentView.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/TimelineArgumentView.vue","../../../../../../../../components/TimelineDetailsFunction.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/TimelineDetailsFunction.vue","../../../../../../../../components/TimelineDetailsRoute.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/TimelineDetailsRoute.vue","../../../../../../../../components/TimelineView.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/TimelineView.vue","../../../../../../../../components/docs/timeline.md","../../../../../../../../pages/modules/timeline.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../pages/modules/timeline.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderStyle as _ssrRenderStyle, ssrRenderAttrs as _ssrRenderAttrs, ssrInterpolate as _ssrInterpolate } from \"vue/server-renderer\"\n\nimport type { TimelineEventFunction } from '../../types'\nimport { computed } from 'vue'\nimport { getHslColorFromStringHash } from '../../../devtools-ui-kit/src/composables/color'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'TimelineItemFunction',\n __ssrInlineRender: true,\n props: {\n item: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst OP_PLACEHOLDER_RE = /_op_/\n\nconst colorRaw = computed(() => getHslColorFromStringHash(props.item.name, 50, 60, '_op_'))\nconst color = computed(() => colorRaw.value.replace(OP_PLACEHOLDER_RE, '1'))\nconst textColor = computed(() => getHslColorFromStringHash(props.item.name, 50, 40))\nconst colorBackground = computed(() => colorRaw.value.replace(OP_PLACEHOLDER_RE, '0.2'))\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n _push(`<button${\n _ssrRenderAttrs(_mergeProps({\n class: \"group\",\n style: {\n color: color.value,\n borderLeft: `2px solid ${color.value}`,\n },\n relative: \"\",\n \"bg-base\": \"\",\n \"text-sm\": \"\",\n transition: \"\",\n \"hover:z-1000\": \"\"\n }, _attrs))\n }><div style=\"${\n _ssrRenderStyle({\n backgroundColor: colorBackground.value,\n })\n }\" absolute bottom-0 left--1px top-0 w-full text-sm transition-all duration-300></div><div style=\"${\n _ssrRenderStyle({\n 'color': textColor.value,\n '--c': color.value,\n })\n }\" border=\"r-2 t-2 y-2 transparent\" min-w-max px1 text-left group-hover=\"border-\\$c\">${\n _ssrInterpolate(__props.item.name)\n }</div></button>`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { TimelineEventFunction } from '../../types'\nimport { computed } from 'vue'\nimport { getHslColorFromStringHash } from '../../../devtools-ui-kit/src/composables/color'\n\nconst props = defineProps<{\n item: TimelineEventFunction\n}>()\n\nconst OP_PLACEHOLDER_RE = /_op_/\n\nconst colorRaw = computed(() => getHslColorFromStringHash(props.item.name, 50, 60, '_op_'))\nconst color = computed(() => colorRaw.value.replace(OP_PLACEHOLDER_RE, '1'))\nconst textColor = computed(() => getHslColorFromStringHash(props.item.name, 50, 40))\nconst colorBackground = computed(() => colorRaw.value.replace(OP_PLACEHOLDER_RE, '0.2'))\n</script>\n\n<template>\n <button\n class=\"group\"\n :style=\"{\n color,\n borderLeft: `2px solid ${color}`,\n }\"\n relative bg-base text-sm transition hover:z-1000\n >\n <div\n :style=\"{\n backgroundColor: colorBackground,\n }\"\n absolute bottom-0 left--1px top-0 w-full text-sm transition-all duration-300\n />\n <div\n :style=\"{\n 'color': textColor,\n '--c': color,\n }\"\n border=\"r-2 t-2 y-2 transparent\"\n min-w-max px1 text-left group-hover=\"border-$c\"\n >\n {{ item.name }}\n </div>\n </button>\n</template>\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent, ssrRenderAttrs as _ssrRenderAttrs, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { UseTimeAgoOptions } from '@vueuse/core'\nimport type { TimelineEvent, TimelineEventNormalized, TimelineEventsSegment } from '../../types'\nimport { useTimeAgo } from '@vueuse/core'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'TimelineSegment',\n __ssrInlineRender: true,\n props: {\n segment: {}\n },\n emits: [\"select\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst timeAgo = useTimeAgo(() => props.segment.start, {\n updateInterval: 1000,\n showSecond: true,\n controls: false,\n messages: ({\n justNow: '',\n past: s => s,\n future: s => s,\n invalid: '-',\n second: s => s ? `${s}s` : '',\n minute: m => `${m}m`,\n hour: h => `${h}h`,\n week: w => `${w}w`,\n day: d => `${d}d`,\n month: m => `${m}mo`,\n year: y => `${y}y`,\n } satisfies UseTimeAgoOptions<false>['messages']) as any,\n})\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_TimelineItemFunction = _resolveComponent(\"TimelineItemFunction\")!\n\n _push(`<div${\n _ssrRenderAttrs(_mergeProps({\n relative: \"\",\n \"h-full\": \"\"\n }, _attrs))\n }><button absolute left-0 right-0 top-0 bg-green:5 px2 py1 text-left text-xs text-green6 font-mono>${\n _ssrInterpolate(__props.segment.route?.event.to)\n }</button><div absolute left-2 top-2.3em text-xs op50>${\n _ssrInterpolate(_unref(timeAgo))\n } ago </div><div><!--[-->`)\n _ssrRenderList(__props.segment.functions, (i, idx) => {\n _push(_ssrRenderComponent(_component_TimelineItemFunction, {\n key: idx,\n item: i.event,\n style: {\n position: 'absolute',\n minWidth: `${i.relativeWidth * 100}%`,\n maxWidth: `${i.relativeWidth * 100}%`,\n top: `${4 + i.layer * 1.6}em`,\n left: `${i.relativeStart * 100}%`,\n },\n onClick: ($event: any) => (emit('select', i))\n }, null, _parent))\n })\n _push(`<!--]--></div></div>`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { UseTimeAgoOptions } from '@vueuse/core'\nimport type { TimelineEvent, TimelineEventNormalized, TimelineEventsSegment } from '../../types'\nimport { useTimeAgo } from '@vueuse/core'\n\nconst props = defineProps<{\n segment: TimelineEventsSegment\n}>()\n\nconst emit = defineEmits<{\n (event: 'select', record: TimelineEventNormalized<TimelineEvent>): void\n}>()\n\nconst timeAgo = useTimeAgo(() => props.segment.start, {\n updateInterval: 1000,\n showSecond: true,\n controls: false,\n messages: ({\n justNow: '',\n past: s => s,\n future: s => s,\n invalid: '-',\n second: s => s ? `${s}s` : '',\n minute: m => `${m}m`,\n hour: h => `${h}h`,\n week: w => `${w}w`,\n day: d => `${d}d`,\n month: m => `${m}mo`,\n year: y => `${y}y`,\n } satisfies UseTimeAgoOptions<false>['messages']) as any,\n})\n</script>\n\n<template>\n <div relative h-full>\n <button\n absolute left-0 right-0 top-0 bg-green:5 px2 py1 text-left text-xs text-green6 font-mono\n @click=\"segment.route ? emit('select', segment.route) : undefined\"\n >\n {{ segment.route?.event.to }}\n </button>\n <div absolute left-2 top-2.3em text-xs op50>\n {{ timeAgo }} ago\n </div>\n <div>\n <TimelineItemFunction\n v-for=\"i, idx of segment.functions\"\n :key=\"idx\"\n :item=\"i.event\"\n :style=\"{\n position: 'absolute',\n minWidth: `${i.relativeWidth * 100}%`,\n maxWidth: `${i.relativeWidth * 100}%`,\n top: `${4 + i.layer * 1.6}em`,\n left: `${i.relativeStart * 100}%`,\n }\"\n @click=\"emit('select', i)\"\n />\n </div>\n </div>\n</template>\n","import type { TimelineEvent, TimelineEventFunction, TimelineEventNormalized, TimelineEventRoute, TimelineEventsSegment } from '../../types'\n\nconst MAX_SEGMENT_DURATION = 3_000\nconst SEGMENT_END_PADDING = 50\n\nexport function segmentTimelineEvents(events: TimelineEvent[]) {\n const segments: TimelineEventsSegment[] = []\n\n let current: TimelineEventsSegment = {\n start: 0,\n end: 0,\n events: [],\n functions: [],\n duration: 0,\n }\n\n for (const event of events) {\n const end = event.end || event.start\n // Segment events by max duration or route change\n if (\n (event.start - current.end > MAX_SEGMENT_DURATION)\n || event.type === 'route'\n ) {\n current = {\n start: event.start,\n end,\n events: [],\n functions: [],\n duration: 0,\n }\n segments.push(current)\n }\n\n current.events.push(event)\n current.end = end + SEGMENT_END_PADDING\n }\n\n segments.forEach((segment, idx) => {\n const duration = segment.end - segment.start\n\n const layers: number[] = []\n\n segment.duration = duration\n segment.previousGap = idx > 0 ? segment.start - segments[idx - 1]!.end : 0\n segment.events\n .forEach((event) => {\n const end = (event.end || event.start)\n let layer = 0\n\n if (event.type !== 'route') {\n layer = layers.findIndex(layer => layer <= event.start)\n if (layer === -1) {\n layer = layers.length\n layers.push(end + 1_000)\n }\n else {\n layers[layer] = end + 1_000\n }\n }\n\n const normalized: TimelineEventNormalized<TimelineEvent> = {\n event,\n segment,\n relativeStart: (event.start - segment.start) / duration,\n relativeWidth: (end - event.start) / duration,\n layer,\n }\n\n if (event.type === 'function')\n segment.functions.push(normalized as TimelineEventNormalized<TimelineEventFunction>)\n else\n segment.route = normalized as TimelineEventNormalized<TimelineEventRoute>\n })\n })\n\n return segments\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent } from \"vue\"\nimport { ssrRenderStyle as _ssrRenderStyle, ssrRenderComponent as _ssrRenderComponent, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { TimelineEvent, TimelineEventNormalized, TimelineMetrics } from '../../types'\nimport { clamp } from '@antfu/utils'\nimport { useEventListener } from '@vueuse/core'\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { segmentTimelineEvents } from '~/composables/timeline'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'TimelineTable',\n __ssrInlineRender: true,\n props: {\n data: {}\n },\n emits: [\"select\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst scroller = ref<HTMLElement>()\nconst minimap = ref<HTMLElement>()\nconst minimapScroller = ref<HTMLElement>()\nconst minimapScrollerInner = ref<HTMLElement>()\nconst followScroll = ref(true)\nconst scale = ref(1.5)\n\nconst segments = computed(() => segmentTimelineEvents(props.data.events))\n\nconst scrollWidth = computed(() => {\n // eslint-disable-next-line ts/no-unused-expressions\n props.data.events.length\n return scroller.value?.scrollWidth || window.innerWidth\n})\n\nfunction syncSize() {\n if (minimapScrollerInner.value)\n minimapScrollerInner.value.style.width = `${scrollWidth.value}px`\n}\n\nfunction scrollToEnd() {\n if (followScroll.value && scroller.value) {\n // scroller.value.scrollLeft = scroller.value.scrollWidth\n // minimapScroller.value!.scrollLeft = scroller.value.scrollWidth\n\n scroller.value.scrollTo({\n left: scroller.value.scrollWidth - scroller.value.clientWidth,\n behavior: 'smooth',\n })\n minimapScroller.value!.scrollTo({\n left: scroller.value.scrollWidth - scroller.value.clientWidth,\n behavior: 'smooth',\n })\n }\n}\n\nwatch(\n () => props.data.events.length,\n async () => {\n await nextTick()\n syncSize()\n scrollToEnd()\n },\n { flush: 'post' },\n)\n\nuseEventListener(scroller, 'scroll', () => {\n if (minimapScroller.value!.scrollLeft !== scroller.value!.scrollLeft) {\n syncSize()\n minimapScroller.value!.scrollLeft = scroller.value!.scrollLeft\n followScroll.value = scroller.value!.scrollLeft >= scroller.value!.scrollWidth - scroller.value!.clientWidth\n }\n})\nuseEventListener(minimapScroller, 'scroll', () => {\n if (minimapScroller.value!.scrollLeft !== scroller.value!.scrollLeft) {\n syncSize()\n scroller.value!.scrollLeft = minimapScroller.value!.scrollLeft\n }\n})\nuseEventListener(scroller, 'wheel', (e: WheelEvent) => {\n if (e.altKey) {\n scale.value = clamp(scale.value + e.deltaY / 200, 0.5, 3)\n syncSize()\n }\n else {\n scroller.value!.scrollLeft += e.deltaY\n }\n})\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_DurationDisplay = _resolveComponent(\"DurationDisplay\")!\n const _component_TimelineSegment = _resolveComponent(\"TimelineSegment\")!\n\n _push(`<!--[--><div relative data-v-da163089><div border=\"t b base\" relative h-50px ws-nowrap border-base data-v-da163089><!--[-->`)\n _ssrRenderList(segments.value, (segment, idx) => {\n _push(`<div relative h-full flex-inline style=\"${_ssrRenderStyle({\n width: `${Math.max(100, segment.duration / 10) / scrollWidth.value * 100}%`,\n })}\" data-v-da163089><!--[-->`)\n _ssrRenderList(segment.functions, (item, iidx) => {\n _push(`<div h-3px rounded style=\"${_ssrRenderStyle({\n width: `max(${item.relativeWidth * 100}%, 10px)`,\n position: 'absolute',\n top: `${item.layer * 4}px`,\n left: `${item.relativeStart * 100}%`,\n backgroundColor: _ctx.getHslColorFromStringHash(item.event.name, 50, 60),\n })}\" data-v-da163089></div>`)\n })\n _push(`<!--]-->`)\n if (segment.route) {\n _push(`<div absolute top-0 h-full w-px border-l border-green6 op10 style=\"${_ssrRenderStyle({\n left: `${segment.route.relativeStart * 100}%`,\n })}\" data-v-da163089></div>`)\n } else {\n _push(`<!---->`)\n }\n _push(`</div>`)\n })\n _push(`<!--]--></div><div class=\"timeline-scroller\" absolute inset-0 h-full w-full of-x-scroll data-v-da163089><div h-1px data-v-da163089></div></div></div><div relative h-full w-full of-x-scroll of-y-hidden ws-nowrap n-panel-grids data-v-da163089><!--[-->`)\n _ssrRenderList(segments.value, (segment, idx) => {\n _push(`<!--[-->`)\n if (segment.previousGap && segment.previousGap >= 200) {\n _push(`<div border=\"x base\" h-full flex-inline bg-true-gray-1 py15 text-xs write-vertical-left op50 dark:bg-true-gray-9 data-v-da163089>`)\n _push(_ssrRenderComponent(_component_DurationDisplay, {\n op50: \"\",\n duration: segment.previousGap,\n color: false\n }, null, _parent))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n _push(_ssrRenderComponent(_component_TimelineSegment, {\n \"flex-inline\": \"\",\n \"of-x-hidden\": \"\",\n \"bg-base\": \"\",\n \"hover:of-x-visible\": \"\",\n class: idx === segments.value.length - 1 ? 'border-r border-base' : '',\n segment: segment,\n style: {\n width: `${Math.max(50, segment.duration / 10) * scale.value}px`,\n },\n onSelect: ($event: any) => (emit('select', $event))\n }, null, _parent))\n _push(`<!--]-->`)\n })\n _push(`<!--]--></div><!--]-->`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { TimelineEvent, TimelineEventNormalized, TimelineMetrics } from '../../types'\nimport { clamp } from '@antfu/utils'\nimport { useEventListener } from '@vueuse/core'\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { segmentTimelineEvents } from '~/composables/timeline'\n\nconst props = defineProps<{\n data: TimelineMetrics\n}>()\n\nconst emit = defineEmits<{\n (event: 'select', record: TimelineEventNormalized<TimelineEvent>): void\n}>()\n\nconst scroller = ref<HTMLElement>()\nconst minimap = ref<HTMLElement>()\nconst minimapScroller = ref<HTMLElement>()\nconst minimapScrollerInner = ref<HTMLElement>()\nconst followScroll = ref(true)\nconst scale = ref(1.5)\n\nconst segments = computed(() => segmentTimelineEvents(props.data.events))\n\nconst scrollWidth = computed(() => {\n // eslint-disable-next-line ts/no-unused-expressions\n props.data.events.length\n return scroller.value?.scrollWidth || window.innerWidth\n})\n\nfunction syncSize() {\n if (minimapScrollerInner.value)\n minimapScrollerInner.value.style.width = `${scrollWidth.value}px`\n}\n\nfunction scrollToEnd() {\n if (followScroll.value && scroller.value) {\n // scroller.value.scrollLeft = scroller.value.scrollWidth\n // minimapScroller.value!.scrollLeft = scroller.value.scrollWidth\n\n scroller.value.scrollTo({\n left: scroller.value.scrollWidth - scroller.value.clientWidth,\n behavior: 'smooth',\n })\n minimapScroller.value!.scrollTo({\n left: scroller.value.scrollWidth - scroller.value.clientWidth,\n behavior: 'smooth',\n })\n }\n}\n\nwatch(\n () => props.data.events.length,\n async () => {\n await nextTick()\n syncSize()\n scrollToEnd()\n },\n { flush: 'post' },\n)\n\nuseEventListener(scroller, 'scroll', () => {\n if (minimapScroller.value!.scrollLeft !== scroller.value!.scrollLeft) {\n syncSize()\n minimapScroller.value!.scrollLeft = scroller.value!.scrollLeft\n followScroll.value = scroller.value!.scrollLeft >= scroller.value!.scrollWidth - scroller.value!.clientWidth\n }\n})\nuseEventListener(minimapScroller, 'scroll', () => {\n if (minimapScroller.value!.scrollLeft !== scroller.value!.scrollLeft) {\n syncSize()\n scroller.value!.scrollLeft = minimapScroller.value!.scrollLeft\n }\n})\nuseEventListener(scroller, 'wheel', (e: WheelEvent) => {\n if (e.altKey) {\n scale.value = clamp(scale.value + e.deltaY / 200, 0.5, 3)\n syncSize()\n }\n else {\n scroller.value!.scrollLeft += e.deltaY\n }\n})\n</script>\n\n<template>\n <div relative>\n <div ref=\"minimap\" border=\"t b base\" relative h-50px ws-nowrap border-base>\n <div\n v-for=\"segment, idx of segments\"\n :key=\"idx\"\n relative h-full flex-inline\n :style=\"{\n width: `${Math.max(100, segment.duration / 10) / scrollWidth * 100}%`,\n }\"\n >\n <div\n v-for=\"item, iidx of segment.functions\"\n :key=\"iidx\"\n h-3px rounded\n :style=\"{\n width: `max(${item.relativeWidth * 100}%, 10px)`,\n position: 'absolute',\n top: `${item.layer * 4}px`,\n left: `${item.relativeStart * 100}%`,\n backgroundColor: getHslColorFromStringHash(item.event.name, 50, 60),\n }\"\n />\n <template v-if=\"segment.route\">\n <div\n absolute top-0 h-full w-px border-l border-green6 op10\n :style=\"{\n left: `${segment.route.relativeStart * 100}%`,\n }\"\n />\n </template>\n </div>\n </div>\n <div ref=\"minimapScroller\" class=\"timeline-scroller\" absolute inset-0 h-full w-full of-x-scroll>\n <div\n ref=\"minimapScrollerInner\"\n h-1px\n />\n </div>\n </div>\n <div ref=\"scroller\" relative h-full w-full of-x-scroll of-y-hidden ws-nowrap n-panel-grids>\n <template v-for=\"segment, idx of segments\" :key=\"idx\">\n <div\n v-if=\"segment.previousGap && segment.previousGap >= 200\"\n border=\"x base\"\n h-full flex-inline bg-true-gray-1 py15 text-xs write-vertical-left op50 dark:bg-true-gray-9\n >\n <DurationDisplay\n op50\n :duration=\"segment.previousGap\"\n :color=\"false\"\n />\n </div>\n <TimelineSegment\n flex-inline of-x-hidden bg-base hover:of-x-visible\n :class=\"idx === segments.length - 1 ? 'border-r border-base' : ''\"\n :segment=\"segment\"\n :style=\"{\n width: `${Math.max(50, segment.duration / 10) * scale}px`,\n }\"\n @select=\"emit('select', $event)\"\n />\n </template>\n </div>\n</template>\n\n<style scoped>\n.timeline-scroller::-webkit-scrollbar {\n height: 100px;\n width: 0.1px;\n}\n\n.timeline-scroller::-webkit-scrollbar-track {\n background-color: transparent;\n}\n\n.timeline-scroller::-webkit-scrollbar-thumb {\n background-color: #8881;\n height: 100px;\n}\n.timeline-scroller:hover::-webkit-scrollbar-thumb {\n background-color: #8882;\n}\n</style>\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderStyle as _ssrRenderStyle, ssrRenderComponent as _ssrRenderComponent, ssrRenderAttrs as _ssrRenderAttrs, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { TimelineEvent, TimelineMetrics } from '../../types'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'TimelineList',\n __ssrInlineRender: true,\n props: {\n data: {}\n },\n emits: [\"select\"],\n setup(__props: any, { emit: __emit }) {\n\n\n\nconst emit = __emit\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_DurationDisplay = _resolveComponent(\"DurationDisplay\")!\n\n _push(`<div${_ssrRenderAttrs(_mergeProps({\n border: \"t base\",\n flex: \"~ col\",\n \"h-full\": \"\",\n \"of-y-auto\": \"\",\n \"text-sm\": \"\"\n }, _attrs))}><!--[-->`)\n _ssrRenderList(__props.data.events, (event, idx) => {\n _push(`<button border=\"b base\" px3 py2 flex=\"~ items-center gap-2\" hover=\"bg-active\">`)\n if (event.type === 'function') {\n _push(`<!--[--><div i-carbon-function op50></div><div font-mono style=\"${\n _ssrRenderStyle({\n color: event.type === 'function'\n ? _ctx.getHslColorFromStringHash(event.name, 50, 60)\n : '',\n })\n }\">${\n _ssrInterpolate(event.name)\n }</div><div flex=\"~\" ml--1 font-mono><div op30> ( </div><!--[-->`)\n _ssrRenderList(event.args, (a, index) => {\n _push(`<!--[-->`)\n if (index) {\n _push(`<div mr2 op30> , </div>`)\n } else {\n _push(`<!---->`)\n }\n _push(`<div op75>${_ssrInterpolate(a === null ? 'null' : a === undefined ? 'undefined' : typeof a === 'function' ? `[function]` : Array.isArray(a) ? '[Array]' : typeof a === 'object' ? '[object]' : JSON.stringify(a))}</div><!--]-->`)\n })\n _push(`<!--]--><div op30> ) </div></div><!--]-->`)\n } else {\n _push(`<!--[--><div mr-1 h-7 w-7 flex rounded-lg bg-primary:5 p1 text-green6><div i-carbon-direction-rotary-right ma text-lg></div></div><div flex=\"~ col items-start\"><div text-xs font-mono op30>${\n _ssrInterpolate(event.from)\n }</div><div text-green font-bold font-mono>${\n _ssrInterpolate(event.to)\n }</div></div><!--]-->`)\n }\n _push(`<div flex-auto></div>`)\n if (event.end) {\n _push(_ssrRenderComponent(_component_DurationDisplay, {\n duration: event.end - event.start,\n color: event.type === 'function'\n }, null, _parent))\n } else {\n _push(`<!---->`)\n }\n _push(`</button>`)\n })\n _push(`<!--]--><div min-h-100></div></div>`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { TimelineEvent, TimelineMetrics } from '../../types'\n\ndefineProps<{\n data: TimelineMetrics\n}>()\n\nconst emit = defineEmits<{\n (event: 'select', record: TimelineEvent): void\n}>()\n</script>\n\n<template>\n <div border=\"t base\" flex=\"~ col\" h-full of-y-auto text-sm>\n <button\n v-for=\"event, idx in data.events\" :key=\"idx\"\n border=\"b base\" px3 py2\n flex=\"~ items-center gap-2\"\n hover=\"bg-active\"\n @click=\"emit('select', event)\"\n >\n <template v-if=\"event.type === 'function'\">\n <div i-carbon-function op50 />\n <div\n font-mono\n :style=\"{\n color: event.type === 'function'\n ? getHslColorFromStringHash(event.name, 50, 60)\n : '',\n }\"\n >\n {{ event.name }}\n </div>\n <div flex=\"~\" ml--1 font-mono>\n <div op30>\n (\n </div>\n <template v-for=\"a, index in event.args \" :key=\"index\">\n <div v-if=\"index\" mr2 op30>\n ,\n </div>\n <div op75>\n {{ a === null ? 'null' : a === undefined ? 'undefined' : typeof a === 'function' ? `[function]` : Array.isArray(a) ? '[Array]' : typeof a === 'object' ? '[object]' : JSON.stringify(a) }}\n </div>\n </template>\n <div op30>\n )\n </div>\n </div>\n </template>\n <template v-else>\n <div mr-1 h-7 w-7 flex rounded-lg bg-primary:5 p1 text-green6>\n <div i-carbon-direction-rotary-right ma text-lg />\n </div>\n <div flex=\"~ col items-start\">\n <div text-xs font-mono op30>\n {{ event.from }}\n </div>\n <div text-green font-bold font-mono>\n {{ event.to }}\n </div>\n </div>\n </template>\n <div flex-auto />\n <DurationDisplay\n v-if=\"event.end\"\n :duration=\"event.end - event.start\"\n :color=\"event.type === 'function'\"\n />\n </button>\n <div min-h-100 />\n </div>\n</template>\n","import { defineComponent as _defineComponent } from 'vue'\nimport { mergeProps as _mergeProps, resolveComponent as _resolveComponent, unref as _unref, withCtx as _withCtx, createTextVNode as _createTextVNode, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\nimport { ssrRenderAttrs as _ssrRenderAttrs, ssrRenderClass as _ssrRenderClass, ssrRenderComponent as _ssrRenderComponent, ssrInterpolate as _ssrInterpolate } from \"vue/server-renderer\"\n\nimport JsonEditorVue from 'json-editor-vue'\nimport { defineComponent, ref } from 'vue'\nimport { getColorMode } from '~/composables/client'\nimport { useCopy } from '~/composables/editor'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'TimelineArgumentView',\n __ssrInlineRender: true,\n props: {\n value: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst clone = ref<any>()\nconst error = ref<any>()\n\nfunction doClone() {\n try {\n clone.value = JSON.parse(JSON.stringify(props.value))\n }\n catch (e) {\n console.error(e)\n error.value = e\n }\n}\n\nconst OnSetup = defineComponent({\n emits: ['setup'],\n setup(_, { emit }) {\n emit('setup')\n return () => null\n },\n})\n\nconst colorMode = getColorMode()\nconst copy = useCopy()\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_VMenu = _resolveComponent(\"VMenu\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n\n if ((typeof __props.value === 'string')) {\n _push(`<div${\n _ssrRenderAttrs(_mergeProps({ \"text-blue\": \"\" }, _attrs))\n }>${\n _ssrInterpolate(JSON.stringify(__props.value))\n }</div>`)\n } else if ((typeof __props.value === 'number')) {\n _push(`<div${\n _ssrRenderAttrs(_mergeProps({ \"text-purple\": \"\" }, _attrs))\n }>${\n _ssrInterpolate(__props.value)\n }</div>`)\n } else if ((typeof __props.value === 'boolean')) {\n _push(`<div${\n _ssrRenderAttrs(_mergeProps({ \"text-green\": \"\" }, _attrs))\n }>${\n _ssrInterpolate(__props.value)\n }</div>`)\n } else if ((typeof __props.value === 'undefined')) {\n _push(`<div${_ssrRenderAttrs(_mergeProps({ \"text-gray\": \"\" }, _attrs))}> undefined </div>`)\n } else if ((typeof __props.value === 'function')) {\n _push(`<div${\n _ssrRenderAttrs(_mergeProps({ \"text-gray\": \"\" }, _attrs))\n }> [Function${\n _ssrInterpolate(__props.value.name ? `: ${__props.value.name}` : '')\n }] </div>`)\n } else if (__props.value === null) {\n _push(`<div${_ssrRenderAttrs(_mergeProps({ \"text-gray\": \"\" }, _attrs))}> null </div>`)\n } else {\n _push(_ssrRenderComponent(_component_VMenu, _mergeProps({ placement: \"top\" }, _attrs), {\n popper: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_unref(OnSetup), { onSetup: doClone }, null, _parent, _scopeId))\n if (error.value) {\n _push(`<div bg-red:10 px2 py1 text-red${\n _scopeId\n }> Failed to display object: ${\n _ssrInterpolate(error.value)\n }</div>`)\n } else if (clone.value) {\n _push(`<div${_scopeId}>`)\n _push(_ssrRenderComponent(_unref(JsonEditorVue), _mergeProps({ \"model-value\": clone.value }, _ctx.$attrs, {\n class: [\"json-editor-vue\", [\n _unref(colorMode) === 'dark' ? 'jse-theme-dark' : '',\n ]],\n \"main-menu-bar\": false,\n \"navigation-bar\": false,\n \"status-bar\": false,\n \"read-only\": true,\n indentation: 2,\n \"tab-size\": 2\n }), null, _parent, _scopeId))\n _push(`<div p2 text-sm border=\"t base\"${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NButton, {\n title: \"Copy to clipboard\",\n icon: \"carbon-copy\",\n onClick: ($event: any) => (_unref(copy)(JSON.stringify(clone.value, null, 2), 'timeline-argument'))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Copy `)\n } else {\n return [\n _createTextVNode(\" Copy \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`</div></div>`)\n } else {\n _push(`<!---->`)\n }\n } else {\n return [\n _createVNode(_unref(OnSetup), { onSetup: doClone }),\n (error.value)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n \"bg-red:10\": \"\",\n px2: \"\",\n py1: \"\",\n \"text-red\": \"\"\n }, \" Failed to display object: \" + _toDisplayString(error.value), 1))\n : (clone.value)\n ? (_openBlock(), _createBlock(\"div\", { key: 1 }, [\n _createVNode(_unref(JsonEditorVue), _mergeProps({ \"model-value\": clone.value }, _ctx.$attrs, {\n class: [\"json-editor-vue\", [\n _unref(colorMode) === 'dark' ? 'jse-theme-dark' : '',\n ]],\n \"main-menu-bar\": false,\n \"navigation-bar\": false,\n \"status-bar\": false,\n \"read-only\": true,\n indentation: 2,\n \"tab-size\": 2\n }), null, 16, [\"model-value\", \"class\"]),\n _createVNode(\"div\", {\n p2: \"\",\n \"text-sm\": \"\",\n border: \"t base\"\n }, [\n _createVNode(_component_NButton, {\n title: \"Copy to clipboard\",\n icon: \"carbon-copy\",\n onClick: ($event: any) => (_unref(copy)(JSON.stringify(clone.value, null, 2), 'timeline-argument'))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Copy \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]\n }\n }),\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<span rounded-sm px1 py0.5 text-sm class=\"${\n _ssrRenderClass([\n Array.isArray(__props.value) ? 'text-amber bg-amber:10' : 'text-orange bg-orange:10',\n ])\n }\"${\n _scopeId\n }>${\n _ssrInterpolate(Array.isArray(__props.value) ? `[Array(${__props.value.length})]` : `[Object]`)\n }</span>`)\n } else {\n return [\n _createVNode(\"span\", {\n \"rounded-sm\": \"\",\n px1: \"\",\n \"py0.5\": \"\",\n \"text-sm\": \"\",\n class: [\n Array.isArray(__props.value) ? 'text-amber bg-amber:10' : 'text-orange bg-orange:10',\n ]\n }, _toDisplayString(Array.isArray(__props.value) ? `[Array(${__props.value.length})]` : `[Object]`), 3)\n ]\n }\n }),\n _: 1\n }, _parent))\n }\n}\n}\n\n})","<script setup lang=\"ts\">\nimport JsonEditorVue from 'json-editor-vue'\nimport { defineComponent, ref } from 'vue'\nimport { getColorMode } from '~/composables/client'\nimport { useCopy } from '~/composables/editor'\n\nconst props = defineProps<{\n value: any\n}>()\n\nconst clone = ref<any>()\nconst error = ref<any>()\n\nfunction doClone() {\n try {\n clone.value = JSON.parse(JSON.stringify(props.value))\n }\n catch (e) {\n console.error(e)\n error.value = e\n }\n}\n\nconst OnSetup = defineComponent({\n emits: ['setup'],\n setup(_, { emit }) {\n emit('setup')\n return () => null\n },\n})\n\nconst colorMode = getColorMode()\nconst copy = useCopy()\n</script>\n\n<template>\n <div v-if=\"(typeof value === 'string')\" text-blue>\n {{ JSON.stringify(value) }}\n </div>\n <div v-else-if=\"(typeof value === 'number')\" text-purple>\n {{ value }}\n </div>\n <div v-else-if=\"(typeof value === 'boolean')\" text-green>\n {{ value }}\n </div>\n <div v-else-if=\"(typeof value === 'undefined')\" text-gray>\n undefined\n </div>\n <div v-else-if=\"(typeof value === 'function')\" text-gray>\n [Function{{ value.name ? `: ${value.name}` : '' }}]\n </div>\n <div v-else-if=\"value === null\" text-gray>\n null\n </div>\n <template v-else>\n <VMenu placement=\"top\">\n <span\n rounded-sm px1 py0.5 text-sm\n :class=\"[\n Array.isArray(value) ? 'text-amber bg-amber:10' : 'text-orange bg-orange:10',\n ]\"\n >\n {{ Array.isArray(value) ? `[Array(${value.length})]` : `[Object]` }}\n </span>\n <template #popper>\n <OnSetup @setup=\"doClone\" />\n <div v-if=\"error\" bg-red:10 px2 py1 text-red>\n Failed to display object: {{ error }}\n </div>\n <div v-else-if=\"clone\">\n <JsonEditorVue\n :model-value=\"clone\"\n v-bind=\"$attrs\"\n class=\"json-editor-vue\"\n :class=\"[\n colorMode === 'dark' ? 'jse-theme-dark' : '',\n ]\"\n :main-menu-bar=\"false\"\n :navigation-bar=\"false\"\n :status-bar=\"false\"\n :read-only=\"true\"\n :indentation=\"2\"\n :tab-size=\"2\"\n />\n <div p2 text-sm border=\"t base\">\n <NButton\n title=\"Copy to clipboard\"\n icon=\"carbon-copy\"\n @click=\"copy(JSON.stringify(clone, null, 2), 'timeline-argument')\"\n >\n Copy\n </NButton>\n </div>\n </div>\n </template>\n </VMenu>\n </template>\n</template>\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent, ssrRenderAttrs as _ssrRenderAttrs, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { TimelineEventFunction } from '../../types'\nimport { useTimeAgo } from '@vueuse/core'\nimport { computed } from 'vue'\nimport { useAutoImports } from '~/composables/state'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'TimelineDetailsFunction',\n __ssrInlineRender: true,\n props: {\n record: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst timeAgo = useTimeAgo(() => props.record.start, { showSecond: true })\n\nconst autoImports = useAutoImports()\nconst importsMetadata = computed(() => autoImports.value?.metadata)\nconst importItem = computed(() => {\n return autoImports.value?.imports.find(i => i.as === props.record.name)\n})\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NBadge = _resolveComponent(\"NBadge\")!\n const _component_ComposableItem = _resolveComponent(\"ComposableItem\")!\n const _component_TimelineArgumentView = _resolveComponent(\"TimelineArgumentView\")!\n const _component_DurationDisplay = _resolveComponent(\"DurationDisplay\")!\n const _component_StacktraceList = _resolveComponent(\"StacktraceList\")!\n\n if (__props.record) {\n _push(`<div${_ssrRenderAttrs(_mergeProps({\n \"p-4\": \"\",\n flex: \"~ col gap-2\",\n \"text-base\": \"\"\n }, _attrs))}><div mx--1>`)\n _push(_ssrRenderComponent(_component_NBadge, { n: \"yellow\" }, null, _parent))\n _push(`</div><div flex=\"~ gap-1\" font-mono>`)\n if (importItem.value) {\n _push(_ssrRenderComponent(_component_ComposableItem, {\n item: importItem.value,\n metadata: importsMetadata.value,\n counter: false,\n classes: \"px2 py1\",\n \"mx--2\": \"\"\n }, null, _parent))\n } else {\n _push(`<span>${_ssrInterpolate(__props.record.name)}</span>`)\n }\n _push(`<span ml1 op30>(</span><!--[-->`)\n _ssrRenderList(__props.record.args, (arg, idx) => {\n _push(`<!--[-->`)\n if (idx) {\n _push(`<span op30>, </span>`)\n } else {\n _push(`<!---->`)\n }\n _push(_ssrRenderComponent(_component_TimelineArgumentView, { value: arg }, null, _parent))\n _push(`<!--]-->`)\n })\n _push(`<!--]--><span op30>)</span></div><div flex=\"~ gap-1\" text-sm>`)\n if (__props.record.end) {\n _push(_ssrRenderComponent(_component_DurationDisplay, {\n duration: __props.record.end - __props.record.start\n }, null, _parent))\n } else {\n _push(`<!---->`)\n }\n _push(`<span mx1 op50>·</span><div class=\"text-sm text-gray-400\">${_ssrInterpolate(_unref(timeAgo))}</div></div>`)\n if (__props.record.stacktrace) {\n _push(_ssrRenderComponent(_component_StacktraceList, {\n stacktrace: __props.record.stacktrace,\n class: \"text-xs text-gray-400\"\n }, null, _parent))\n } else {\n _push(`<!---->`)\n }\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { TimelineEventFunction } from '../../types'\nimport { useTimeAgo } from '@vueuse/core'\nimport { computed } from 'vue'\nimport { useAutoImports } from '~/composables/state'\n\nconst props = defineProps<{\n record: TimelineEventFunction\n}>()\n\nconst timeAgo = useTimeAgo(() => props.record.start, { showSecond: true })\n\nconst autoImports = useAutoImports()\nconst importsMetadata = computed(() => autoImports.value?.metadata)\nconst importItem = computed(() => {\n return autoImports.value?.imports.find(i => i.as === props.record.name)\n})\n</script>\n\n<template>\n <div v-if=\"record\" p-4 flex=\"~ col gap-2\" text-base>\n <div mx--1>\n <NBadge n=\"yellow\" v-text=\"'Function call'\" />\n </div>\n <div flex=\"~ gap-1\" font-mono>\n <ComposableItem\n v-if=\"importItem\"\n :item=\"importItem\"\n :metadata=\"importsMetadata\"\n :counter=\"false\"\n classes=\"px2 py1\"\n mx--2\n />\n <span v-else>{{ record.name }}</span>\n <span ml1 op30>(</span>\n <template v-for=\"arg, idx in record.args\" :key=\"idx\">\n <span v-if=\"idx\" op30>, </span>\n <TimelineArgumentView :value=\"arg\" />\n </template>\n <span op30>)</span>\n </div>\n\n <div flex=\"~ gap-1\" text-sm>\n <DurationDisplay\n v-if=\"record.end\"\n :duration=\"record.end - record.start\"\n />\n <span mx1 op50>·</span>\n <div class=\"text-sm text-gray-400\">\n {{ timeAgo }}\n </div>\n </div>\n\n <StacktraceList\n v-if=\"record.stacktrace\" :stacktrace=\"record.stacktrace\"\n class=\"text-xs text-gray-400\"\n />\n </div>\n</template>\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent, ssrRenderAttrs as _ssrRenderAttrs, ssrInterpolate as _ssrInterpolate } from \"vue/server-renderer\"\n\nimport type { TimelineEventRoute } from '../../types'\nimport { useTimeAgo } from '@vueuse/core'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'TimelineDetailsRoute',\n __ssrInlineRender: true,\n props: {\n record: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst timeAgo = useTimeAgo(() => props.record.start, { showSecond: true })\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NBadge = _resolveComponent(\"NBadge\")!\n const _component_DurationDisplay = _resolveComponent(\"DurationDisplay\")!\n\n if (__props.record) {\n _push(`<div${_ssrRenderAttrs(_mergeProps({\n \"p-4\": \"\",\n flex: \"~ col gap-2\"\n }, _attrs))}><div mx--1>`)\n _push(_ssrRenderComponent(_component_NBadge, { n: \"green\" }, null, _parent))\n _push(`</div><div flex=\"~ gap-1 items-center\" font-mono><span op50>${\n _ssrInterpolate(__props.record.from)\n }</span><span i-carbon-arrow-right op50></span><span>${\n _ssrInterpolate(__props.record.to)\n }</span></div><div flex=\"~ gap-1\" text-sm>`)\n if (__props.record.end) {\n _push(_ssrRenderComponent(_component_DurationDisplay, {\n duration: __props.record.end - __props.record.start\n }, null, _parent))\n } else {\n _push(`<!---->`)\n }\n _push(`<span mx1 op50>·</span><div class=\"text-sm text-gray-400\">${_ssrInterpolate(_unref(timeAgo))}</div></div></div>`)\n } else {\n _push(`<!---->`)\n }\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { TimelineEventRoute } from '../../types'\nimport { useTimeAgo } from '@vueuse/core'\n\nconst props = defineProps<{\n record: TimelineEventRoute\n}>()\n\nconst timeAgo = useTimeAgo(() => props.record.start, { showSecond: true })\n</script>\n\n<template>\n <div v-if=\"record\" p-4 flex=\"~ col gap-2\">\n <div mx--1>\n <NBadge n=\"green\" v-text=\"'Route Change'\" />\n </div>\n <div flex=\"~ gap-1 items-center\" font-mono>\n <span op50>{{ record.from }}</span>\n <span i-carbon-arrow-right op50 />\n <span>{{ record.to }}</span>\n </div>\n\n <div flex=\"~ gap-1\" text-sm>\n <DurationDisplay\n v-if=\"record.end\"\n :duration=\"record.end - record.start\"\n />\n <span mx1 op50>·</span>\n <div class=\"text-sm text-gray-400\">\n {{ timeAgo }}\n </div>\n </div>\n </div>\n</template>\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, toDisplayString as _toDisplayString, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderClass as _ssrRenderClass, ssrRenderComponent as _ssrRenderComponent, ssrRenderAttrs as _ssrRenderAttrs, ssrInterpolate as _ssrInterpolate } from \"vue/server-renderer\"\n\nimport type { TimelineEvent } from '../../types'\nimport { computed, ref } from 'vue'\nimport { useClient } from '~/composables/client'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'TimelineView',\n __ssrInlineRender: true,\n setup(__props) {\n\nconst client = useClient()\n\nconst view = ref<'table' | 'list'>('table')\nconst selected = ref<TimelineEvent | undefined>()\n\nconst metrics = computed(() => client.value?.metrics.clientTimeline())\n\nfunction clear() {\n if (metrics.value)\n metrics.value.events = []\n}\n\nfunction toggleView() {\n view.value = view.value === 'table' ? 'list' : 'table'\n}\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_VTooltip = _resolveComponent(\"VTooltip\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n const _component_TimelineTable = _resolveComponent(\"TimelineTable\")!\n const _component_TimelineList = _resolveComponent(\"TimelineList\")!\n const _component_NDrawer = _resolveComponent(\"NDrawer\")!\n const _component_TimelineDetailsFunction = _resolveComponent(\"TimelineDetailsFunction\")!\n const _component_TimelineDetailsRoute = _resolveComponent(\"TimelineDetailsRoute\")!\n\n if (metrics.value) {\n _push(`<div${_ssrRenderAttrs(_mergeProps({\n \"h-screen\": \"\",\n \"of-hidden\": \"\"\n }, _attrs))}><div h-screen w-full flex flex-col><div h-10 flex=\"~ gap-2 items-center justify-end\" p2 px3>`)\n _push(_ssrRenderComponent(_component_VTooltip, { flex: \"\" }, {\n popper: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div text-sm${\n _scopeId\n }>${\n _ssrInterpolate(metrics.value.options.enabled ? 'Recording...' : 'Paused')\n }</div>`)\n } else {\n return [\n _createVNode(\"div\", { \"text-sm\": \"\" }, _toDisplayString(metrics.value.options.enabled ? 'Recording...' : 'Paused'), 1)\n ]\n }\n }),\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div text-lg class=\"${\n _ssrRenderClass(metrics.value.options.enabled ? 'i-carbon-radio-button-checked text-primary animate-pulse' : 'i-carbon-pause-outline op30')\n }\"${\n _scopeId\n }></div>`)\n } else {\n return [\n _createVNode(\"div\", {\n \"text-lg\": \"\",\n class: metrics.value.options.enabled ? 'i-carbon-radio-button-checked text-primary animate-pulse' : 'i-carbon-pause-outline op30'\n }, null, 2)\n ]\n }\n }),\n _: 1\n }, _parent))\n if (!metrics.value.options.enabled) {\n _push(_ssrRenderComponent(_component_NButton, {\n size: \"small\",\n ml1: \"\",\n \"text-sm\": \"\",\n n: \"primary\",\n icon: \"i-carbon-play\",\n onClick: ($event: any) => (metrics.value.options.enabled = true)\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Start Tracking `)\n } else {\n return [\n _createTextVNode(\" Start Tracking \")\n ]\n }\n }),\n _: 1\n }, _parent))\n } else {\n _push(_ssrRenderComponent(_component_NButton, {\n size: \"small\",\n ml1: \"\",\n \"text-sm\": \"\",\n n: \"orange\",\n icon: \"i-carbon-stop\",\n onClick: ($event: any) => (metrics.value.options.enabled = false)\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Stop Tracking `)\n } else {\n return [\n _createTextVNode(\" Stop Tracking \")\n ]\n }\n }),\n _: 1\n }, _parent))\n }\n _push(`<div flex-auto></div>`)\n _push(_ssrRenderComponent(_component_NButton, {\n icon: view.value === 'table' ? 'i-carbon-roadmap' : 'i-carbon-list',\n class: \"ml-2\",\n title: \"Toggle View\",\n border: false,\n onClick: toggleView\n }, null, _parent))\n _push(_ssrRenderComponent(_component_NButton, {\n icon: \"i-carbon-trash-can\",\n \"hover-text-red\": \"\",\n class: \"ml-2\",\n border: false,\n onClick: clear\n }, null, _parent))\n _push(`</div>`)\n if (view.value === 'table') {\n _push(_ssrRenderComponent(_component_TimelineTable, {\n data: { ...metrics.value },\n onSelect: s => selected.value = s.event\n }, null, _parent))\n } else {\n _push(_ssrRenderComponent(_component_TimelineList, {\n data: { ...metrics.value },\n onSelect: s => selected.value = s\n }, null, _parent))\n }\n _push(`</div>`)\n _push(_ssrRenderComponent(_component_NDrawer, {\n \"model-value\": !!selected.value,\n \"auto-close\": \"\",\n transition: \"bottom\",\n onClose: ($event: any) => (selected.value = undefined)\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div min-h-50 px3 py2${_scopeId}>`)\n if (selected.value?.type === 'function') {\n _push(_ssrRenderComponent(_component_TimelineDetailsFunction, { record: selected.value }, null, _parent, _scopeId))\n } else if (selected.value?.type === 'route') {\n _push(_ssrRenderComponent(_component_TimelineDetailsRoute, { record: selected.value }, null, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n _push(`</div>`)\n } else {\n return [\n _createVNode(\"div\", {\n \"min-h-50\": \"\",\n px3: \"\",\n py2: \"\"\n }, [\n (selected.value?.type === 'function')\n ? (_openBlock(), _createBlock(_component_TimelineDetailsFunction, {\n key: 0,\n record: selected.value\n }, null, 8, [\"record\"]))\n : (selected.value?.type === 'route')\n ? (_openBlock(), _createBlock(_component_TimelineDetailsRoute, {\n key: 1,\n record: selected.value\n }, null, 8, [\"record\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { TimelineEvent } from '../../types'\nimport { computed, ref } from 'vue'\nimport { useClient } from '~/composables/client'\n\nconst client = useClient()\n\nconst view = ref<'table' | 'list'>('table')\nconst selected = ref<TimelineEvent | undefined>()\n\nconst metrics = computed(() => client.value?.metrics.clientTimeline())\n\nfunction clear() {\n if (metrics.value)\n metrics.value.events = []\n}\n\nfunction toggleView() {\n view.value = view.value === 'table' ? 'list' : 'table'\n}\n</script>\n\n<template>\n <div v-if=\"metrics\" h-screen of-hidden>\n <div h-screen w-full flex flex-col>\n <div h-10 flex=\"~ gap-2 items-center justify-end\" p2 px3>\n <VTooltip flex>\n <div\n text-lg\n :class=\"metrics.options.enabled ? 'i-carbon-radio-button-checked text-primary animate-pulse' : 'i-carbon-pause-outline op30'\"\n />\n <template #popper>\n <div text-sm>\n {{ metrics.options.enabled ? 'Recording...' : 'Paused' }}\n </div>\n </template>\n </VTooltip>\n\n <NButton\n v-if=\"!metrics.options.enabled\"\n size=\"small\" ml1 text-sm\n n=\"primary\"\n icon=\"i-carbon-play\"\n @click=\"metrics.options.enabled = true\"\n >\n Start Tracking\n </NButton>\n <NButton\n v-else\n size=\"small\" ml1 text-sm\n n=\"orange\"\n icon=\"i-carbon-stop\"\n @click=\"metrics.options.enabled = false\"\n >\n Stop Tracking\n </NButton>\n <!-- <template v-if=\"metrics.options.enabled\">\n <NCheckbox\n v-model=\"metrics.options.stacktrace\"\n label=\"Enabled\"\n class=\"text-sm\"\n >\n Record stacktrace\n </NCheckbox>\n <NCheckbox\n v-model=\"metrics.options.arguments\"\n label=\"Enabled\"\n class=\"text-sm\"\n >\n Record arguments\n </NCheckbox>\n </template> -->\n <div flex-auto />\n <NButton\n :icon=\"view === 'table' ? 'i-carbon-roadmap' : 'i-carbon-list'\"\n class=\"ml-2\"\n title=\"Toggle View\"\n :border=\"false\"\n @click=\"toggleView\"\n />\n <NButton\n icon=\"i-carbon-trash-can\"\n hover-text-red\n class=\"ml-2\"\n :border=\"false\"\n @click=\"clear\"\n />\n </div>\n <TimelineTable\n v-if=\"view === 'table'\"\n :data=\"{ ...metrics }\"\n @select=\"s => selected = s.event\"\n />\n <TimelineList\n v-else\n :data=\"{ ...metrics }\"\n @select=\"s => selected = s\"\n />\n </div>\n <NDrawer\n :model-value=\"!!selected\"\n auto-close\n transition=\"bottom\"\n @close=\"selected = undefined\"\n >\n <div min-h-50 px3 py2>\n <TimelineDetailsFunction v-if=\"selected?.type === 'function'\" :record=\"selected\" />\n <TimelineDetailsRoute v-else-if=\"selected?.type === 'route'\" :record=\"selected\" />\n </div>\n </NDrawer>\n </div>\n</template>\n","# Timeline\n\n<blockquote text-orange bg-orange:10 py1>\nThis is an experimental feature\n</blockquote>\n\nTimeline tracks your route navigations and functions calls in your Nuxt application. It can be used to debug performance issues and to understand how your application works.\n\n## Function calls\n\nNuxt DevTools tracks function calls by wrapping them in the build time. It works for functions referenced by auto-imports, or explicit imports through `import {} from '#imports'`.\n\n```vue\n<script setup>\nimport { useMouse } from '@vueuse/core'\nimport { useRoute } from '#app/composables/router'\nimport { useNuxtApp } from '#imports'\n\nconst route = useRoute() // tracked\nconst app = useNuxtApp() // tracked\n\n// NOT tracked because it's directly imported\nconst mouse = useMouse()\n</script>\n```\n\nBy default, it tracks Nuxt provided composables as well as user defined functions. You can include/exclude functions by using the `include` and `exclude` options in the `nuxt.config.js` file.\n\n```js\nexport default defineNuxtConfig({\n devtools: {\n timeline: {\n functions: {\n include: [\n // track `useMouse`\n 'useMouse',\n // track all functions starting with `use`\n /^use[A-Z]/,\n // track all functions from @vueuse/core\n entry => entry.from === '@vueuse/core',\n ],\n exclude: [\n 'useRouter'\n ]\n }\n }\n }\n})\n```\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createTextVNode as _createTextVNode } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent } from \"vue/server-renderer\"\n\nimport { createTemplatePromise } from '@vueuse/core'\nimport { definePageMeta, devtoolsUiShowNotification } from '#imports'\nimport { useOpenInEditor } from '~/composables/editor'\nimport { rpc } from '~/composables/rpc'\nimport { useModuleOptions, useServerConfig } from '~/composables/state'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'timeline',\n __ssrInlineRender: true,\n setup(__props) {\n\ndefinePageMeta({\n icon: 'i-carbon-roadmap',\n title: 'Timeline',\n category: 'analyze',\n})\n\nconst options = useModuleOptions()\nconst config = useServerConfig()\n\nconst Dialog = createTemplatePromise<boolean, [string, string]>()\n\nconst openInEditor = useOpenInEditor()\n\nasync function showPopup() {\n try {\n const [source, modified] = await rpc.enableTimeline(true)\n if (!await Dialog.start(source, modified))\n return\n await rpc.enableTimeline(false)\n }\n catch {\n devtoolsUiShowNotification({\n message: 'Failed to enable timeline automatically. Check the terminal for more details.',\n icon: 'i-carbon-warning',\n classes: 'text-red',\n })\n }\n}\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_TimelineView = _resolveComponent(\"TimelineView\")!\n const _component_NPanelGrids = _resolveComponent(\"NPanelGrids\")!\n const _component_LaunchPage = _resolveComponent(\"LaunchPage\")!\n const _component_NDialog = _resolveComponent(\"NDialog\")!\n const _component_NLink = _resolveComponent(\"NLink\")!\n const _component_CodeDiff = _resolveComponent(\"CodeDiff\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n const _component_HelpFab = _resolveComponent(\"HelpFab\")!\n const _component_DocsTimeline = _resolveComponent(\"DocsTimeline\")!\n\n _push(`<!--[-->`)\n if (_unref(options)?.timeline?.enabled) {\n _push(_ssrRenderComponent(_component_TimelineView, null, null, _parent))\n } else {\n _push(`<!--[-->`)\n _push(_ssrRenderComponent(_component_NPanelGrids, null, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_LaunchPage, {\n icon: \"i-carbon-roadmap\",\n name: \"feature-timeline\",\n title: \"Timeline\",\n description: \"Timeline enables the inspection of when composable being executed and the route changes.\",\n actions: [\n {\n label: 'Enable',\n },\n ],\n onAction: showPopup\n }, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_LaunchPage, {\n icon: \"i-carbon-roadmap\",\n name: \"feature-timeline\",\n title: \"Timeline\",\n description: \"Timeline enables the inspection of when composable being executed and the route changes.\",\n actions: [\n {\n label: 'Enable',\n },\n ],\n onAction: showPopup\n })\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(_ssrRenderComponent(_unref(Dialog), null, {\n default: _withCtx(({ resolve, args }, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NDialog, {\n \"model-value\": true,\n onClose: ($event: any) => (resolve(false))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ col gap-2\" w-150 p4 border=\"t base\"${\n _scopeId\n }><h2 text-xl${\n _scopeId\n }><span capitalize${\n _scopeId\n }>Enable Timeline?</span></h2><p op50${\n _scopeId\n }> Your `)\n _push(_ssrRenderComponent(_component_NLink, {\n role: \"button\",\n n: \"primary\",\n underline: \"\",\n onClick: ($event: any) => (_unref(openInEditor)(_unref(config)?._nuxtConfigFile))\n }, null, _parent, _scopeId))\n _push(` will be updated as: </p>`)\n _push(_ssrRenderComponent(_component_CodeDiff, {\n from: args[0],\n to: args[1],\n \"max-h-80\": \"\",\n \"of-auto\": \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lang: \"ts\"\n }, null, _parent, _scopeId))\n _push(`<p${\n _scopeId\n }><span op50${\n _scopeId\n }>Then Nuxt will </span><span text-orange${\n _scopeId\n }>restart automatically</span>. </p><div flex=\"~ gap-3\" mt2 justify-end${\n _scopeId\n }>`)\n _push(_ssrRenderComponent(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Cancel `)\n } else {\n return [\n _createTextVNode(\" Cancel \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"solid primary\",\n capitalize: \"\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Enable `)\n } else {\n return [\n _createTextVNode(\" Enable \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`</div></div>`)\n } else {\n return [\n _createVNode(\"div\", {\n flex: \"~ col gap-2\",\n \"w-150\": \"\",\n p4: \"\",\n border: \"t base\"\n }, [\n _createVNode(\"h2\", { \"text-xl\": \"\" }, [\n _createVNode(\"span\", { capitalize: \"\" }, \"Enable Timeline?\")\n ]),\n _createVNode(\"p\", { op50: \"\" }, [\n _createTextVNode(\" Your \"),\n _createVNode(_component_NLink, {\n role: \"button\",\n n: \"primary\",\n underline: \"\",\n onClick: ($event: any) => (_unref(openInEditor)(_unref(config)?._nuxtConfigFile)),\n textContent: 'Nuxt config'\n }, null, 8, [\"onClick\"]),\n _createTextVNode(\" will be updated as: \")\n ]),\n _createVNode(_component_CodeDiff, {\n from: args[0],\n to: args[1],\n \"max-h-80\": \"\",\n \"of-auto\": \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lang: \"ts\"\n }, null, 8, [\"from\", \"to\"]),\n _createVNode(\"p\", null, [\n _createVNode(\"span\", { op50: \"\" }, \"Then Nuxt will \"),\n _createVNode(\"span\", { \"text-orange\": \"\" }, \"restart automatically\"),\n _createTextVNode(\". \")\n ]),\n _createVNode(\"div\", {\n flex: \"~ gap-3\",\n mt2: \"\",\n \"justify-end\": \"\"\n }, [\n _createVNode(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Cancel \")\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_NButton, {\n n: \"solid primary\",\n capitalize: \"\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Enable \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ])\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NDialog, {\n \"model-value\": true,\n onClose: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createVNode(\"div\", {\n flex: \"~ col gap-2\",\n \"w-150\": \"\",\n p4: \"\",\n border: \"t base\"\n }, [\n _createVNode(\"h2\", { \"text-xl\": \"\" }, [\n _createVNode(\"span\", { capitalize: \"\" }, \"Enable Timeline?\")\n ]),\n _createVNode(\"p\", { op50: \"\" }, [\n _createTextVNode(\" Your \"),\n _createVNode(_component_NLink, {\n role: \"button\",\n n: \"primary\",\n underline: \"\",\n onClick: ($event: any) => (_unref(openInEditor)(_unref(config)?._nuxtConfigFile)),\n textContent: 'Nuxt config'\n }, null, 8, [\"onClick\"]),\n _createTextVNode(\" will be updated as: \")\n ]),\n _createVNode(_component_CodeDiff, {\n from: args[0],\n to: args[1],\n \"max-h-80\": \"\",\n \"of-auto\": \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lang: \"ts\"\n }, null, 8, [\"from\", \"to\"]),\n _createVNode(\"p\", null, [\n _createVNode(\"span\", { op50: \"\" }, \"Then Nuxt will \"),\n _createVNode(\"span\", { \"text-orange\": \"\" }, \"restart automatically\"),\n _createTextVNode(\". \")\n ]),\n _createVNode(\"div\", {\n flex: \"~ gap-3\",\n mt2: \"\",\n \"justify-end\": \"\"\n }, [\n _createVNode(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Cancel \")\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_NButton, {\n n: \"solid primary\",\n capitalize: \"\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Enable \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ])\n ]),\n _: 2\n }, 1032, [\"onClose\"])\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<!--]-->`)\n }\n _push(_ssrRenderComponent(_component_HelpFab, null, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_DocsTimeline, null, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_DocsTimeline)\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<!--]-->`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport { createTemplatePromise } from '@vueuse/core'\nimport { definePageMeta, devtoolsUiShowNotification } from '#imports'\nimport { useOpenInEditor } from '~/composables/editor'\nimport { rpc } from '~/composables/rpc'\nimport { useModuleOptions, useServerConfig } from '~/composables/state'\n\ndefinePageMeta({\n icon: 'i-carbon-roadmap',\n title: 'Timeline',\n category: 'analyze',\n})\n\nconst options = useModuleOptions()\nconst config = useServerConfig()\n\nconst Dialog = createTemplatePromise<boolean, [string, string]>()\n\nconst openInEditor = useOpenInEditor()\n\nasync function showPopup() {\n try {\n const [source, modified] = await rpc.enableTimeline(true)\n if (!await Dialog.start(source, modified))\n return\n await rpc.enableTimeline(false)\n }\n catch {\n devtoolsUiShowNotification({\n message: 'Failed to enable timeline automatically. Check the terminal for more details.',\n icon: 'i-carbon-warning',\n classes: 'text-red',\n })\n }\n}\n</script>\n\n<template>\n <TimelineView v-if=\"options?.timeline?.enabled\" />\n <template v-else>\n <NPanelGrids>\n <LaunchPage\n icon=\"i-carbon-roadmap\"\n name=\"feature-timeline\"\n title=\"Timeline\"\n description=\"Timeline enables the inspection of when composable being executed and the route changes.\"\n :actions=\"[\n {\n label: 'Enable',\n },\n ]\"\n @action=\"showPopup\"\n />\n </NPanelGrids>\n <Dialog v-slot=\"{ resolve, args }\">\n <NDialog :model-value=\"true\" @close=\"resolve(false)\">\n <div flex=\"~ col gap-2\" w-150 p4 border=\"t base\">\n <h2 text-xl>\n <span capitalize>Enable Timeline?</span>\n </h2>\n\n <p op50>\n Your <NLink\n role=\"button\" n=\"primary\" underline\n @click=\"openInEditor(config?._nuxtConfigFile)\"\n v-text=\"'Nuxt config'\"\n /> will be updated as:\n </p>\n\n <CodeDiff\n :from=\"args[0]\"\n :to=\"args[1]\"\n max-h-80 of-auto py2 border=\"~ base rounded\"\n lang=\"ts\"\n />\n\n <p>\n <span op50>Then Nuxt will </span><span text-orange>restart automatically</span>.\n </p>\n\n <div flex=\"~ gap-3\" mt2 justify-end>\n <NButton @click=\"resolve(false)\">\n Cancel\n </NButton>\n <NButton n=\"solid primary\" capitalize @click=\"resolve(true)\">\n Enable\n </NButton>\n </div>\n </div>\n </NDialog>\n </Dialog>\n </template>\n\n <HelpFab>\n <DocsTimeline />\n </HelpFab>\n</template>\n"],"version":3}