UNPKG

@nuxt/scripts

Version:

Load third-party scripts with better performance, privacy and DX in Nuxt Apps.

36 lines (35 loc) 924 B
import { useEventListener } from "@vueuse/core"; import { tryOnScopeDispose } from "@vueuse/shared"; import { onNuxtReady } from "nuxt/app"; export function useScriptTriggerInteraction(options) { if (import.meta.server) { return new Promise(() => { }); } const { events, target = document.documentElement } = options; return new Promise((resolve) => { onNuxtReady(() => { if (!target) { resolve(false); return; } const cleanupFns = []; events.forEach((event) => { const cleanup = useEventListener( target, event, () => { cleanupFns.forEach((fn) => fn()); resolve(true); }, { once: true, passive: true } ); cleanupFns.push(cleanup); }); tryOnScopeDispose(() => { cleanupFns.forEach((fn) => fn()); resolve(false); }); }); }); }