UNPKG

motion

Version:

motion - moving development forward

71 lines (59 loc) 1.62 kB
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;