@@ -3,7 +3,7 @@ import type { UseScriptOptions } from '@unhead/schema'
3
3
import { hashCode } from '@unhead/shared'
4
4
import { defu } from 'defu'
5
5
import { useScript as _useScript } from '@unhead/vue'
6
- import { injectHead , onNuxtReady , useNuxtApp , useRuntimeConfig } from '#imports'
6
+ import { injectHead , onNuxtReady , useNuxtApp , useRuntimeConfig , reactive } from '#imports'
7
7
import type { NuxtAppScript , NuxtUseScriptOptions } from '#nuxt-scripts'
8
8
9
9
function useNuxtScriptRuntimeConfig ( ) {
@@ -20,6 +20,11 @@ export function useScript<T extends Record<string | symbol, any>>(input: UseScri
20
20
options . trigger = onNuxtReady
21
21
const nuxtApp = useNuxtApp ( )
22
22
const id = ( input . key || input . src || hashCode ( ( typeof input . innerHTML === 'string' ? input . innerHTML : '' ) ) ) as keyof typeof nuxtApp . _scripts
23
+ nuxtApp . $scripts = nuxtApp . $scripts ! || reactive ( { } )
24
+ // return early
25
+ if ( nuxtApp . $scripts [ id ] ) {
26
+ return nuxtApp . $scripts [ id ]
27
+ }
23
28
if ( import . meta. client ) {
24
29
// only validate if we're initializing the script
25
30
if ( ! nuxtApp . _scripts ?. [ id ] ) {
@@ -31,6 +36,7 @@ export function useScript<T extends Record<string | symbol, any>>(input: UseScri
31
36
}
32
37
}
33
38
const instance = _useScript < T > ( input , options as any as UseScriptOptions < T > )
39
+ nuxtApp . $scripts [ id ] = instance
34
40
// used for devtools integration
35
41
if ( import . meta. dev && import . meta. client ) {
36
42
// sync scripts to nuxtApp with debug details
0 commit comments