UNPKG

awv3

Version:
103 lines (88 loc) 4 kB
'use strict'; 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;