54 lines
944 B
JavaScript
54 lines
944 B
JavaScript
export function buildHook({ initialize, cleanup }) {
|
|
cleanup = cleanup || function () {}
|
|
|
|
return {
|
|
mounted() {
|
|
this.initialize()
|
|
},
|
|
|
|
updated() {
|
|
this.initialize()
|
|
},
|
|
|
|
reconnected() {
|
|
this.initialize()
|
|
},
|
|
|
|
destroyed() {
|
|
this.cleanup()
|
|
},
|
|
|
|
initialize() {
|
|
this.cleanup()
|
|
initialize.bind(this)()
|
|
},
|
|
|
|
cleanup() {
|
|
this.removeListeners()
|
|
cleanup.bind(this)()
|
|
},
|
|
|
|
addListener(eventName, listener, callback) {
|
|
this.listeners = this.listeners || []
|
|
|
|
listener.addEventListener(eventName, callback)
|
|
|
|
this.listeners.push({
|
|
element: listener,
|
|
event: eventName,
|
|
callback: callback
|
|
})
|
|
},
|
|
|
|
removeListeners() {
|
|
if (this.listeners) {
|
|
this.listeners.forEach((l) => {
|
|
l.element.removeEventListener(l.event, l.callback)
|
|
})
|
|
|
|
this.listeners = null
|
|
}
|
|
}
|
|
}
|
|
}
|