UNPKG

awv3

Version:
87 lines (66 loc) 3.47 kB
'use strict'; 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;