28 lines
		
	
	
		
			680 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			680 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
export const NODE_KEY = "$treeNodeId";
 | 
						|
 | 
						|
export const markNodeData = function(node, data) {
 | 
						|
  if (!data || data[NODE_KEY]) return;
 | 
						|
  Object.defineProperty(data, NODE_KEY, {
 | 
						|
    value: node.id,
 | 
						|
    enumerable: false,
 | 
						|
    configurable: false,
 | 
						|
    writable: false
 | 
						|
  });
 | 
						|
};
 | 
						|
 | 
						|
export const getNodeKey = function(key, data) {
 | 
						|
  if (!key) return data[NODE_KEY];
 | 
						|
  return data[key];
 | 
						|
};
 | 
						|
 | 
						|
export const findNearestComponent = (element, componentName) => {
 | 
						|
  let target = element;
 | 
						|
  while (target && target.tagName !== "BODY") {
 | 
						|
    if (target.__vue__ && target.__vue__.$options.name === componentName) {
 | 
						|
      return target.__vue__;
 | 
						|
    }
 | 
						|
    target = target.parentNode;
 | 
						|
  }
 | 
						|
  return null;
 | 
						|
};
 |