1
1
<script setup lang="ts">
2
2
import type { PackageNode } from ' node-modules-tools'
3
+ import { useRouter } from ' #app/composables/router'
3
4
import { Menu as VMenu } from ' floating-vue'
4
- import { computed , watch } from ' vue'
5
+ import { computed , nextTick , watch } from ' vue'
5
6
import { getBackend } from ' ../../backends'
6
7
import { selectedNode } from ' ../../state/current'
7
8
import { fetchPublintMessages , rawPublintMessages } from ' ../../state/data'
@@ -102,6 +103,16 @@ function getShallowestDependents(pkg: PackageNode) {
102
103
103
104
const latestMeta = computed (() => getNpmMetaLatest (props .pkg ))
104
105
const deprecation = computed (() => getDeprecatedInfo (props .pkg ))
106
+
107
+ const router = useRouter ()
108
+ function showDuplicatedGraph(pkgs : PackageNode []) {
109
+ filters .state .focus = null
110
+ filters .state .why = pkgs .map (pkg => pkg .spec )
111
+ selectedNode .value = pkgs [0 ]
112
+ nextTick (() => {
113
+ router .push ({ path: ' /graph' , hash: location .hash })
114
+ })
115
+ }
105
116
</script >
106
117
107
118
<template >
@@ -154,12 +165,22 @@ const deprecation = computed(() => getDeprecatedInfo(props.pkg))
154
165
<DisplayVersion op75 flex-auto text-left :version =" versionNode.version" />
155
166
<DisplayModuleType :force =" true" :pkg =" versionNode" :badge =" false" text-xs />
156
167
</button >
168
+ <div border =" t base" my1 />
169
+ <button
170
+ py1 px2 rounded flex =" ~ items-center gap-1" min-w-40
171
+ hover =" bg-active"
172
+ @click =" showDuplicatedGraph(duplicated)"
173
+ >
174
+ <div i-ph-graph-duotone />
175
+ <span text-sm > Compare in Graph</span >
176
+ </button >
157
177
</div >
158
178
</template >
159
179
</VMenu >
160
180
<div flex =" ~ gap--1 items-center" >
161
181
<NuxtLink
162
182
v-if =" !pkg.private"
183
+ v-tooltip =" 'Open on NPM'"
163
184
:to =" `https://www.npmjs.com/package/${pkg.name}/v/${pkg.version}`"
164
185
title =" Open on NPM"
165
186
target =" _blank"
@@ -169,6 +190,7 @@ const deprecation = computed(() => getDeprecatedInfo(props.pkg))
169
190
</NuxtLink >
170
191
<NuxtLink
171
192
v-if =" resolved.repository"
193
+ v-tooltip =" 'Open Repository'"
172
194
:to =" resolved.repository"
173
195
title =" Open Repository"
174
196
target =" _blank"
@@ -178,6 +200,7 @@ const deprecation = computed(() => getDeprecatedInfo(props.pkg))
178
200
</NuxtLink >
179
201
<NuxtLink
180
202
v-if =" resolved.homepage"
203
+ v-tooltip =" 'Open Homepage'"
181
204
:to =" resolved.homepage"
182
205
title =" Open Homepage"
183
206
target =" _blank"
@@ -190,6 +213,7 @@ const deprecation = computed(() => getDeprecatedInfo(props.pkg))
190
213
:fundings =" resolved.fundings"
191
214
/>
192
215
<NuxtLink
216
+ v-tooltip =" 'Open in Publint'"
193
217
:to =" `https://publint.dev/${pkg.spec}`"
194
218
title =" Open in Publint"
195
219
target =" _blank"
@@ -199,6 +223,7 @@ const deprecation = computed(() => getDeprecatedInfo(props.pkg))
199
223
</NuxtLink >
200
224
<button
201
225
v-if =" backend?.functions.openInEditor"
226
+ v-tooltip =" 'Open Package Folder in Editor'"
202
227
title =" Open Package Folder in Editor"
203
228
ml--1 w-8 h-8 rounded-full hover:bg-active flex
204
229
@click =" backend.functions.openInEditor(pkg.filepath)"
@@ -207,7 +232,8 @@ const deprecation = computed(() => getDeprecatedInfo(props.pkg))
207
232
</button >
208
233
<button
209
234
v-if =" backend?.functions.openInFinder"
210
- title =" Open Package Folder in Finder"
235
+ v-tooltip =" 'Open Package Folder in File Explorer'"
236
+ title =" Open Package Folder in File Explorer"
211
237
ml--1 w-8 h-8 rounded-full hover:bg-active flex
212
238
@click =" backend.functions.openInFinder(pkg.filepath)"
213
239
>
@@ -296,6 +322,7 @@ const deprecation = computed(() => getDeprecatedInfo(props.pkg))
296
322
</div >
297
323
<div flex-auto />
298
324
<button
325
+ v-tooltip =" 'Toggle file composition'"
299
326
p1 rounded-full hover:bg-active mr--2
300
327
title =" Toggle file composition"
301
328
@click =" settings.showFileComposition = !settings.showFileComposition"
@@ -338,6 +365,7 @@ const deprecation = computed(() => getDeprecatedInfo(props.pkg))
338
365
</button >
339
366
<div border =" b base" pt2 px2 >
340
367
<button
368
+ v-tooltip =" 'Toggle deep dependencies tree'"
341
369
p1 rounded-full hover:bg-active
342
370
title =" Toggle deep dependencies tree"
343
371
@click =" settings.deepDependenciesTree = !settings.deepDependenciesTree"
0 commit comments