StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
				https://doi.org/10.1109/TVCG.2020.3030352
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							76 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							76 lines
						
					
					
						
							2.4 KiB
						
					
					
				import Vue from 'vue';
 | 
						|
 | 
						|
export var version = '2.2.2';
 | 
						|
 | 
						|
var compatible = (/^2\./).test(Vue.version);
 | 
						|
if (!compatible) {
 | 
						|
  Vue.util.warn('VueClickaway ' + version + ' only supports Vue 2.x, and does not support Vue ' + Vue.version);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
// @SECTION: implementation
 | 
						|
 | 
						|
var HANDLER = '_vue_clickaway_handler';
 | 
						|
 | 
						|
function bind(el, binding, vnode) {
 | 
						|
  unbind(el);
 | 
						|
 | 
						|
  var vm = vnode.context;
 | 
						|
 | 
						|
  var callback = binding.value;
 | 
						|
  if (typeof callback !== 'function') {
 | 
						|
    if (process.env.NODE_ENV !== 'production') {
 | 
						|
      Vue.util.warn(
 | 
						|
        'v-' + binding.name + '="' +
 | 
						|
        binding.expression + '" expects a function value, ' +
 | 
						|
        'got ' + callback
 | 
						|
      );
 | 
						|
    }
 | 
						|
    return;
 | 
						|
  }
 | 
						|
 | 
						|
  // @NOTE: Vue binds directives in microtasks, while UI events are dispatched
 | 
						|
  //        in macrotasks. This causes the listener to be set up before
 | 
						|
  //        the "origin" click event (the event that lead to the binding of
 | 
						|
  //        the directive) arrives at the document root. To work around that,
 | 
						|
  //        we ignore events until the end of the "initial" macrotask.
 | 
						|
  // @REFERENCE: https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/
 | 
						|
  // @REFERENCE: https://github.com/simplesmiler/vue-clickaway/issues/8
 | 
						|
  var initialMacrotaskEnded = false;
 | 
						|
  setTimeout(function() {
 | 
						|
    initialMacrotaskEnded = true;
 | 
						|
  }, 0);
 | 
						|
 | 
						|
  el[HANDLER] = function(ev) {
 | 
						|
    // @NOTE: this test used to be just `el.containts`, but working with path is better,
 | 
						|
    //        because it tests whether the element was there at the time of
 | 
						|
    //        the click, not whether it is there now, that the event has arrived
 | 
						|
    //        to the top.
 | 
						|
    // @NOTE: `.path` is non-standard, the standard way is `.composedPath()`
 | 
						|
    var path = ev.path || (ev.composedPath ? ev.composedPath() : undefined);
 | 
						|
    if (initialMacrotaskEnded && (path ? path.indexOf(el) < 0 : !el.contains(ev.target))) {
 | 
						|
      return callback.call(vm, ev);
 | 
						|
    }
 | 
						|
  };
 | 
						|
 | 
						|
  document.documentElement.addEventListener('click', el[HANDLER], false);
 | 
						|
}
 | 
						|
 | 
						|
function unbind(el) {
 | 
						|
  document.documentElement.removeEventListener('click', el[HANDLER], false);
 | 
						|
  delete el[HANDLER];
 | 
						|
}
 | 
						|
 | 
						|
export var directive = {
 | 
						|
  bind: bind,
 | 
						|
  update: function(el, binding) {
 | 
						|
    if (binding.value === binding.oldValue) return;
 | 
						|
    bind(el, binding);
 | 
						|
  },
 | 
						|
  unbind: unbind,
 | 
						|
};
 | 
						|
 | 
						|
export var mixin = {
 | 
						|
  directives: { onClickaway: directive },
 | 
						|
};
 | 
						|
 |