/** * Bind event when mounted or activated */ import { on, off } from '../utils/dom/event'; type BindEventMixinThis = { binded: boolean; }; type BindEventHandler = (bind: Function, isBind: boolean) => void; export function BindEventMixin(handler: BindEventHandler) { function bind(this: BindEventMixinThis) { if (!this.binded) { handler.call(this, on, true); this.binded = true; } } function unbind(this: BindEventMixinThis) { if (this.binded) { handler.call(this, off, false); this.binded = false; } } return { mounted: bind, activated: bind, deactivated: unbind, beforeDestroy: unbind, }; }