@nuxt/devtools 4.0.0-alpha.17 → 4.0.0-alpha.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_nuxt/{CodeDiff-DgjeLx6z.js.map.json → CodeDiff-BhzZ6fTd.js.map.json} +1 -1
- package/dist/_nuxt/{CodeSnippets-CgfcaS4Z.js.map.json → CodeSnippets-C7LxVstU.js.map.json} +1 -1
- package/dist/_nuxt/{ComposableItem-BWQR7_fI.js.map.json → ComposableItem-C0rRVuVk.js.map.json} +1 -1
- package/dist/_nuxt/{DataSchemaButton-CqEfc2TV.js.map.json → DataSchemaButton-D-t7Fd9O.js.map.json} +1 -1
- package/dist/_nuxt/{DataSchemaDrawer-Xj8YzNJN.js.map.json → DataSchemaDrawer-CRqKi4Gs.js.map.json} +1 -1
- package/dist/_nuxt/{FilepathItem-D75bkTSa.js.map.json → FilepathItem-QhFtdBo3.js.map.json} +1 -1
- package/dist/_nuxt/{HelpFab-CH7NlsDf.js.map.json → HelpFab-DsqK9feu.js.map.json} +1 -1
- package/dist/_nuxt/{LaunchPage-ByG-3KVi.js.map.json → LaunchPage-DvnAdXoI.js.map.json} +1 -1
- package/dist/_nuxt/{NCheckbox-OMIu_LTG.js.map.json → NCheckbox-C4hTNEJ1.js.map.json} +1 -1
- package/dist/_nuxt/{NDrawer-C6Opm19C.js.map.json → NDrawer-CkklqKLr.js.map.json} +1 -1
- package/dist/_nuxt/{NDropdown-DseEG3tA.js.map.json → NDropdown-CgrUsKt7.js.map.json} +1 -1
- package/dist/_nuxt/NIcon-50gk2nbO.js.map.json +1 -0
- package/dist/_nuxt/{NLink-Rsxlt1NN.js.map.json → NLink-CatISrot.js.map.json} +1 -1
- package/dist/_nuxt/{NNavbar-CS-Z1Cle.js.map.json → NNavbar-Du6Evn0c.js.map.json} +1 -1
- package/dist/_nuxt/{NSectionBlock-C7kcMkbf.js.map.json → NSectionBlock-CWogkb2Y.js.map.json} +1 -1
- package/dist/_nuxt/{NSelect-geGP1eOG.js.map.json → NSelect-C1Q6pEoo.js.map.json} +1 -1
- package/dist/_nuxt/{NSelectTabs-nUMnNQy-.js.map.json → NSelectTabs-ccruddjj.js.map.json} +1 -1
- package/dist/_nuxt/{NSplitPane-Bh0o_t5e.js.map.json → NSplitPane-CtaObqWQ.js.map.json} +1 -1
- package/dist/_nuxt/{NTip-DRnTpLjG.js.map.json → NTip-DdMJ2p97.js.map.json} +1 -1
- package/dist/_nuxt/{ServerRouteInputs-BhIrPxPN.js.map.json → ServerRouteInputs-Y1oZjFFT.js.map.json} +1 -1
- package/dist/_nuxt/{StacktraceList-B-ehJIQ-.js.map.json → StacktraceList-c-F2IS3F.js.map.json} +1 -1
- package/dist/_nuxt/{StateEditor-Yqdbqk_c.js.map.json → StateEditor-CDR7gMTz.js.map.json} +1 -1
- package/dist/_nuxt/{__blank-BM2yOFO6.js.map.json → __blank-C9tG8tKE.js.map.json} +1 -1
- package/dist/_nuxt/{analyze-build-Cemp_oBq.js.map.json → analyze-build-BqtehgeE.js.map.json} +1 -1
- package/dist/_nuxt/assets-BuVkFuYO.js.map.json +1 -0
- package/dist/_nuxt/{components-BJnHweOE.js.map.json → components-uGD7fpTl.js.map.json} +1 -1
- package/dist/_nuxt/custom-_name_-CL9ijc8K.js.map.json +1 -0
- package/dist/_nuxt/{debug-BcJZ8M6i.js.map.json → debug-D10Jwem2.js.map.json} +1 -1
- package/dist/_nuxt/entry-CqsJq8Bj.js.map.json +1 -0
- package/dist/_nuxt/{error-404-dySA7T2P.js.map.json → error-404-B3hvNTTL.js.map.json} +1 -1
- package/dist/_nuxt/{error-500-2Ody89Er.js.map.json → error-500-C707LWWo.js.map.json} +1 -1
- package/dist/_nuxt/{error-hGc4cWUU.js.map.json → error-D03t_7ms.js.map.json} +1 -1
- package/dist/_nuxt/{head-BTCtirw3.js.map.json → head-BHeO3WM1.js.map.json} +1 -1
- package/dist/_nuxt/{hooks-BVzlIVXR.js.map.json → hooks-Dao-RDzo.js.map.json} +1 -1
- package/dist/_nuxt/{imports-B3k4BZF7.js.map.json → imports-CY-qGueB.js.map.json} +1 -1
- package/dist/_nuxt/{modules-Ck915TxZ.js.map.json → modules-BTU4bGX2.js.map.json} +1 -1
- package/dist/_nuxt/nuxt-CU0ot_Hr.js.map.json +1 -0
- package/dist/_nuxt/{nuxt-link-C-BBeF5l.js.map.json → nuxt-link-DVKhBKYR.js.map.json} +1 -1
- package/dist/_nuxt/{open-graph-ll_bjX_m.js.map.json → open-graph-DrWy0sHo.js.map.json} +1 -1
- package/dist/_nuxt/overview-DMlMZwOJ.js.map.json +1 -0
- package/dist/_nuxt/{pages-CrUWMxGz.js.map.json → pages-BqpyOhlp.js.map.json} +1 -1
- package/dist/_nuxt/{pages-DWELoQlh.js.map.json → pages-Dpy3RGh8.js.map.json} +1 -1
- package/dist/_nuxt/{pages-BddDWJsZ.js.map.json → pages-SVg8-7rL.js.map.json} +1 -1
- package/dist/_nuxt/{payload-29bFuqLh.js.map.json → payload-B4tGg_yJ.js.map.json} +1 -1
- package/dist/_nuxt/{plugins-fmmRaH-S.js.map.json → plugins-sOeLpXdK.js.map.json} +1 -1
- package/dist/_nuxt/{ready-BQ1fhXgL.js.map.json → ready-DyAGZGXh.js.map.json} +1 -1
- package/dist/_nuxt/{runtime-configs-iL68LNkj.js.map.json → runtime-configs-CKsHjoDA.js.map.json} +1 -1
- package/dist/_nuxt/server-routes-Dr4xIhnL.js.map.json +1 -0
- package/dist/_nuxt/server-tasks-DVSMIJ23.js.map.json +1 -0
- package/dist/_nuxt/{settings-Qa45tU8e.js.map.json → settings-ClAb5Ncw.js.map.json} +1 -1
- package/dist/_nuxt/{state-components-CksF081b.js.map.json → state-components-CUy4qfKa.js.map.json} +1 -1
- package/dist/_nuxt/state-modules-BiTBg3sT.js.map.json +1 -0
- package/dist/_nuxt/{state-tabs-m1o-BX5R.js.map.json → state-tabs-DyXoC_gu.js.map.json} +1 -1
- package/dist/_nuxt/storage-Bl77u--J.js.map.json +1 -0
- package/dist/_nuxt/{timeline-Dukbqafi.js.map.json → timeline-RijyQyqW.js.map.json} +1 -1
- package/dist/_nuxt/utils-B-D4Pftb.js.map.json +1 -0
- package/dist/_nuxt/{virtual-files-BQJM45QE.js.map.json → virtual-files-DKOje2lN.js.map.json} +1 -1
- package/dist/_nuxt/virtual_nuxt_node_modules_.cache_nuxt_.nuxt_fetch.server-pxhz0pzP.js.map.json +1 -0
- package/dist/chunks/analyze-build.mjs +1 -1
- package/dist/chunks/module-main.mjs +92 -61
- package/dist/chunks/vite-inspect.mjs +1 -1
- package/dist/index.mjs.map.json +1 -1
- package/dist/module.json +1 -1
- package/dist/runtime/shared/hooks.d.ts +10 -2
- package/dist/server.mjs.map.json +1 -1
- package/package.json +24 -24
- package/dist/_nuxt/AuthRequiredPanel-znjaI7oT.js.map.json +0 -1
- package/dist/_nuxt/NIcon-cjduOh_B.js.map.json +0 -1
- package/dist/_nuxt/assets-rTFAaows.js.map.json +0 -1
- package/dist/_nuxt/custom-_name_-DI8dnRDD.js.map.json +0 -1
- package/dist/_nuxt/entry-DZwY6FLS.js.map.json +0 -1
- package/dist/_nuxt/nuxt-C5VITehY.js.map.json +0 -1
- package/dist/_nuxt/overview-CyqDmfdE.js.map.json +0 -1
- package/dist/_nuxt/server-routes-Dy5_Ljmu.js.map.json +0 -1
- package/dist/_nuxt/server-tasks-CD-7IPFD.js.map.json +0 -1
- package/dist/_nuxt/state-modules-CyH4hWeN.js.map.json +0 -1
- package/dist/_nuxt/storage-BylO3p9r.js.map.json +0 -1
- package/dist/_nuxt/utils-BfB0tRbX.js.map.json +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"modules-Ck915TxZ.js","mappings":"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","names":[],"sources":["../../../../../../../../composables/state-subprocess.ts","../../../../../../../../components/ModuleItemBase.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/ModuleItemBase.vue","../../../../../../../../components/ModuleItem.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/ModuleItem.vue","../../../../../../../../components/ModuleItemInstall.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/ModuleItemInstall.vue","../../../../../../../../components/ModuleInstallList.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/ModuleInstallList.vue","../../../../../../../../components/ModuleActionDialog.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/ModuleActionDialog.vue","../../../../../../../../components/docs/modules.md","../../../../../../../../pages/modules/modules.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../pages/modules/modules.vue"],"sourcesContent":["import type { InstallingModulestate } from '~/../src/types'\nimport { ref } from 'vue'\n\nexport const processInstallingModules = ref<InstallingModulestate[]>([])\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, renderSlot as _renderSlot, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderSlot as _ssrRenderSlot, ssrRenderComponent as _ssrRenderComponent, ssrRenderClass as _ssrRenderClass, ssrRenderAttr as _ssrRenderAttr, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { InstalledModuleInfo, ModuleStaticInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { useOpenInEditor } from '~/composables/editor'\n\nconst iconBase = 'https://ipx.nuxt.com/s_80,f_webp/gh/nuxt/modules/main/icons/'\nconst avatarBase = 'https://ipx.nuxt.com/s_44,f_webp/gh_avatar/'\nconst githubBase = 'https://github.com/'\nconst npmxBase = 'https://npmx.dev/package/'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ModuleItemBase',\n __ssrInlineRender: true,\n props: {\n mod: {},\n info: {},\n compact: { type: Boolean },\n maintainers: { type: Boolean, default: true }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst data = computed(() => ({\n ...props.mod?.meta,\n ...props.mod,\n ...props.info,\n}))\n\nconst { format: formatNumber } = Intl.NumberFormat(navigator.language || 'en', { notation: 'compact', maximumFractionDigits: 1 })\n\nconst stars = computed(() => formatNumber(data.value.stats?.stars || 0))\nconst downloads = computed(() => formatNumber(data.value.stats?.downloads || 0))\n\nconst openInEditor = useOpenInEditor()\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NCard = _resolveComponent(\"NCard\")!\n const _component_NuxtLink = _resolveComponent(\"NuxtLink\")!\n const _component_NIcon = _resolveComponent(\"NIcon\")!\n const _component_DurationDisplay = _resolveComponent(\"DurationDisplay\")!\n\n _push(_ssrRenderComponent(_component_NCard, _mergeProps({\n p4: \"\",\n flex: \"~ gap2\"\n }, _attrs), {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ col gap2\" flex-auto of-hidden px1${_scopeId}>`)\n _ssrRenderSlot(_ctx.$slots, \"main\", {}, () => {\n _push(`<div gap-1t flex items-center text-ellipsis ws-nowrap text-lg${_scopeId}>`)\n if (__props.mod.isPackageModule) {\n _push(_ssrRenderComponent(_component_NuxtLink, {\n to: npmxBase + (data.value.npm || data.value.name),\n target: \"_blank\",\n hover: \"underline text-primary\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`${_ssrInterpolate(data.value.name)}`)\n } else {\n return [\n _createTextVNode(_toDisplayString(data.value.name), 1)\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else if (__props.mod.entryPath) {\n _push(`<button role=\"button\" hover=\"underline text-primary\"${\n _scopeId\n }>${\n _ssrInterpolate(data.value.name)\n }</button>`)\n } else {\n _push(`<span${\n _scopeId\n }>${\n _ssrInterpolate(data.value.name)\n }</span>`)\n }\n _ssrRenderSlot(_ctx.$slots, \"badge\", {}, null, _push, _parent, _scopeId)\n _push(`</div>`)\n if (data.value.description ) {\n _push(`<div class=\"${\n _ssrRenderClass(__props.compact ? 'ws-nowrap of-hidden truncate' : 'line-clamp-2')\n }\" mt--1 text-sm op50${\n _scopeId\n }>${\n _ssrInterpolate(data.value.description)\n }</div>`)\n } else {\n _push(`<!---->`)\n }\n _push(`<div flex-auto${_scopeId}></div>`)\n if (data.value.website) {\n _push(`<div flex=\"~ gap-2\" title=\"Documentation\"${\n _scopeId\n }><span i-carbon-link flex-none text-lg op50${\n _scopeId\n }></span>`)\n _push(_ssrRenderComponent(_component_NuxtLink, {\n to: data.value.website,\n target: \"_blank\",\n \"of-hidden\": \"\",\n truncate: \"\",\n \"ws-nowrap\": \"\",\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"op100 underline text-primary\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`${_ssrInterpolate(data.value.website.replace(/^https?:\\/\\//, ''))}`)\n } else {\n return [\n _createTextVNode(_toDisplayString(data.value.website.replace(/^https?:\\/\\//, '')), 1)\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n if (data.value.github) {\n _push(`<div flex=\"~ gap-2\"${\n _scopeId\n }><span i-carbon-logo-github flex-none text-lg op50${\n _scopeId\n }></span>`)\n _push(_ssrRenderComponent(_component_NuxtLink, {\n to: data.value.github,\n target: \"_blank\",\n \"of-hidden\": \"\",\n truncate: \"\",\n \"ws-nowrap\": \"\",\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"op100 underline text-primary\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`${_ssrInterpolate(data.value.github.replace(/^https?:\\/\\/github.com\\//, ''))}`)\n } else {\n return [\n _createTextVNode(_toDisplayString(data.value.github.replace(/^https?:\\/\\/github.com\\//, '')), 1)\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n }, _push, _parent, _scopeId)\n _ssrRenderSlot(_ctx.$slots, \"items\", {}, null, _push, _parent, _scopeId)\n if (data.value.stats) {\n _push(`<div flex=\"~ gap-4 items-center\"${_scopeId}>`)\n if (data.value.stats.stars) {\n _push(`<div flex=\"~ gap-2 items-center\" op50${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NIcon, {\n icon: \"carbon-star\",\n \"flex-none\": \"\",\n \"text-lg\": \"\"\n }, null, _parent, _scopeId))\n _push(`<span${\n _scopeId\n }>${\n _ssrInterpolate(stars.value)\n }</span></div>`)\n } else {\n _push(`<!---->`)\n }\n if (data.value.stats.downloads) {\n _push(`<div flex=\"~ gap-2 items-center\" op50${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NIcon, {\n icon: \"carbon-download\",\n \"flex-none\": \"\",\n \"text-lg\": \"\"\n }, null, _parent, _scopeId))\n _push(`<span${\n _scopeId\n }>${\n _ssrInterpolate(downloads.value)\n }</span></div>`)\n } else {\n _push(`<!---->`)\n }\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n if (__props.mod.timings?.setup) {\n _push(`<div${_scopeId}>`)\n _push(_ssrRenderComponent(_component_DurationDisplay, {\n title: \"Module Setup Time\",\n flex: \"~ items-center\",\n duration: __props.mod.timings.setup,\n factor: 0.5\n }, {\n before: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NIcon, {\n icon: \"carbon-time\",\n mr2: \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NIcon, {\n icon: \"carbon-time\",\n mr2: \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n })\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n _push(`</div><div flex=\"~ col\" items-end${_scopeId}>`)\n if (data.value.icon || __props.mod.isPackageModule) {\n _push(`<div h-20 w-20 flex flex-none rounded bg-gray:3 p4${_scopeId}>`)\n if (data.value.icon) {\n _push(`<img${\n _ssrRenderAttr(\"src\", iconBase + data.value.icon)\n }${\n _ssrRenderAttr(\"alt\", __props.mod.name)\n } ma${\n _scopeId\n }>`)\n } else {\n _push(`<div i-carbon-cube ma flex-none text-4xl op30${_scopeId}></div>`)\n }\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n if (data.value.maintainers?.length && __props.maintainers) {\n _push(`<div flex=\"~\" mt2 flex-auto items-end justify-end${_scopeId}><!--[-->`)\n _ssrRenderList(data.value.maintainers, (m) => {\n _push(_ssrRenderComponent(_component_NuxtLink, {\n key: m.name,\n target: \"_blank\",\n to: githubBase + m.github,\n title: m.name\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<img${\n _ssrRenderAttr(\"src\", avatarBase + m.github)\n } h-6 w-6 rounded-full${\n _scopeId\n }>`)\n } else {\n return [\n _createVNode(\"img\", {\n src: avatarBase + m.github,\n \"h-6\": \"\",\n \"w-6\": \"\",\n \"rounded-full\": \"\"\n }, null, 8, [\"src\"])\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n })\n _push(`<!--]--></div>`)\n } else {\n _push(`<!---->`)\n }\n if (_ctx.$slots.actions) {\n _push(`<!--[--><div flex-auto${\n _scopeId\n }></div><div flex justify-end${\n _scopeId\n }>`)\n _ssrRenderSlot(_ctx.$slots, \"actions\", {}, null, _push, _parent, _scopeId)\n _push(`</div><!--]-->`)\n } else {\n _push(`<!---->`)\n }\n _push(`</div>`)\n } else {\n return [\n _createVNode(\"div\", {\n flex: \"~ col gap2\",\n \"flex-auto\": \"\",\n \"of-hidden\": \"\",\n px1: \"\"\n }, [\n _renderSlot(_ctx.$slots, \"main\", {}, () => [\n _createVNode(\"div\", {\n \"gap-1t\": \"\",\n flex: \"\",\n \"items-center\": \"\",\n \"text-ellipsis\": \"\",\n \"ws-nowrap\": \"\",\n \"text-lg\": \"\"\n }, [\n (__props.mod.isPackageModule)\n ? (_openBlock(), _createBlock(_component_NuxtLink, {\n key: 0,\n to: npmxBase + (data.value.npm || data.value.name),\n target: \"_blank\",\n hover: \"underline text-primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(data.value.name), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : (__props.mod.entryPath)\n ? (_openBlock(), _createBlock(\"button\", {\n key: 1,\n role: \"button\",\n hover: \"underline text-primary\",\n onClick: ($event: any) => (_unref(openInEditor)(__props.mod.entryPath!))\n }, _toDisplayString(data.value.name), 9, [\"onClick\"]))\n : (_openBlock(), _createBlock(\"span\", { key: 2 }, _toDisplayString(data.value.name), 1)),\n _renderSlot(_ctx.$slots, \"badge\")\n ]),\n (data.value.description )\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n class: __props.compact ? 'ws-nowrap of-hidden truncate' : 'line-clamp-2',\n \"mt--1\": \"\",\n \"text-sm\": \"\",\n op50: \"\"\n }, _toDisplayString(data.value.description), 3))\n : _createCommentVNode(\"\", true),\n _createVNode(\"div\", { \"flex-auto\": \"\" }),\n (data.value.website)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 1,\n flex: \"~ gap-2\",\n title: \"Documentation\"\n }, [\n _createVNode(\"span\", {\n \"i-carbon-link\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(_component_NuxtLink, {\n to: data.value.website,\n target: \"_blank\",\n \"of-hidden\": \"\",\n truncate: \"\",\n \"ws-nowrap\": \"\",\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"op100 underline text-primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(data.value.website.replace(/^https?:\\/\\//, '')), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ]))\n : _createCommentVNode(\"\", true),\n (data.value.github)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 2,\n flex: \"~ gap-2\"\n }, [\n _createVNode(\"span\", {\n \"i-carbon-logo-github\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(_component_NuxtLink, {\n to: data.value.github,\n target: \"_blank\",\n \"of-hidden\": \"\",\n truncate: \"\",\n \"ws-nowrap\": \"\",\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"op100 underline text-primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(data.value.github.replace(/^https?:\\/\\/github.com\\//, '')), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _renderSlot(_ctx.$slots, \"items\"),\n (data.value.stats)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n flex: \"~ gap-4 items-center\"\n }, [\n (data.value.stats.stars)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n flex: \"~ gap-2 items-center\",\n op50: \"\"\n }, [\n _createVNode(_component_NIcon, {\n icon: \"carbon-star\",\n \"flex-none\": \"\",\n \"text-lg\": \"\"\n }),\n _createVNode(\"span\", null, _toDisplayString(stars.value), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (data.value.stats.downloads)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 1,\n flex: \"~ gap-2 items-center\",\n op50: \"\"\n }, [\n _createVNode(_component_NIcon, {\n icon: \"carbon-download\",\n \"flex-none\": \"\",\n \"text-lg\": \"\"\n }),\n _createVNode(\"span\", null, _toDisplayString(downloads.value), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (__props.mod.timings?.setup)\n ? (_openBlock(), _createBlock(\"div\", { key: 1 }, [\n _createVNode(_component_DurationDisplay, {\n title: \"Module Setup Time\",\n flex: \"~ items-center\",\n duration: __props.mod.timings.setup,\n factor: 0.5\n }, {\n before: _withCtx(() => [\n _createVNode(_component_NIcon, {\n icon: \"carbon-time\",\n mr2: \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n })\n ]),\n _: 1\n }, 8, [\"duration\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(\"div\", {\n flex: \"~ col\",\n \"items-end\": \"\"\n }, [\n (data.value.icon || __props.mod.isPackageModule)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n \"h-20\": \"\",\n \"w-20\": \"\",\n flex: \"\",\n \"flex-none\": \"\",\n rounded: \"\",\n \"bg-gray:3\": \"\",\n p4: \"\"\n }, [\n (data.value.icon)\n ? (_openBlock(), _createBlock(\"img\", {\n key: 0,\n src: iconBase + data.value.icon,\n alt: __props.mod.name,\n ma: \"\"\n }, null, 8, [\"src\", \"alt\"]))\n : (_openBlock(), _createBlock(\"div\", {\n key: 1,\n \"i-carbon-cube\": \"\",\n ma: \"\",\n \"flex-none\": \"\",\n \"text-4xl\": \"\",\n op30: \"\"\n }))\n ]))\n : _createCommentVNode(\"\", true),\n (data.value.maintainers?.length && __props.maintainers)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 1,\n flex: \"~\",\n mt2: \"\",\n \"flex-auto\": \"\",\n \"items-end\": \"\",\n \"justify-end\": \"\"\n }, [\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(data.value.maintainers, (m) => {\n return (_openBlock(), _createBlock(_component_NuxtLink, {\n key: m.name,\n target: \"_blank\",\n to: githubBase + m.github,\n title: m.name\n }, {\n default: _withCtx(() => [\n _createVNode(\"img\", {\n src: avatarBase + m.github,\n \"h-6\": \"\",\n \"w-6\": \"\",\n \"rounded-full\": \"\"\n }, null, 8, [\"src\"])\n ]),\n _: 2\n }, 1032, [\"to\", \"title\"]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.$slots.actions)\n ? (_openBlock(), _createBlock(_Fragment, { key: 2 }, [\n _createVNode(\"div\", { \"flex-auto\": \"\" }),\n _createVNode(\"div\", {\n flex: \"\",\n \"justify-end\": \"\"\n }, [\n _renderSlot(_ctx.$slots, \"actions\")\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ])\n ]\n }\n }),\n _: 3\n }, _parent))\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { InstalledModuleInfo, ModuleStaticInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { useOpenInEditor } from '~/composables/editor'\n\nconst props = withDefaults(\n defineProps<{\n mod: InstalledModuleInfo\n info?: ModuleStaticInfo\n compact?: boolean\n maintainers?: boolean\n }>(),\n {\n maintainers: true,\n },\n)\n\nconst data = computed(() => ({\n ...props.mod?.meta,\n ...props.mod,\n ...props.info,\n}))\n\nconst iconBase = 'https://ipx.nuxt.com/s_80,f_webp/gh/nuxt/modules/main/icons/'\nconst avatarBase = 'https://ipx.nuxt.com/s_44,f_webp/gh_avatar/'\nconst githubBase = 'https://github.com/'\nconst npmxBase = 'https://npmx.dev/package/'\n\nconst { format: formatNumber } = Intl.NumberFormat(navigator.language || 'en', { notation: 'compact', maximumFractionDigits: 1 })\n\nconst stars = computed(() => formatNumber(data.value.stats?.stars || 0))\nconst downloads = computed(() => formatNumber(data.value.stats?.downloads || 0))\n\nconst openInEditor = useOpenInEditor()\n</script>\n\n<template>\n <NCard p4 flex=\"~ gap2\">\n <div flex=\"~ col gap2\" flex-auto of-hidden px1>\n <slot name=\"main\">\n <div gap-1t flex items-center text-ellipsis ws-nowrap text-lg>\n <NuxtLink\n v-if=\"mod.isPackageModule\"\n :to=\"npmxBase + (data.npm || data.name)\"\n target=\"_blank\"\n hover=\"underline text-primary\"\n >\n {{ data.name }}\n </NuxtLink>\n <button\n v-else-if=\"mod.entryPath\"\n role=\"button\"\n hover=\"underline text-primary\"\n @click=\"openInEditor(mod.entryPath!)\"\n >\n {{ data.name }}\n </button>\n <span v-else>\n {{ data.name }}\n </span>\n <slot name=\"badge\" />\n </div>\n\n <div\n v-if=\"data.description \"\n :class=\"compact ? 'ws-nowrap of-hidden truncate' : 'line-clamp-2'\"\n mt--1 text-sm op50\n >\n {{ data.description }}\n </div>\n\n <div flex-auto />\n\n <div v-if=\"data.website\" flex=\"~ gap-2\" title=\"Documentation\">\n <span i-carbon-link flex-none text-lg op50 />\n <NuxtLink\n :to=\"data.website\"\n target=\"_blank\"\n of-hidden truncate ws-nowrap text-sm op50\n hover=\"op100 underline text-primary\"\n >\n {{ data.website.replace(/^https?:\\/\\//, '') }}\n </NuxtLink>\n </div>\n <div v-if=\"data.github\" flex=\"~ gap-2\">\n <span i-carbon-logo-github flex-none text-lg op50 />\n <NuxtLink\n :to=\"data.github\"\n target=\"_blank\"\n of-hidden truncate ws-nowrap text-sm op50\n hover=\"op100 underline text-primary\"\n >\n {{ data.github.replace(/^https?:\\/\\/github.com\\//, '') }}\n </NuxtLink>\n </div>\n </slot>\n\n <slot name=\"items\" />\n\n <div v-if=\"data.stats\" flex=\"~ gap-4 items-center\">\n <div v-if=\"data.stats.stars\" flex=\"~ gap-2 items-center\" op50>\n <NIcon icon=\"carbon-star\" flex-none text-lg />\n <span>\n {{ stars }}\n </span>\n </div>\n <div v-if=\"data.stats.downloads\" flex=\"~ gap-2 items-center\" op50>\n <NIcon icon=\"carbon-download\" flex-none text-lg />\n <span>\n {{ downloads }}\n </span>\n </div>\n </div>\n\n <div v-if=\"mod.timings?.setup\">\n <DurationDisplay\n title=\"Module Setup Time\"\n flex=\"~ items-center\"\n :duration=\"mod.timings.setup\"\n :factor=\"0.5\"\n >\n <template #before>\n <NIcon icon=\"carbon-time\" mr2 flex-none text-lg op50 />\n </template>\n </DurationDisplay>\n </div>\n </div>\n <div flex=\"~ col\" items-end>\n <div\n v-if=\"data.icon || mod.isPackageModule\"\n\n h-20 w-20 flex flex-none rounded bg-gray:3 p4\n >\n <img v-if=\"data.icon\" :src=\"iconBase + data.icon\" :alt=\"mod.name\" ma>\n <div v-else i-carbon-cube ma flex-none text-4xl op30 />\n </div>\n <div v-if=\"data.maintainers?.length && maintainers\" flex=\"~\" mt2 flex-auto items-end justify-end>\n <NuxtLink\n v-for=\"m of data.maintainers\"\n :key=\"m.name\"\n target=\"_blank\"\n :to=\"githubBase + m.github\"\n :title=\"m.name\"\n >\n <img :src=\"avatarBase + m.github\" h-6 w-6 rounded-full>\n </NuxtLink>\n </div>\n <template v-if=\"$slots.actions\">\n <div flex-auto />\n <div flex justify-end>\n <slot name=\"actions\" />\n </div>\n </template>\n </div>\n </NCard>\n</template>\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent, ssrRenderAttr as _ssrRenderAttr, ssrInterpolate as _ssrInterpolate } from \"vue/server-renderer\"\n\nimport type { InstalledModuleInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { rpc } from '~/composables/rpc'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ModuleItem',\n __ssrInlineRender: true,\n props: {\n mod: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst staticInfo = computed(() => props.mod.info)\nconst data = computed(() => ({\n ...props.mod?.meta,\n ...props.mod,\n ...staticInfo.value,\n}))\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_ModuleItemBase = _resolveComponent(\"ModuleItemBase\")!\n const _component_FilepathItem = _resolveComponent(\"FilepathItem\")!\n const _component_NpmVersionCheck = _resolveComponent(\"NpmVersionCheck\")!\n\n _push(_ssrRenderComponent(_component_ModuleItemBase, _mergeProps({\n mod: __props.mod,\n info: staticInfo.value\n }, _attrs), {\n items: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n if (__props.mod.entryPath) {\n _push(`<div flex=\"~ gap-2\" title=\"Open on filesystem\"${\n _scopeId\n }><span i-carbon-folder-move-to flex-none text-lg op50${\n _scopeId\n }></span>`)\n _push(_ssrRenderComponent(_component_FilepathItem, {\n filepath: __props.mod.entryPath,\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"text-primary op100\"\n }, null, _parent, _scopeId))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n if (data.value.npm) {\n _push(_ssrRenderComponent(_component_NpmVersionCheck, {\n key: data.value.npm,\n \"package-name\": data.value.npm,\n options: { dev: true }\n }, {\n default: _withCtx(({ info, update, state, id, restart }, _push, _parent, _scopeId) => {\n if (_push) {\n if (state === 'running') {\n _push(`<button flex=\"~ gap-2\" animate-pulse items-center${\n _ssrRenderAttr(\"title\", id ? 'Open the output in the Terminals dock' : undefined)\n }${\n _scopeId\n }><span i-carbon-circle-dash flex-none animate-spin text-lg op50${\n _scopeId\n }></span><code text-sm op50${\n _scopeId\n }>Upgrading...</code></button>`)\n } else if (state === 'updated') {\n _push(`<div mx--2${\n _scopeId\n }><button flex=\"~ gap-2\" hover=\"bg-primary/20\" items-center rounded bg-primary:10 px2 text-sm text-primary${\n _scopeId\n }><span i-carbon-intent-request-active flex-none text-lg text-primary${\n _scopeId\n }></span><code text-xs${\n _scopeId\n }>Update installed, click to restart</code></button></div>`)\n } else if (info?.needsUpdate) {\n _push(`<div mx--2${\n _scopeId\n }><button flex=\"~ gap-2\" title=\"Click to upgrade\" items-center rounded px2 text-sm hover=\"bg-active\"${\n _scopeId\n }><span i-carbon-intent-request-upgrade flex-none text-lg op50${\n _scopeId\n }></span><code op50${\n _scopeId\n }>v${\n _ssrInterpolate(info.current)\n }</code><div i-carbon-arrow-right op50${\n _scopeId\n }></div><code text-green${\n _scopeId\n }>v${\n _ssrInterpolate(info.latest)\n }</code></button></div>`)\n } else if (info?.latest) {\n _push(`<div flex=\"~ gap-2\" items-center title=\"NPM\"${\n _scopeId\n }><span i-carbon-cube flex-none text-lg op50${\n _scopeId\n }></span><code text-sm op50${\n _scopeId\n }>v${\n _ssrInterpolate(info.current)\n }</code></div>`)\n } else {\n _push(`<!---->`)\n }\n } else {\n return [\n (state === 'running')\n ? (_openBlock(), _createBlock(\"button\", {\n key: 0,\n flex: \"~ gap-2\",\n \"animate-pulse\": \"\",\n \"items-center\": \"\",\n title: id ? 'Open the output in the Terminals dock' : undefined,\n onClick: ($event: any) => (id ? _unref(rpc).revealTerminal(id) : undefined)\n }, [\n _createVNode(\"span\", {\n \"i-carbon-circle-dash\": \"\",\n \"flex-none\": \"\",\n \"animate-spin\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", {\n \"text-sm\": \"\",\n op50: \"\"\n }, \"Upgrading...\")\n ], 8, [\"title\", \"onClick\"]))\n : (state === 'updated')\n ? (_openBlock(), _createBlock(\"div\", {\n key: 1,\n \"mx--2\": \"\"\n }, [\n _createVNode(\"button\", {\n flex: \"~ gap-2\",\n hover: \"bg-primary/20\",\n \"items-center\": \"\",\n rounded: \"\",\n \"bg-primary:10\": \"\",\n px2: \"\",\n \"text-sm\": \"\",\n \"text-primary\": \"\",\n onClick: restart\n }, [\n _createVNode(\"span\", {\n \"i-carbon-intent-request-active\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n \"text-primary\": \"\"\n }),\n _createVNode(\"code\", { \"text-xs\": \"\" }, \"Update installed, click to restart\")\n ], 8, [\"onClick\"])\n ]))\n : (info?.needsUpdate)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 2,\n \"mx--2\": \"\"\n }, [\n _createVNode(\"button\", {\n flex: \"~ gap-2\",\n title: \"Click to upgrade\",\n \"items-center\": \"\",\n rounded: \"\",\n px2: \"\",\n \"text-sm\": \"\",\n hover: \"bg-active\",\n onClick: ($event: any) => (update())\n }, [\n _createVNode(\"span\", {\n \"i-carbon-intent-request-upgrade\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", { op50: \"\" }, \"v\" + _toDisplayString(info.current), 1),\n _createVNode(\"div\", {\n \"i-carbon-arrow-right\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", { \"text-green\": \"\" }, \"v\" + _toDisplayString(info.latest), 1)\n ], 8, [\"onClick\"])\n ]))\n : (info?.latest)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 3,\n flex: \"~ gap-2\",\n \"items-center\": \"\",\n title: \"NPM\"\n }, [\n _createVNode(\"span\", {\n \"i-carbon-cube\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", {\n \"text-sm\": \"\",\n op50: \"\"\n }, \"v\" + _toDisplayString(info.current), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n } else {\n return [\n (__props.mod.entryPath)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n flex: \"~ gap-2\",\n title: \"Open on filesystem\"\n }, [\n _createVNode(\"span\", {\n \"i-carbon-folder-move-to\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(_component_FilepathItem, {\n filepath: __props.mod.entryPath,\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"text-primary op100\"\n }, null, 8, [\"filepath\"])\n ]))\n : _createCommentVNode(\"\", true),\n (data.value.npm)\n ? (_openBlock(), _createBlock(_component_NpmVersionCheck, {\n key: data.value.npm,\n \"package-name\": data.value.npm,\n options: { dev: true }\n }, {\n default: _withCtx(({ info, update, state, id, restart }) => [\n (state === 'running')\n ? (_openBlock(), _createBlock(\"button\", {\n key: 0,\n flex: \"~ gap-2\",\n \"animate-pulse\": \"\",\n \"items-center\": \"\",\n title: id ? 'Open the output in the Terminals dock' : undefined,\n onClick: ($event: any) => (id ? _unref(rpc).revealTerminal(id) : undefined)\n }, [\n _createVNode(\"span\", {\n \"i-carbon-circle-dash\": \"\",\n \"flex-none\": \"\",\n \"animate-spin\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", {\n \"text-sm\": \"\",\n op50: \"\"\n }, \"Upgrading...\")\n ], 8, [\"title\", \"onClick\"]))\n : (state === 'updated')\n ? (_openBlock(), _createBlock(\"div\", {\n key: 1,\n \"mx--2\": \"\"\n }, [\n _createVNode(\"button\", {\n flex: \"~ gap-2\",\n hover: \"bg-primary/20\",\n \"items-center\": \"\",\n rounded: \"\",\n \"bg-primary:10\": \"\",\n px2: \"\",\n \"text-sm\": \"\",\n \"text-primary\": \"\",\n onClick: restart\n }, [\n _createVNode(\"span\", {\n \"i-carbon-intent-request-active\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n \"text-primary\": \"\"\n }),\n _createVNode(\"code\", { \"text-xs\": \"\" }, \"Update installed, click to restart\")\n ], 8, [\"onClick\"])\n ]))\n : (info?.needsUpdate)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 2,\n \"mx--2\": \"\"\n }, [\n _createVNode(\"button\", {\n flex: \"~ gap-2\",\n title: \"Click to upgrade\",\n \"items-center\": \"\",\n rounded: \"\",\n px2: \"\",\n \"text-sm\": \"\",\n hover: \"bg-active\",\n onClick: ($event: any) => (update())\n }, [\n _createVNode(\"span\", {\n \"i-carbon-intent-request-upgrade\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", { op50: \"\" }, \"v\" + _toDisplayString(info.current), 1),\n _createVNode(\"div\", {\n \"i-carbon-arrow-right\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", { \"text-green\": \"\" }, \"v\" + _toDisplayString(info.latest), 1)\n ], 8, [\"onClick\"])\n ]))\n : (info?.latest)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 3,\n flex: \"~ gap-2\",\n \"items-center\": \"\",\n title: \"NPM\"\n }, [\n _createVNode(\"span\", {\n \"i-carbon-cube\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", {\n \"text-sm\": \"\",\n op50: \"\"\n }, \"v\" + _toDisplayString(info.current), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"package-name\"]))\n : _createCommentVNode(\"\", true)\n ]\n }\n }),\n _: 1\n }, _parent))\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { InstalledModuleInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { rpc } from '~/composables/rpc'\n\nconst props = defineProps<{\n mod: InstalledModuleInfo\n}>()\n\nconst staticInfo = computed(() => props.mod.info)\nconst data = computed(() => ({\n ...props.mod?.meta,\n ...props.mod,\n ...staticInfo.value,\n}))\n</script>\n\n<template>\n <ModuleItemBase :mod=\"mod\" :info=\"staticInfo\">\n <template #items>\n <div v-if=\"mod.entryPath\" flex=\"~ gap-2\" title=\"Open on filesystem\">\n <span i-carbon-folder-move-to flex-none text-lg op50 />\n <FilepathItem :filepath=\"mod.entryPath\" text-sm op50 hover=\"text-primary op100\" />\n </div>\n\n <!-- NPM Version bump -->\n <NpmVersionCheck v-if=\"data.npm\" :key=\"data.npm\" :package-name=\"data.npm\" :options=\"{ dev: true }\">\n <template #default=\"{ info, update, state, id, restart }\">\n <button\n v-if=\"state === 'running'\" flex=\"~ gap-2\"\n animate-pulse items-center\n :title=\"id ? 'Open the output in the Terminals dock' : undefined\"\n @click=\"id ? rpc.revealTerminal(id) : undefined\"\n >\n <span i-carbon-circle-dash flex-none animate-spin text-lg op50 />\n <code text-sm op50>Upgrading...</code>\n </button>\n <div v-else-if=\"state === 'updated'\" mx--2>\n <button\n flex=\"~ gap-2\"\n hover=\"bg-primary/20\"\n items-center rounded bg-primary:10 px2 text-sm text-primary\n @click=\"restart\"\n >\n <span i-carbon-intent-request-active flex-none text-lg text-primary />\n <code text-xs>Update installed, click to restart</code>\n </button>\n </div>\n <div v-else-if=\"info?.needsUpdate\" mx--2>\n <button\n flex=\"~ gap-2\" title=\"Click to upgrade\" items-center rounded px2 text-sm\n hover=\"bg-active\"\n @click=\"update()\"\n >\n <span i-carbon-intent-request-upgrade flex-none text-lg op50 />\n <code op50>v{{ info.current }}</code>\n <div i-carbon-arrow-right op50 />\n <code text-green>v{{ info.latest }}</code>\n </button>\n </div>\n <div v-else-if=\"info?.latest\" flex=\"~ gap-2\" items-center title=\"NPM\">\n <span i-carbon-cube flex-none text-lg op50 />\n <code text-sm op50>v{{ info.current }}</code>\n </div>\n </template>\n </NpmVersionCheck>\n </template>\n </ModuleItemBase>\n</template>\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, createTextVNode as _createTextVNode, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createSlots as _createSlots, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent } from \"vue/server-renderer\"\n\nimport type { ModuleActionType, ModuleStaticInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { ModuleDialog } from '~/composables/dialog'\nimport { rpc } from '~/composables/rpc'\nimport { useInstalledModules } from '~/composables/state-modules'\nimport { processInstallingModules } from '~/composables/state-subprocess'\nimport { telemetry } from '~/composables/telemetry'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ModuleItemInstall',\n __ssrInlineRender: true,\n props: {\n item: {}\n },\n emits: ['start'],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst installedModules = useInstalledModules()\nconst installedInfo = computed(() => installedModules.value.find(i => i.name === props.item.npm))\nconst isInstalled = computed(() => installedInfo.value && installedInfo.value.isPackageModule)\nconst isUninstallable = computed(() => installedInfo.value && installedInfo.value.isPackageModule && installedInfo.value.isUninstallable)\n\nasync function useModuleAction(item: ModuleStaticInfo, type: ModuleActionType) {\n const method = type === 'install' ? rpc.installNuxtModule : rpc.uninstallNuxtModule\n const result = await method(item.npm, true)\n\n telemetry(`modules:${type}`, {\n moduleName: item.npm,\n })\n\n if (!result.commands)\n return\n\n if (!await ModuleDialog.start(item, result, type))\n return\n\n processInstallingModules.value.push({\n name: item.npm,\n info: item,\n processId: result.processId,\n })\n\n emit('start')\n\n try {\n // Thread the dry-run's unique session id into the execution call so the\n // server registers the very session we're tracking. The execution RPC\n // awaits the process, so clearing the pending entry here (no `onTerminalExit`\n // needed) settles the UI whether it succeeds or throws.\n await method(item.npm, false, result.processId)\n }\n finally {\n const index = processInstallingModules.value.findIndex(i => i.processId === result.processId)\n if (index !== -1)\n processInstallingModules.value.splice(index, 1)\n }\n}\n\nconst anyObj = {} as any\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_ModuleItemBase = _resolveComponent(\"ModuleItemBase\")!\n const _component_NBadge = _resolveComponent(\"NBadge\")!\n const _component_NDropdown = _resolveComponent(\"NDropdown\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n\n _push(_ssrRenderComponent(_component_ModuleItemBase, _mergeProps({\n mod: anyObj,\n role: isInstalled.value ? '' : 'button',\n info: __props.item,\n mb2: \"\",\n \"h-full\": \"\",\n class: isInstalled.value ? 'border-dashed op75' : 'hover:bg-active!',\n compact: true,\n onClick: ($event: any) => (isInstalled.value ? null : useModuleAction(__props.item, 'install'))\n }, _attrs), _createSlots({ _: 2 }, [\n (isInstalled.value)\n ? {\n name: \"badge\",\n fn: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NBadge, { n: \"green\" }, null, _parent, _scopeId))\n if (isUninstallable.value) {\n _push(_ssrRenderComponent(_component_NDropdown, { n: \"sm green\" }, {\n trigger: _withCtx(({ click }, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NButton, {\n icon: \"carbon-overflow-menu-vertical\",\n border: false,\n onClick: ($event: any) => (click())\n }, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NButton, {\n icon: \"carbon-overflow-menu-vertical\",\n border: false,\n onClick: ($event: any) => (click())\n }, null, 8, [\"onClick\"])\n ]\n }\n }),\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NButton, {\n icon: \"carbon-trash-can\",\n n: \"red\",\n onClick: ($event: any) => (useModuleAction(__props.item, 'uninstall'))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Uninstall `)\n } else {\n return [\n _createTextVNode(\" Uninstall \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NButton, {\n icon: \"carbon-trash-can\",\n n: \"red\",\n onClick: ($event: any) => (useModuleAction(__props.item, 'uninstall'))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Uninstall \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n } else {\n return [\n _createVNode(_component_NBadge, {\n n: \"green\",\n textContent: 'Installed'\n }),\n (isUninstallable.value)\n ? (_openBlock(), _createBlock(_component_NDropdown, {\n key: 0,\n n: \"sm green\"\n }, {\n trigger: _withCtx(({ click }) => [\n _createVNode(_component_NButton, {\n icon: \"carbon-overflow-menu-vertical\",\n border: false,\n onClick: ($event: any) => (click())\n }, null, 8, [\"onClick\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_NButton, {\n icon: \"carbon-trash-can\",\n n: \"red\",\n onClick: ($event: any) => (useModuleAction(__props.item, 'uninstall'))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Uninstall \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]\n }\n }),\n key: \"0\"\n }\n : undefined\n ]), _parent))\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { ModuleActionType, ModuleStaticInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { ModuleDialog } from '~/composables/dialog'\nimport { rpc } from '~/composables/rpc'\nimport { useInstalledModules } from '~/composables/state-modules'\nimport { processInstallingModules } from '~/composables/state-subprocess'\nimport { telemetry } from '~/composables/telemetry'\n\nconst props = defineProps<{\n item: ModuleStaticInfo\n}>()\n\nconst emit = defineEmits(['start'])\n\nconst installedModules = useInstalledModules()\nconst installedInfo = computed(() => installedModules.value.find(i => i.name === props.item.npm))\nconst isInstalled = computed(() => installedInfo.value && installedInfo.value.isPackageModule)\nconst isUninstallable = computed(() => installedInfo.value && installedInfo.value.isPackageModule && installedInfo.value.isUninstallable)\n\nasync function useModuleAction(item: ModuleStaticInfo, type: ModuleActionType) {\n const method = type === 'install' ? rpc.installNuxtModule : rpc.uninstallNuxtModule\n const result = await method(item.npm, true)\n\n telemetry(`modules:${type}`, {\n moduleName: item.npm,\n })\n\n if (!result.commands)\n return\n\n if (!await ModuleDialog.start(item, result, type))\n return\n\n processInstallingModules.value.push({\n name: item.npm,\n info: item,\n processId: result.processId,\n })\n\n emit('start')\n\n try {\n // Thread the dry-run's unique session id into the execution call so the\n // server registers the very session we're tracking. The execution RPC\n // awaits the process, so clearing the pending entry here (no `onTerminalExit`\n // needed) settles the UI whether it succeeds or throws.\n await method(item.npm, false, result.processId)\n }\n finally {\n const index = processInstallingModules.value.findIndex(i => i.processId === result.processId)\n if (index !== -1)\n processInstallingModules.value.splice(index, 1)\n }\n}\n\nconst anyObj = {} as any\n</script>\n\n<template>\n <ModuleItemBase\n :mod=\"anyObj\"\n :role=\"isInstalled ? '' : 'button'\"\n :info=\"item\"\n mb2 h-full\n :class=\"isInstalled ? 'border-dashed op75' : 'hover:bg-active!'\"\n :compact=\"true\"\n @click=\"isInstalled ? null : useModuleAction(item, 'install')\"\n >\n <template v-if=\"isInstalled\" #badge>\n <NBadge n=\"green\" v-text=\"'Installed'\" />\n <NDropdown v-if=\"isUninstallable\" n=\"sm green\">\n <template #trigger=\"{ click }\">\n <NButton icon=\"carbon-overflow-menu-vertical\" :border=\"false\" @click=\"click()\" />\n </template>\n <NButton icon=\"carbon-trash-can\" n=\"red\" @click=\"useModuleAction(item, 'uninstall')\">\n Uninstall\n </NButton>\n </NDropdown>\n </template>\n </ModuleItemBase>\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, renderList as _renderList, Fragment as _Fragment, 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 { ModuleStaticInfo } from '../../src/types'\nimport Fuse from 'fuse.js'\nimport { computed, ref } from 'vue'\nimport { RecycleScroller } from 'vue-virtual-scroller'\nimport { useInstalledModules, useModulesList } from '~/composables/state-modules'\n\ntype SortingFunction<T> = (a: T, b: T) => number\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ModuleInstallList',\n __ssrInlineRender: true,\n emits: ['close'],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst collection = useModulesList()\nconst installedModules = useInstalledModules()\n\nconst sortingOptions = ['downloads', 'stars', 'updated', 'created'] as const\nconst ascendingOrder = ref(false)\nconst selectedSortingOption = ref<typeof sortingOptions[number]>(sortingOptions[0])\nconst excludeInstalled = ref(true)\n\nconst sortingFactors: Record<typeof sortingOptions[number], SortingFunction<ModuleStaticInfo>> = {\n downloads: (a, b) => a.stats.downloads - b.stats.downloads,\n stars: (a, b) => a.stats.stars - b.stats.stars,\n created: (a, b) => a.stats.createdAt - b.stats.createdAt,\n updated: (a, b) => a.stats.publishedAt - b.stats.publishedAt,\n}\n\nconst sortedItems = computed(() => collection.value\n ?.toSorted((a, b) => sortingFactors[selectedSortingOption.value](a, b) * (ascendingOrder.value ? 1 : -1)))\n\nconst search = ref('')\nconst fuse = computed(() => new Fuse(collection.value || [], {\n keys: [\n 'name',\n 'description',\n 'npm',\n 'category',\n ],\n sortFn: (a, b) => {\n const itemA = collection.value?.[a.idx]\n const itemB = collection.value?.[b.idx]\n if (itemA && itemB)\n return sortingFactors[selectedSortingOption.value](itemA, itemB) * (ascendingOrder.value ? 1 : -1)\n return (a.score - b.score)\n },\n threshold: 0.2,\n}))\n\nconst items = computed(() => {\n let filteredItems = sortedItems.value\n if (excludeInstalled.value) {\n filteredItems = (filteredItems || []).filter(item => !installedModules.value.some(installed => installed.name === item.name))\n }\n if (!search.value)\n return filteredItems\n return fuse.value.search(search.value).map(r => r.item).filter(item => filteredItems?.includes(item))\n})\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NIconTitle = _resolveComponent(\"NIconTitle\")!\n const _component_NNavbar = _resolveComponent(\"NNavbar\")!\n const _component_NDropdown = _resolveComponent(\"NDropdown\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n const _component_NIcon = _resolveComponent(\"NIcon\")!\n const _component_NCheckbox = _resolveComponent(\"NCheckbox\")!\n const _component_ModuleItemInstall = _resolveComponent(\"ModuleItemInstall\")!\n\n _push(`<div${_ssrRenderAttrs(_mergeProps({\n \"h-full\": \"\",\n flex: \"~ col gap-4\"\n }, _attrs))}>`)\n _push(_ssrRenderComponent(_component_NIconTitle, {\n mx6: \"\",\n mt6: \"\",\n \"text-xl\": \"\",\n op75: \"\",\n icon: \"i-carbon-intent-request-create\",\n text: \"Install Module\"\n }, null, _parent))\n _push(_ssrRenderComponent(_component_NNavbar, {\n search: search.value,\n \"onUpdate:search\": ($event: any) => ((search).value = $event),\n \"no-padding\": \"\",\n \"px-6\": \"\",\n \"pb-3\": \"\",\n \"pt-2\": \"\"\n }, {\n actions: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NDropdown, {\n direction: \"end\",\n n: \"sm primary\"\n }, {\n trigger: _withCtx(({ click }, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ items-center\"${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NButton, {\n icon: ascendingOrder.value ? 'tabler:sort-ascending' : 'tabler:sort-descending',\n \"h-full\": \"\",\n \"rounded-r-none\": \"\",\n onClick: ($event: any) => (ascendingOrder.value = !ascendingOrder.value)\n }, null, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NButton, {\n flex: \"~ justify-between\",\n \"min-w-30\": \"\",\n \"border-l-0\": \"\",\n \"rounded-l-none\": \"\",\n \"px-2\": \"\",\n capitalize: \"\",\n hover: \"border-l-1\",\n onClick: ($event: any) => (click())\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`${_ssrInterpolate(selectedSortingOption.value)} `)\n _push(_ssrRenderComponent(_component_NIcon, { icon: \"carbon:chevron-down\" }, null, _parent, _scopeId))\n } else {\n return [\n _createTextVNode(_toDisplayString(selectedSortingOption.value) + \" \", 1),\n _createVNode(_component_NIcon, { icon: \"carbon:chevron-down\" })\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`</div>`)\n } else {\n return [\n _createVNode(\"div\", { flex: \"~ items-center\" }, [\n _createVNode(_component_NButton, {\n icon: ascendingOrder.value ? 'tabler:sort-ascending' : 'tabler:sort-descending',\n \"h-full\": \"\",\n \"rounded-r-none\": \"\",\n onClick: ($event: any) => (ascendingOrder.value = !ascendingOrder.value)\n }, null, 8, [\"icon\", \"onClick\"]),\n _createVNode(_component_NButton, {\n flex: \"~ justify-between\",\n \"min-w-30\": \"\",\n \"border-l-0\": \"\",\n \"rounded-l-none\": \"\",\n \"px-2\": \"\",\n capitalize: \"\",\n hover: \"border-l-1\",\n onClick: ($event: any) => (click())\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(selectedSortingOption.value) + \" \", 1),\n _createVNode(_component_NIcon, { icon: \"carbon:chevron-down\" })\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ]\n }\n }),\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ col\" w-30 of-auto${_scopeId}><!--[-->`)\n _ssrRenderList(sortingOptions, (item) => {\n _push(_ssrRenderComponent(_component_NButton, {\n key: item,\n border: false,\n p2: \"\",\n hover: \"n-checkbox-hover text-green\",\n onClick: ($event: any) => (selectedSortingOption.value = item)\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<span flex=\"~ justify-between\" w-full text-xs capitalize op75${\n _scopeId\n }>${\n _ssrInterpolate(item)\n } `)\n if (selectedSortingOption.value === item) {\n _push(_ssrRenderComponent(_component_NIcon, { icon: \"carbon:checkmark\" }, null, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n _push(`</span>`)\n } else {\n return [\n _createVNode(\"span\", {\n flex: \"~ justify-between\",\n \"w-full\": \"\",\n \"text-xs\": \"\",\n capitalize: \"\",\n op75: \"\"\n }, [\n _createTextVNode(_toDisplayString(item) + \" \", 1),\n (selectedSortingOption.value === item)\n ? (_openBlock(), _createBlock(_component_NIcon, {\n key: 0,\n icon: \"carbon:checkmark\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n })\n _push(`<!--]--></div>`)\n } else {\n return [\n _createVNode(\"div\", {\n flex: \"~ col\",\n \"w-30\": \"\",\n \"of-auto\": \"\"\n }, [\n (_openBlock(), _createBlock(_Fragment, null, _renderList(sortingOptions, (item) => {\n return _createVNode(_component_NButton, {\n key: item,\n border: false,\n p2: \"\",\n hover: \"n-checkbox-hover text-green\",\n onClick: ($event: any) => (selectedSortingOption.value = item)\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", {\n flex: \"~ justify-between\",\n \"w-full\": \"\",\n \"text-xs\": \"\",\n capitalize: \"\",\n op75: \"\"\n }, [\n _createTextVNode(_toDisplayString(item) + \" \", 1),\n (selectedSortingOption.value === item)\n ? (_openBlock(), _createBlock(_component_NIcon, {\n key: 0,\n icon: \"carbon:checkmark\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 2\n }, 1032, [\"onClick\"])\n }), 64))\n ])\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NDropdown, {\n direction: \"end\",\n n: \"sm primary\"\n }, {\n trigger: _withCtx(({ click }) => [\n _createVNode(\"div\", { flex: \"~ items-center\" }, [\n _createVNode(_component_NButton, {\n icon: ascendingOrder.value ? 'tabler:sort-ascending' : 'tabler:sort-descending',\n \"h-full\": \"\",\n \"rounded-r-none\": \"\",\n onClick: ($event: any) => (ascendingOrder.value = !ascendingOrder.value)\n }, null, 8, [\"icon\", \"onClick\"]),\n _createVNode(_component_NButton, {\n flex: \"~ justify-between\",\n \"min-w-30\": \"\",\n \"border-l-0\": \"\",\n \"rounded-l-none\": \"\",\n \"px-2\": \"\",\n capitalize: \"\",\n hover: \"border-l-1\",\n onClick: ($event: any) => (click())\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(selectedSortingOption.value) + \" \", 1),\n _createVNode(_component_NIcon, { icon: \"carbon:chevron-down\" })\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(\"div\", {\n flex: \"~ col\",\n \"w-30\": \"\",\n \"of-auto\": \"\"\n }, [\n (_openBlock(), _createBlock(_Fragment, null, _renderList(sortingOptions, (item) => {\n return _createVNode(_component_NButton, {\n key: item,\n border: false,\n p2: \"\",\n hover: \"n-checkbox-hover text-green\",\n onClick: ($event: any) => (selectedSortingOption.value = item)\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", {\n flex: \"~ justify-between\",\n \"w-full\": \"\",\n \"text-xs\": \"\",\n capitalize: \"\",\n op75: \"\"\n }, [\n _createTextVNode(_toDisplayString(item) + \" \", 1),\n (selectedSortingOption.value === item)\n ? (_openBlock(), _createBlock(_component_NIcon, {\n key: 0,\n icon: \"carbon:checkmark\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 2\n }, 1032, [\"onClick\"])\n }), 64))\n ])\n ]),\n _: 1\n })\n ]\n }\n }),\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ items-center gap-2\"${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NCheckbox, {\n modelValue: excludeInstalled.value,\n \"onUpdate:modelValue\": ($event: any) => ((excludeInstalled).value = $event),\n n: \"primary md\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<span op75${_scopeId}>Exclude installed modules</span>`)\n } else {\n return [\n _createVNode(\"span\", { op75: \"\" }, \"Exclude installed modules\")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`<div flex=\"~ gap1\" text-sm op50${_scopeId}>`)\n if (search.value || excludeInstalled.value) {\n _push(`<span${\n _scopeId\n }>${\n _ssrInterpolate(items.value?.length)\n } matched · </span>`)\n } else {\n _push(`<!---->`)\n }\n _push(`<span${\n _scopeId\n }>${\n _ssrInterpolate(_unref(collection)?.length)\n } modules in total</span></div></div>`)\n } else {\n return [\n _createVNode(\"div\", { flex: \"~ items-center gap-2\" }, [\n _createVNode(_component_NCheckbox, {\n modelValue: excludeInstalled.value,\n \"onUpdate:modelValue\": ($event: any) => ((excludeInstalled).value = $event),\n n: \"primary md\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", { op75: \"\" }, \"Exclude installed modules\")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(\"div\", {\n flex: \"~ gap1\",\n \"text-sm\": \"\",\n op50: \"\"\n }, [\n (search.value || excludeInstalled.value)\n ? (_openBlock(), _createBlock(\"span\", { key: 0 }, _toDisplayString(items.value?.length) + \" matched · \", 1))\n : _createCommentVNode(\"\", true),\n _createVNode(\"span\", null, _toDisplayString(_unref(collection)?.length) + \" modules in total\", 1)\n ])\n ])\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<div flex-auto of-auto flex=\"~ col gap-2\" pl6 pr4>`)\n _push(_ssrRenderComponent(_unref(RecycleScroller), {\n class: \"scroller\",\n items: (items.value || []) as any[],\n \"item-size\": 200,\n \"key-field\": \"name\"\n }, {\n default: _withCtx(({ item }, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_ModuleItemInstall, {\n item: (item as ModuleStaticInfo),\n onStart: ($event: any) => (emit('close'))\n }, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_ModuleItemInstall, {\n item: (item as ModuleStaticInfo),\n onStart: ($event: any) => (emit('close'))\n }, null, 8, [\"item\", \"onStart\"])\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`</div></div>`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { ModuleStaticInfo } from '../../src/types'\nimport Fuse from 'fuse.js'\nimport { computed, ref } from 'vue'\nimport { RecycleScroller } from 'vue-virtual-scroller'\nimport { useInstalledModules, useModulesList } from '~/composables/state-modules'\n\ntype SortingFunction<T> = (a: T, b: T) => number\n\nconst emit = defineEmits(['close'])\n\nconst collection = useModulesList()\nconst installedModules = useInstalledModules()\n\nconst sortingOptions = ['downloads', 'stars', 'updated', 'created'] as const\nconst ascendingOrder = ref(false)\nconst selectedSortingOption = ref<typeof sortingOptions[number]>(sortingOptions[0])\nconst excludeInstalled = ref(true)\n\nconst sortingFactors: Record<typeof sortingOptions[number], SortingFunction<ModuleStaticInfo>> = {\n downloads: (a, b) => a.stats.downloads - b.stats.downloads,\n stars: (a, b) => a.stats.stars - b.stats.stars,\n created: (a, b) => a.stats.createdAt - b.stats.createdAt,\n updated: (a, b) => a.stats.publishedAt - b.stats.publishedAt,\n}\n\nconst sortedItems = computed(() => collection.value\n ?.toSorted((a, b) => sortingFactors[selectedSortingOption.value](a, b) * (ascendingOrder.value ? 1 : -1)))\n\nconst search = ref('')\nconst fuse = computed(() => new Fuse(collection.value || [], {\n keys: [\n 'name',\n 'description',\n 'npm',\n 'category',\n ],\n sortFn: (a, b) => {\n const itemA = collection.value?.[a.idx]\n const itemB = collection.value?.[b.idx]\n if (itemA && itemB)\n return sortingFactors[selectedSortingOption.value](itemA, itemB) * (ascendingOrder.value ? 1 : -1)\n return (a.score - b.score)\n },\n threshold: 0.2,\n}))\n\nconst items = computed(() => {\n let filteredItems = sortedItems.value\n if (excludeInstalled.value) {\n filteredItems = (filteredItems || []).filter(item => !installedModules.value.some(installed => installed.name === item.name))\n }\n if (!search.value)\n return filteredItems\n return fuse.value.search(search.value).map(r => r.item).filter(item => filteredItems?.includes(item))\n})\n</script>\n\n<template>\n <div h-full flex=\"~ col gap-4\">\n <NIconTitle\n mx6 mt6\n text-xl op75\n icon=\"i-carbon-intent-request-create\"\n text=\"Install Module\"\n />\n <NNavbar v-model:search=\"search\" no-padding px-6 pb-3 pt-2>\n <template #actions>\n <NDropdown direction=\"end\" n=\"sm primary\">\n <template #trigger=\"{ click }\">\n <div flex=\"~ items-center\">\n <NButton\n :icon=\"ascendingOrder ? 'tabler:sort-ascending' : 'tabler:sort-descending'\"\n h-full rounded-r-none\n @click=\"ascendingOrder = !ascendingOrder\"\n />\n <NButton\n flex=\"~ justify-between\"\n min-w-30 border-l-0 rounded-l-none px-2 capitalize\n hover=\"border-l-1\"\n @click=\"click()\"\n >\n {{ selectedSortingOption }}\n <NIcon icon=\"carbon:chevron-down\" />\n </NButton>\n </div>\n </template>\n <div flex=\"~ col\" w-30 of-auto>\n <NButton\n v-for=\"item of sortingOptions\"\n :key=\"item\"\n :border=\"false\" p2\n hover=\"n-checkbox-hover text-green\"\n @click=\"selectedSortingOption = item\"\n >\n <span flex=\"~ justify-between\" w-full text-xs capitalize op75>\n {{ item }}\n <NIcon v-if=\"selectedSortingOption === item\" icon=\"carbon:checkmark\" />\n </span>\n </NButton>\n </div>\n </NDropdown>\n </template>\n <div flex=\"~ items-center gap-2\">\n <NCheckbox v-model=\"excludeInstalled\" n=\"primary md\">\n <span op75>Exclude installed modules</span>\n </NCheckbox>\n <div flex=\"~ gap1\" text-sm op50>\n <span v-if=\"search || excludeInstalled\">{{ items?.length }} matched · </span>\n <span>{{ collection?.length }} modules in total</span>\n </div>\n </div>\n </NNavbar>\n\n <div flex-auto of-auto flex=\"~ col gap-2\" pl6 pr4>\n <RecycleScroller\n v-slot=\"{ item }\"\n class=\"scroller\"\n :items=\"(items || []) as any[]\"\n :item-size=\"200\"\n key-field=\"name\"\n >\n <ModuleItemInstall :item=\"(item as ModuleStaticInfo)\" @start=\"emit('close')\" />\n </RecycleScroller>\n </div>\n </div>\n</template>\n","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 { ssrRenderComponent as _ssrRenderComponent, ssrRenderClass as _ssrRenderClass, ssrInterpolate as _ssrInterpolate } from \"vue/server-renderer\"\n\nimport { ModuleDialog } from '~/composables/dialog'\nimport { useOpenInEditor } from '~/composables/editor'\nimport { useServerConfig } from '~/composables/state'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ModuleActionDialog',\n __ssrInlineRender: true,\n setup(__props) {\n\nconst config = useServerConfig()\nconst openInEditor = useOpenInEditor()\n\nconst anyObj = {} as any\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NDialog = _resolveComponent(\"NDialog\")!\n const _component_ModuleItemBase = _resolveComponent(\"ModuleItemBase\")!\n const _component_NCodeBlock = _resolveComponent(\"NCodeBlock\")!\n const _component_NLink = _resolveComponent(\"NLink\")!\n const _component_CodeDiff = _resolveComponent(\"CodeDiff\")!\n const _component_NTip = _resolveComponent(\"NTip\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n\n _push(_ssrRenderComponent(_unref(ModuleDialog), _attrs, {\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(_ssrRenderComponent(_component_ModuleItemBase, {\n mod: anyObj,\n info: args[0],\n border: \"none\",\n \"w-150\": \"\",\n \"n-panel-grids\": \"\"\n }, null, _parent, _scopeId))\n _push(`<div flex=\"~ col gap-2\" w-150 p4 border=\"t base\"${\n _scopeId\n }><h2 text-xl class=\"${\n _ssrRenderClass(args[2] === 'install' ? 'text-primary' : 'text-red')\n }\"${\n _scopeId\n }><span capitalize${\n _scopeId\n }>${\n _ssrInterpolate(args[2])\n }</span> <code${\n _scopeId\n }>${\n _ssrInterpolate(args[0].name)\n }</code>? </h2><p op50${\n _scopeId\n }> The following command will be executed in your terminal: </p>`)\n _push(_ssrRenderComponent(_component_NCodeBlock, {\n code: args[1].commands.join(' '),\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, _parent, _scopeId))\n _push(`<p op50${_scopeId}> Then 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[1].configOriginal,\n to: args[1].configGenerated,\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 }>After that, 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_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\",\n capitalize: \"\",\n class: args[2] === 'install' ? 'n-primary' : 'n-red',\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`${_ssrInterpolate(args[2])}`)\n } else {\n return [\n _createTextVNode(_toDisplayString(args[2]), 1)\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`</div></div>`)\n } else {\n return [\n _createVNode(_component_ModuleItemBase, {\n mod: anyObj,\n info: args[0],\n border: \"none\",\n \"w-150\": \"\",\n \"n-panel-grids\": \"\"\n }, null, 8, [\"info\"]),\n _createVNode(\"div\", {\n flex: \"~ col gap-2\",\n \"w-150\": \"\",\n p4: \"\",\n border: \"t base\"\n }, [\n _createVNode(\"h2\", {\n \"text-xl\": \"\",\n class: args[2] === 'install' ? 'text-primary' : 'text-red'\n }, [\n _createVNode(\"span\", { capitalize: \"\" }, _toDisplayString(args[2]), 1),\n _createTextVNode(),\n _createVNode(\"code\", null, _toDisplayString(args[0].name), 1),\n _createTextVNode(\"? \")\n ], 2),\n _createVNode(\"p\", { op50: \"\" }, \" The following command will be executed in your terminal: \"),\n _createVNode(_component_NCodeBlock, {\n code: args[1].commands.join(' '),\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, 8, [\"code\"]),\n _createVNode(\"p\", { op50: \"\" }, [\n _createTextVNode(\" Then 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[1].configOriginal,\n to: args[1].configGenerated,\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: \"\" }, \"After that, 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_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\",\n capitalize: \"\",\n class: args[2] === 'install' ? 'n-primary' : 'n-red',\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(args[2]), 1)\n ]),\n _: 2\n }, 1032, [\"class\", \"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(_component_ModuleItemBase, {\n mod: anyObj,\n info: args[0],\n border: \"none\",\n \"w-150\": \"\",\n \"n-panel-grids\": \"\"\n }, null, 8, [\"info\"]),\n _createVNode(\"div\", {\n flex: \"~ col gap-2\",\n \"w-150\": \"\",\n p4: \"\",\n border: \"t base\"\n }, [\n _createVNode(\"h2\", {\n \"text-xl\": \"\",\n class: args[2] === 'install' ? 'text-primary' : 'text-red'\n }, [\n _createVNode(\"span\", { capitalize: \"\" }, _toDisplayString(args[2]), 1),\n _createTextVNode(),\n _createVNode(\"code\", null, _toDisplayString(args[0].name), 1),\n _createTextVNode(\"? \")\n ], 2),\n _createVNode(\"p\", { op50: \"\" }, \" The following command will be executed in your terminal: \"),\n _createVNode(_component_NCodeBlock, {\n code: args[1].commands.join(' '),\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, 8, [\"code\"]),\n _createVNode(\"p\", { op50: \"\" }, [\n _createTextVNode(\" Then 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[1].configOriginal,\n to: args[1].configGenerated,\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: \"\" }, \"After that, 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_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\",\n capitalize: \"\",\n class: args[2] === 'install' ? 'n-primary' : 'n-red',\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(args[2]), 1)\n ]),\n _: 2\n }, 1032, [\"class\", \"onClick\"])\n ])\n ])\n ]),\n _: 2\n }, 1032, [\"onClose\"])\n ]\n }\n }),\n _: 1\n }, _parent))\n}\n}\n\n})","<script setup lang=\"ts\">\nimport { ModuleDialog } from '~/composables/dialog'\nimport { useOpenInEditor } from '~/composables/editor'\nimport { useServerConfig } from '~/composables/state'\n\nconst config = useServerConfig()\nconst openInEditor = useOpenInEditor()\n\nconst anyObj = {} as any\n</script>\n\n<template>\n <ModuleDialog v-slot=\"{ resolve, args }\">\n <NDialog :model-value=\"true\" @close=\"resolve(false)\">\n <ModuleItemBase :mod=\"anyObj\" :info=\"args[0]\" border=\"none\" w-150 n-panel-grids />\n <div flex=\"~ col gap-2\" w-150 p4 border=\"t base\">\n <h2 text-xl :class=\"args[2] === 'install' ? 'text-primary' : 'text-red'\">\n <span capitalize>{{ args[2] }}</span> <code>{{ args[0].name }}</code>?\n </h2>\n\n <p op50>\n The following command will be executed in your terminal:\n </p>\n <NCodeBlock :code=\"args[1].commands.join(' ')\" lang=\"bash\" px4 py2 border=\"~ base rounded\" :lines=\"false\" />\n\n <p op50>\n Then your <NLink role=\"button\" n=\"primary\" underline @click=\"openInEditor(config?._nuxtConfigFile)\" v-text=\"'Nuxt config'\" /> will be updated as:\n </p>\n\n <CodeDiff\n :from=\"args[1].configOriginal\"\n :to=\"args[1].configGenerated\"\n max-h-80 of-auto py2 border=\"~ base rounded\"\n lang=\"ts\"\n />\n\n <p>\n <span op50>After that, Nuxt will </span><span text-orange>restart automatically</span>.\n </p>\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\" capitalize :class=\"args[2] === 'install' ? 'n-primary' : 'n-red'\" @click=\"resolve(true)\">\n {{ args[2] }}\n </NButton>\n </div>\n </div>\n </NDialog>\n </ModuleDialog>\n</template>\n","# Modules\n\nNuxt provides a module system to extend the framework core and simplify integrations. You don't need to develop everything from scratch or maintain boilerplate if there is already a Nuxt module for it. Adding Nuxt modules is possible using `nuxt.config`.\n\nYou can explore the list of modules on [nuxt.com/modules](https://nuxt.com/modules) or install them directly inside the DevTools.\n\n[Learn more in the documentation](https://nuxt.com/docs/guide/concepts/modules)\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createBlock as _createBlock, unref as _unref, createCommentVNode as _createCommentVNode } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent, ssrRenderAttr as _ssrRenderAttr, ssrRenderList as _ssrRenderList, ssrInterpolate as _ssrInterpolate } from \"vue/server-renderer\"\n\nimport { computed, ref } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { rpc } from '~/composables/rpc'\nimport { registerCommands } from '~/composables/state-commands'\nimport { useInstalledModules } from '~/composables/state-modules'\n\nconst iconBase = 'https://ipx.nuxt.com/s_80,f_webp/gh/nuxt/modules/main/icons/'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'modules',\n __ssrInlineRender: true,\n setup(__props) {\n\ndefinePageMeta({\n icon: 'carbon-3d-mpr-toggle',\n title: 'Modules',\n order: 5,\n})\n\nconst installModuleOpen = ref(false)\nconst installedModules = useInstalledModules()\n\nconst packageModules = computed(() => installedModules.value.filter(i => i.isPackageModule))\nconst userModules = computed(() => installedModules.value.filter(i => !i.isPackageModule))\n\nregisterCommands(() => [\n {\n id: 'action:modules:install',\n title: 'Install a new module',\n icon: 'i-carbon-intent-request-create ',\n action: () => {\n installModuleOpen.value = true\n },\n },\n])\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NSectionBlock = _resolveComponent(\"NSectionBlock\")!\n const _component_ModuleItem = _resolveComponent(\"ModuleItem\")!\n const _component_NCard = _resolveComponent(\"NCard\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n const _component_ModuleInstallList = _resolveComponent(\"ModuleInstallList\")!\n const _component_ModuleActionDialog = _resolveComponent(\"ModuleActionDialog\")!\n const _component_HelpFab = _resolveComponent(\"HelpFab\")!\n const _component_DocsModules = _resolveComponent(\"DocsModules\")!\n\n _push(`<!--[--><div h-full w-full of-auto>`)\n _push(_ssrRenderComponent(_component_NSectionBlock, {\n icon: \"carbon-3d-mpr-toggle\",\n text: \"Installed Modules\",\n \"container-class\": \"grid grid-cols-minmax-400px gap3 px4\",\n padding: false,\n description: `Total modules: ${packageModules.value.length}`\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<!--[-->`)\n _ssrRenderList(packageModules.value, (m) => {\n _push(_ssrRenderComponent(_component_ModuleItem, {\n key: m.name,\n mod: m\n }, null, _parent, _scopeId))\n })\n _push(`<!--]--><!--[-->`)\n _ssrRenderList(_ctx.processInstallingModules, (m) => {\n _push(`<button block min-h-30 title=\"Open the output in the Terminals dock\"${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NCard, {\n border: \"1.5 dashed\",\n \"h-full\": \"\",\n \"animate-pulse\": \"\",\n p4: \"\",\n transition: \"\",\n hover: \"border-primary\",\n flex: \"~ col gap-1 items-center justify-center\",\n role: \"button\",\n class: \"group\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div relative h-20 w-20 flex flex-none rounded bg-gray:3 p3${\n _scopeId\n }><img${\n _ssrRenderAttr(\"src\", iconBase + m.info.icon)\n }${\n _ssrRenderAttr(\"alt\", m.info.name)\n } ma${\n _scopeId\n }><div i-carbon-cube ma text-4xl op30${\n _scopeId\n }></div></div><div text-lg group-hover=\"text-primary\" transition flex=\"~ gap-2 items-center\"${\n _scopeId\n }><div i-carbon-circle-dash animate-spin text-xl op75${\n _scopeId\n }></div><span op75${\n _scopeId\n }>Installing ${\n _ssrInterpolate(m.name)\n }...</span></div>`)\n } else {\n return [\n _createVNode(\"div\", {\n relative: \"\",\n \"h-20\": \"\",\n \"w-20\": \"\",\n flex: \"\",\n \"flex-none\": \"\",\n rounded: \"\",\n \"bg-gray:3\": \"\",\n p3: \"\"\n }, [\n _createVNode(\"img\", {\n src: iconBase + m.info.icon,\n alt: m.info.name,\n ma: \"\"\n }, null, 8, [\"src\", \"alt\"]),\n _createVNode(\"div\", {\n \"i-carbon-cube\": \"\",\n ma: \"\",\n \"text-4xl\": \"\",\n op30: \"\"\n })\n ]),\n _createVNode(\"div\", {\n \"text-lg\": \"\",\n \"group-hover\": \"text-primary\",\n transition: \"\",\n flex: \"~ gap-2 items-center\"\n }, [\n _createVNode(\"div\", {\n \"i-carbon-circle-dash\": \"\",\n \"animate-spin\": \"\",\n \"text-xl\": \"\",\n op75: \"\"\n }),\n _createVNode(\"span\", { op75: \"\" }, \"Installing \" + _toDisplayString(m.name) + \"...\", 1)\n ])\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`</button>`)\n })\n _push(`<!--]-->`)\n _push(_ssrRenderComponent(_component_NCard, {\n border: \"1.5 dashed\",\n \"min-h-30\": \"\",\n p4: \"\",\n transition: \"\",\n hover: \"border-primary\",\n flex: \"~ col gap-2 items-center justify-center\",\n role: \"button\",\n class: \"group\",\n onClick: ($event: any) => (installModuleOpen.value = true)\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div i-carbon-intent-request-create text-4xl op40 group-hover=\"op75 text-primary\" transition${\n _scopeId\n }></div><div text-lg op40 group-hover=\"op75 text-primary\" transition${\n _scopeId\n }> Install New Module </div>`)\n } else {\n return [\n _createVNode(\"div\", {\n \"i-carbon-intent-request-create\": \"\",\n \"text-4xl\": \"\",\n op40: \"\",\n \"group-hover\": \"op75 text-primary\",\n transition: \"\"\n }),\n _createVNode(\"div\", {\n \"text-lg\": \"\",\n op40: \"\",\n \"group-hover\": \"op75 text-primary\",\n transition: \"\"\n }, \" Install New Module \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(packageModules.value, (m) => {\n return (_openBlock(), _createBlock(_component_ModuleItem, {\n key: m.name,\n mod: m\n }, null, 8, [\"mod\"]))\n }), 128)),\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(_ctx.processInstallingModules, (m) => {\n return (_openBlock(), _createBlock(\"button\", {\n key: m.processId,\n block: \"\",\n \"min-h-30\": \"\",\n title: \"Open the output in the Terminals dock\",\n onClick: ($event: any) => (_unref(rpc).revealTerminal(m.processId))\n }, [\n _createVNode(_component_NCard, {\n border: \"1.5 dashed\",\n \"h-full\": \"\",\n \"animate-pulse\": \"\",\n p4: \"\",\n transition: \"\",\n hover: \"border-primary\",\n flex: \"~ col gap-1 items-center justify-center\",\n role: \"button\",\n class: \"group\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"div\", {\n relative: \"\",\n \"h-20\": \"\",\n \"w-20\": \"\",\n flex: \"\",\n \"flex-none\": \"\",\n rounded: \"\",\n \"bg-gray:3\": \"\",\n p3: \"\"\n }, [\n _createVNode(\"img\", {\n src: iconBase + m.info.icon,\n alt: m.info.name,\n ma: \"\"\n }, null, 8, [\"src\", \"alt\"]),\n _createVNode(\"div\", {\n \"i-carbon-cube\": \"\",\n ma: \"\",\n \"text-4xl\": \"\",\n op30: \"\"\n })\n ]),\n _createVNode(\"div\", {\n \"text-lg\": \"\",\n \"group-hover\": \"text-primary\",\n transition: \"\",\n flex: \"~ gap-2 items-center\"\n }, [\n _createVNode(\"div\", {\n \"i-carbon-circle-dash\": \"\",\n \"animate-spin\": \"\",\n \"text-xl\": \"\",\n op75: \"\"\n }),\n _createVNode(\"span\", { op75: \"\" }, \"Installing \" + _toDisplayString(m.name) + \"...\", 1)\n ])\n ]),\n _: 2\n }, 1024)\n ], 8, [\"onClick\"]))\n }), 128)),\n _createVNode(_component_NCard, {\n border: \"1.5 dashed\",\n \"min-h-30\": \"\",\n p4: \"\",\n transition: \"\",\n hover: \"border-primary\",\n flex: \"~ col gap-2 items-center justify-center\",\n role: \"button\",\n class: \"group\",\n onClick: ($event: any) => (installModuleOpen.value = true)\n }, {\n default: _withCtx(() => [\n _createVNode(\"div\", {\n \"i-carbon-intent-request-create\": \"\",\n \"text-4xl\": \"\",\n op40: \"\",\n \"group-hover\": \"op75 text-primary\",\n transition: \"\"\n }),\n _createVNode(\"div\", {\n \"text-lg\": \"\",\n op40: \"\",\n \"group-hover\": \"op75 text-primary\",\n transition: \"\"\n }, \" Install New Module \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]\n }\n }),\n _: 1\n }, _parent))\n if (userModules.value.length) {\n _push(_ssrRenderComponent(_component_NSectionBlock, {\n icon: \"carbon-3d-mpr-toggle\",\n text: \"User Modules\",\n \"container-class\": \"grid grid-cols-minmax-400px gap3 px4\",\n padding: false,\n description: `Total modules: ${userModules.value.length}`\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<!--[-->`)\n _ssrRenderList(userModules.value, (m) => {\n _push(`<!--[-->`)\n if (m.meta?.name || m.entryPath) {\n _push(_ssrRenderComponent(_component_ModuleItem, { mod: m }, null, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n _push(`<!--]-->`)\n })\n _push(`<!--]-->`)\n } else {\n return [\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(userModules.value, (m) => {\n return (_openBlock(), _createBlock(_Fragment, {\n key: m.meta?.name || m.entryPath\n }, [\n (m.meta?.name || m.entryPath)\n ? (_openBlock(), _createBlock(_component_ModuleItem, {\n key: 0,\n mod: m\n }, null, 8, [\"mod\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128))\n ]\n }\n }),\n _: 1\n }, _parent))\n } else {\n _push(`<!---->`)\n }\n if (installModuleOpen.value) {\n _push(`<div class=\"fixed bottom-0 left-0 right-0 top-0 z-100\" bg-black:20 backdrop-blur-2></div>`)\n } else {\n _push(`<!---->`)\n }\n if (installModuleOpen.value) {\n _push(`<div border=\"l base\" pos=\"fixed bottom-0 right-0 top-0\" z-200 w-150 bg-base>`)\n _push(_ssrRenderComponent(_component_NButton, {\n icon: \"carbon-close\",\n pos: \"absolute top-3 right-3 z-10\",\n \"rounded-full\": \"\",\n \"text-xl\": \"\",\n border: false,\n onClick: ($event: any) => (installModuleOpen.value = false)\n }, null, _parent))\n _push(_ssrRenderComponent(_component_ModuleInstallList, {\n onClose: ($event: any) => (installModuleOpen.value = false)\n }, null, _parent))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n _push(_ssrRenderComponent(_component_ModuleActionDialog, null, null, _parent))\n _push(`</div>`)\n _push(_ssrRenderComponent(_component_HelpFab, null, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_DocsModules, null, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_DocsModules)\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<!--]-->`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { rpc } from '~/composables/rpc'\nimport { registerCommands } from '~/composables/state-commands'\nimport { useInstalledModules } from '~/composables/state-modules'\n\ndefinePageMeta({\n icon: 'carbon-3d-mpr-toggle',\n title: 'Modules',\n order: 5,\n})\n\nconst installModuleOpen = ref(false)\nconst installedModules = useInstalledModules()\n\nconst packageModules = computed(() => installedModules.value.filter(i => i.isPackageModule))\nconst userModules = computed(() => installedModules.value.filter(i => !i.isPackageModule))\n\nconst iconBase = 'https://ipx.nuxt.com/s_80,f_webp/gh/nuxt/modules/main/icons/'\n\nregisterCommands(() => [\n {\n id: 'action:modules:install',\n title: 'Install a new module',\n icon: 'i-carbon-intent-request-create ',\n action: () => {\n installModuleOpen.value = true\n },\n },\n])\n</script>\n\n<template>\n <div h-full w-full of-auto>\n <NSectionBlock\n icon=\"carbon-3d-mpr-toggle\"\n text=\"Installed Modules\"\n container-class=\"grid grid-cols-minmax-400px gap3 px4\"\n :padding=\"false\"\n :description=\"`Total modules: ${packageModules.length}`\"\n >\n <ModuleItem\n v-for=\"m of packageModules\"\n :key=\"m.name\"\n :mod=\"m\"\n />\n <button\n v-for=\"m of processInstallingModules\"\n :key=\"m.processId\" block min-h-30\n title=\"Open the output in the Terminals dock\"\n @click=\"rpc.revealTerminal(m.processId)\"\n >\n <NCard\n border=\"1.5 dashed\"\n h-full animate-pulse p4 transition\n hover=\"border-primary\"\n flex=\"~ col gap-1 items-center justify-center\"\n role=\"button\"\n class=\"group\"\n >\n <div relative h-20 w-20 flex flex-none rounded bg-gray:3 p3>\n <img :src=\"iconBase + m.info.icon\" :alt=\"m.info.name\" ma>\n <div i-carbon-cube ma text-4xl op30 />\n </div>\n <div text-lg group-hover=\"text-primary\" transition flex=\"~ gap-2 items-center\">\n <div i-carbon-circle-dash animate-spin text-xl op75 />\n <span op75>Installing {{ m.name }}...</span>\n </div>\n </NCard>\n </button>\n <NCard\n border=\"1.5 dashed\"\n min-h-30 p4 transition\n hover=\"border-primary\"\n flex=\"~ col gap-2 items-center justify-center\"\n role=\"button\"\n class=\"group\"\n @click=\"installModuleOpen = true\"\n >\n <div i-carbon-intent-request-create text-4xl op40 group-hover=\"op75 text-primary\" transition />\n <div text-lg op40 group-hover=\"op75 text-primary\" transition>\n Install New Module\n </div>\n </NCard>\n </NSectionBlock>\n <NSectionBlock\n v-if=\"userModules.length\"\n icon=\"carbon-3d-mpr-toggle\"\n text=\"User Modules\"\n container-class=\"grid grid-cols-minmax-400px gap3 px4\"\n :padding=\"false\"\n :description=\"`Total modules: ${userModules.length}`\"\n >\n <template v-for=\"m of userModules\" :key=\"m.meta?.name || m.entryPath\">\n <ModuleItem\n v-if=\"m.meta?.name || m.entryPath\"\n :mod=\"m\"\n />\n </template>\n </NSectionBlock>\n\n <Transition name=\"fade-in\">\n <div\n v-if=\"installModuleOpen\"\n class=\"fixed bottom-0 left-0 right-0 top-0 z-100\"\n bg-black:20 backdrop-blur-2 @click=\"installModuleOpen = false\"\n />\n </Transition>\n <Transition name=\"slide-in\">\n <div\n v-if=\"installModuleOpen\" border=\"l base\"\n pos=\"fixed bottom-0 right-0 top-0\" z-200 w-150 bg-base\n >\n <NButton\n icon=\"carbon-close\"\n pos=\"absolute top-3 right-3 z-10\"\n rounded-full text-xl :border=\"false\"\n @click=\"installModuleOpen = false\"\n />\n <ModuleInstallList @close=\"installModuleOpen = false\" />\n </div>\n </Transition>\n <ModuleActionDialog />\n </div>\n\n <HelpFab>\n <DocsModules />\n </HelpFab>\n</template>\n"],"version":3}
|
|
1
|
+
{"file":"modules-BTU4bGX2.js","mappings":"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","names":[],"sources":["../../../../../../../../composables/state-subprocess.ts","../../../../../../../../components/ModuleItemBase.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/ModuleItemBase.vue","../../../../../../../../components/ModuleItem.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/ModuleItem.vue","../../../../../../../../components/ModuleItemInstall.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/ModuleItemInstall.vue","../../../../../../../../components/ModuleInstallList.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/ModuleInstallList.vue","../../../../../../../../components/ModuleActionDialog.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/ModuleActionDialog.vue","../../../../../../../../components/docs/modules.md","../../../../../../../../pages/modules/modules.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../pages/modules/modules.vue"],"sourcesContent":["import type { InstallingModulestate } from '~/../src/types'\nimport { ref } from 'vue'\n\nexport const processInstallingModules = ref<InstallingModulestate[]>([])\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, renderSlot as _renderSlot, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderSlot as _ssrRenderSlot, ssrRenderComponent as _ssrRenderComponent, ssrRenderClass as _ssrRenderClass, ssrRenderAttr as _ssrRenderAttr, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { InstalledModuleInfo, ModuleStaticInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { useOpenInEditor } from '~/composables/editor'\n\nconst iconBase = 'https://ipx.nuxt.com/s_80,f_webp/gh/nuxt/modules/main/icons/'\nconst avatarBase = 'https://ipx.nuxt.com/s_44,f_webp/gh_avatar/'\nconst githubBase = 'https://github.com/'\nconst npmxBase = 'https://npmx.dev/package/'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ModuleItemBase',\n __ssrInlineRender: true,\n props: {\n mod: {},\n info: {},\n compact: { type: Boolean },\n maintainers: { type: Boolean, default: true }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst data = computed(() => ({\n ...props.mod?.meta,\n ...props.mod,\n ...props.info,\n}))\n\nconst { format: formatNumber } = Intl.NumberFormat(navigator.language || 'en', { notation: 'compact', maximumFractionDigits: 1 })\n\nconst stars = computed(() => formatNumber(data.value.stats?.stars || 0))\nconst downloads = computed(() => formatNumber(data.value.stats?.downloads || 0))\n\nconst openInEditor = useOpenInEditor()\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NCard = _resolveComponent(\"NCard\")!\n const _component_NuxtLink = _resolveComponent(\"NuxtLink\")!\n const _component_NIcon = _resolveComponent(\"NIcon\")!\n const _component_DurationDisplay = _resolveComponent(\"DurationDisplay\")!\n\n _push(_ssrRenderComponent(_component_NCard, _mergeProps({\n p4: \"\",\n flex: \"~ gap2\"\n }, _attrs), {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ col gap2\" flex-auto of-hidden px1${_scopeId}>`)\n _ssrRenderSlot(_ctx.$slots, \"main\", {}, () => {\n _push(`<div gap-1t flex items-center text-ellipsis ws-nowrap text-lg${_scopeId}>`)\n if (__props.mod.isPackageModule) {\n _push(_ssrRenderComponent(_component_NuxtLink, {\n to: npmxBase + (data.value.npm || data.value.name),\n target: \"_blank\",\n hover: \"underline text-primary\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`${_ssrInterpolate(data.value.name)}`)\n } else {\n return [\n _createTextVNode(_toDisplayString(data.value.name), 1)\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else if (__props.mod.entryPath) {\n _push(`<button role=\"button\" hover=\"underline text-primary\"${\n _scopeId\n }>${\n _ssrInterpolate(data.value.name)\n }</button>`)\n } else {\n _push(`<span${\n _scopeId\n }>${\n _ssrInterpolate(data.value.name)\n }</span>`)\n }\n _ssrRenderSlot(_ctx.$slots, \"badge\", {}, null, _push, _parent, _scopeId)\n _push(`</div>`)\n if (data.value.description ) {\n _push(`<div class=\"${\n _ssrRenderClass(__props.compact ? 'ws-nowrap of-hidden truncate' : 'line-clamp-2')\n }\" mt--1 text-sm op50${\n _scopeId\n }>${\n _ssrInterpolate(data.value.description)\n }</div>`)\n } else {\n _push(`<!---->`)\n }\n _push(`<div flex-auto${_scopeId}></div>`)\n if (data.value.website) {\n _push(`<div flex=\"~ gap-2\" title=\"Documentation\"${\n _scopeId\n }><span i-carbon-link flex-none text-lg op50${\n _scopeId\n }></span>`)\n _push(_ssrRenderComponent(_component_NuxtLink, {\n to: data.value.website,\n target: \"_blank\",\n \"of-hidden\": \"\",\n truncate: \"\",\n \"ws-nowrap\": \"\",\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"op100 underline text-primary\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`${_ssrInterpolate(data.value.website.replace(/^https?:\\/\\//, ''))}`)\n } else {\n return [\n _createTextVNode(_toDisplayString(data.value.website.replace(/^https?:\\/\\//, '')), 1)\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n if (data.value.github) {\n _push(`<div flex=\"~ gap-2\"${\n _scopeId\n }><span i-carbon-logo-github flex-none text-lg op50${\n _scopeId\n }></span>`)\n _push(_ssrRenderComponent(_component_NuxtLink, {\n to: data.value.github,\n target: \"_blank\",\n \"of-hidden\": \"\",\n truncate: \"\",\n \"ws-nowrap\": \"\",\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"op100 underline text-primary\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`${_ssrInterpolate(data.value.github.replace(/^https?:\\/\\/github.com\\//, ''))}`)\n } else {\n return [\n _createTextVNode(_toDisplayString(data.value.github.replace(/^https?:\\/\\/github.com\\//, '')), 1)\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n }, _push, _parent, _scopeId)\n _ssrRenderSlot(_ctx.$slots, \"items\", {}, null, _push, _parent, _scopeId)\n if (data.value.stats) {\n _push(`<div flex=\"~ gap-4 items-center\"${_scopeId}>`)\n if (data.value.stats.stars) {\n _push(`<div flex=\"~ gap-2 items-center\" op50${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NIcon, {\n icon: \"carbon-star\",\n \"flex-none\": \"\",\n \"text-lg\": \"\"\n }, null, _parent, _scopeId))\n _push(`<span${\n _scopeId\n }>${\n _ssrInterpolate(stars.value)\n }</span></div>`)\n } else {\n _push(`<!---->`)\n }\n if (data.value.stats.downloads) {\n _push(`<div flex=\"~ gap-2 items-center\" op50${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NIcon, {\n icon: \"carbon-download\",\n \"flex-none\": \"\",\n \"text-lg\": \"\"\n }, null, _parent, _scopeId))\n _push(`<span${\n _scopeId\n }>${\n _ssrInterpolate(downloads.value)\n }</span></div>`)\n } else {\n _push(`<!---->`)\n }\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n if (__props.mod.timings?.setup) {\n _push(`<div${_scopeId}>`)\n _push(_ssrRenderComponent(_component_DurationDisplay, {\n title: \"Module Setup Time\",\n flex: \"~ items-center\",\n duration: __props.mod.timings.setup,\n factor: 0.5\n }, {\n before: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NIcon, {\n icon: \"carbon-time\",\n mr2: \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NIcon, {\n icon: \"carbon-time\",\n mr2: \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n })\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n _push(`</div><div flex=\"~ col\" items-end${_scopeId}>`)\n if (data.value.icon || __props.mod.isPackageModule) {\n _push(`<div h-20 w-20 flex flex-none rounded bg-gray:3 p4${_scopeId}>`)\n if (data.value.icon) {\n _push(`<img${\n _ssrRenderAttr(\"src\", iconBase + data.value.icon)\n }${\n _ssrRenderAttr(\"alt\", __props.mod.name)\n } ma${\n _scopeId\n }>`)\n } else {\n _push(`<div i-carbon-cube ma flex-none text-4xl op30${_scopeId}></div>`)\n }\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n if (data.value.maintainers?.length && __props.maintainers) {\n _push(`<div flex=\"~\" mt2 flex-auto items-end justify-end${_scopeId}><!--[-->`)\n _ssrRenderList(data.value.maintainers, (m) => {\n _push(_ssrRenderComponent(_component_NuxtLink, {\n key: m.name,\n target: \"_blank\",\n to: githubBase + m.github,\n title: m.name\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<img${\n _ssrRenderAttr(\"src\", avatarBase + m.github)\n } h-6 w-6 rounded-full${\n _scopeId\n }>`)\n } else {\n return [\n _createVNode(\"img\", {\n src: avatarBase + m.github,\n \"h-6\": \"\",\n \"w-6\": \"\",\n \"rounded-full\": \"\"\n }, null, 8, [\"src\"])\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n })\n _push(`<!--]--></div>`)\n } else {\n _push(`<!---->`)\n }\n if (_ctx.$slots.actions) {\n _push(`<!--[--><div flex-auto${\n _scopeId\n }></div><div flex justify-end${\n _scopeId\n }>`)\n _ssrRenderSlot(_ctx.$slots, \"actions\", {}, null, _push, _parent, _scopeId)\n _push(`</div><!--]-->`)\n } else {\n _push(`<!---->`)\n }\n _push(`</div>`)\n } else {\n return [\n _createVNode(\"div\", {\n flex: \"~ col gap2\",\n \"flex-auto\": \"\",\n \"of-hidden\": \"\",\n px1: \"\"\n }, [\n _renderSlot(_ctx.$slots, \"main\", {}, () => [\n _createVNode(\"div\", {\n \"gap-1t\": \"\",\n flex: \"\",\n \"items-center\": \"\",\n \"text-ellipsis\": \"\",\n \"ws-nowrap\": \"\",\n \"text-lg\": \"\"\n }, [\n (__props.mod.isPackageModule)\n ? (_openBlock(), _createBlock(_component_NuxtLink, {\n key: 0,\n to: npmxBase + (data.value.npm || data.value.name),\n target: \"_blank\",\n hover: \"underline text-primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(data.value.name), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : (__props.mod.entryPath)\n ? (_openBlock(), _createBlock(\"button\", {\n key: 1,\n role: \"button\",\n hover: \"underline text-primary\",\n onClick: ($event: any) => (_unref(openInEditor)(__props.mod.entryPath!))\n }, _toDisplayString(data.value.name), 9, [\"onClick\"]))\n : (_openBlock(), _createBlock(\"span\", { key: 2 }, _toDisplayString(data.value.name), 1)),\n _renderSlot(_ctx.$slots, \"badge\")\n ]),\n (data.value.description )\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n class: __props.compact ? 'ws-nowrap of-hidden truncate' : 'line-clamp-2',\n \"mt--1\": \"\",\n \"text-sm\": \"\",\n op50: \"\"\n }, _toDisplayString(data.value.description), 3))\n : _createCommentVNode(\"\", true),\n _createVNode(\"div\", { \"flex-auto\": \"\" }),\n (data.value.website)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 1,\n flex: \"~ gap-2\",\n title: \"Documentation\"\n }, [\n _createVNode(\"span\", {\n \"i-carbon-link\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(_component_NuxtLink, {\n to: data.value.website,\n target: \"_blank\",\n \"of-hidden\": \"\",\n truncate: \"\",\n \"ws-nowrap\": \"\",\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"op100 underline text-primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(data.value.website.replace(/^https?:\\/\\//, '')), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ]))\n : _createCommentVNode(\"\", true),\n (data.value.github)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 2,\n flex: \"~ gap-2\"\n }, [\n _createVNode(\"span\", {\n \"i-carbon-logo-github\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(_component_NuxtLink, {\n to: data.value.github,\n target: \"_blank\",\n \"of-hidden\": \"\",\n truncate: \"\",\n \"ws-nowrap\": \"\",\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"op100 underline text-primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(data.value.github.replace(/^https?:\\/\\/github.com\\//, '')), 1)\n ]),\n _: 1\n }, 8, [\"to\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _renderSlot(_ctx.$slots, \"items\"),\n (data.value.stats)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n flex: \"~ gap-4 items-center\"\n }, [\n (data.value.stats.stars)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n flex: \"~ gap-2 items-center\",\n op50: \"\"\n }, [\n _createVNode(_component_NIcon, {\n icon: \"carbon-star\",\n \"flex-none\": \"\",\n \"text-lg\": \"\"\n }),\n _createVNode(\"span\", null, _toDisplayString(stars.value), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (data.value.stats.downloads)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 1,\n flex: \"~ gap-2 items-center\",\n op50: \"\"\n }, [\n _createVNode(_component_NIcon, {\n icon: \"carbon-download\",\n \"flex-none\": \"\",\n \"text-lg\": \"\"\n }),\n _createVNode(\"span\", null, _toDisplayString(downloads.value), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n (__props.mod.timings?.setup)\n ? (_openBlock(), _createBlock(\"div\", { key: 1 }, [\n _createVNode(_component_DurationDisplay, {\n title: \"Module Setup Time\",\n flex: \"~ items-center\",\n duration: __props.mod.timings.setup,\n factor: 0.5\n }, {\n before: _withCtx(() => [\n _createVNode(_component_NIcon, {\n icon: \"carbon-time\",\n mr2: \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n })\n ]),\n _: 1\n }, 8, [\"duration\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(\"div\", {\n flex: \"~ col\",\n \"items-end\": \"\"\n }, [\n (data.value.icon || __props.mod.isPackageModule)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n \"h-20\": \"\",\n \"w-20\": \"\",\n flex: \"\",\n \"flex-none\": \"\",\n rounded: \"\",\n \"bg-gray:3\": \"\",\n p4: \"\"\n }, [\n (data.value.icon)\n ? (_openBlock(), _createBlock(\"img\", {\n key: 0,\n src: iconBase + data.value.icon,\n alt: __props.mod.name,\n ma: \"\"\n }, null, 8, [\"src\", \"alt\"]))\n : (_openBlock(), _createBlock(\"div\", {\n key: 1,\n \"i-carbon-cube\": \"\",\n ma: \"\",\n \"flex-none\": \"\",\n \"text-4xl\": \"\",\n op30: \"\"\n }))\n ]))\n : _createCommentVNode(\"\", true),\n (data.value.maintainers?.length && __props.maintainers)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 1,\n flex: \"~\",\n mt2: \"\",\n \"flex-auto\": \"\",\n \"items-end\": \"\",\n \"justify-end\": \"\"\n }, [\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(data.value.maintainers, (m) => {\n return (_openBlock(), _createBlock(_component_NuxtLink, {\n key: m.name,\n target: \"_blank\",\n to: githubBase + m.github,\n title: m.name\n }, {\n default: _withCtx(() => [\n _createVNode(\"img\", {\n src: avatarBase + m.github,\n \"h-6\": \"\",\n \"w-6\": \"\",\n \"rounded-full\": \"\"\n }, null, 8, [\"src\"])\n ]),\n _: 2\n }, 1032, [\"to\", \"title\"]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.$slots.actions)\n ? (_openBlock(), _createBlock(_Fragment, { key: 2 }, [\n _createVNode(\"div\", { \"flex-auto\": \"\" }),\n _createVNode(\"div\", {\n flex: \"\",\n \"justify-end\": \"\"\n }, [\n _renderSlot(_ctx.$slots, \"actions\")\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ])\n ]\n }\n }),\n _: 3\n }, _parent))\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { InstalledModuleInfo, ModuleStaticInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { useOpenInEditor } from '~/composables/editor'\n\nconst props = withDefaults(\n defineProps<{\n mod: InstalledModuleInfo\n info?: ModuleStaticInfo\n compact?: boolean\n maintainers?: boolean\n }>(),\n {\n maintainers: true,\n },\n)\n\nconst data = computed(() => ({\n ...props.mod?.meta,\n ...props.mod,\n ...props.info,\n}))\n\nconst iconBase = 'https://ipx.nuxt.com/s_80,f_webp/gh/nuxt/modules/main/icons/'\nconst avatarBase = 'https://ipx.nuxt.com/s_44,f_webp/gh_avatar/'\nconst githubBase = 'https://github.com/'\nconst npmxBase = 'https://npmx.dev/package/'\n\nconst { format: formatNumber } = Intl.NumberFormat(navigator.language || 'en', { notation: 'compact', maximumFractionDigits: 1 })\n\nconst stars = computed(() => formatNumber(data.value.stats?.stars || 0))\nconst downloads = computed(() => formatNumber(data.value.stats?.downloads || 0))\n\nconst openInEditor = useOpenInEditor()\n</script>\n\n<template>\n <NCard p4 flex=\"~ gap2\">\n <div flex=\"~ col gap2\" flex-auto of-hidden px1>\n <slot name=\"main\">\n <div gap-1t flex items-center text-ellipsis ws-nowrap text-lg>\n <NuxtLink\n v-if=\"mod.isPackageModule\"\n :to=\"npmxBase + (data.npm || data.name)\"\n target=\"_blank\"\n hover=\"underline text-primary\"\n >\n {{ data.name }}\n </NuxtLink>\n <button\n v-else-if=\"mod.entryPath\"\n role=\"button\"\n hover=\"underline text-primary\"\n @click=\"openInEditor(mod.entryPath!)\"\n >\n {{ data.name }}\n </button>\n <span v-else>\n {{ data.name }}\n </span>\n <slot name=\"badge\" />\n </div>\n\n <div\n v-if=\"data.description \"\n :class=\"compact ? 'ws-nowrap of-hidden truncate' : 'line-clamp-2'\"\n mt--1 text-sm op50\n >\n {{ data.description }}\n </div>\n\n <div flex-auto />\n\n <div v-if=\"data.website\" flex=\"~ gap-2\" title=\"Documentation\">\n <span i-carbon-link flex-none text-lg op50 />\n <NuxtLink\n :to=\"data.website\"\n target=\"_blank\"\n of-hidden truncate ws-nowrap text-sm op50\n hover=\"op100 underline text-primary\"\n >\n {{ data.website.replace(/^https?:\\/\\//, '') }}\n </NuxtLink>\n </div>\n <div v-if=\"data.github\" flex=\"~ gap-2\">\n <span i-carbon-logo-github flex-none text-lg op50 />\n <NuxtLink\n :to=\"data.github\"\n target=\"_blank\"\n of-hidden truncate ws-nowrap text-sm op50\n hover=\"op100 underline text-primary\"\n >\n {{ data.github.replace(/^https?:\\/\\/github.com\\//, '') }}\n </NuxtLink>\n </div>\n </slot>\n\n <slot name=\"items\" />\n\n <div v-if=\"data.stats\" flex=\"~ gap-4 items-center\">\n <div v-if=\"data.stats.stars\" flex=\"~ gap-2 items-center\" op50>\n <NIcon icon=\"carbon-star\" flex-none text-lg />\n <span>\n {{ stars }}\n </span>\n </div>\n <div v-if=\"data.stats.downloads\" flex=\"~ gap-2 items-center\" op50>\n <NIcon icon=\"carbon-download\" flex-none text-lg />\n <span>\n {{ downloads }}\n </span>\n </div>\n </div>\n\n <div v-if=\"mod.timings?.setup\">\n <DurationDisplay\n title=\"Module Setup Time\"\n flex=\"~ items-center\"\n :duration=\"mod.timings.setup\"\n :factor=\"0.5\"\n >\n <template #before>\n <NIcon icon=\"carbon-time\" mr2 flex-none text-lg op50 />\n </template>\n </DurationDisplay>\n </div>\n </div>\n <div flex=\"~ col\" items-end>\n <div\n v-if=\"data.icon || mod.isPackageModule\"\n\n h-20 w-20 flex flex-none rounded bg-gray:3 p4\n >\n <img v-if=\"data.icon\" :src=\"iconBase + data.icon\" :alt=\"mod.name\" ma>\n <div v-else i-carbon-cube ma flex-none text-4xl op30 />\n </div>\n <div v-if=\"data.maintainers?.length && maintainers\" flex=\"~\" mt2 flex-auto items-end justify-end>\n <NuxtLink\n v-for=\"m of data.maintainers\"\n :key=\"m.name\"\n target=\"_blank\"\n :to=\"githubBase + m.github\"\n :title=\"m.name\"\n >\n <img :src=\"avatarBase + m.github\" h-6 w-6 rounded-full>\n </NuxtLink>\n </div>\n <template v-if=\"$slots.actions\">\n <div flex-auto />\n <div flex justify-end>\n <slot name=\"actions\" />\n </div>\n </template>\n </div>\n </NCard>\n</template>\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent, ssrRenderAttr as _ssrRenderAttr, ssrInterpolate as _ssrInterpolate } from \"vue/server-renderer\"\n\nimport type { InstalledModuleInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { rpc } from '~/composables/rpc'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ModuleItem',\n __ssrInlineRender: true,\n props: {\n mod: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst staticInfo = computed(() => props.mod.info)\nconst data = computed(() => ({\n ...props.mod?.meta,\n ...props.mod,\n ...staticInfo.value,\n}))\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_ModuleItemBase = _resolveComponent(\"ModuleItemBase\")!\n const _component_FilepathItem = _resolveComponent(\"FilepathItem\")!\n const _component_NpmVersionCheck = _resolveComponent(\"NpmVersionCheck\")!\n\n _push(_ssrRenderComponent(_component_ModuleItemBase, _mergeProps({\n mod: __props.mod,\n info: staticInfo.value\n }, _attrs), {\n items: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n if (__props.mod.entryPath) {\n _push(`<div flex=\"~ gap-2\" title=\"Open on filesystem\"${\n _scopeId\n }><span i-carbon-folder-move-to flex-none text-lg op50${\n _scopeId\n }></span>`)\n _push(_ssrRenderComponent(_component_FilepathItem, {\n filepath: __props.mod.entryPath,\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"text-primary op100\"\n }, null, _parent, _scopeId))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n if (data.value.npm) {\n _push(_ssrRenderComponent(_component_NpmVersionCheck, {\n key: data.value.npm,\n \"package-name\": data.value.npm,\n options: { dev: true }\n }, {\n default: _withCtx(({ info, update, state, id, restart }, _push, _parent, _scopeId) => {\n if (_push) {\n if (state === 'running') {\n _push(`<button flex=\"~ gap-2\" animate-pulse items-center${\n _ssrRenderAttr(\"title\", id ? 'Open the output in the Terminals dock' : undefined)\n }${\n _scopeId\n }><span i-carbon-circle-dash flex-none animate-spin text-lg op50${\n _scopeId\n }></span><code text-sm op50${\n _scopeId\n }>Upgrading...</code></button>`)\n } else if (state === 'updated') {\n _push(`<div mx--2${\n _scopeId\n }><button flex=\"~ gap-2\" hover=\"bg-primary/20\" items-center rounded bg-primary:10 px2 text-sm text-primary${\n _scopeId\n }><span i-carbon-intent-request-active flex-none text-lg text-primary${\n _scopeId\n }></span><code text-xs${\n _scopeId\n }>Update installed, click to restart</code></button></div>`)\n } else if (info?.needsUpdate) {\n _push(`<div mx--2${\n _scopeId\n }><button flex=\"~ gap-2\" title=\"Click to upgrade\" items-center rounded px2 text-sm hover=\"bg-active\"${\n _scopeId\n }><span i-carbon-intent-request-upgrade flex-none text-lg op50${\n _scopeId\n }></span><code op50${\n _scopeId\n }>v${\n _ssrInterpolate(info.current)\n }</code><div i-carbon-arrow-right op50${\n _scopeId\n }></div><code text-green${\n _scopeId\n }>v${\n _ssrInterpolate(info.latest)\n }</code></button></div>`)\n } else if (info?.latest) {\n _push(`<div flex=\"~ gap-2\" items-center title=\"NPM\"${\n _scopeId\n }><span i-carbon-cube flex-none text-lg op50${\n _scopeId\n }></span><code text-sm op50${\n _scopeId\n }>v${\n _ssrInterpolate(info.current)\n }</code></div>`)\n } else {\n _push(`<!---->`)\n }\n } else {\n return [\n (state === 'running')\n ? (_openBlock(), _createBlock(\"button\", {\n key: 0,\n flex: \"~ gap-2\",\n \"animate-pulse\": \"\",\n \"items-center\": \"\",\n title: id ? 'Open the output in the Terminals dock' : undefined,\n onClick: ($event: any) => (id ? _unref(rpc).revealTerminal(id) : undefined)\n }, [\n _createVNode(\"span\", {\n \"i-carbon-circle-dash\": \"\",\n \"flex-none\": \"\",\n \"animate-spin\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", {\n \"text-sm\": \"\",\n op50: \"\"\n }, \"Upgrading...\")\n ], 8, [\"title\", \"onClick\"]))\n : (state === 'updated')\n ? (_openBlock(), _createBlock(\"div\", {\n key: 1,\n \"mx--2\": \"\"\n }, [\n _createVNode(\"button\", {\n flex: \"~ gap-2\",\n hover: \"bg-primary/20\",\n \"items-center\": \"\",\n rounded: \"\",\n \"bg-primary:10\": \"\",\n px2: \"\",\n \"text-sm\": \"\",\n \"text-primary\": \"\",\n onClick: restart\n }, [\n _createVNode(\"span\", {\n \"i-carbon-intent-request-active\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n \"text-primary\": \"\"\n }),\n _createVNode(\"code\", { \"text-xs\": \"\" }, \"Update installed, click to restart\")\n ], 8, [\"onClick\"])\n ]))\n : (info?.needsUpdate)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 2,\n \"mx--2\": \"\"\n }, [\n _createVNode(\"button\", {\n flex: \"~ gap-2\",\n title: \"Click to upgrade\",\n \"items-center\": \"\",\n rounded: \"\",\n px2: \"\",\n \"text-sm\": \"\",\n hover: \"bg-active\",\n onClick: ($event: any) => (update())\n }, [\n _createVNode(\"span\", {\n \"i-carbon-intent-request-upgrade\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", { op50: \"\" }, \"v\" + _toDisplayString(info.current), 1),\n _createVNode(\"div\", {\n \"i-carbon-arrow-right\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", { \"text-green\": \"\" }, \"v\" + _toDisplayString(info.latest), 1)\n ], 8, [\"onClick\"])\n ]))\n : (info?.latest)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 3,\n flex: \"~ gap-2\",\n \"items-center\": \"\",\n title: \"NPM\"\n }, [\n _createVNode(\"span\", {\n \"i-carbon-cube\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", {\n \"text-sm\": \"\",\n op50: \"\"\n }, \"v\" + _toDisplayString(info.current), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n } else {\n return [\n (__props.mod.entryPath)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n flex: \"~ gap-2\",\n title: \"Open on filesystem\"\n }, [\n _createVNode(\"span\", {\n \"i-carbon-folder-move-to\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(_component_FilepathItem, {\n filepath: __props.mod.entryPath,\n \"text-sm\": \"\",\n op50: \"\",\n hover: \"text-primary op100\"\n }, null, 8, [\"filepath\"])\n ]))\n : _createCommentVNode(\"\", true),\n (data.value.npm)\n ? (_openBlock(), _createBlock(_component_NpmVersionCheck, {\n key: data.value.npm,\n \"package-name\": data.value.npm,\n options: { dev: true }\n }, {\n default: _withCtx(({ info, update, state, id, restart }) => [\n (state === 'running')\n ? (_openBlock(), _createBlock(\"button\", {\n key: 0,\n flex: \"~ gap-2\",\n \"animate-pulse\": \"\",\n \"items-center\": \"\",\n title: id ? 'Open the output in the Terminals dock' : undefined,\n onClick: ($event: any) => (id ? _unref(rpc).revealTerminal(id) : undefined)\n }, [\n _createVNode(\"span\", {\n \"i-carbon-circle-dash\": \"\",\n \"flex-none\": \"\",\n \"animate-spin\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", {\n \"text-sm\": \"\",\n op50: \"\"\n }, \"Upgrading...\")\n ], 8, [\"title\", \"onClick\"]))\n : (state === 'updated')\n ? (_openBlock(), _createBlock(\"div\", {\n key: 1,\n \"mx--2\": \"\"\n }, [\n _createVNode(\"button\", {\n flex: \"~ gap-2\",\n hover: \"bg-primary/20\",\n \"items-center\": \"\",\n rounded: \"\",\n \"bg-primary:10\": \"\",\n px2: \"\",\n \"text-sm\": \"\",\n \"text-primary\": \"\",\n onClick: restart\n }, [\n _createVNode(\"span\", {\n \"i-carbon-intent-request-active\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n \"text-primary\": \"\"\n }),\n _createVNode(\"code\", { \"text-xs\": \"\" }, \"Update installed, click to restart\")\n ], 8, [\"onClick\"])\n ]))\n : (info?.needsUpdate)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 2,\n \"mx--2\": \"\"\n }, [\n _createVNode(\"button\", {\n flex: \"~ gap-2\",\n title: \"Click to upgrade\",\n \"items-center\": \"\",\n rounded: \"\",\n px2: \"\",\n \"text-sm\": \"\",\n hover: \"bg-active\",\n onClick: ($event: any) => (update())\n }, [\n _createVNode(\"span\", {\n \"i-carbon-intent-request-upgrade\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", { op50: \"\" }, \"v\" + _toDisplayString(info.current), 1),\n _createVNode(\"div\", {\n \"i-carbon-arrow-right\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", { \"text-green\": \"\" }, \"v\" + _toDisplayString(info.latest), 1)\n ], 8, [\"onClick\"])\n ]))\n : (info?.latest)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 3,\n flex: \"~ gap-2\",\n \"items-center\": \"\",\n title: \"NPM\"\n }, [\n _createVNode(\"span\", {\n \"i-carbon-cube\": \"\",\n \"flex-none\": \"\",\n \"text-lg\": \"\",\n op50: \"\"\n }),\n _createVNode(\"code\", {\n \"text-sm\": \"\",\n op50: \"\"\n }, \"v\" + _toDisplayString(info.current), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"package-name\"]))\n : _createCommentVNode(\"\", true)\n ]\n }\n }),\n _: 1\n }, _parent))\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { InstalledModuleInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { rpc } from '~/composables/rpc'\n\nconst props = defineProps<{\n mod: InstalledModuleInfo\n}>()\n\nconst staticInfo = computed(() => props.mod.info)\nconst data = computed(() => ({\n ...props.mod?.meta,\n ...props.mod,\n ...staticInfo.value,\n}))\n</script>\n\n<template>\n <ModuleItemBase :mod=\"mod\" :info=\"staticInfo\">\n <template #items>\n <div v-if=\"mod.entryPath\" flex=\"~ gap-2\" title=\"Open on filesystem\">\n <span i-carbon-folder-move-to flex-none text-lg op50 />\n <FilepathItem :filepath=\"mod.entryPath\" text-sm op50 hover=\"text-primary op100\" />\n </div>\n\n <!-- NPM Version bump -->\n <NpmVersionCheck v-if=\"data.npm\" :key=\"data.npm\" :package-name=\"data.npm\" :options=\"{ dev: true }\">\n <template #default=\"{ info, update, state, id, restart }\">\n <button\n v-if=\"state === 'running'\" flex=\"~ gap-2\"\n animate-pulse items-center\n :title=\"id ? 'Open the output in the Terminals dock' : undefined\"\n @click=\"id ? rpc.revealTerminal(id) : undefined\"\n >\n <span i-carbon-circle-dash flex-none animate-spin text-lg op50 />\n <code text-sm op50>Upgrading...</code>\n </button>\n <div v-else-if=\"state === 'updated'\" mx--2>\n <button\n flex=\"~ gap-2\"\n hover=\"bg-primary/20\"\n items-center rounded bg-primary:10 px2 text-sm text-primary\n @click=\"restart\"\n >\n <span i-carbon-intent-request-active flex-none text-lg text-primary />\n <code text-xs>Update installed, click to restart</code>\n </button>\n </div>\n <div v-else-if=\"info?.needsUpdate\" mx--2>\n <button\n flex=\"~ gap-2\" title=\"Click to upgrade\" items-center rounded px2 text-sm\n hover=\"bg-active\"\n @click=\"update()\"\n >\n <span i-carbon-intent-request-upgrade flex-none text-lg op50 />\n <code op50>v{{ info.current }}</code>\n <div i-carbon-arrow-right op50 />\n <code text-green>v{{ info.latest }}</code>\n </button>\n </div>\n <div v-else-if=\"info?.latest\" flex=\"~ gap-2\" items-center title=\"NPM\">\n <span i-carbon-cube flex-none text-lg op50 />\n <code text-sm op50>v{{ info.current }}</code>\n </div>\n </template>\n </NpmVersionCheck>\n </template>\n </ModuleItemBase>\n</template>\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, createTextVNode as _createTextVNode, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createSlots as _createSlots, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent } from \"vue/server-renderer\"\n\nimport type { ModuleActionType, ModuleStaticInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { ModuleDialog } from '~/composables/dialog'\nimport { rpc } from '~/composables/rpc'\nimport { useInstalledModules } from '~/composables/state-modules'\nimport { processInstallingModules } from '~/composables/state-subprocess'\nimport { telemetry } from '~/composables/telemetry'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ModuleItemInstall',\n __ssrInlineRender: true,\n props: {\n item: {}\n },\n emits: ['start'],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst installedModules = useInstalledModules()\nconst installedInfo = computed(() => installedModules.value.find(i => i.name === props.item.npm))\nconst isInstalled = computed(() => installedInfo.value && installedInfo.value.isPackageModule)\nconst isUninstallable = computed(() => installedInfo.value && installedInfo.value.isPackageModule && installedInfo.value.isUninstallable)\n\nasync function useModuleAction(item: ModuleStaticInfo, type: ModuleActionType) {\n const method = type === 'install' ? rpc.installNuxtModule : rpc.uninstallNuxtModule\n const result = await method(item.npm, true)\n\n telemetry(`modules:${type}`, {\n moduleName: item.npm,\n })\n\n if (!result.commands)\n return\n\n if (!await ModuleDialog.start(item, result, type))\n return\n\n processInstallingModules.value.push({\n name: item.npm,\n info: item,\n processId: result.processId,\n })\n\n emit('start')\n\n try {\n // Thread the dry-run's unique session id into the execution call so the\n // server registers the very session we're tracking. The execution RPC\n // awaits the process, so clearing the pending entry here (no `onTerminalExit`\n // needed) settles the UI whether it succeeds or throws.\n await method(item.npm, false, result.processId)\n }\n finally {\n const index = processInstallingModules.value.findIndex(i => i.processId === result.processId)\n if (index !== -1)\n processInstallingModules.value.splice(index, 1)\n }\n}\n\nconst anyObj = {} as any\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_ModuleItemBase = _resolveComponent(\"ModuleItemBase\")!\n const _component_NBadge = _resolveComponent(\"NBadge\")!\n const _component_NDropdown = _resolveComponent(\"NDropdown\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n\n _push(_ssrRenderComponent(_component_ModuleItemBase, _mergeProps({\n mod: anyObj,\n role: isInstalled.value ? '' : 'button',\n info: __props.item,\n mb2: \"\",\n \"h-full\": \"\",\n class: isInstalled.value ? 'border-dashed op75' : 'hover:bg-active!',\n compact: true,\n onClick: ($event: any) => (isInstalled.value ? null : useModuleAction(__props.item, 'install'))\n }, _attrs), _createSlots({ _: 2 }, [\n (isInstalled.value)\n ? {\n name: \"badge\",\n fn: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NBadge, { n: \"green\" }, null, _parent, _scopeId))\n if (isUninstallable.value) {\n _push(_ssrRenderComponent(_component_NDropdown, { n: \"sm green\" }, {\n trigger: _withCtx(({ click }, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NButton, {\n icon: \"carbon-overflow-menu-vertical\",\n border: false,\n onClick: ($event: any) => (click())\n }, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NButton, {\n icon: \"carbon-overflow-menu-vertical\",\n border: false,\n onClick: ($event: any) => (click())\n }, null, 8, [\"onClick\"])\n ]\n }\n }),\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NButton, {\n icon: \"carbon-trash-can\",\n n: \"red\",\n onClick: ($event: any) => (useModuleAction(__props.item, 'uninstall'))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Uninstall `)\n } else {\n return [\n _createTextVNode(\" Uninstall \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NButton, {\n icon: \"carbon-trash-can\",\n n: \"red\",\n onClick: ($event: any) => (useModuleAction(__props.item, 'uninstall'))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Uninstall \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n } else {\n return [\n _createVNode(_component_NBadge, {\n n: \"green\",\n textContent: 'Installed'\n }),\n (isUninstallable.value)\n ? (_openBlock(), _createBlock(_component_NDropdown, {\n key: 0,\n n: \"sm green\"\n }, {\n trigger: _withCtx(({ click }) => [\n _createVNode(_component_NButton, {\n icon: \"carbon-overflow-menu-vertical\",\n border: false,\n onClick: ($event: any) => (click())\n }, null, 8, [\"onClick\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_NButton, {\n icon: \"carbon-trash-can\",\n n: \"red\",\n onClick: ($event: any) => (useModuleAction(__props.item, 'uninstall'))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Uninstall \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]\n }\n }),\n key: \"0\"\n }\n : undefined\n ]), _parent))\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { ModuleActionType, ModuleStaticInfo } from '../../src/types'\nimport { computed } from 'vue'\nimport { ModuleDialog } from '~/composables/dialog'\nimport { rpc } from '~/composables/rpc'\nimport { useInstalledModules } from '~/composables/state-modules'\nimport { processInstallingModules } from '~/composables/state-subprocess'\nimport { telemetry } from '~/composables/telemetry'\n\nconst props = defineProps<{\n item: ModuleStaticInfo\n}>()\n\nconst emit = defineEmits(['start'])\n\nconst installedModules = useInstalledModules()\nconst installedInfo = computed(() => installedModules.value.find(i => i.name === props.item.npm))\nconst isInstalled = computed(() => installedInfo.value && installedInfo.value.isPackageModule)\nconst isUninstallable = computed(() => installedInfo.value && installedInfo.value.isPackageModule && installedInfo.value.isUninstallable)\n\nasync function useModuleAction(item: ModuleStaticInfo, type: ModuleActionType) {\n const method = type === 'install' ? rpc.installNuxtModule : rpc.uninstallNuxtModule\n const result = await method(item.npm, true)\n\n telemetry(`modules:${type}`, {\n moduleName: item.npm,\n })\n\n if (!result.commands)\n return\n\n if (!await ModuleDialog.start(item, result, type))\n return\n\n processInstallingModules.value.push({\n name: item.npm,\n info: item,\n processId: result.processId,\n })\n\n emit('start')\n\n try {\n // Thread the dry-run's unique session id into the execution call so the\n // server registers the very session we're tracking. The execution RPC\n // awaits the process, so clearing the pending entry here (no `onTerminalExit`\n // needed) settles the UI whether it succeeds or throws.\n await method(item.npm, false, result.processId)\n }\n finally {\n const index = processInstallingModules.value.findIndex(i => i.processId === result.processId)\n if (index !== -1)\n processInstallingModules.value.splice(index, 1)\n }\n}\n\nconst anyObj = {} as any\n</script>\n\n<template>\n <ModuleItemBase\n :mod=\"anyObj\"\n :role=\"isInstalled ? '' : 'button'\"\n :info=\"item\"\n mb2 h-full\n :class=\"isInstalled ? 'border-dashed op75' : 'hover:bg-active!'\"\n :compact=\"true\"\n @click=\"isInstalled ? null : useModuleAction(item, 'install')\"\n >\n <template v-if=\"isInstalled\" #badge>\n <NBadge n=\"green\" v-text=\"'Installed'\" />\n <NDropdown v-if=\"isUninstallable\" n=\"sm green\">\n <template #trigger=\"{ click }\">\n <NButton icon=\"carbon-overflow-menu-vertical\" :border=\"false\" @click=\"click()\" />\n </template>\n <NButton icon=\"carbon-trash-can\" n=\"red\" @click=\"useModuleAction(item, 'uninstall')\">\n Uninstall\n </NButton>\n </NDropdown>\n </template>\n </ModuleItemBase>\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, renderList as _renderList, Fragment as _Fragment, 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 { ModuleStaticInfo } from '../../src/types'\nimport Fuse from 'fuse.js'\nimport { computed, ref } from 'vue'\nimport { RecycleScroller } from 'vue-virtual-scroller'\nimport { useInstalledModules, useModulesList } from '~/composables/state-modules'\n\ntype SortingFunction<T> = (a: T, b: T) => number\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ModuleInstallList',\n __ssrInlineRender: true,\n emits: ['close'],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst collection = useModulesList()\nconst installedModules = useInstalledModules()\n\nconst sortingOptions = ['downloads', 'stars', 'updated', 'created'] as const\nconst ascendingOrder = ref(false)\nconst selectedSortingOption = ref<typeof sortingOptions[number]>(sortingOptions[0])\nconst excludeInstalled = ref(true)\n\nconst sortingFactors: Record<typeof sortingOptions[number], SortingFunction<ModuleStaticInfo>> = {\n downloads: (a, b) => a.stats.downloads - b.stats.downloads,\n stars: (a, b) => a.stats.stars - b.stats.stars,\n created: (a, b) => a.stats.createdAt - b.stats.createdAt,\n updated: (a, b) => a.stats.publishedAt - b.stats.publishedAt,\n}\n\nconst sortedItems = computed(() => collection.value\n ?.toSorted((a, b) => sortingFactors[selectedSortingOption.value](a, b) * (ascendingOrder.value ? 1 : -1)))\n\nconst search = ref('')\nconst fuse = computed(() => new Fuse(collection.value || [], {\n keys: [\n 'name',\n 'description',\n 'npm',\n 'category',\n ],\n sortFn: (a, b) => {\n const itemA = collection.value?.[a.idx]\n const itemB = collection.value?.[b.idx]\n if (itemA && itemB)\n return sortingFactors[selectedSortingOption.value](itemA, itemB) * (ascendingOrder.value ? 1 : -1)\n return (a.score - b.score)\n },\n threshold: 0.2,\n}))\n\nconst items = computed(() => {\n let filteredItems = sortedItems.value\n if (excludeInstalled.value) {\n filteredItems = (filteredItems || []).filter(item => !installedModules.value.some(installed => installed.name === item.name))\n }\n if (!search.value)\n return filteredItems\n return fuse.value.search(search.value).map(r => r.item).filter(item => filteredItems?.includes(item))\n})\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NIconTitle = _resolveComponent(\"NIconTitle\")!\n const _component_NNavbar = _resolveComponent(\"NNavbar\")!\n const _component_NDropdown = _resolveComponent(\"NDropdown\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n const _component_NIcon = _resolveComponent(\"NIcon\")!\n const _component_NCheckbox = _resolveComponent(\"NCheckbox\")!\n const _component_ModuleItemInstall = _resolveComponent(\"ModuleItemInstall\")!\n\n _push(`<div${_ssrRenderAttrs(_mergeProps({\n \"h-full\": \"\",\n flex: \"~ col gap-4\"\n }, _attrs))}>`)\n _push(_ssrRenderComponent(_component_NIconTitle, {\n mx6: \"\",\n mt6: \"\",\n \"text-xl\": \"\",\n op75: \"\",\n icon: \"i-carbon-intent-request-create\",\n text: \"Install Module\"\n }, null, _parent))\n _push(_ssrRenderComponent(_component_NNavbar, {\n search: search.value,\n \"onUpdate:search\": ($event: any) => ((search).value = $event),\n \"no-padding\": \"\",\n \"px-6\": \"\",\n \"pb-3\": \"\",\n \"pt-2\": \"\"\n }, {\n actions: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NDropdown, {\n direction: \"end\",\n n: \"sm primary\"\n }, {\n trigger: _withCtx(({ click }, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ items-center\"${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NButton, {\n icon: ascendingOrder.value ? 'tabler:sort-ascending' : 'tabler:sort-descending',\n \"h-full\": \"\",\n \"rounded-r-none\": \"\",\n onClick: ($event: any) => (ascendingOrder.value = !ascendingOrder.value)\n }, null, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NButton, {\n flex: \"~ justify-between\",\n \"min-w-30\": \"\",\n \"border-l-0\": \"\",\n \"rounded-l-none\": \"\",\n \"px-2\": \"\",\n capitalize: \"\",\n hover: \"border-l-1\",\n onClick: ($event: any) => (click())\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`${_ssrInterpolate(selectedSortingOption.value)} `)\n _push(_ssrRenderComponent(_component_NIcon, { icon: \"carbon:chevron-down\" }, null, _parent, _scopeId))\n } else {\n return [\n _createTextVNode(_toDisplayString(selectedSortingOption.value) + \" \", 1),\n _createVNode(_component_NIcon, { icon: \"carbon:chevron-down\" })\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`</div>`)\n } else {\n return [\n _createVNode(\"div\", { flex: \"~ items-center\" }, [\n _createVNode(_component_NButton, {\n icon: ascendingOrder.value ? 'tabler:sort-ascending' : 'tabler:sort-descending',\n \"h-full\": \"\",\n \"rounded-r-none\": \"\",\n onClick: ($event: any) => (ascendingOrder.value = !ascendingOrder.value)\n }, null, 8, [\"icon\", \"onClick\"]),\n _createVNode(_component_NButton, {\n flex: \"~ justify-between\",\n \"min-w-30\": \"\",\n \"border-l-0\": \"\",\n \"rounded-l-none\": \"\",\n \"px-2\": \"\",\n capitalize: \"\",\n hover: \"border-l-1\",\n onClick: ($event: any) => (click())\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(selectedSortingOption.value) + \" \", 1),\n _createVNode(_component_NIcon, { icon: \"carbon:chevron-down\" })\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ]\n }\n }),\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ col\" w-30 of-auto${_scopeId}><!--[-->`)\n _ssrRenderList(sortingOptions, (item) => {\n _push(_ssrRenderComponent(_component_NButton, {\n key: item,\n border: false,\n p2: \"\",\n hover: \"n-checkbox-hover text-green\",\n onClick: ($event: any) => (selectedSortingOption.value = item)\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<span flex=\"~ justify-between\" w-full text-xs capitalize op75${\n _scopeId\n }>${\n _ssrInterpolate(item)\n } `)\n if (selectedSortingOption.value === item) {\n _push(_ssrRenderComponent(_component_NIcon, { icon: \"carbon:checkmark\" }, null, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n _push(`</span>`)\n } else {\n return [\n _createVNode(\"span\", {\n flex: \"~ justify-between\",\n \"w-full\": \"\",\n \"text-xs\": \"\",\n capitalize: \"\",\n op75: \"\"\n }, [\n _createTextVNode(_toDisplayString(item) + \" \", 1),\n (selectedSortingOption.value === item)\n ? (_openBlock(), _createBlock(_component_NIcon, {\n key: 0,\n icon: \"carbon:checkmark\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n })\n _push(`<!--]--></div>`)\n } else {\n return [\n _createVNode(\"div\", {\n flex: \"~ col\",\n \"w-30\": \"\",\n \"of-auto\": \"\"\n }, [\n (_openBlock(), _createBlock(_Fragment, null, _renderList(sortingOptions, (item) => {\n return _createVNode(_component_NButton, {\n key: item,\n border: false,\n p2: \"\",\n hover: \"n-checkbox-hover text-green\",\n onClick: ($event: any) => (selectedSortingOption.value = item)\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", {\n flex: \"~ justify-between\",\n \"w-full\": \"\",\n \"text-xs\": \"\",\n capitalize: \"\",\n op75: \"\"\n }, [\n _createTextVNode(_toDisplayString(item) + \" \", 1),\n (selectedSortingOption.value === item)\n ? (_openBlock(), _createBlock(_component_NIcon, {\n key: 0,\n icon: \"carbon:checkmark\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 2\n }, 1032, [\"onClick\"])\n }), 64))\n ])\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NDropdown, {\n direction: \"end\",\n n: \"sm primary\"\n }, {\n trigger: _withCtx(({ click }) => [\n _createVNode(\"div\", { flex: \"~ items-center\" }, [\n _createVNode(_component_NButton, {\n icon: ascendingOrder.value ? 'tabler:sort-ascending' : 'tabler:sort-descending',\n \"h-full\": \"\",\n \"rounded-r-none\": \"\",\n onClick: ($event: any) => (ascendingOrder.value = !ascendingOrder.value)\n }, null, 8, [\"icon\", \"onClick\"]),\n _createVNode(_component_NButton, {\n flex: \"~ justify-between\",\n \"min-w-30\": \"\",\n \"border-l-0\": \"\",\n \"rounded-l-none\": \"\",\n \"px-2\": \"\",\n capitalize: \"\",\n hover: \"border-l-1\",\n onClick: ($event: any) => (click())\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(selectedSortingOption.value) + \" \", 1),\n _createVNode(_component_NIcon, { icon: \"carbon:chevron-down\" })\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ]),\n default: _withCtx(() => [\n _createVNode(\"div\", {\n flex: \"~ col\",\n \"w-30\": \"\",\n \"of-auto\": \"\"\n }, [\n (_openBlock(), _createBlock(_Fragment, null, _renderList(sortingOptions, (item) => {\n return _createVNode(_component_NButton, {\n key: item,\n border: false,\n p2: \"\",\n hover: \"n-checkbox-hover text-green\",\n onClick: ($event: any) => (selectedSortingOption.value = item)\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", {\n flex: \"~ justify-between\",\n \"w-full\": \"\",\n \"text-xs\": \"\",\n capitalize: \"\",\n op75: \"\"\n }, [\n _createTextVNode(_toDisplayString(item) + \" \", 1),\n (selectedSortingOption.value === item)\n ? (_openBlock(), _createBlock(_component_NIcon, {\n key: 0,\n icon: \"carbon:checkmark\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 2\n }, 1032, [\"onClick\"])\n }), 64))\n ])\n ]),\n _: 1\n })\n ]\n }\n }),\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ items-center gap-2\"${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NCheckbox, {\n modelValue: excludeInstalled.value,\n \"onUpdate:modelValue\": ($event: any) => ((excludeInstalled).value = $event),\n n: \"primary md\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<span op75${_scopeId}>Exclude installed modules</span>`)\n } else {\n return [\n _createVNode(\"span\", { op75: \"\" }, \"Exclude installed modules\")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n _push(`<div flex=\"~ gap1\" text-sm op50${_scopeId}>`)\n if (search.value || excludeInstalled.value) {\n _push(`<span${\n _scopeId\n }>${\n _ssrInterpolate(items.value?.length)\n } matched · </span>`)\n } else {\n _push(`<!---->`)\n }\n _push(`<span${\n _scopeId\n }>${\n _ssrInterpolate(_unref(collection)?.length)\n } modules in total</span></div></div>`)\n } else {\n return [\n _createVNode(\"div\", { flex: \"~ items-center gap-2\" }, [\n _createVNode(_component_NCheckbox, {\n modelValue: excludeInstalled.value,\n \"onUpdate:modelValue\": ($event: any) => ((excludeInstalled).value = $event),\n n: \"primary md\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", { op75: \"\" }, \"Exclude installed modules\")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(\"div\", {\n flex: \"~ gap1\",\n \"text-sm\": \"\",\n op50: \"\"\n }, [\n (search.value || excludeInstalled.value)\n ? (_openBlock(), _createBlock(\"span\", { key: 0 }, _toDisplayString(items.value?.length) + \" matched · \", 1))\n : _createCommentVNode(\"\", true),\n _createVNode(\"span\", null, _toDisplayString(_unref(collection)?.length) + \" modules in total\", 1)\n ])\n ])\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<div flex-auto of-auto flex=\"~ col gap-2\" pl6 pr4>`)\n _push(_ssrRenderComponent(_unref(RecycleScroller), {\n class: \"scroller\",\n items: (items.value || []) as any[],\n \"item-size\": 200,\n \"key-field\": \"name\"\n }, {\n default: _withCtx(({ item }, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_ModuleItemInstall, {\n item: (item as ModuleStaticInfo),\n onStart: ($event: any) => (emit('close'))\n }, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_ModuleItemInstall, {\n item: (item as ModuleStaticInfo),\n onStart: ($event: any) => (emit('close'))\n }, null, 8, [\"item\", \"onStart\"])\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`</div></div>`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { ModuleStaticInfo } from '../../src/types'\nimport Fuse from 'fuse.js'\nimport { computed, ref } from 'vue'\nimport { RecycleScroller } from 'vue-virtual-scroller'\nimport { useInstalledModules, useModulesList } from '~/composables/state-modules'\n\ntype SortingFunction<T> = (a: T, b: T) => number\n\nconst emit = defineEmits(['close'])\n\nconst collection = useModulesList()\nconst installedModules = useInstalledModules()\n\nconst sortingOptions = ['downloads', 'stars', 'updated', 'created'] as const\nconst ascendingOrder = ref(false)\nconst selectedSortingOption = ref<typeof sortingOptions[number]>(sortingOptions[0])\nconst excludeInstalled = ref(true)\n\nconst sortingFactors: Record<typeof sortingOptions[number], SortingFunction<ModuleStaticInfo>> = {\n downloads: (a, b) => a.stats.downloads - b.stats.downloads,\n stars: (a, b) => a.stats.stars - b.stats.stars,\n created: (a, b) => a.stats.createdAt - b.stats.createdAt,\n updated: (a, b) => a.stats.publishedAt - b.stats.publishedAt,\n}\n\nconst sortedItems = computed(() => collection.value\n ?.toSorted((a, b) => sortingFactors[selectedSortingOption.value](a, b) * (ascendingOrder.value ? 1 : -1)))\n\nconst search = ref('')\nconst fuse = computed(() => new Fuse(collection.value || [], {\n keys: [\n 'name',\n 'description',\n 'npm',\n 'category',\n ],\n sortFn: (a, b) => {\n const itemA = collection.value?.[a.idx]\n const itemB = collection.value?.[b.idx]\n if (itemA && itemB)\n return sortingFactors[selectedSortingOption.value](itemA, itemB) * (ascendingOrder.value ? 1 : -1)\n return (a.score - b.score)\n },\n threshold: 0.2,\n}))\n\nconst items = computed(() => {\n let filteredItems = sortedItems.value\n if (excludeInstalled.value) {\n filteredItems = (filteredItems || []).filter(item => !installedModules.value.some(installed => installed.name === item.name))\n }\n if (!search.value)\n return filteredItems\n return fuse.value.search(search.value).map(r => r.item).filter(item => filteredItems?.includes(item))\n})\n</script>\n\n<template>\n <div h-full flex=\"~ col gap-4\">\n <NIconTitle\n mx6 mt6\n text-xl op75\n icon=\"i-carbon-intent-request-create\"\n text=\"Install Module\"\n />\n <NNavbar v-model:search=\"search\" no-padding px-6 pb-3 pt-2>\n <template #actions>\n <NDropdown direction=\"end\" n=\"sm primary\">\n <template #trigger=\"{ click }\">\n <div flex=\"~ items-center\">\n <NButton\n :icon=\"ascendingOrder ? 'tabler:sort-ascending' : 'tabler:sort-descending'\"\n h-full rounded-r-none\n @click=\"ascendingOrder = !ascendingOrder\"\n />\n <NButton\n flex=\"~ justify-between\"\n min-w-30 border-l-0 rounded-l-none px-2 capitalize\n hover=\"border-l-1\"\n @click=\"click()\"\n >\n {{ selectedSortingOption }}\n <NIcon icon=\"carbon:chevron-down\" />\n </NButton>\n </div>\n </template>\n <div flex=\"~ col\" w-30 of-auto>\n <NButton\n v-for=\"item of sortingOptions\"\n :key=\"item\"\n :border=\"false\" p2\n hover=\"n-checkbox-hover text-green\"\n @click=\"selectedSortingOption = item\"\n >\n <span flex=\"~ justify-between\" w-full text-xs capitalize op75>\n {{ item }}\n <NIcon v-if=\"selectedSortingOption === item\" icon=\"carbon:checkmark\" />\n </span>\n </NButton>\n </div>\n </NDropdown>\n </template>\n <div flex=\"~ items-center gap-2\">\n <NCheckbox v-model=\"excludeInstalled\" n=\"primary md\">\n <span op75>Exclude installed modules</span>\n </NCheckbox>\n <div flex=\"~ gap1\" text-sm op50>\n <span v-if=\"search || excludeInstalled\">{{ items?.length }} matched · </span>\n <span>{{ collection?.length }} modules in total</span>\n </div>\n </div>\n </NNavbar>\n\n <div flex-auto of-auto flex=\"~ col gap-2\" pl6 pr4>\n <RecycleScroller\n v-slot=\"{ item }\"\n class=\"scroller\"\n :items=\"(items || []) as any[]\"\n :item-size=\"200\"\n key-field=\"name\"\n >\n <ModuleItemInstall :item=\"(item as ModuleStaticInfo)\" @start=\"emit('close')\" />\n </RecycleScroller>\n </div>\n </div>\n</template>\n","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 { ssrRenderComponent as _ssrRenderComponent, ssrRenderClass as _ssrRenderClass, ssrInterpolate as _ssrInterpolate } from \"vue/server-renderer\"\n\nimport { ModuleDialog } from '~/composables/dialog'\nimport { useOpenInEditor } from '~/composables/editor'\nimport { useServerConfig } from '~/composables/state'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'ModuleActionDialog',\n __ssrInlineRender: true,\n setup(__props) {\n\nconst config = useServerConfig()\nconst openInEditor = useOpenInEditor()\n\nconst anyObj = {} as any\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NDialog = _resolveComponent(\"NDialog\")!\n const _component_ModuleItemBase = _resolveComponent(\"ModuleItemBase\")!\n const _component_NCodeBlock = _resolveComponent(\"NCodeBlock\")!\n const _component_NLink = _resolveComponent(\"NLink\")!\n const _component_CodeDiff = _resolveComponent(\"CodeDiff\")!\n const _component_NTip = _resolveComponent(\"NTip\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n\n _push(_ssrRenderComponent(_unref(ModuleDialog), _attrs, {\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(_ssrRenderComponent(_component_ModuleItemBase, {\n mod: anyObj,\n info: args[0],\n border: \"none\",\n \"w-150\": \"\",\n \"n-panel-grids\": \"\"\n }, null, _parent, _scopeId))\n _push(`<div flex=\"~ col gap-2\" w-150 p4 border=\"t base\"${\n _scopeId\n }><h2 text-xl class=\"${\n _ssrRenderClass(args[2] === 'install' ? 'text-primary' : 'text-red')\n }\"${\n _scopeId\n }><span capitalize${\n _scopeId\n }>${\n _ssrInterpolate(args[2])\n }</span> <code${\n _scopeId\n }>${\n _ssrInterpolate(args[0].name)\n }</code>? </h2><p op50${\n _scopeId\n }> The following command will be executed in your terminal: </p>`)\n _push(_ssrRenderComponent(_component_NCodeBlock, {\n code: args[1].commands.join(' '),\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, _parent, _scopeId))\n _push(`<p op50${_scopeId}> Then 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[1].configOriginal,\n to: args[1].configGenerated,\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 }>After that, 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_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\",\n capitalize: \"\",\n class: args[2] === 'install' ? 'n-primary' : 'n-red',\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`${_ssrInterpolate(args[2])}`)\n } else {\n return [\n _createTextVNode(_toDisplayString(args[2]), 1)\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`</div></div>`)\n } else {\n return [\n _createVNode(_component_ModuleItemBase, {\n mod: anyObj,\n info: args[0],\n border: \"none\",\n \"w-150\": \"\",\n \"n-panel-grids\": \"\"\n }, null, 8, [\"info\"]),\n _createVNode(\"div\", {\n flex: \"~ col gap-2\",\n \"w-150\": \"\",\n p4: \"\",\n border: \"t base\"\n }, [\n _createVNode(\"h2\", {\n \"text-xl\": \"\",\n class: args[2] === 'install' ? 'text-primary' : 'text-red'\n }, [\n _createVNode(\"span\", { capitalize: \"\" }, _toDisplayString(args[2]), 1),\n _createTextVNode(),\n _createVNode(\"code\", null, _toDisplayString(args[0].name), 1),\n _createTextVNode(\"? \")\n ], 2),\n _createVNode(\"p\", { op50: \"\" }, \" The following command will be executed in your terminal: \"),\n _createVNode(_component_NCodeBlock, {\n code: args[1].commands.join(' '),\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, 8, [\"code\"]),\n _createVNode(\"p\", { op50: \"\" }, [\n _createTextVNode(\" Then 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[1].configOriginal,\n to: args[1].configGenerated,\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: \"\" }, \"After that, 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_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\",\n capitalize: \"\",\n class: args[2] === 'install' ? 'n-primary' : 'n-red',\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(args[2]), 1)\n ]),\n _: 2\n }, 1032, [\"class\", \"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(_component_ModuleItemBase, {\n mod: anyObj,\n info: args[0],\n border: \"none\",\n \"w-150\": \"\",\n \"n-panel-grids\": \"\"\n }, null, 8, [\"info\"]),\n _createVNode(\"div\", {\n flex: \"~ col gap-2\",\n \"w-150\": \"\",\n p4: \"\",\n border: \"t base\"\n }, [\n _createVNode(\"h2\", {\n \"text-xl\": \"\",\n class: args[2] === 'install' ? 'text-primary' : 'text-red'\n }, [\n _createVNode(\"span\", { capitalize: \"\" }, _toDisplayString(args[2]), 1),\n _createTextVNode(),\n _createVNode(\"code\", null, _toDisplayString(args[0].name), 1),\n _createTextVNode(\"? \")\n ], 2),\n _createVNode(\"p\", { op50: \"\" }, \" The following command will be executed in your terminal: \"),\n _createVNode(_component_NCodeBlock, {\n code: args[1].commands.join(' '),\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, 8, [\"code\"]),\n _createVNode(\"p\", { op50: \"\" }, [\n _createTextVNode(\" Then 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[1].configOriginal,\n to: args[1].configGenerated,\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: \"\" }, \"After that, 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_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\",\n capitalize: \"\",\n class: args[2] === 'install' ? 'n-primary' : 'n-red',\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(args[2]), 1)\n ]),\n _: 2\n }, 1032, [\"class\", \"onClick\"])\n ])\n ])\n ]),\n _: 2\n }, 1032, [\"onClose\"])\n ]\n }\n }),\n _: 1\n }, _parent))\n}\n}\n\n})","<script setup lang=\"ts\">\nimport { ModuleDialog } from '~/composables/dialog'\nimport { useOpenInEditor } from '~/composables/editor'\nimport { useServerConfig } from '~/composables/state'\n\nconst config = useServerConfig()\nconst openInEditor = useOpenInEditor()\n\nconst anyObj = {} as any\n</script>\n\n<template>\n <ModuleDialog v-slot=\"{ resolve, args }\">\n <NDialog :model-value=\"true\" @close=\"resolve(false)\">\n <ModuleItemBase :mod=\"anyObj\" :info=\"args[0]\" border=\"none\" w-150 n-panel-grids />\n <div flex=\"~ col gap-2\" w-150 p4 border=\"t base\">\n <h2 text-xl :class=\"args[2] === 'install' ? 'text-primary' : 'text-red'\">\n <span capitalize>{{ args[2] }}</span> <code>{{ args[0].name }}</code>?\n </h2>\n\n <p op50>\n The following command will be executed in your terminal:\n </p>\n <NCodeBlock :code=\"args[1].commands.join(' ')\" lang=\"bash\" px4 py2 border=\"~ base rounded\" :lines=\"false\" />\n\n <p op50>\n Then your <NLink role=\"button\" n=\"primary\" underline @click=\"openInEditor(config?._nuxtConfigFile)\" v-text=\"'Nuxt config'\" /> will be updated as:\n </p>\n\n <CodeDiff\n :from=\"args[1].configOriginal\"\n :to=\"args[1].configGenerated\"\n max-h-80 of-auto py2 border=\"~ base rounded\"\n lang=\"ts\"\n />\n\n <p>\n <span op50>After that, Nuxt will </span><span text-orange>restart automatically</span>.\n </p>\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\" capitalize :class=\"args[2] === 'install' ? 'n-primary' : 'n-red'\" @click=\"resolve(true)\">\n {{ args[2] }}\n </NButton>\n </div>\n </div>\n </NDialog>\n </ModuleDialog>\n</template>\n","# Modules\n\nNuxt provides a module system to extend the framework core and simplify integrations. You don't need to develop everything from scratch or maintain boilerplate if there is already a Nuxt module for it. Adding Nuxt modules is possible using `nuxt.config`.\n\nYou can explore the list of modules on [nuxt.com/modules](https://nuxt.com/modules) or install them directly inside the DevTools.\n\n[Learn more in the documentation](https://nuxt.com/docs/guide/concepts/modules)\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createBlock as _createBlock, unref as _unref, createCommentVNode as _createCommentVNode } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent, ssrRenderAttr as _ssrRenderAttr, ssrRenderList as _ssrRenderList, ssrInterpolate as _ssrInterpolate } from \"vue/server-renderer\"\n\nimport { computed, ref } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { rpc } from '~/composables/rpc'\nimport { registerCommands } from '~/composables/state-commands'\nimport { useInstalledModules } from '~/composables/state-modules'\n\nconst iconBase = 'https://ipx.nuxt.com/s_80,f_webp/gh/nuxt/modules/main/icons/'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'modules',\n __ssrInlineRender: true,\n setup(__props) {\n\ndefinePageMeta({\n icon: 'carbon-3d-mpr-toggle',\n title: 'Modules',\n order: 5,\n})\n\nconst installModuleOpen = ref(false)\nconst installedModules = useInstalledModules()\n\nconst packageModules = computed(() => installedModules.value.filter(i => i.isPackageModule))\nconst userModules = computed(() => installedModules.value.filter(i => !i.isPackageModule))\n\nregisterCommands(() => [\n {\n id: 'action:modules:install',\n title: 'Install a new module',\n icon: 'i-carbon-intent-request-create ',\n action: () => {\n installModuleOpen.value = true\n },\n },\n])\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NSectionBlock = _resolveComponent(\"NSectionBlock\")!\n const _component_ModuleItem = _resolveComponent(\"ModuleItem\")!\n const _component_NCard = _resolveComponent(\"NCard\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n const _component_ModuleInstallList = _resolveComponent(\"ModuleInstallList\")!\n const _component_ModuleActionDialog = _resolveComponent(\"ModuleActionDialog\")!\n const _component_HelpFab = _resolveComponent(\"HelpFab\")!\n const _component_DocsModules = _resolveComponent(\"DocsModules\")!\n\n _push(`<!--[--><div h-full w-full of-auto>`)\n _push(_ssrRenderComponent(_component_NSectionBlock, {\n icon: \"carbon-3d-mpr-toggle\",\n text: \"Installed Modules\",\n \"container-class\": \"grid grid-cols-minmax-400px gap3 px4\",\n padding: false,\n description: `Total modules: ${packageModules.value.length}`\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<!--[-->`)\n _ssrRenderList(packageModules.value, (m) => {\n _push(_ssrRenderComponent(_component_ModuleItem, {\n key: m.name,\n mod: m\n }, null, _parent, _scopeId))\n })\n _push(`<!--]--><!--[-->`)\n _ssrRenderList(_ctx.processInstallingModules, (m) => {\n _push(`<button block min-h-30 title=\"Open the output in the Terminals dock\"${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NCard, {\n border: \"1.5 dashed\",\n \"h-full\": \"\",\n \"animate-pulse\": \"\",\n p4: \"\",\n transition: \"\",\n hover: \"border-primary\",\n flex: \"~ col gap-1 items-center justify-center\",\n role: \"button\",\n class: \"group\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div relative h-20 w-20 flex flex-none rounded bg-gray:3 p3${\n _scopeId\n }><img${\n _ssrRenderAttr(\"src\", iconBase + m.info.icon)\n }${\n _ssrRenderAttr(\"alt\", m.info.name)\n } ma${\n _scopeId\n }><div i-carbon-cube ma text-4xl op30${\n _scopeId\n }></div></div><div text-lg group-hover=\"text-primary\" transition flex=\"~ gap-2 items-center\"${\n _scopeId\n }><div i-carbon-circle-dash animate-spin text-xl op75${\n _scopeId\n }></div><span op75${\n _scopeId\n }>Installing ${\n _ssrInterpolate(m.name)\n }...</span></div>`)\n } else {\n return [\n _createVNode(\"div\", {\n relative: \"\",\n \"h-20\": \"\",\n \"w-20\": \"\",\n flex: \"\",\n \"flex-none\": \"\",\n rounded: \"\",\n \"bg-gray:3\": \"\",\n p3: \"\"\n }, [\n _createVNode(\"img\", {\n src: iconBase + m.info.icon,\n alt: m.info.name,\n ma: \"\"\n }, null, 8, [\"src\", \"alt\"]),\n _createVNode(\"div\", {\n \"i-carbon-cube\": \"\",\n ma: \"\",\n \"text-4xl\": \"\",\n op30: \"\"\n })\n ]),\n _createVNode(\"div\", {\n \"text-lg\": \"\",\n \"group-hover\": \"text-primary\",\n transition: \"\",\n flex: \"~ gap-2 items-center\"\n }, [\n _createVNode(\"div\", {\n \"i-carbon-circle-dash\": \"\",\n \"animate-spin\": \"\",\n \"text-xl\": \"\",\n op75: \"\"\n }),\n _createVNode(\"span\", { op75: \"\" }, \"Installing \" + _toDisplayString(m.name) + \"...\", 1)\n ])\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`</button>`)\n })\n _push(`<!--]-->`)\n _push(_ssrRenderComponent(_component_NCard, {\n border: \"1.5 dashed\",\n \"min-h-30\": \"\",\n p4: \"\",\n transition: \"\",\n hover: \"border-primary\",\n flex: \"~ col gap-2 items-center justify-center\",\n role: \"button\",\n class: \"group\",\n onClick: ($event: any) => (installModuleOpen.value = true)\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div i-carbon-intent-request-create text-4xl op40 group-hover=\"op75 text-primary\" transition${\n _scopeId\n }></div><div text-lg op40 group-hover=\"op75 text-primary\" transition${\n _scopeId\n }> Install New Module </div>`)\n } else {\n return [\n _createVNode(\"div\", {\n \"i-carbon-intent-request-create\": \"\",\n \"text-4xl\": \"\",\n op40: \"\",\n \"group-hover\": \"op75 text-primary\",\n transition: \"\"\n }),\n _createVNode(\"div\", {\n \"text-lg\": \"\",\n op40: \"\",\n \"group-hover\": \"op75 text-primary\",\n transition: \"\"\n }, \" Install New Module \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(packageModules.value, (m) => {\n return (_openBlock(), _createBlock(_component_ModuleItem, {\n key: m.name,\n mod: m\n }, null, 8, [\"mod\"]))\n }), 128)),\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(_ctx.processInstallingModules, (m) => {\n return (_openBlock(), _createBlock(\"button\", {\n key: m.processId,\n block: \"\",\n \"min-h-30\": \"\",\n title: \"Open the output in the Terminals dock\",\n onClick: ($event: any) => (_unref(rpc).revealTerminal(m.processId))\n }, [\n _createVNode(_component_NCard, {\n border: \"1.5 dashed\",\n \"h-full\": \"\",\n \"animate-pulse\": \"\",\n p4: \"\",\n transition: \"\",\n hover: \"border-primary\",\n flex: \"~ col gap-1 items-center justify-center\",\n role: \"button\",\n class: \"group\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"div\", {\n relative: \"\",\n \"h-20\": \"\",\n \"w-20\": \"\",\n flex: \"\",\n \"flex-none\": \"\",\n rounded: \"\",\n \"bg-gray:3\": \"\",\n p3: \"\"\n }, [\n _createVNode(\"img\", {\n src: iconBase + m.info.icon,\n alt: m.info.name,\n ma: \"\"\n }, null, 8, [\"src\", \"alt\"]),\n _createVNode(\"div\", {\n \"i-carbon-cube\": \"\",\n ma: \"\",\n \"text-4xl\": \"\",\n op30: \"\"\n })\n ]),\n _createVNode(\"div\", {\n \"text-lg\": \"\",\n \"group-hover\": \"text-primary\",\n transition: \"\",\n flex: \"~ gap-2 items-center\"\n }, [\n _createVNode(\"div\", {\n \"i-carbon-circle-dash\": \"\",\n \"animate-spin\": \"\",\n \"text-xl\": \"\",\n op75: \"\"\n }),\n _createVNode(\"span\", { op75: \"\" }, \"Installing \" + _toDisplayString(m.name) + \"...\", 1)\n ])\n ]),\n _: 2\n }, 1024)\n ], 8, [\"onClick\"]))\n }), 128)),\n _createVNode(_component_NCard, {\n border: \"1.5 dashed\",\n \"min-h-30\": \"\",\n p4: \"\",\n transition: \"\",\n hover: \"border-primary\",\n flex: \"~ col gap-2 items-center justify-center\",\n role: \"button\",\n class: \"group\",\n onClick: ($event: any) => (installModuleOpen.value = true)\n }, {\n default: _withCtx(() => [\n _createVNode(\"div\", {\n \"i-carbon-intent-request-create\": \"\",\n \"text-4xl\": \"\",\n op40: \"\",\n \"group-hover\": \"op75 text-primary\",\n transition: \"\"\n }),\n _createVNode(\"div\", {\n \"text-lg\": \"\",\n op40: \"\",\n \"group-hover\": \"op75 text-primary\",\n transition: \"\"\n }, \" Install New Module \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]\n }\n }),\n _: 1\n }, _parent))\n if (userModules.value.length) {\n _push(_ssrRenderComponent(_component_NSectionBlock, {\n icon: \"carbon-3d-mpr-toggle\",\n text: \"User Modules\",\n \"container-class\": \"grid grid-cols-minmax-400px gap3 px4\",\n padding: false,\n description: `Total modules: ${userModules.value.length}`\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<!--[-->`)\n _ssrRenderList(userModules.value, (m) => {\n _push(`<!--[-->`)\n if (m.meta?.name || m.entryPath) {\n _push(_ssrRenderComponent(_component_ModuleItem, { mod: m }, null, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n _push(`<!--]-->`)\n })\n _push(`<!--]-->`)\n } else {\n return [\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(userModules.value, (m) => {\n return (_openBlock(), _createBlock(_Fragment, {\n key: m.meta?.name || m.entryPath\n }, [\n (m.meta?.name || m.entryPath)\n ? (_openBlock(), _createBlock(_component_ModuleItem, {\n key: 0,\n mod: m\n }, null, 8, [\"mod\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128))\n ]\n }\n }),\n _: 1\n }, _parent))\n } else {\n _push(`<!---->`)\n }\n if (installModuleOpen.value) {\n _push(`<div class=\"fixed bottom-0 left-0 right-0 top-0 z-100\" bg-black:20 backdrop-blur-2></div>`)\n } else {\n _push(`<!---->`)\n }\n if (installModuleOpen.value) {\n _push(`<div border=\"l base\" pos=\"fixed bottom-0 right-0 top-0\" z-200 w-150 bg-base>`)\n _push(_ssrRenderComponent(_component_NButton, {\n icon: \"carbon-close\",\n pos: \"absolute top-3 right-3 z-10\",\n \"rounded-full\": \"\",\n \"text-xl\": \"\",\n border: false,\n onClick: ($event: any) => (installModuleOpen.value = false)\n }, null, _parent))\n _push(_ssrRenderComponent(_component_ModuleInstallList, {\n onClose: ($event: any) => (installModuleOpen.value = false)\n }, null, _parent))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n _push(_ssrRenderComponent(_component_ModuleActionDialog, null, null, _parent))\n _push(`</div>`)\n _push(_ssrRenderComponent(_component_HelpFab, null, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_DocsModules, null, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_DocsModules)\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<!--]-->`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { rpc } from '~/composables/rpc'\nimport { registerCommands } from '~/composables/state-commands'\nimport { useInstalledModules } from '~/composables/state-modules'\n\ndefinePageMeta({\n icon: 'carbon-3d-mpr-toggle',\n title: 'Modules',\n order: 5,\n})\n\nconst installModuleOpen = ref(false)\nconst installedModules = useInstalledModules()\n\nconst packageModules = computed(() => installedModules.value.filter(i => i.isPackageModule))\nconst userModules = computed(() => installedModules.value.filter(i => !i.isPackageModule))\n\nconst iconBase = 'https://ipx.nuxt.com/s_80,f_webp/gh/nuxt/modules/main/icons/'\n\nregisterCommands(() => [\n {\n id: 'action:modules:install',\n title: 'Install a new module',\n icon: 'i-carbon-intent-request-create ',\n action: () => {\n installModuleOpen.value = true\n },\n },\n])\n</script>\n\n<template>\n <div h-full w-full of-auto>\n <NSectionBlock\n icon=\"carbon-3d-mpr-toggle\"\n text=\"Installed Modules\"\n container-class=\"grid grid-cols-minmax-400px gap3 px4\"\n :padding=\"false\"\n :description=\"`Total modules: ${packageModules.length}`\"\n >\n <ModuleItem\n v-for=\"m of packageModules\"\n :key=\"m.name\"\n :mod=\"m\"\n />\n <button\n v-for=\"m of processInstallingModules\"\n :key=\"m.processId\" block min-h-30\n title=\"Open the output in the Terminals dock\"\n @click=\"rpc.revealTerminal(m.processId)\"\n >\n <NCard\n border=\"1.5 dashed\"\n h-full animate-pulse p4 transition\n hover=\"border-primary\"\n flex=\"~ col gap-1 items-center justify-center\"\n role=\"button\"\n class=\"group\"\n >\n <div relative h-20 w-20 flex flex-none rounded bg-gray:3 p3>\n <img :src=\"iconBase + m.info.icon\" :alt=\"m.info.name\" ma>\n <div i-carbon-cube ma text-4xl op30 />\n </div>\n <div text-lg group-hover=\"text-primary\" transition flex=\"~ gap-2 items-center\">\n <div i-carbon-circle-dash animate-spin text-xl op75 />\n <span op75>Installing {{ m.name }}...</span>\n </div>\n </NCard>\n </button>\n <NCard\n border=\"1.5 dashed\"\n min-h-30 p4 transition\n hover=\"border-primary\"\n flex=\"~ col gap-2 items-center justify-center\"\n role=\"button\"\n class=\"group\"\n @click=\"installModuleOpen = true\"\n >\n <div i-carbon-intent-request-create text-4xl op40 group-hover=\"op75 text-primary\" transition />\n <div text-lg op40 group-hover=\"op75 text-primary\" transition>\n Install New Module\n </div>\n </NCard>\n </NSectionBlock>\n <NSectionBlock\n v-if=\"userModules.length\"\n icon=\"carbon-3d-mpr-toggle\"\n text=\"User Modules\"\n container-class=\"grid grid-cols-minmax-400px gap3 px4\"\n :padding=\"false\"\n :description=\"`Total modules: ${userModules.length}`\"\n >\n <template v-for=\"m of userModules\" :key=\"m.meta?.name || m.entryPath\">\n <ModuleItem\n v-if=\"m.meta?.name || m.entryPath\"\n :mod=\"m\"\n />\n </template>\n </NSectionBlock>\n\n <Transition name=\"fade-in\">\n <div\n v-if=\"installModuleOpen\"\n class=\"fixed bottom-0 left-0 right-0 top-0 z-100\"\n bg-black:20 backdrop-blur-2 @click=\"installModuleOpen = false\"\n />\n </Transition>\n <Transition name=\"slide-in\">\n <div\n v-if=\"installModuleOpen\" border=\"l base\"\n pos=\"fixed bottom-0 right-0 top-0\" z-200 w-150 bg-base\n >\n <NButton\n icon=\"carbon-close\"\n pos=\"absolute top-3 right-3 z-10\"\n rounded-full text-xl :border=\"false\"\n @click=\"installModuleOpen = false\"\n />\n <ModuleInstallList @close=\"installModuleOpen = false\" />\n </div>\n </Transition>\n <ModuleActionDialog />\n </div>\n\n <HelpFab>\n <DocsModules />\n </HelpFab>\n</template>\n"],"version":3}
|