UNPKG

5.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/index.js"],"names":["LOCATION","NAVIGATE","REMOVE_QUESTION_MARK","parseQuery","s","exec","qsParse","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":";;;;;;;AAAA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;AAEO,MAAMA,8BAAW,oBAAjB;AACA,MAAMC,8BAAW,oBAAjB;;AAEP,MAAMC,uBAAuB,UAA7B;AACA,MAAMC,aAAa,oBAAKC,KAAKF,qBAAqBG,IAArB,CAA0BD,CAA1B,CAAV,EAAwC,mBAAI,CAAJ,CAAxC,EAAgDE,kBAAhD,CAAnB;;AAEO,MAAMC,0CAAiBC,YAAY;AACxC,QAAMC,MAAM,oBAAK,qBAAM,EAAN,EAAU,QAAV,CAAL,EAA0BN,UAA1B,EAAsCO,SAAS;AACzD,QAAI,uBAAQA,KAAR,EAAe,EAAf,CAAJ,EAAwB,OAAOF,QAAP;AACxB,WAAO,mBAAI,OAAJ,EAAaE,KAAb,EAAoBF,QAApB,CAAP;AACD,GAHW,EAGTA,QAHS,CAAZ;;AAKA,SAAO;AACLG,UAAMX,QADD;AAELY,0BACKH,GADL;AAFK,GAAP;AAMD,CAZM;;AAcP,MAAMI,kBAAkB;AACtBC,QAAM,MADgB;AAEtBC,WAAS,SAFa;AAGtBC,MAAI,IAHkB;AAItBC,WAAS,QAJa;AAKtBC,cAAY;AALU,CAAxB;;AAQA,MAAMC,iBAAiBC,UAAU,CAAC,GAAGC,IAAJ,KAAa;AAC5C,SAAO;AACLV,UAAMV,QADD;AAELW,aAAS;AACPQ,YADO;AAEPC;AAFO;AAFJ,GAAP;AAOD,CARD;;AAUO,MAAMC,kDAAqBH,eAAeN,gBAAgBC,IAA/B,CAA3B;AACA,MAAMS,wDAAwBJ,eAAeN,gBAAgBE,OAA/B,CAA9B;AACA,MAAMS,8CAAmBL,eAAeN,gBAAgBG,EAA/B,CAAzB;AACA,MAAMS,sDAAuBN,eAAeN,gBAAgBI,OAA/B,CAA7B;AACA,MAAMS,4DAA0BP,eAAeN,gBAAgBK,UAA/B,CAAhC;;AAEA,MAAMS,sCAAe,EAArB;;AAEA,MAAMC,0CAAiB,CAACC,QAAQF,YAAT,EAAuB,EAAChB,IAAD,EAAOC,OAAP,EAAvB,KAA2C;AACvE,MAAID,SAASX,QAAb,EAAuB,OAAOY,OAAP;AACvB,SAAOiB,KAAP;AACD,CAHM;;AAKA,MAAMC,gDAAoB,CAAC,EAACC,OAAD,EAAD,KAAeC,SAAS;AACvDD,UAAQE,MAAR,CAAezB,YAAY;AACzBwB,UAAME,QAAN,CAAe3B,eAAeC,QAAf,CAAf;AACD,GAFD;;AAIA,SAAO2B,QAAQf,UAAU;AACvB,QAAIA,OAAOT,IAAP,KAAgBV,QAApB,EAA8B;AAC5B,YAAM,EAACW,SAAS,EAACQ,QAAQgB,aAAT,EAAwBf,IAAxB,EAAV,KAA2CD,MAAjD;;AAEA,cAAQgB,aAAR;AACE,aAAKvB,gBAAgBC,IAArB;AACEiB,kBAAQM,IAAR,CAAa,GAAGhB,IAAhB;AACA;AACF,aAAKR,gBAAgBE,OAArB;AACEgB,kBAAQO,OAAR,CAAgB,GAAGjB,IAAnB;AACA;AACF,aAAKR,gBAAgBG,EAArB;AACEe,kBAAQQ,EAAR,CAAW,GAAGlB,IAAd;AACA;AACF,aAAKR,gBAAgBI,OAArB;AACEc,kBAAQS,MAAR,CAAe,GAAGnB,IAAlB;AACA;AACF,aAAKR,gBAAgBK,UAArB;AACEa,kBAAQU,SAAR,CAAkB,GAAGpB,IAArB;AACA;AAfJ;AAiBD;;AAED,WAAOc,KAAKf,MAAL,CAAP;AACD,GAxBD;AAyBD,CA9BM;;AAgCA,MAAMsB,sDAAuB,CAACV,KAAD,EAAQD,OAAR,KAAoB;AACtD,QAAMX,SAASb,eAAewB,QAAQvB,QAAvB,CAAf;AACA,SAAOwB,MAAME,QAAN,CAAed,MAAf,CAAP;AACD,CAHM","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