awv3
Version:
⚡ AWV3 embedded CAD
87 lines (66 loc) • 3.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.reducer = exports.actions = exports.types = exports.base = undefined;
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _extends5 = require('babel-runtime/helpers/extends');
var _extends6 = _interopRequireDefault(_extends5);
var _omitBy = require('lodash/omitBy');
var _omitBy2 = _interopRequireDefault(_omitBy);
var _isObject = require('lodash/isObject');
var _isObject2 = _interopRequireDefault(_isObject);
var _lifecycle = require('../lifecycle');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var scope = 'elements';
var base = exports.base = (0, _lifecycle.mixin)(scope, element);
var types = exports.types = (0, _extends6.default)({}, base.types, {
addChild: scope + '/addChild',
removeChild: scope + '/removeChild',
removeAllChilds: scope + '/removeAllChilds',
event: scope + '/event'
});
var actions = (0, _extends6.default)({}, base.actions, {
addChild: function addChild(id, child) {
var from = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'children';
return { type: types.addChild, id: id, child: child, from: from };
},
removeChild: function removeChild(id, child) {
var from = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'children';
return { type: types.removeChild, id: id, child: child, from: from };
},
removeAllChilds: function removeAllChilds(id) {
var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'children';
return { type: types.removeAllChilds, id: id, from: from };
},
event: function event(id, _event) {
return { type: types.event, id: id, event: (0, _omitBy2.default)(_event, _isObject2.default) };
}
});
exports.actions = actions;
function element(state, _ref) {
var type = _ref.type,
payload = (0, _objectWithoutProperties3.default)(_ref, ['type']);
switch (type) {
case types.addChild:
return (0, _extends6.default)({}, state, (0, _defineProperty3.default)({}, payload.from, [].concat((0, _toConsumableArray3.default)(state[payload.from]), [payload.child])));
case types.removeChild:
return (0, _extends6.default)({}, state, (0, _defineProperty3.default)({}, payload.from, state[payload.from].filter(function (item) {
return item !== payload.child;
})));
case types.removeAllChilds:
// It's worth optimizing the already-empty case to preserve referential equality
// because removeAllChilds is often called idempotently
return state[payload.from].length === 0 ? state : (0, _extends6.default)({}, state, (0, _defineProperty3.default)({}, payload.from, []));
case types.event:
return (0, _extends6.default)({}, state, { lastEvent: payload.event });
default:
return state;
}
}
var reducer = exports.reducer = base.reducer;