'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

var vClickoutside = {
  beforeMount: function beforeMount(el, binding) {
    function documentHandler(e) {
      // 这里判断点击的元素是否是本身，是本身，则返回
      if (el.contains(e.target)) {
        return false;
      }
      // 判断指令中是否绑定了函数
      // 如果绑定了函数 则调用那个函数，此处 binding.value 就是 handleClose 方法
      if (typeof binding.value === 'function') {
        binding.value(e);
      }
    }
    // 给当前元素绑定个私有变量，方便在 unbind 中可以解除事件监听
    el.__vueClickOutside__ = documentHandler;
    document.addEventListener('click', documentHandler, true);
  },
  update: function update() {},
  unmounted: function unmounted(el) {
    if (el.__vueClickOutside__) {
      // 解除事件监听
      document.removeEventListener('click', el.__vueClickOutside__, true);
      delete el.__vueClickOutside__;
    }
  }
};

exports.vClickoutside = vClickoutside;
