{"version":3,"sources":["components/UserHeader.js","apis/jsonPlaceholder.js","actions/index.js","components/PostList.js","components/App.js","reducers/index.js","reducers/postsReducer.js","reducers/usersReducer.js","index.js"],"names":["UserHeader","user","this","props","className","name","React","Component","connect","state","ownProps","users","find","id","userId","axios","create","baseURL","fetchPosts","dispatch","a","jsonPlaceholder","get","response","type","payload","data","fetchUser","PostList","fetchPostsAndUsers","posts","map","post","key","title","body","renderList","getState","_","chain","uniq","forEach","value","App","combineReducers","action","store","createStore","reducers","applyMiddleware","thunk","ReactDOM","render","document","querySelector"],"mappings":"8NAGMA,E,uKACK,IACDC,EAASC,KAAKC,MAAdF,KAER,OAAKA,EAKJ,yBAAKG,UAAU,UAAUH,EAAKI,MAJvB,S,GALeC,IAAMC,WAkBhBC,eAJS,SAACC,EAAOC,GAC/B,MAAO,CAAET,KAAMQ,EAAME,MAAMC,MAAK,SAAAX,GAAI,OAAGA,EAAKY,KAAOH,EAASI,aAG9CN,CAEbR,G,gCCrBae,E,OAAAA,EAAMC,OAAO,CAC3BC,QAAS,yC,iBCaGC,EAAa,yDAAM,WAAMC,GAAN,eAAAC,EAAA,sEACRC,EAAgBC,IAAI,UADZ,OACzBC,EADyB,OAE/BJ,EAAS,CACRK,KAAM,cACNC,QAASF,EAASG,OAJY,2CAAN,uDAQbC,EAAY,SAAAd,GAAE,8CAAI,WAAMM,GAAN,eAAAC,EAAA,sEACPC,EAAgBC,IAAhB,iBAA8BT,IADvB,OACxBU,EADwB,OAE9BJ,EAAS,CACRK,KAAM,aACNC,QAASF,EAASG,OAJW,2CAAJ,uDCnBrBE,E,kLAEJ1B,KAAKC,MAAM0B,uB,mCAIX,OAAO3B,KAAKC,MAAM2B,MAAMC,KAAK,SAAAC,GAC3B,OACC,yBAAK5B,UAAU,OAAO6B,IAAKD,EAAKnB,IAC/B,uBAAGT,UAAU,mCACb,yBAAKA,UAAU,WACd,yBAAKA,UAAU,eACd,4BAAK4B,EAAKE,OACV,2BAAIF,EAAKG,OAEV,kBAAC,EAAD,CAAYrB,OAAQkB,EAAKlB,gB,+BAQ9B,OAAO,yBAAKV,UAAU,2BAA2BF,KAAKkC,kB,GAvBjC9B,IAAMC,WA+BdC,eAJS,SAACC,GACxB,MAAO,CAAEqB,MAAOrB,EAAMqB,SAKtB,CAAED,mBDnC+B,yDAAM,WAAOV,EAAUkB,GAAjB,SAAAjB,EAAA,sEACjCD,EAASD,KADwB,OAMvCoB,IAAEC,MAAMF,IAAWP,OACjBC,IAAI,UACJS,OACAC,SAAS,SAAA5B,GAAE,OAAIM,EAASQ,EAAUd,OAClC6B,QAVqC,2CAAN,0DCiCnBlC,CAGboB,GC1Bae,E,uKAPX,OACE,yBAAKvC,UAAU,gBAAgB,kBAAC,EAAD,W,GAJnBE,IAAMC,W,QCCTqC,cAAgB,CAC9Bd,MCLc,WAAyB,IAAxBrB,EAAuB,uDAAf,GAAIoC,EAAW,uCACtC,OAAQA,EAAOrB,MACd,IAAK,cACJ,OAAOqB,EAAOpB,QACf,QACC,OAAOhB,IDCTE,MENc,WAAyB,IAAxBF,EAAuB,uDAAf,GAAIoC,EAAW,uCACtC,OAAQA,EAAOrB,MACd,IAAK,aACJ,MAAM,GAAN,mBAAWf,GAAX,CAAkBoC,EAAOpB,UAC1B,QACC,OAAOhB,MCIJqC,EAAQC,YAAYC,EAAUC,YAAgBC,MAEpDC,IAASC,OACR,kBAAC,IAAD,CAAUN,MAAOA,GAChB,kBAAC,EAAD,OAEDO,SAASC,cAAc,Y","file":"static/js/main.69cc92b7.chunk.js","sourcesContent":["import React from 'react';\nimport { connect } from 'react-redux';\n\nclass UserHeader extends React.Component {\n\trender() {\n\t\tconst { user } = this.props;\n\n\t\tif (!user) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t
{user.name}
\n\t\t);\n\t}\n}\n\nconst mapStateToProps = (state, ownProps) => {\n\treturn { user: state.users.find(user=> user.id === ownProps.userId)}\n}\n\nexport default connect(\n\tmapStateToProps\n)(UserHeader);\n\n","import axios from 'axios';\n\nexport default axios.create({\n\tbaseURL: 'https://jsonplaceholder.typicode.com'\n})","import jsonPlaceholder from '../apis/jsonPlaceholder';\nimport _ from 'lodash';\n\nexport const fetchPostsAndUsers = () => async (dispatch, getState) => {\n\tawait dispatch(fetchPosts());\n\n\t// const uniqueIds = _.uniq(_.map(getState().posts, 'userId'));\n\t// uniqueIds.forEach( id => dispatch(fetchUser(id)));\n\n\t_.chain(getState().posts)\n\t\t.map('userId')\n\t\t.uniq()\n\t\t.forEach( id => dispatch(fetchUser(id)))\n\t\t.value()\n}\n\nexport const fetchPosts = () => async dispatch => {\n\tconst response = await jsonPlaceholder.get('/posts');\n\tdispatch({\n\t\ttype: 'FETCH_POSTS',\n\t\tpayload: response.data\n\t});\n};\n\nexport const fetchUser = id => async dispatch => {\n\tconst response = await jsonPlaceholder.get(`/users/${id}`);\n\tdispatch({\n\t\ttype: 'FETCH_USER',\n\t\tpayload: response.data\n\t});\n}\n\n\n// export const fetchUser = id => dispatch => {\n// \t_fetchUser(id, dispatch);\n// }\n\n// const _fetchUser = _.memoize( async (id, dispatch) => {\n// \tconst response = await jsonPlaceholder.get(`/users/${id}`);\n// \tdispatch({\n// \t\ttype: 'FETCH_USER',\n// \t\tpayload: response.data\n// \t});\n// });\n","import React from 'react';\nimport UserHeader from './UserHeader';\nimport { connect } from 'react-redux';\nimport { fetchPostsAndUsers } from '../actions';\n\nclass PostList extends React.Component {\t\n\tcomponentDidMount(){\n\t\tthis.props.fetchPostsAndUsers();\n\t}\n\n\trenderList() {\n\t\treturn this.props.posts.map( post => {\n\t\t\t\treturn (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t

{post.title}

\n\t\t\t\t\t\t\t\t

{post.body}

\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t);\t\n\t\t\t});\n\t\t}\n\n\trender () {\n\t\treturn
{this.renderList()}
;\n\t}\n}\n\nconst mapStateToProps = (state) => {\n\treturn { posts: state.posts}\n};\n\nexport default connect(\n\tmapStateToProps,\n\t{ fetchPostsAndUsers }\n)(PostList);","import React from 'react';\nimport PostList from './PostList';\n\nclass App extends React.Component {\n\n render() {\n return (\n
\n );\n }\n\n}\n\nexport default App;\n","import { combineReducers } from 'redux';\nimport postsReducer from './postsReducer';\nimport usersReducer from './usersReducer';\n\nexport default combineReducers({\n\tposts: postsReducer,\n\tusers: usersReducer\n});","export default (state = [], action) => {\n\tswitch (action.type) {\n\t\tcase 'FETCH_POSTS':\n\t\t\treturn action.payload;\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}","export default (state = [], action) => {\n\tswitch (action.type) {\n\t\tcase 'FETCH_USER':\n\t\t\treturn [...state, action.payload];\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport thunk from 'redux-thunk';\nimport { Provider } from 'react-redux';\nimport { createStore, applyMiddleware } from 'redux';\n\nimport App from './components/App';\nimport reducers from './reducers';\n\nconst store = createStore(reducers, applyMiddleware(thunk))\n\nReactDOM.render(\n\t\n\t\t\n\t,\n\tdocument.querySelector('#root')\n);"],"sourceRoot":""}