motion
Version:
motion - moving development forward
79 lines (59 loc) • 2.44 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _state = require('../state');
var _state2 = _interopRequireDefault(_state);
var _helpers = require('../lib/helpers');
var _wrapState = require('../lib/wrapState');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
exports.default = {
enter(node, parent, scope) {
if (node.kind == 'prop' && !node._motionPropParsed) {
node.kind = 'const';
node._motionPropParsed = true;
node.declarations.map(dec => {
let name = dec.id.name;
dec.init = (0, _wrapState.wrapPropertyDeclarator)(name, dec.init || _helpers.t.identifier('undefined'), scope);
return dec;
});
return [node, (0, _helpers.propChange)(node)];
}
},
exit(node, parent, scope, file) {
if (node.isStyle || node._motionDeclarationParsed) return;
node._motionDeclarationParsed = true;
// add getter
if (scope.hasOwnBinding('view') && node.kind != 'const' && !node.motionTracked) {
let destructNodes = [];
node.declarations.map(dec => {
if (dec.motionTracked) return dec;
// destructures
if (_helpers.t.isObjectPattern(dec.id)) {
destructNodes = destructNodes.concat((0, _wrapState.destructureTrackers)(dec.id, 'dec'));
return dec;
}
let name = dec.id.name;
_state2.default.viewState[name] = true;
// avoid wrapping functions
if (_helpers.t.isFunctionExpression(dec.init) || _helpers.t.isArrowFunctionExpression(dec.init)) return dec;
// avoid wrapping in production
if (_helpers.options.production) return dec;
if (!dec.init) {
dec.init = (0, _wrapState.wrapDeclarator)(name, _helpers.t.identifier('undefined'), scope);
dec.motionTracked = true;
return dec;
}
dec.init = (0, _wrapState.wrapDeclarator)(name, dec.init, scope);
node.motionTracked = true;
return dec;
});
// add destructure declarations
if (destructNodes.length) {
return [node].concat(_toConsumableArray(destructNodes));
}
}
}
};
//# sourceMappingURL=VariableDeclaration.js.map
;