@shopgate/pwa-common
Version:
Common library for the Shopgate Connect PWA.
5 lines • 1.37 kB
JavaScript
function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import cloneDeep from'lodash/cloneDeep';import{stack}from'@virtuous/conductor';import{ROUTE_WILL_ENTER,ROUTE_DID_LEAVE,ROUTE_WILL_LEAVE,ROUTE_DID_UPDATE,ROUTE_DID_ENTER}from"../../constants/ActionTypes";var defaultState={currentRoute:null,stack:[]};/**
* @param {Object} state The current state.
* @param {Object} action The action object.
* @returns {Object}
*/export default function router(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:defaultState;var action=arguments.length>1?arguments[1]:undefined;switch(action.type){case ROUTE_WILL_LEAVE:case ROUTE_DID_LEAVE:{return _extends({},state,{stack:Array.from(stack.getAll().values())});}case ROUTE_WILL_ENTER:case ROUTE_DID_ENTER:return _extends({},state,{stack:Array.from(stack.getAll().values()),currentRoute:cloneDeep(action.route)});case ROUTE_DID_UPDATE:{var _ref2=state.currentRoute||{},currentId=_ref2.id;var updatedId=action.route.id;if(currentId===updatedId){return _extends({},state,{stack:Array.from(stack.getAll().values()),currentRoute:cloneDeep(action.route)});}return state;}default:return state;}}