UNPKG

awv3

Version:
128 lines (118 loc) 3.21 kB
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties"; import _extends from "@babel/runtime/helpers/extends"; import { mixin } from '../lifecycle'; var scope = 'plugins'; export var base = mixin(scope, plugin); export var types = _extends({}, 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" }); export var actions = _extends({}, base.actions, { enable: function enable(id, enabled) { return { type: types.enable, id: id, enabled: enabled }; }, toggle: function toggle(id) { return { type: types.toggle, id: id }; }, collapse: function collapse(id, collapsed) { return function (dispatch) { return requestAnimationFrame(function () { return dispatch({ type: types.collapse, id: id }); }); }; }, toggleCollapse: function toggleCollapse(id) { return function (dispatch) { return requestAnimationFrame(function () { return dispatch({ type: types.toggleCollapse, id: id }); }); }; }, addElement: function addElement(id, element) { return { type: types.addElement, id: id, element: element }; }, removeElement: function removeElement(id, element) { return { type: types.removeElement, id: id, element: element }; }, removeAllElements: function removeAllElements(id) { return { type: types.removeAllElements, id: id }; }, closeAllFeatures: function closeAllFeatures() { return function (dispatch) { return Object.values(base.references).forEach(function (plugin) { return plugin.feature && dispatch(actions.unregister(plugin.id)); }); }; } }); function plugin(state, _ref) { var type = _ref.type, payload = _objectWithoutProperties(_ref, ["type"]); switch (type) { case types.enable: return _extends({}, state, { enabled: payload.enabled, collapsed: !payload.enabled ? true : state.collapsed }); case types.toggle: return _extends({}, state, { enabled: !state.enabled, collapsed: state.enabled ? true : state.collapsed }); case types.collapse: return _extends({}, state, { collapsed: payload.collapsed }); case types.toggleCollapse: return _extends({}, state, { collapsed: !state.collapsed }); case types.addElement: return _extends({}, state, { elements: state.elements.concat([payload.element]) }); case types.removeElement: return _extends({}, state, { elements: state.elements.filter(function (item) { return item !== payload.element; }) }); case types.removeAllElements: return _extends({}, state, { elements: [] }); default: return state; } } export var reducer = base.reducer;