opnform/client/plugins/amplitude.js

27 lines
704 B
JavaScript
Raw Normal View History

2023-12-09 14:47:03 +00:00
const {logEvent} = useAmplitude()
// Hook function used by event listener
function hookLogEvent (binding) {
const modifiers = Object.keys(binding.modifiers)
if (modifiers.length !== 1) {
throw new Error('Amplitude directive takes only one modifier which is the event name.')
}
const eventName = modifiers[0]
logEvent(eventName, binding.value)
}
export default defineNuxtPlugin(nuxtApp => {
// Doing something with nuxtApp
const registeredListeners = {}
nuxtApp.vueApp.directive('track', {
beforeMount (el, binding, vnode) {
registeredListeners[el] = () => {
hookLogEvent(binding)
}
el.addEventListener('click', registeredListeners[el])
}
})
})