UNPKG

5.42 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/index.js"],"names":["parse","qsParse","getOr","get","isEqual","pipe","set","LOCATION","NAVIGATE","REMOVE_QUESTION_MARK","parseQuery","s","exec","createLocation","location","loc","query","type","payload","ACTIONS_HISTORY","PUSH","REPLACE","GO","GO_BACK","GO_FORWARD","createNavigate","action","args","createPushNavigate","createReplaceNavigate","createGoNavigate","createGoBackNavigate","createGoForwardNavigate","INITAL_STATE","historyReducer","state","historyMiddleware","history","store","listen","dispatch","next","historyAction","push","replace","go","goBack","goForward","syncStoreWithHistory"],"mappings":"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","file":"index.js","sourcesContent":["import {parse as qsParse} from 'querystring';\nimport getOr from 'lodash/fp/getOr';\nimport get from 'lodash/fp/get';\nimport isEqual from 'lodash/fp/isEqual';\nimport pipe from 'lodash/fp/pipe';\nimport set from 'lodash/fp/set';\n\nexport const LOCATION = '@@history/LOCATION';\nexport const NAVIGATE = '@@history/NAVIGATE';\n\nconst REMOVE_QUESTION_MARK = /^\\??(.*)/;\nconst parseQuery = pipe(s => REMOVE_QUESTION_MARK.exec(s), get(1), qsParse);\n\nexport const createLocation = location => {\n const loc = pipe(getOr('', 'search'), parseQuery, query => {\n if (isEqual(query, {})) return location;\n return set('query', query, location);\n })(location);\n\n return {\n type: LOCATION,\n payload: {\n ...loc\n }\n };\n};\n\nconst ACTIONS_HISTORY = {\n PUSH: 'push',\n REPLACE: 'replace',\n GO: 'go',\n GO_BACK: 'goBack',\n GO_FORWARD: 'goForward'\n};\n\nconst createNavigate = action => (...args) => {\n return {\n type: NAVIGATE,\n payload: {\n action,\n args\n }\n };\n};\n\nexport const createPushNavigate = createNavigate(ACTIONS_HISTORY.PUSH);\nexport const createReplaceNavigate = createNavigate(ACTIONS_HISTORY.REPLACE);\nexport const createGoNavigate = createNavigate(ACTIONS_HISTORY.GO);\nexport const createGoBackNavigate = createNavigate(ACTIONS_HISTORY.GO_BACK);\nexport const createGoForwardNavigate = createNavigate(ACTIONS_HISTORY.GO_FORWARD);\n\nexport const INITAL_STATE = {};\n\nexport const historyReducer = (state = INITAL_STATE, {type, payload}) => {\n if (type === LOCATION) return payload;\n return state;\n};\n\nexport const historyMiddleware = ({history}) => store => {\n history.listen(location => {\n store.dispatch(createLocation(location));\n });\n\n return next => action => {\n if (action.type === NAVIGATE) {\n const {payload: {action: historyAction, args}} = action;\n\n switch (historyAction) {\n case ACTIONS_HISTORY.PUSH:\n history.push(...args);\n break;\n case ACTIONS_HISTORY.REPLACE:\n history.replace(...args);\n break;\n case ACTIONS_HISTORY.GO:\n history.go(...args);\n break;\n case ACTIONS_HISTORY.GO_BACK:\n history.goBack(...args);\n break;\n case ACTIONS_HISTORY.GO_FORWARD:\n history.goForward(...args);\n break;\n }\n }\n\n return next(action);\n };\n};\n\nexport const syncStoreWithHistory = (store, history) => {\n const action = createLocation(history.location);\n return store.dispatch(action);\n};\n"]}
\No newline at end of file