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;
|
|
};
|