const EventLogger = {

  install (Vue) {
    const originalEmit = Vue.prototype.$emit
    // const originalOn = Vue.prototype.$on
    // 排除 一些 vue 框架 / 前端脚手架 底层的一些事件日志
    const exclude = ['menuSelect', 'menuDeselect', 'popupScroll', 'popupFocus', 'mouseenter',
      'mouseleave', 'popupVisibleChange', 'popupScroll', 'click', 'keypress', 'keydown ', 'input ',
      'change', 'popupVisibleChange', 'beforeCreate', 'created', 'beforeMount', 'mounted', 'componentDidMounted', 'update:visible',
    ]
    // 劫持 $emit
    Vue.prototype.$emit = function (eventName, ...args) {
      if (!exclude.includes(eventName) && !eventName.startsWith('hook:')) {
        console.info(`Event emitted: ${eventName}`, args)
      }
      return originalEmit.call(this, eventName, ...args)
    }
    //
    // Vue.prototype.$on = function (eventName, callback) {
    //   // 包装原始回调函数，以便在触发时打印参数
    //   const wrappedCallback = (...args) => {
    //     if (!exclude.includes(eventName)) {
    //       console.log(`Event handled: "${eventName}" triggered with:`, args)
    //     }
    //     callback.apply(this, args) // 执行原始回调
    //   }
    //   // 使用包装后的回调注册事件
    //   return originalOn.call(this, eventName, wrappedCallback)
    // }
  }
}

export default EventLogger
