awv3
Version:
⚡ AWV3 embedded CAD
103 lines (88 loc) • 4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.reducer = exports.actions = exports.types = exports.base = undefined;
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _values = require('babel-runtime/core-js/object/values');
var _values2 = _interopRequireDefault(_values);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _lifecycle = require('../lifecycle');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var scope = 'plugins';
var base = exports.base = (0, _lifecycle.mixin)(scope, plugin);
var types = exports.types = (0, _extends3.default)({}, base.types, {
enable: scope + '/enable',
toggle: scope + '/toggle',
collapse: scope + '/collapse',
toggleCollapse: scope + '/toggleCollapse',
addElement: scope + '/addElement',
removeElement: scope + '/removeElement',
removeAllElements: scope + '/removeAllElements',
closeAllFeatures: scope + '/closeAllFeatures'
});
var actions = exports.actions = (0, _extends3.default)({}, base.actions, {
enable: function enable(id, enabled) {
return { type: types.enable, payload: { id: id, enabled: enabled } };
},
toggle: function toggle(id) {
return { type: types.toggle, payload: { id: id } };
},
collapse: function collapse(id, collapsed) {
return function (dispatch) {
return requestAnimationFrame(function () {
return dispatch({ type: types.collapse, payload: { id: id, collapsed: collapsed } });
});
};
},
toggleCollapse: function toggleCollapse(id) {
return function (dispatch) {
return requestAnimationFrame(function () {
return dispatch({ type: types.toggleCollapse, payload: { id: id } });
});
};
},
addElement: function addElement(id, element) {
return { type: types.addElement, payload: { id: id, element: element } };
},
removeElement: function removeElement(id, element) {
return { type: types.removeElement, payload: { id: id, element: element } };
},
removeAllElements: function removeAllElements(id) {
return { type: types.removeAllElements, payload: { id: id } };
},
closeAllFeatures: function closeAllFeatures() {
return function (dispatch) {
return (0, _values2.default)(base.references).forEach(function (plugin) {
return plugin.feature && dispatch(actions.unregister(plugin.id));
});
};
}
});
function plugin(state, _ref) {
var type = _ref.type,
payload = _ref.payload;
switch (type) {
case types.enable:
return (0, _extends3.default)({}, state, { enabled: payload.enabled, collapsed: !payload.enabled ? true : state.collapsed });
case types.toggle:
return (0, _extends3.default)({}, state, { enabled: !state.enabled, collapsed: state.enabled ? true : state.collapsed });
case types.collapse:
return (0, _extends3.default)({}, state, { collapsed: payload.collapsed });
case types.toggleCollapse:
return (0, _extends3.default)({}, state, { collapsed: !state.collapsed });
case types.addElement:
return (0, _extends3.default)({}, state, { elements: [].concat((0, _toConsumableArray3.default)(state.elements), [payload.element]) });
case types.removeElement:
return (0, _extends3.default)({}, state, { elements: state.elements.filter(function (item) {
return item !== payload.element;
}) });
case types.removeAllElements:
return (0, _extends3.default)({}, state, { elements: [] });
default:
return state;
}
}
var reducer = exports.reducer = base.reducer;