motion
Version:
motion - moving development forward
71 lines (59 loc) • 1.62 kB
JavaScript
var _Object$keys = require('babel-runtime/core-js/object/keys').default;
Object.defineProperty(exports, '__esModule', {
value: true
});
var el = undefined;
var reactKey = null;
var getReactKey = function getReactKey(el) {
return _Object$keys(el).filter(function (k) {
return k.indexOf('__reactInternalInst') == 0;
})[0];
};
function getReactId(el) {
if (!reactKey) reactKey = getReactKey(el);
if (!el[reactKey]) return;
var current = el[reactKey]._currentElement;
if (!current || !current.key) return null;
var key = current.key;
var split = key.split('$');
return split[split.length - 1];
}
var Inspecting = {
set: function set(_) {
el = _;
},
get: function get() {
return el;
},
props: function props(el) {
return {
key: getReactId(el),
el: el.tagName.toLowerCase(),
view: el.className.split(' ').filter(function (s) {
return s.substr(0, 4) != 'View';
}).filter(function (s) {
return s.charAt(0).toUpperCase() == s.charAt(0);
})[0]
};
},
all: function all() {
var cur = el;
var parents = [this.props(cur)];
// walk upwards, find unique views
while (cur.parentNode && cur.parentNode.tagName) {
var _parent = cur.parentNode;
var last = parents[parents.length - 1];
var next = this.props(_parent);
if (next.view && next.view != last.view) {
// filter __motionfocus
if (next.view[0] != '_') {
parents.push(next);
}
}
cur = _parent;
}
return parents;
}
};
exports.default = Inspecting;
module.exports = exports.default;