├── .gitignore
├── README.md
├── build-sandbox
├── 10-empty-project
│ ├── index.html
│ ├── package.json
│ └── src
│ │ └── main.js
├── 100-dev-server
│ ├── .babelrc
│ ├── .browserslistrc
│ ├── package.json
│ ├── public
│ │ └── index.html
│ ├── src
│ │ ├── index.js
│ │ ├── main.scss
│ │ └── react.png
│ └── webpack.config.js
├── 110-prod-config
│ ├── .babelrc
│ ├── .browserslistrc
│ ├── package.json
│ ├── public
│ │ └── index.html
│ ├── src
│ │ ├── index.js
│ │ ├── main.scss
│ │ └── react.png
│ └── webpack.config.js
├── 20-babel-config-files
│ ├── .babelrc
│ ├── index.html
│ ├── package.json
│ └── src
│ │ └── main.js
├── 30-presets
│ ├── .babelrc
│ ├── index.html
│ ├── package.json
│ └── src
│ │ └── main.js
├── 40-jsx
│ ├── .babelrc
│ ├── .browserslistrc
│ ├── .gitignore
│ ├── index.html
│ ├── package.json
│ └── src
│ │ └── main.js
├── 50-webpack-loader
│ ├── .babelrc
│ ├── .browserslistrc
│ ├── .gitignore
│ ├── index.html
│ ├── package.json
│ ├── src
│ │ ├── calc.js
│ │ ├── index.js
│ │ ├── log.js
│ │ └── react.png
│ └── webpack.config.js
├── 60-file-types
│ ├── .babelrc
│ ├── .browserslistrc
│ ├── index.html
│ ├── package.json
│ ├── src
│ │ ├── calc.js
│ │ ├── index.js
│ │ ├── log.js
│ │ └── react.png
│ └── webpack.config.js
├── 70-babel-loader
│ ├── .babelrc
│ ├── .browserslistrc
│ ├── .gitignore
│ ├── index.html
│ ├── package.json
│ ├── src
│ │ ├── index.js
│ │ └── react.png
│ └── webpack.config.js
├── 80-loader-composition
│ ├── .babelrc
│ ├── .browserslistrc
│ ├── index.html
│ ├── package.json
│ ├── src
│ │ ├── index.js
│ │ ├── main.css
│ │ └── react.png
│ └── webpack.config.js
└── 90-html-templates
│ ├── .babelrc
│ ├── .browserslistrc
│ ├── package.json
│ ├── public
│ └── index.html
│ ├── src
│ ├── index.js
│ ├── main.scss
│ └── react.png
│ └── webpack.config.js
├── hooks
└── 10-use-state
│ ├── README.md
│ ├── package.json
│ ├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
│ └── src
│ └── index.js
├── proxy-config-sample
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ └── index.js
├── re-store
├── 10-create-basic-components
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ └── store.js
├── 100-organizing-reducer-code
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions
│ │ └── index.js
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── book-list-item
│ │ │ ├── book-list-item.css
│ │ │ ├── book-list-item.js
│ │ │ └── index.js
│ │ ├── book-list
│ │ │ ├── book-list.css
│ │ │ ├── book-list.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ ├── pages
│ │ │ ├── cart-page.js
│ │ │ ├── home-page.js
│ │ │ └── index.js
│ │ ├── shop-header
│ │ │ ├── index.js
│ │ │ ├── shop-header.css
│ │ │ └── shop-header.js
│ │ ├── shopping-cart-table
│ │ │ ├── index.js
│ │ │ ├── shopping-cart-table.css
│ │ │ └── shopping-cart-table.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── reducers
│ │ ├── book-list.js
│ │ ├── index.js
│ │ └── shopping-cart.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ ├── store.js
│ │ └── utils
│ │ ├── compose.js
│ │ └── index.js
├── 110-store-enhancers
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions
│ │ └── index.js
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── book-list-item
│ │ │ ├── book-list-item.css
│ │ │ ├── book-list-item.js
│ │ │ └── index.js
│ │ ├── book-list
│ │ │ ├── book-list.css
│ │ │ ├── book-list.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ ├── pages
│ │ │ ├── cart-page.js
│ │ │ ├── home-page.js
│ │ │ └── index.js
│ │ ├── shop-header
│ │ │ ├── index.js
│ │ │ ├── shop-header.css
│ │ │ └── shop-header.js
│ │ ├── shopping-cart-table
│ │ │ ├── index.js
│ │ │ ├── shopping-cart-table.css
│ │ │ └── shopping-cart-table.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── reducers
│ │ ├── book-list.js
│ │ ├── index.js
│ │ └── shopping-cart.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ ├── store.js
│ │ └── utils
│ │ ├── compose.js
│ │ └── index.js
├── 120-middleware
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions
│ │ └── index.js
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── book-list-item
│ │ │ ├── book-list-item.css
│ │ │ ├── book-list-item.js
│ │ │ └── index.js
│ │ ├── book-list
│ │ │ ├── book-list.css
│ │ │ ├── book-list.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ ├── pages
│ │ │ ├── cart-page.js
│ │ │ ├── home-page.js
│ │ │ └── index.js
│ │ ├── shop-header
│ │ │ ├── index.js
│ │ │ ├── shop-header.css
│ │ │ └── shop-header.js
│ │ ├── shopping-cart-table
│ │ │ ├── index.js
│ │ │ ├── shopping-cart-table.css
│ │ │ └── shopping-cart-table.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── reducers
│ │ ├── book-list.js
│ │ ├── index.js
│ │ └── shopping-cart.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ ├── store.js
│ │ └── utils
│ │ ├── compose.js
│ │ └── index.js
├── 130-thunk
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions
│ │ └── index.js
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── book-list-item
│ │ │ ├── book-list-item.css
│ │ │ ├── book-list-item.js
│ │ │ └── index.js
│ │ ├── book-list
│ │ │ ├── book-list.css
│ │ │ ├── book-list.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ ├── pages
│ │ │ ├── cart-page.js
│ │ │ ├── home-page.js
│ │ │ └── index.js
│ │ ├── shop-header
│ │ │ ├── index.js
│ │ │ ├── shop-header.css
│ │ │ └── shop-header.js
│ │ ├── shopping-cart-table
│ │ │ ├── index.js
│ │ │ ├── shopping-cart-table.css
│ │ │ └── shopping-cart-table.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── reducers
│ │ ├── book-list.js
│ │ ├── index.js
│ │ └── shopping-cart.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ ├── store.js
│ │ └── utils
│ │ ├── compose.js
│ │ └── index.js
├── 20-redux-components
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions
│ │ └── index.js
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── reducers
│ │ └── index.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ └── store.js
├── 30-connecting-components
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions
│ │ └── index.js
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── book-list-item
│ │ │ ├── book-list-item.css
│ │ │ ├── book-list-item.js
│ │ │ └── index.js
│ │ ├── book-list
│ │ │ ├── book-list.css
│ │ │ ├── book-list.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ ├── pages
│ │ │ ├── cart-page.js
│ │ │ ├── home-page.js
│ │ │ └── index.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── reducers
│ │ └── index.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ ├── store.js
│ │ └── utils
│ │ ├── compose.js
│ │ └── index.js
├── 40-adding-styles
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions
│ │ └── index.js
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── book-list-item
│ │ │ ├── book-list-item.css
│ │ │ ├── book-list-item.js
│ │ │ └── index.js
│ │ ├── book-list
│ │ │ ├── book-list.css
│ │ │ ├── book-list.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ ├── pages
│ │ │ ├── cart-page.js
│ │ │ ├── home-page.js
│ │ │ └── index.js
│ │ ├── shop-header
│ │ │ ├── index.js
│ │ │ ├── shop-header.css
│ │ │ └── shop-header.js
│ │ ├── shopping-cart-table
│ │ │ ├── index.js
│ │ │ ├── shopping-cart-table.css
│ │ │ └── shopping-cart-table.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── reducers
│ │ └── index.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ ├── store.js
│ │ └── utils
│ │ ├── compose.js
│ │ └── index.js
├── 50-async-data
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions
│ │ └── index.js
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── book-list-item
│ │ │ ├── book-list-item.css
│ │ │ ├── book-list-item.js
│ │ │ └── index.js
│ │ ├── book-list
│ │ │ ├── book-list.css
│ │ │ ├── book-list.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ ├── pages
│ │ │ ├── cart-page.js
│ │ │ ├── home-page.js
│ │ │ └── index.js
│ │ ├── shop-header
│ │ │ ├── index.js
│ │ │ ├── shop-header.css
│ │ │ └── shop-header.js
│ │ ├── shopping-cart-table
│ │ │ ├── index.js
│ │ │ ├── shopping-cart-table.css
│ │ │ └── shopping-cart-table.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── reducers
│ │ └── index.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ ├── store.js
│ │ └── utils
│ │ ├── compose.js
│ │ └── index.js
├── 60-error-handling
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions
│ │ └── index.js
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── book-list-item
│ │ │ ├── book-list-item.css
│ │ │ ├── book-list-item.js
│ │ │ └── index.js
│ │ ├── book-list
│ │ │ ├── book-list.css
│ │ │ ├── book-list.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ ├── pages
│ │ │ ├── cart-page.js
│ │ │ ├── home-page.js
│ │ │ └── index.js
│ │ ├── shop-header
│ │ │ ├── index.js
│ │ │ ├── shop-header.css
│ │ │ └── shop-header.js
│ │ ├── shopping-cart-table
│ │ │ ├── index.js
│ │ │ ├── shopping-cart-table.css
│ │ │ └── shopping-cart-table.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── reducers
│ │ └── index.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ ├── store.js
│ │ └── utils
│ │ ├── compose.js
│ │ └── index.js
├── 70-add-element-to-array
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions
│ │ └── index.js
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── book-list-item
│ │ │ ├── book-list-item.css
│ │ │ ├── book-list-item.js
│ │ │ └── index.js
│ │ ├── book-list
│ │ │ ├── book-list.css
│ │ │ ├── book-list.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ ├── pages
│ │ │ ├── cart-page.js
│ │ │ ├── home-page.js
│ │ │ └── index.js
│ │ ├── shop-header
│ │ │ ├── index.js
│ │ │ ├── shop-header.css
│ │ │ └── shop-header.js
│ │ ├── shopping-cart-table
│ │ │ ├── index.js
│ │ │ ├── shopping-cart-table.css
│ │ │ └── shopping-cart-table.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── reducers
│ │ └── index.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ ├── store.js
│ │ └── utils
│ │ ├── compose.js
│ │ └── index.js
├── 80-update-element-in-array
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions
│ │ └── index.js
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── book-list-item
│ │ │ ├── book-list-item.css
│ │ │ ├── book-list-item.js
│ │ │ └── index.js
│ │ ├── book-list
│ │ │ ├── book-list.css
│ │ │ ├── book-list.js
│ │ │ └── index.js
│ │ ├── bookstore-service-context
│ │ │ ├── bookstore-service-context.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── hoc
│ │ │ ├── index.js
│ │ │ └── with-bookstore-service.js
│ │ ├── pages
│ │ │ ├── cart-page.js
│ │ │ ├── home-page.js
│ │ │ └── index.js
│ │ ├── shop-header
│ │ │ ├── index.js
│ │ │ ├── shop-header.css
│ │ │ └── shop-header.js
│ │ ├── shopping-cart-table
│ │ │ ├── index.js
│ │ │ ├── shopping-cart-table.css
│ │ │ └── shopping-cart-table.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.js
│ │ ├── reducers
│ │ └── index.js
│ │ ├── services
│ │ └── bookstore-service.js
│ │ ├── store.js
│ │ └── utils
│ │ ├── compose.js
│ │ └── index.js
└── 90-delete-element-from-array
│ ├── README.md
│ ├── package.json
│ ├── public
│ └── index.html
│ └── src
│ ├── actions
│ └── index.js
│ ├── components
│ ├── app
│ │ ├── app.css
│ │ ├── app.js
│ │ └── index.js
│ ├── book-list-item
│ │ ├── book-list-item.css
│ │ ├── book-list-item.js
│ │ └── index.js
│ ├── book-list
│ │ ├── book-list.css
│ │ ├── book-list.js
│ │ └── index.js
│ ├── bookstore-service-context
│ │ ├── bookstore-service-context.js
│ │ └── index.js
│ ├── error-boundry
│ │ ├── error-boundry.js
│ │ └── index.js
│ ├── error-indicator
│ │ ├── error-indicator.css
│ │ ├── error-indicator.js
│ │ └── index.js
│ ├── hoc
│ │ ├── index.js
│ │ └── with-bookstore-service.js
│ ├── pages
│ │ ├── cart-page.js
│ │ ├── home-page.js
│ │ └── index.js
│ ├── shop-header
│ │ ├── index.js
│ │ ├── shop-header.css
│ │ └── shop-header.js
│ ├── shopping-cart-table
│ │ ├── index.js
│ │ ├── shopping-cart-table.css
│ │ └── shopping-cart-table.js
│ └── spinner
│ │ ├── index.js
│ │ ├── spinner.css
│ │ └── spinner.js
│ ├── index.js
│ ├── reducers
│ └── index.js
│ ├── services
│ └── bookstore-service.js
│ ├── store.js
│ └── utils
│ ├── compose.js
│ └── index.js
├── redux-sandbox
├── 10-redux-ui
│ ├── .gitignore
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ └── index.js
├── 20-bind-action-creators
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions.js
│ │ ├── index.js
│ │ └── reducer.js
├── 30-react-with-redux
│ ├── .gitignore
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions.js
│ │ ├── counter.js
│ │ ├── index.js
│ │ └── reducer.js
├── 40-connect-map-state-to-props
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions.js
│ │ ├── components
│ │ ├── app.js
│ │ └── counter.js
│ │ ├── index.js
│ │ └── reducer.js
├── 50-map-dispatch-to-props
│ ├── .gitignore
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── actions.js
│ │ ├── components
│ │ ├── app.js
│ │ └── counter.js
│ │ ├── index.js
│ │ └── reducer.js
└── 60-map-dispatch-to-props-as-object
│ ├── .gitignore
│ ├── package.json
│ ├── public
│ └── index.html
│ └── src
│ ├── actions.js
│ ├── components
│ ├── app.js
│ └── counter.js
│ ├── index.js
│ └── reducer.js
├── star-db
├── 00-basic-project-structure
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── person-details
│ │ │ ├── index.js
│ │ │ ├── person-details.css
│ │ │ └── person-details.js
│ │ ├── planet-details
│ │ │ ├── index.js
│ │ │ ├── planet-details.css
│ │ │ └── planet-details.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ └── starship-details
│ │ │ ├── index.js
│ │ │ ├── starship-details.css
│ │ │ └── starship-details.js
│ │ ├── index.js
│ │ └── services
│ │ └── swapi-service.js
├── 10-transforming-api-data
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── person-details
│ │ │ ├── index.js
│ │ │ ├── person-details.css
│ │ │ └── person-details.js
│ │ ├── planet-details
│ │ │ ├── index.js
│ │ │ ├── planet-details.css
│ │ │ └── planet-details.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ └── starship-details
│ │ │ ├── index.js
│ │ │ ├── starship-details.css
│ │ │ └── starship-details.js
│ │ ├── index.js
│ │ └── services
│ │ └── swapi-service.js
├── 100-higher-order-components
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── hoc-helpers
│ │ │ ├── index.js
│ │ │ └── with-data.js
│ │ ├── item-details
│ │ │ ├── index.js
│ │ │ ├── item-details.css
│ │ │ └── item-details.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── people-page
│ │ │ ├── index.js
│ │ │ ├── people-page.css
│ │ │ └── people-page.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── row
│ │ │ ├── index.js
│ │ │ ├── row.css
│ │ │ └── row.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ └── swapi-service.js
├── 110-hoc-composition
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── hoc-helpers
│ │ │ ├── index.js
│ │ │ └── with-data.js
│ │ ├── item-details
│ │ │ ├── index.js
│ │ │ ├── item-details.css
│ │ │ └── item-details.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── people-page
│ │ │ ├── index.js
│ │ │ ├── people-page.css
│ │ │ └── people-page.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── row
│ │ │ ├── index.js
│ │ │ ├── row.css
│ │ │ └── row.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ └── sw-components
│ │ │ ├── details.js
│ │ │ ├── index.js
│ │ │ └── item-lists.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ └── swapi-service.js
├── 120-context
│ ├── .gitignore
│ ├── README.md
│ ├── example.txt
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── hoc-helpers
│ │ │ ├── index.js
│ │ │ └── with-data.js
│ │ ├── item-details
│ │ │ ├── index.js
│ │ │ ├── item-details.css
│ │ │ └── item-details.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── people-page
│ │ │ ├── index.js
│ │ │ ├── people-page.css
│ │ │ └── people-page.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── row
│ │ │ ├── index.js
│ │ │ ├── row.css
│ │ │ └── row.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── sw-components
│ │ │ ├── details.js
│ │ │ ├── index.js
│ │ │ └── item-lists.js
│ │ └── swapi-service-context
│ │ │ ├── index.js
│ │ │ └── swapi-service-context.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ ├── dummy-swapi-service.js
│ │ └── swapi-service.js
├── 130-hoc-context
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── hoc-helpers
│ │ │ ├── index.js
│ │ │ ├── with-data.js
│ │ │ └── with-swapi-service.js
│ │ ├── item-details
│ │ │ ├── index.js
│ │ │ ├── item-details.css
│ │ │ └── item-details.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── people-page
│ │ │ ├── index.js
│ │ │ ├── people-page.css
│ │ │ └── people-page.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── row
│ │ │ ├── index.js
│ │ │ ├── row.css
│ │ │ └── row.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── sw-components
│ │ │ ├── index.js
│ │ │ ├── item-lists.js
│ │ │ ├── person-details.js
│ │ │ ├── planet-details.js
│ │ │ └── starship-details.js
│ │ └── swapi-service-context
│ │ │ ├── index.js
│ │ │ └── swapi-service-context.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ ├── dummy-swapi-service.js
│ │ └── swapi-service.js
├── 140-dynamic-context-switch
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── hoc-helpers
│ │ │ ├── index.js
│ │ │ ├── with-data.js
│ │ │ └── with-swapi-service.js
│ │ ├── item-details
│ │ │ ├── index.js
│ │ │ ├── item-details.css
│ │ │ └── item-details.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── people-page
│ │ │ ├── index.js
│ │ │ ├── people-page.css
│ │ │ └── people-page.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── row
│ │ │ ├── index.js
│ │ │ ├── row.css
│ │ │ └── row.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── sw-components
│ │ │ ├── index.js
│ │ │ ├── item-lists.js
│ │ │ ├── person-details.js
│ │ │ ├── planet-details.js
│ │ │ └── starship-details.js
│ │ └── swapi-service-context
│ │ │ ├── index.js
│ │ │ └── swapi-service-context.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ ├── dummy-swapi-service.js
│ │ └── swapi-service.js
├── 150-prop-types
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── hoc-helpers
│ │ │ ├── compose.js
│ │ │ ├── index.js
│ │ │ ├── with-child-function.js
│ │ │ ├── with-data.js
│ │ │ └── with-swapi-service.js
│ │ ├── item-details
│ │ │ ├── index.js
│ │ │ ├── item-details.css
│ │ │ └── item-details.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── pages
│ │ │ ├── index.js
│ │ │ ├── people-page.js
│ │ │ ├── planets-page.js
│ │ │ └── starships-page.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── row
│ │ │ ├── index.js
│ │ │ ├── row.css
│ │ │ └── row.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── sw-components
│ │ │ ├── index.js
│ │ │ ├── item-lists.js
│ │ │ ├── person-details.js
│ │ │ ├── planet-details.js
│ │ │ └── starship-details.js
│ │ └── swapi-service-context
│ │ │ ├── index.js
│ │ │ └── swapi-service-context.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ ├── dummy-swapi-service.js
│ │ └── swapi-service.js
├── 160-basic-routing
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── hoc-helpers
│ │ │ ├── compose.js
│ │ │ ├── index.js
│ │ │ ├── with-child-function.js
│ │ │ ├── with-data.js
│ │ │ └── with-swapi-service.js
│ │ ├── item-details
│ │ │ ├── index.js
│ │ │ ├── item-details.css
│ │ │ └── item-details.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── pages
│ │ │ ├── index.js
│ │ │ ├── people-page.js
│ │ │ ├── planets-page.js
│ │ │ └── starships-page.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── row
│ │ │ ├── index.js
│ │ │ ├── row.css
│ │ │ └── row.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── sw-components
│ │ │ ├── index.js
│ │ │ ├── item-lists.js
│ │ │ ├── person-details.js
│ │ │ ├── planet-details.js
│ │ │ └── starship-details.js
│ │ └── swapi-service-context
│ │ │ ├── index.js
│ │ │ └── swapi-service-context.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ ├── dummy-swapi-service.js
│ │ └── swapi-service.js
├── 170-how-routing-works
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── hoc-helpers
│ │ │ ├── compose.js
│ │ │ ├── index.js
│ │ │ ├── with-child-function.js
│ │ │ ├── with-data.js
│ │ │ └── with-swapi-service.js
│ │ ├── item-details
│ │ │ ├── index.js
│ │ │ ├── item-details.css
│ │ │ └── item-details.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── pages
│ │ │ ├── index.js
│ │ │ ├── people-page.js
│ │ │ ├── planets-page.js
│ │ │ └── starships-page.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── row
│ │ │ ├── index.js
│ │ │ ├── row.css
│ │ │ └── row.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── sw-components
│ │ │ ├── index.js
│ │ │ ├── item-lists.js
│ │ │ ├── person-details.js
│ │ │ ├── planet-details.js
│ │ │ └── starship-details.js
│ │ └── swapi-service-context
│ │ │ ├── index.js
│ │ │ └── swapi-service-context.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ ├── dummy-swapi-service.js
│ │ └── swapi-service.js
├── 180-relative-paths
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── hoc-helpers
│ │ │ ├── compose.js
│ │ │ ├── index.js
│ │ │ ├── with-child-function.js
│ │ │ ├── with-data.js
│ │ │ └── with-swapi-service.js
│ │ ├── item-details
│ │ │ ├── index.js
│ │ │ ├── item-details.css
│ │ │ └── item-details.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── pages
│ │ │ ├── index.js
│ │ │ ├── people-page.js
│ │ │ ├── planets-page.js
│ │ │ └── starships-page.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── row
│ │ │ ├── index.js
│ │ │ ├── row.css
│ │ │ └── row.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── sw-components
│ │ │ ├── index.js
│ │ │ ├── item-lists.js
│ │ │ ├── person-details.js
│ │ │ ├── planet-details.js
│ │ │ └── starship-details.js
│ │ └── swapi-service-context
│ │ │ ├── index.js
│ │ │ └── swapi-service-context.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ ├── dummy-swapi-service.js
│ │ └── swapi-service.js
├── 190-switch-component
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── hoc-helpers
│ │ │ ├── compose.js
│ │ │ ├── index.js
│ │ │ ├── with-child-function.js
│ │ │ ├── with-data.js
│ │ │ └── with-swapi-service.js
│ │ ├── item-details
│ │ │ ├── index.js
│ │ │ ├── item-details.css
│ │ │ └── item-details.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── pages
│ │ │ ├── index.js
│ │ │ ├── login-page.js
│ │ │ ├── people-page.js
│ │ │ ├── planets-page.js
│ │ │ ├── secret-page.js
│ │ │ └── starships-page.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── row
│ │ │ ├── index.js
│ │ │ ├── row.css
│ │ │ └── row.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── sw-components
│ │ │ ├── index.js
│ │ │ ├── item-lists.js
│ │ │ ├── person-details.js
│ │ │ ├── planet-details.js
│ │ │ └── starship-details.js
│ │ └── swapi-service-context
│ │ │ ├── index.js
│ │ │ └── swapi-service-context.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ ├── dummy-swapi-service.js
│ │ └── swapi-service.js
├── 20-handling-api-errors
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── person-details
│ │ │ ├── index.js
│ │ │ ├── person-details.css
│ │ │ └── person-details.js
│ │ ├── planet-details
│ │ │ ├── index.js
│ │ │ ├── planet-details.css
│ │ │ └── planet-details.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ └── starship-details
│ │ │ ├── index.js
│ │ │ ├── starship-details.css
│ │ │ └── starship-details.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ └── swapi-service.js
├── 30-lifecycle-intro
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── person-details
│ │ │ ├── index.js
│ │ │ ├── person-details.css
│ │ │ └── person-details.js
│ │ ├── planet-details
│ │ │ ├── index.js
│ │ │ ├── planet-details.css
│ │ │ └── planet-details.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ └── starship-details
│ │ │ ├── index.js
│ │ │ ├── starship-details.css
│ │ │ └── starship-details.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ └── swapi-service.js
├── 40-component-did-mount-practice
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── person-details
│ │ │ ├── index.js
│ │ │ ├── person-details.css
│ │ │ └── person-details.js
│ │ ├── planet-details
│ │ │ ├── index.js
│ │ │ ├── planet-details.css
│ │ │ └── planet-details.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ └── starship-details
│ │ │ ├── index.js
│ │ │ ├── starship-details.css
│ │ │ └── starship-details.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ └── swapi-service.js
├── 50-component-did-update
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── person-details
│ │ │ ├── index.js
│ │ │ ├── person-details.css
│ │ │ └── person-details.js
│ │ ├── planet-details
│ │ │ ├── index.js
│ │ │ ├── planet-details.css
│ │ │ └── planet-details.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ └── starship-details
│ │ │ ├── index.js
│ │ │ ├── starship-details.css
│ │ │ └── starship-details.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ └── swapi-service.js
├── 60-error-boundries
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── people-page
│ │ │ ├── index.js
│ │ │ ├── people-page.css
│ │ │ └── people-page.js
│ │ ├── person-details
│ │ │ ├── index.js
│ │ │ ├── person-details.css
│ │ │ └── person-details.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ └── swapi-service.js
├── 70-passing-function-as-data-sources
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── people-page
│ │ │ ├── index.js
│ │ │ ├── people-page.css
│ │ │ └── people-page.js
│ │ ├── person-details
│ │ │ ├── index.js
│ │ │ ├── person-details.css
│ │ │ └── person-details.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ └── swapi-service.js
├── 80-children
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ │ └── index.html
│ └── src
│ │ ├── components
│ │ ├── app
│ │ │ ├── app.css
│ │ │ ├── app.js
│ │ │ └── index.js
│ │ ├── error-boundry
│ │ │ ├── error-boundry.js
│ │ │ └── index.js
│ │ ├── error-button
│ │ │ ├── error-button.css
│ │ │ ├── error-button.js
│ │ │ └── index.js
│ │ ├── error-indicator
│ │ │ ├── death-star.png
│ │ │ ├── error-indicator.css
│ │ │ ├── error-indicator.js
│ │ │ └── index.js
│ │ ├── header
│ │ │ ├── header.css
│ │ │ ├── header.js
│ │ │ └── index.js
│ │ ├── item-list
│ │ │ ├── index.js
│ │ │ ├── item-list.css
│ │ │ └── item-list.js
│ │ ├── people-page
│ │ │ ├── index.js
│ │ │ ├── people-page.css
│ │ │ └── people-page.js
│ │ ├── person-details
│ │ │ ├── index.js
│ │ │ ├── person-details.css
│ │ │ └── person-details.js
│ │ ├── random-planet
│ │ │ ├── index.js
│ │ │ ├── random-planet.css
│ │ │ └── random-planet.js
│ │ ├── row
│ │ │ ├── index.js
│ │ │ ├── row.css
│ │ │ └── row.js
│ │ └── spinner
│ │ │ ├── index.js
│ │ │ ├── spinner.css
│ │ │ └── spinner.js
│ │ ├── index.html
│ │ ├── index.js
│ │ └── services
│ │ └── swapi-service.js
└── 90-cloning-elements
│ ├── .gitignore
│ ├── README.md
│ ├── package.json
│ ├── public
│ └── index.html
│ └── src
│ ├── components
│ ├── app
│ │ ├── app.css
│ │ ├── app.js
│ │ └── index.js
│ ├── error-boundry
│ │ ├── error-boundry.js
│ │ └── index.js
│ ├── error-button
│ │ ├── error-button.css
│ │ ├── error-button.js
│ │ └── index.js
│ ├── error-indicator
│ │ ├── death-star.png
│ │ ├── error-indicator.css
│ │ ├── error-indicator.js
│ │ └── index.js
│ ├── header
│ │ ├── header.css
│ │ ├── header.js
│ │ └── index.js
│ ├── item-details
│ │ ├── index.js
│ │ ├── item-details.css
│ │ └── item-details.js
│ ├── item-list
│ │ ├── index.js
│ │ ├── item-list.css
│ │ └── item-list.js
│ ├── people-page
│ │ ├── index.js
│ │ ├── people-page.css
│ │ └── people-page.js
│ ├── random-planet
│ │ ├── index.js
│ │ ├── random-planet.css
│ │ └── random-planet.js
│ ├── row
│ │ ├── index.js
│ │ ├── row.css
│ │ └── row.js
│ └── spinner
│ │ ├── index.js
│ │ ├── spinner.css
│ │ └── spinner.js
│ ├── index.html
│ ├── index.js
│ └── services
│ └── swapi-service.js
└── todo
├── 00-empty-react-project
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ └── index.js
├── 10-elements
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ └── index.js
├── 100-adding-removing-items
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ ├── components
│ ├── app-header
│ │ ├── app-header.css
│ │ ├── app-header.js
│ │ └── index.js
│ ├── app
│ │ ├── app.css
│ │ ├── app.js
│ │ └── index.js
│ ├── item-add-form
│ │ ├── index.js
│ │ ├── item-add-form.css
│ │ └── item-add-form.js
│ ├── item-status-filter
│ │ ├── index.js
│ │ ├── item-status-filter.css
│ │ └── item-status-filter.js
│ ├── search-panel
│ │ ├── index.js
│ │ ├── search-panel.css
│ │ └── search-panel.js
│ ├── todo-list-item
│ │ ├── index.js
│ │ ├── todo-list-item.css
│ │ └── todo-list-item.js
│ └── todo-list
│ │ ├── index.js
│ │ ├── todo-list.css
│ │ └── todo-list.js
│ └── index.js
├── 120-handling-forms
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ ├── components
│ ├── app-header
│ │ ├── app-header.css
│ │ ├── app-header.js
│ │ └── index.js
│ ├── app
│ │ ├── app.css
│ │ ├── app.js
│ │ └── index.js
│ ├── item-add-form
│ │ ├── index.js
│ │ ├── item-add-form.css
│ │ └── item-add-form.js
│ ├── item-status-filter
│ │ ├── index.js
│ │ ├── item-status-filter.css
│ │ └── item-status-filter.js
│ ├── search-panel
│ │ ├── index.js
│ │ ├── search-panel.css
│ │ └── search-panel.js
│ ├── todo-list-item
│ │ ├── index.js
│ │ ├── todo-list-item.css
│ │ └── todo-list-item.js
│ └── todo-list
│ │ ├── index.js
│ │ ├── todo-list.css
│ │ └── todo-list.js
│ └── index.js
├── 20-components
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ └── index.js
├── 30-project-structure
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ ├── components
│ ├── app-header.js
│ ├── search-panel.js
│ ├── todo-list-item.js
│ └── todo-list.js
│ └── index.js
├── 40-props
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ ├── components
│ ├── app-header.js
│ ├── search-panel.js
│ ├── todo-list-item.js
│ └── todo-list.js
│ └── index.js
├── 50-arrays-as-props
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ ├── components
│ ├── app-header.js
│ ├── search-panel.js
│ ├── todo-list-item.js
│ └── todo-list.js
│ └── index.js
├── 60-collections-and-keys
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ ├── components
│ ├── app-header.js
│ ├── search-panel.js
│ ├── todo-list-item.js
│ └── todo-list.js
│ └── index.js
├── 70-importing-css
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ ├── components
│ ├── app-header.css
│ ├── app-header.js
│ ├── item-status-filter.css
│ ├── item-status-filter.js
│ ├── search-panel.css
│ ├── search-panel.js
│ ├── todo-list-item.css
│ ├── todo-list-item.js
│ ├── todo-list.css
│ └── todo-list.js
│ ├── index.css
│ └── index.js
├── 80-folder-per-component
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ ├── components
│ ├── app-header
│ │ ├── app-header.css
│ │ ├── app-header.js
│ │ └── index.js
│ ├── app
│ │ ├── app.css
│ │ ├── app.js
│ │ └── index.js
│ ├── item-status-filter
│ │ ├── index.js
│ │ ├── item-status-filter.css
│ │ └── item-status-filter.js
│ ├── search-panel
│ │ ├── index.js
│ │ ├── search-panel.css
│ │ └── search-panel.js
│ ├── todo-list-item
│ │ ├── index.js
│ │ ├── todo-list-item.css
│ │ └── todo-list-item.js
│ └── todo-list
│ │ ├── index.js
│ │ ├── todo-list.css
│ │ └── todo-list.js
│ └── index.js
├── 90-events-and-state
├── .gitignore
├── README.md
├── package.json
├── public
│ └── index.html
└── src
│ ├── components
│ ├── app-header
│ │ ├── app-header.css
│ │ ├── app-header.js
│ │ └── index.js
│ ├── app
│ │ ├── app.css
│ │ ├── app.js
│ │ └── index.js
│ ├── item-status-filter
│ │ ├── index.js
│ │ ├── item-status-filter.css
│ │ └── item-status-filter.js
│ ├── search-panel
│ │ ├── index.js
│ │ ├── search-panel.css
│ │ └── search-panel.js
│ ├── todo-list-item
│ │ ├── index.js
│ │ ├── todo-list-item.css
│ │ └── todo-list-item.js
│ └── todo-list
│ │ ├── index.js
│ │ ├── todo-list.css
│ │ └── todo-list.js
│ └── index.js
└── todo-final
├── .gitignore
├── README.md
├── package.json
├── public
└── index.html
└── src
├── components
├── app-header
│ ├── app-header.css
│ ├── app-header.js
│ └── index.js
├── app
│ ├── app.css
│ ├── app.js
│ └── index.js
├── item-add-form
│ ├── index.js
│ ├── item-add-form.css
│ └── item-add-form.js
├── item-status-filter
│ ├── index.js
│ ├── item-status-filter.css
│ └── item-status-filter.js
├── search-panel
│ ├── index.js
│ ├── search-panel.css
│ └── search-panel.js
├── todo-list-item
│ ├── index.js
│ ├── todo-list-item.css
│ └── todo-list-item.js
└── todo-list
│ ├── index.js
│ ├── todo-list.css
│ └── todo-list.js
└── index.js
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .idea
3 | .DS_Store
4 | package-lock.json
5 |
--------------------------------------------------------------------------------
/build-sandbox/10-empty-project/src/main.js:
--------------------------------------------------------------------------------
1 |
2 | class App {
3 |
4 | run() {
5 | const name = 'World';
6 | console.log(`Hello ${name}`);
7 | }
8 | }
9 |
10 | const app = new App();
11 | app.run();
12 |
--------------------------------------------------------------------------------
/build-sandbox/100-dev-server/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 chrome versions
2 | last 2 firefox versions
3 | last 1 edge versions
4 |
--------------------------------------------------------------------------------
/build-sandbox/100-dev-server/src/main.scss:
--------------------------------------------------------------------------------
1 | $body-color: white;
2 |
3 | body {
4 | background-color: $body-color;
5 | }
6 |
--------------------------------------------------------------------------------
/build-sandbox/100-dev-server/src/react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/100-dev-server/src/react.png
--------------------------------------------------------------------------------
/build-sandbox/110-prod-config/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 chrome versions
2 | last 2 firefox versions
3 | last 1 edge versions
4 |
--------------------------------------------------------------------------------
/build-sandbox/110-prod-config/src/main.scss:
--------------------------------------------------------------------------------
1 | $body-color: white;
2 |
3 | body {
4 | background-color: $body-color;
5 | }
6 |
--------------------------------------------------------------------------------
/build-sandbox/110-prod-config/src/react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/110-prod-config/src/react.png
--------------------------------------------------------------------------------
/build-sandbox/20-babel-config-files/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": [
3 | "@babel/plugin-transform-template-literals",
4 | "@babel/plugin-transform-classes",
5 | "@babel/plugin-transform-block-scoping"
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/build-sandbox/20-babel-config-files/src/main.js:
--------------------------------------------------------------------------------
1 | class App {
2 |
3 | run() {
4 | const name = 'World';
5 | console.log(`Hello ${name}`);
6 | }
7 | }
8 |
9 | const app = new App();
10 | app.run();
--------------------------------------------------------------------------------
/build-sandbox/30-presets/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["@babel/env"],
3 | "plugins": [
4 | "@babel/proposal-class-properties"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/build-sandbox/30-presets/src/main.js:
--------------------------------------------------------------------------------
1 | class App {
2 |
3 | run = (name = 'World') => {
4 | console.log(`Hello ${name}`);
5 | };
6 | }
7 |
8 | const app = new App();
9 | app.run();
10 |
--------------------------------------------------------------------------------
/build-sandbox/40-jsx/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 chrome versions
2 | last 2 firefox versions
3 | last 1 edge versions
4 |
--------------------------------------------------------------------------------
/build-sandbox/40-jsx/.gitignore:
--------------------------------------------------------------------------------
1 | package-lock.json
2 | build
3 | .idea
4 | node_modules
5 | .DS_Store
6 |
--------------------------------------------------------------------------------
/build-sandbox/40-jsx/src/main.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 |
4 | const App = () =>
Hello
;
5 |
6 | ReactDOM.render(,
7 | document.getElementById('root'));
8 |
--------------------------------------------------------------------------------
/build-sandbox/50-webpack-loader/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 chrome versions
2 | last 2 firefox versions
3 | last 1 edge versions
4 |
--------------------------------------------------------------------------------
/build-sandbox/50-webpack-loader/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | package-lock.json
3 | build
4 | .idea
5 | node_modules
6 | .DS_Store
7 |
--------------------------------------------------------------------------------
/build-sandbox/50-webpack-loader/src/calc.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | export default class Calc {
4 |
5 | add(...args) {
6 | return args.reduce((a, b) => a + b, 0);
7 | }
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/build-sandbox/50-webpack-loader/src/log.js:
--------------------------------------------------------------------------------
1 |
2 | export default class Log {
3 |
4 | log(msg) {
5 | console.log('============');
6 | console.log(msg);
7 | console.log('============');
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/build-sandbox/50-webpack-loader/src/react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/50-webpack-loader/src/react.png
--------------------------------------------------------------------------------
/build-sandbox/60-file-types/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 chrome versions
2 | last 2 firefox versions
3 | last 1 edge versions
4 |
--------------------------------------------------------------------------------
/build-sandbox/60-file-types/src/calc.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | export default class Calc {
4 |
5 | add(...args) {
6 | return args.reduce((a, b) => a + b, 0);
7 | }
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/build-sandbox/60-file-types/src/log.js:
--------------------------------------------------------------------------------
1 |
2 | export default class Log {
3 |
4 | log(msg) {
5 | console.log('============');
6 | console.log(msg);
7 | console.log('============');
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/build-sandbox/60-file-types/src/react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/60-file-types/src/react.png
--------------------------------------------------------------------------------
/build-sandbox/70-babel-loader/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 chrome versions
2 | last 2 firefox versions
3 | last 1 edge versions
4 |
--------------------------------------------------------------------------------
/build-sandbox/70-babel-loader/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | package-lock.json
3 | build
4 | .idea
5 | node_modules
6 | .DS_Store
7 |
--------------------------------------------------------------------------------
/build-sandbox/70-babel-loader/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 |
4 | const App = () => Hello
;
5 |
6 | ReactDOM.render(, document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/build-sandbox/70-babel-loader/src/react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/70-babel-loader/src/react.png
--------------------------------------------------------------------------------
/build-sandbox/80-loader-composition/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 chrome versions
2 | last 2 firefox versions
3 | last 1 edge versions
4 |
--------------------------------------------------------------------------------
/build-sandbox/80-loader-composition/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import './main.css';
4 |
5 | const App = () => Hello
;
6 |
7 | ReactDOM.render(, document.getElementById('root'));
8 |
--------------------------------------------------------------------------------
/build-sandbox/80-loader-composition/src/main.css:
--------------------------------------------------------------------------------
1 | body {
2 | background-color: coral;
3 | }
4 |
--------------------------------------------------------------------------------
/build-sandbox/80-loader-composition/src/react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/80-loader-composition/src/react.png
--------------------------------------------------------------------------------
/build-sandbox/90-html-templates/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 chrome versions
2 | last 2 firefox versions
3 | last 1 edge versions
4 |
--------------------------------------------------------------------------------
/build-sandbox/90-html-templates/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import './main.scss';
4 |
5 | const App = () => Hello
;
6 |
7 | ReactDOM.render(, document.getElementById('root'));
8 |
--------------------------------------------------------------------------------
/build-sandbox/90-html-templates/src/main.scss:
--------------------------------------------------------------------------------
1 | $body-color: olive;
2 |
3 | body {
4 | background-color: $body-color;
5 | }
6 |
--------------------------------------------------------------------------------
/build-sandbox/90-html-templates/src/react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/90-html-templates/src/react.png
--------------------------------------------------------------------------------
/hooks/10-use-state/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/hooks/10-use-state/public/favicon.ico
--------------------------------------------------------------------------------
/hooks/10-use-state/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/hooks/10-use-state/public/logo192.png
--------------------------------------------------------------------------------
/hooks/10-use-state/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/hooks/10-use-state/public/logo512.png
--------------------------------------------------------------------------------
/hooks/10-use-state/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 |
--------------------------------------------------------------------------------
/proxy-config-sample/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/proxy-config-sample/README.md
--------------------------------------------------------------------------------
/proxy-config-sample/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Proxy settings test
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/proxy-config-sample/src/index.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | fetch('/api/people/1/')
4 | .then(res => res.json())
5 | .then(data => console.log(data));
6 |
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/10-create-basic-components/README.md
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/10-create-basic-components/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/components/app/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './app.css';
3 |
4 | const App = () => {
5 | return App
;
6 | };
7 |
8 | export default App;
9 |
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/10-create-basic-components/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/index.js:
--------------------------------------------------------------------------------
1 |
2 | console.log('hello world');
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/services/bookstore-service.js:
--------------------------------------------------------------------------------
1 |
2 | export default class BookstoreService {
3 |
4 | getBooks() {
5 | return [];
6 | }
7 |
8 | }
--------------------------------------------------------------------------------
/re-store/10-create-basic-components/src/store.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/10-create-basic-components/src/store.js
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/100-organizing-reducer-code/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/book-list-item/index.js:
--------------------------------------------------------------------------------
1 | import BookListItem from './book-list-item';
2 |
3 | export default BookListItem;
4 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/book-list/book-list.css:
--------------------------------------------------------------------------------
1 | .book-list {
2 | list-style: none;
3 | }
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/book-list/index.js:
--------------------------------------------------------------------------------
1 | import BookList from './book-list';
2 |
3 | export default BookList;
4 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/pages/cart-page.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CartPage = () => {
4 | return Cart Page
5 | };
6 |
7 | export default CartPage;
8 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomePage from './home-page';
2 | import CartPage from './cart-page';
3 |
4 | export {
5 | HomePage,
6 | CartPage
7 | };
8 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/shop-header/index.js:
--------------------------------------------------------------------------------
1 | import ShopHeader from './shop-header';
2 |
3 | export default ShopHeader;
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/shopping-cart-table/index.js:
--------------------------------------------------------------------------------
1 | import ShoppingCartTable from './shopping-cart-table';
2 |
3 | export default ShoppingCartTable;
4 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/100-organizing-reducer-code/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/store.js:
--------------------------------------------------------------------------------
1 | import { createStore } from 'redux';
2 |
3 | import reducer from './reducers';
4 |
5 | const store = createStore(reducer);
6 |
7 | export default store;
8 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/utils/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
7 |
--------------------------------------------------------------------------------
/re-store/100-organizing-reducer-code/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import compose from './compose';
2 |
3 | export {
4 | compose
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/README.md:
--------------------------------------------------------------------------------
1 | Правильно писать ENHANCER
2 |
3 | Enhance - улучшать, усовершенствовать
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/110-store-enhancers/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/book-list-item/index.js:
--------------------------------------------------------------------------------
1 | import BookListItem from './book-list-item';
2 |
3 | export default BookListItem;
4 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/book-list/book-list.css:
--------------------------------------------------------------------------------
1 | .book-list {
2 | list-style: none;
3 | }
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/book-list/index.js:
--------------------------------------------------------------------------------
1 | import BookList from './book-list';
2 |
3 | export default BookList;
4 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/error-indicator/error-indicator.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/110-store-enhancers/src/components/error-indicator/error-indicator.css
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/pages/cart-page.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CartPage = () => {
4 | return Cart Page
5 | };
6 |
7 | export default CartPage;
8 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomePage from './home-page';
2 | import CartPage from './cart-page';
3 |
4 | export {
5 | HomePage,
6 | CartPage
7 | };
8 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/shop-header/index.js:
--------------------------------------------------------------------------------
1 | import ShopHeader from './shop-header';
2 |
3 | export default ShopHeader;
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/shopping-cart-table/index.js:
--------------------------------------------------------------------------------
1 | import ShoppingCartTable from './shopping-cart-table';
2 |
3 | export default ShoppingCartTable;
4 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/110-store-enhancers/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/utils/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
7 |
--------------------------------------------------------------------------------
/re-store/110-store-enhancers/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import compose from './compose';
2 |
3 | export {
4 | compose
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/120-middleware/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/120-middleware/README.md
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/120-middleware/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/book-list-item/index.js:
--------------------------------------------------------------------------------
1 | import BookListItem from './book-list-item';
2 |
3 | export default BookListItem;
4 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/book-list/book-list.css:
--------------------------------------------------------------------------------
1 | .book-list {
2 | list-style: none;
3 | }
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/book-list/index.js:
--------------------------------------------------------------------------------
1 | import BookList from './book-list';
2 |
3 | export default BookList;
4 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/error-indicator/error-indicator.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/120-middleware/src/components/error-indicator/error-indicator.css
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/error-indicator/error-indicator.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './error-indicator.css';
3 |
4 | const ErrorIndicator = () => {
5 | return Error!
;
6 | };
7 |
8 | export default ErrorIndicator;
9 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/pages/cart-page.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CartPage = () => {
4 | return Cart Page
5 | };
6 |
7 | export default CartPage;
8 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomePage from './home-page';
2 | import CartPage from './cart-page';
3 |
4 | export {
5 | HomePage,
6 | CartPage
7 | };
8 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/shop-header/index.js:
--------------------------------------------------------------------------------
1 | import ShopHeader from './shop-header';
2 |
3 | export default ShopHeader;
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/shopping-cart-table/index.js:
--------------------------------------------------------------------------------
1 | import ShoppingCartTable from './shopping-cart-table';
2 |
3 | export default ShoppingCartTable;
4 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/120-middleware/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/120-middleware/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/utils/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
7 |
--------------------------------------------------------------------------------
/re-store/120-middleware/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import compose from './compose';
2 |
3 | export {
4 | compose
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/130-thunk/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/130-thunk/README.md
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/130-thunk/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/book-list-item/index.js:
--------------------------------------------------------------------------------
1 | import BookListItem from './book-list-item';
2 |
3 | export default BookListItem;
4 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/book-list/book-list.css:
--------------------------------------------------------------------------------
1 | .book-list {
2 | list-style: none;
3 | }
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/book-list/index.js:
--------------------------------------------------------------------------------
1 | import BookList from './book-list';
2 |
3 | export default BookList;
4 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/error-indicator/error-indicator.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/130-thunk/src/components/error-indicator/error-indicator.css
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/error-indicator/error-indicator.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './error-indicator.css';
3 |
4 | const ErrorIndicator = () => {
5 | return Error!
;
6 | };
7 |
8 | export default ErrorIndicator;
9 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/pages/cart-page.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CartPage = () => {
4 | return Cart Page
5 | };
6 |
7 | export default CartPage;
8 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomePage from './home-page';
2 | import CartPage from './cart-page';
3 |
4 | export {
5 | HomePage,
6 | CartPage
7 | };
8 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/shop-header/index.js:
--------------------------------------------------------------------------------
1 | import ShopHeader from './shop-header';
2 |
3 | export default ShopHeader;
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/shopping-cart-table/index.js:
--------------------------------------------------------------------------------
1 | import ShoppingCartTable from './shopping-cart-table';
2 |
3 | export default ShoppingCartTable;
4 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/130-thunk/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/130-thunk/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/utils/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
7 |
--------------------------------------------------------------------------------
/re-store/130-thunk/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import compose from './compose';
2 |
3 | export {
4 | compose
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/actions/index.js:
--------------------------------------------------------------------------------
1 |
2 | const booksLoaded = (newBooks) => {
3 | return {
4 | type: 'BOOKS_LOADED',
5 | payload: newBooks
6 | };
7 | };
8 |
9 | export {
10 | booksLoaded
11 | };
12 |
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/20-redux-components/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/components/app/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './app.css';
3 |
4 | const App = () => {
5 | return App
;
6 | };
7 |
8 | export default App;
9 |
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/components/error-indicator/error-indicator.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/20-redux-components/src/components/error-indicator/error-indicator.css
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/20-redux-components/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/index.js:
--------------------------------------------------------------------------------
1 |
2 | console.log('hello world');
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/services/bookstore-service.js:
--------------------------------------------------------------------------------
1 |
2 | export default class BookstoreService {
3 |
4 | getBooks() {
5 | return [];
6 | }
7 |
8 | }
--------------------------------------------------------------------------------
/re-store/20-redux-components/src/store.js:
--------------------------------------------------------------------------------
1 | import { createStore } from 'redux';
2 |
3 | import reducer from './reducers';
4 |
5 | const store = createStore(reducer);
6 |
7 | export default store;
8 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/actions/index.js:
--------------------------------------------------------------------------------
1 |
2 | const booksLoaded = (newBooks) => {
3 | return {
4 | type: 'BOOKS_LOADED',
5 | payload: newBooks
6 | };
7 | };
8 |
9 | export {
10 | booksLoaded
11 | };
12 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/30-connecting-components/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/book-list-item/book-list-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/30-connecting-components/src/components/book-list-item/book-list-item.css
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/book-list-item/index.js:
--------------------------------------------------------------------------------
1 | import BookListItem from './book-list-item';
2 |
3 | export default BookListItem;
4 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/book-list/book-list.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/30-connecting-components/src/components/book-list/book-list.css
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/book-list/index.js:
--------------------------------------------------------------------------------
1 | import BookList from './book-list';
2 |
3 | export default BookList;
4 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/error-indicator/error-indicator.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/30-connecting-components/src/components/error-indicator/error-indicator.css
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/pages/cart-page.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CartPage = () => {
4 | return Cart Page
5 | };
6 |
7 | export default CartPage;
8 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomePage from './home-page';
2 | import CartPage from './cart-page';
3 |
4 | export {
5 | HomePage,
6 | CartPage
7 | };
8 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/30-connecting-components/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/store.js:
--------------------------------------------------------------------------------
1 | import { createStore } from 'redux';
2 |
3 | import reducer from './reducers';
4 |
5 | const store = createStore(reducer);
6 |
7 | export default store;
8 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/utils/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
7 |
--------------------------------------------------------------------------------
/re-store/30-connecting-components/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import compose from './compose';
2 |
3 | export {
4 | compose
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/actions/index.js:
--------------------------------------------------------------------------------
1 |
2 | const booksLoaded = (newBooks) => {
3 | return {
4 | type: 'BOOKS_LOADED',
5 | payload: newBooks
6 | };
7 | };
8 |
9 | export {
10 | booksLoaded
11 | };
12 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/40-adding-styles/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/book-list-item/index.js:
--------------------------------------------------------------------------------
1 | import BookListItem from './book-list-item';
2 |
3 | export default BookListItem;
4 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/book-list/book-list.css:
--------------------------------------------------------------------------------
1 | .book-list {
2 | list-style: none;
3 | }
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/book-list/index.js:
--------------------------------------------------------------------------------
1 | import BookList from './book-list';
2 |
3 | export default BookList;
4 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/error-indicator/error-indicator.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/40-adding-styles/src/components/error-indicator/error-indicator.css
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/error-indicator/error-indicator.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './error-indicator.css';
3 |
4 | const ErrorIndicator = () => {
5 | return Error!
;
6 | };
7 |
8 | export default ErrorIndicator;
9 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/pages/cart-page.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CartPage = () => {
4 | return Cart Page
5 | };
6 |
7 | export default CartPage;
8 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomePage from './home-page';
2 | import CartPage from './cart-page';
3 |
4 | export {
5 | HomePage,
6 | CartPage
7 | };
8 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/shop-header/index.js:
--------------------------------------------------------------------------------
1 | import ShopHeader from './shop-header';
2 |
3 | export default ShopHeader;
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/shopping-cart-table/index.js:
--------------------------------------------------------------------------------
1 | import ShoppingCartTable from './shopping-cart-table';
2 |
3 | export default ShoppingCartTable;
4 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/40-adding-styles/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/store.js:
--------------------------------------------------------------------------------
1 | import { createStore } from 'redux';
2 |
3 | import reducer from './reducers';
4 |
5 | const store = createStore(reducer);
6 |
7 | export default store;
8 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/utils/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
7 |
--------------------------------------------------------------------------------
/re-store/40-adding-styles/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import compose from './compose';
2 |
3 | export {
4 | compose
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/actions/index.js:
--------------------------------------------------------------------------------
1 |
2 | const booksLoaded = (newBooks) => {
3 | return {
4 | type: 'BOOKS_LOADED',
5 | payload: newBooks
6 | };
7 | };
8 |
9 | export {
10 | booksLoaded
11 | };
12 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/50-async-data/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/book-list-item/index.js:
--------------------------------------------------------------------------------
1 | import BookListItem from './book-list-item';
2 |
3 | export default BookListItem;
4 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/book-list/book-list.css:
--------------------------------------------------------------------------------
1 | .book-list {
2 | list-style: none;
3 | }
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/book-list/index.js:
--------------------------------------------------------------------------------
1 | import BookList from './book-list';
2 |
3 | export default BookList;
4 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/error-indicator/error-indicator.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/50-async-data/src/components/error-indicator/error-indicator.css
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/error-indicator/error-indicator.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './error-indicator.css';
3 |
4 | const ErrorIndicator = () => {
5 | return Error!
;
6 | };
7 |
8 | export default ErrorIndicator;
9 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/pages/cart-page.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CartPage = () => {
4 | return Cart Page
5 | };
6 |
7 | export default CartPage;
8 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomePage from './home-page';
2 | import CartPage from './cart-page';
3 |
4 | export {
5 | HomePage,
6 | CartPage
7 | };
8 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/shop-header/index.js:
--------------------------------------------------------------------------------
1 | import ShopHeader from './shop-header';
2 |
3 | export default ShopHeader;
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/shopping-cart-table/index.js:
--------------------------------------------------------------------------------
1 | import ShoppingCartTable from './shopping-cart-table';
2 |
3 | export default ShoppingCartTable;
4 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/50-async-data/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/50-async-data/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/store.js:
--------------------------------------------------------------------------------
1 | import { createStore } from 'redux';
2 |
3 | import reducer from './reducers';
4 |
5 | const store = createStore(reducer);
6 |
7 | export default store;
8 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/utils/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
7 |
--------------------------------------------------------------------------------
/re-store/50-async-data/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import compose from './compose';
2 |
3 | export {
4 | compose
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/60-error-handling/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/book-list-item/index.js:
--------------------------------------------------------------------------------
1 | import BookListItem from './book-list-item';
2 |
3 | export default BookListItem;
4 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/book-list/book-list.css:
--------------------------------------------------------------------------------
1 | .book-list {
2 | list-style: none;
3 | }
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/book-list/index.js:
--------------------------------------------------------------------------------
1 | import BookList from './book-list';
2 |
3 | export default BookList;
4 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/error-indicator/error-indicator.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/60-error-handling/src/components/error-indicator/error-indicator.css
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/error-indicator/error-indicator.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './error-indicator.css';
3 |
4 | const ErrorIndicator = () => {
5 | return Error!
;
6 | };
7 |
8 | export default ErrorIndicator;
9 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/pages/cart-page.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CartPage = () => {
4 | return Cart Page
5 | };
6 |
7 | export default CartPage;
8 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomePage from './home-page';
2 | import CartPage from './cart-page';
3 |
4 | export {
5 | HomePage,
6 | CartPage
7 | };
8 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/shop-header/index.js:
--------------------------------------------------------------------------------
1 | import ShopHeader from './shop-header';
2 |
3 | export default ShopHeader;
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/shopping-cart-table/index.js:
--------------------------------------------------------------------------------
1 | import ShoppingCartTable from './shopping-cart-table';
2 |
3 | export default ShoppingCartTable;
4 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/60-error-handling/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/store.js:
--------------------------------------------------------------------------------
1 | import { createStore } from 'redux';
2 |
3 | import reducer from './reducers';
4 |
5 | const store = createStore(reducer);
6 |
7 | export default store;
8 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/utils/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
7 |
--------------------------------------------------------------------------------
/re-store/60-error-handling/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import compose from './compose';
2 |
3 | export {
4 | compose
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/70-add-element-to-array/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/book-list-item/index.js:
--------------------------------------------------------------------------------
1 | import BookListItem from './book-list-item';
2 |
3 | export default BookListItem;
4 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/book-list/book-list.css:
--------------------------------------------------------------------------------
1 | .book-list {
2 | list-style: none;
3 | }
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/book-list/index.js:
--------------------------------------------------------------------------------
1 | import BookList from './book-list';
2 |
3 | export default BookList;
4 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/error-indicator/error-indicator.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/70-add-element-to-array/src/components/error-indicator/error-indicator.css
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/pages/cart-page.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CartPage = () => {
4 | return Cart Page
5 | };
6 |
7 | export default CartPage;
8 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomePage from './home-page';
2 | import CartPage from './cart-page';
3 |
4 | export {
5 | HomePage,
6 | CartPage
7 | };
8 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/shop-header/index.js:
--------------------------------------------------------------------------------
1 | import ShopHeader from './shop-header';
2 |
3 | export default ShopHeader;
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/shopping-cart-table/index.js:
--------------------------------------------------------------------------------
1 | import ShoppingCartTable from './shopping-cart-table';
2 |
3 | export default ShoppingCartTable;
4 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/70-add-element-to-array/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/store.js:
--------------------------------------------------------------------------------
1 | import { createStore } from 'redux';
2 |
3 | import reducer from './reducers';
4 |
5 | const store = createStore(reducer);
6 |
7 | export default store;
8 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/utils/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
7 |
--------------------------------------------------------------------------------
/re-store/70-add-element-to-array/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import compose from './compose';
2 |
3 | export {
4 | compose
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/80-update-element-in-array/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/book-list-item/index.js:
--------------------------------------------------------------------------------
1 | import BookListItem from './book-list-item';
2 |
3 | export default BookListItem;
4 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/book-list/book-list.css:
--------------------------------------------------------------------------------
1 | .book-list {
2 | list-style: none;
3 | }
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/book-list/index.js:
--------------------------------------------------------------------------------
1 | import BookList from './book-list';
2 |
3 | export default BookList;
4 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/pages/cart-page.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CartPage = () => {
4 | return Cart Page
5 | };
6 |
7 | export default CartPage;
8 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomePage from './home-page';
2 | import CartPage from './cart-page';
3 |
4 | export {
5 | HomePage,
6 | CartPage
7 | };
8 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/shop-header/index.js:
--------------------------------------------------------------------------------
1 | import ShopHeader from './shop-header';
2 |
3 | export default ShopHeader;
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/shopping-cart-table/index.js:
--------------------------------------------------------------------------------
1 | import ShoppingCartTable from './shopping-cart-table';
2 |
3 | export default ShoppingCartTable;
4 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/80-update-element-in-array/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/store.js:
--------------------------------------------------------------------------------
1 | import { createStore } from 'redux';
2 |
3 | import reducer from './reducers';
4 |
5 | const store = createStore(reducer);
6 |
7 | export default store;
8 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/utils/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
7 |
--------------------------------------------------------------------------------
/re-store/80-update-element-in-array/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import compose from './compose';
2 |
3 | export {
4 | compose
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/90-delete-element-from-array/src/components/app/app.css
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/book-list-item/index.js:
--------------------------------------------------------------------------------
1 | import BookListItem from './book-list-item';
2 |
3 | export default BookListItem;
4 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/book-list/book-list.css:
--------------------------------------------------------------------------------
1 | .book-list {
2 | list-style: none;
3 | }
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/book-list/index.js:
--------------------------------------------------------------------------------
1 | import BookList from './book-list';
2 |
3 | export default BookList;
4 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/hoc/index.js:
--------------------------------------------------------------------------------
1 | import withBookstoreService from './with-bookstore-service';
2 |
3 | export {
4 | withBookstoreService
5 | };
6 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/pages/cart-page.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CartPage = () => {
4 | return Cart Page
5 | };
6 |
7 | export default CartPage;
8 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/pages/index.js:
--------------------------------------------------------------------------------
1 | import HomePage from './home-page';
2 | import CartPage from './cart-page';
3 |
4 | export {
5 | HomePage,
6 | CartPage
7 | };
8 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/shop-header/index.js:
--------------------------------------------------------------------------------
1 | import ShopHeader from './shop-header';
2 |
3 | export default ShopHeader;
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/shopping-cart-table/index.js:
--------------------------------------------------------------------------------
1 | import ShoppingCartTable from './shopping-cart-table';
2 |
3 | export default ShoppingCartTable;
4 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/spinner/spinner.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/90-delete-element-from-array/src/components/spinner/spinner.css
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/components/spinner/spinner.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './spinner.css';
3 |
4 | const Spinner = () => {
5 | return loading...
;
6 | };
7 |
8 | export default Spinner;
9 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/store.js:
--------------------------------------------------------------------------------
1 | import { createStore } from 'redux';
2 |
3 | import reducer from './reducers';
4 |
5 | const store = createStore(reducer);
6 |
7 | export default store;
8 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/utils/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
7 |
--------------------------------------------------------------------------------
/re-store/90-delete-element-from-array/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import compose from './compose';
2 |
3 | export {
4 | compose
5 | };
6 |
--------------------------------------------------------------------------------
/redux-sandbox/20-bind-action-creators/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/redux-sandbox/20-bind-action-creators/README.md
--------------------------------------------------------------------------------
/redux-sandbox/20-bind-action-creators/src/actions.js:
--------------------------------------------------------------------------------
1 | export const inc = () => ({ type: 'INC' });
2 |
3 | export const dec = () => ({ type: 'DEC' });
4 |
5 | export const rnd = (payload) => ({ type: 'RND', payload });
6 |
--------------------------------------------------------------------------------
/redux-sandbox/30-react-with-redux/src/actions.js:
--------------------------------------------------------------------------------
1 | export const inc = () => ({ type: 'INC' });
2 |
3 | export const dec = () => ({ type: 'DEC' });
4 |
5 | export const rnd = (payload) => ({ type: 'RND', payload });
6 |
--------------------------------------------------------------------------------
/redux-sandbox/40-connect-map-state-to-props/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/redux-sandbox/40-connect-map-state-to-props/README.md
--------------------------------------------------------------------------------
/redux-sandbox/40-connect-map-state-to-props/src/actions.js:
--------------------------------------------------------------------------------
1 | export const inc = () => ({ type: 'INC' });
2 |
3 | export const dec = () => ({ type: 'DEC' });
4 |
5 | export const rnd = (payload) => ({ type: 'RND', payload });
6 |
--------------------------------------------------------------------------------
/redux-sandbox/40-connect-map-state-to-props/src/components/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Counter from './counter';
3 |
4 | const App = () => {
5 | return ;
6 | };
7 |
8 | export default App;
9 |
--------------------------------------------------------------------------------
/redux-sandbox/50-map-dispatch-to-props/src/actions.js:
--------------------------------------------------------------------------------
1 | export const inc = () => ({ type: 'INC' });
2 |
3 | export const dec = () => ({ type: 'DEC' });
4 |
5 | export const rnd = (payload) => ({ type: 'RND', payload });
6 |
--------------------------------------------------------------------------------
/redux-sandbox/50-map-dispatch-to-props/src/components/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Counter from './counter';
3 |
4 | const App = () => {
5 | return ;
6 | };
7 |
8 | export default App;
9 |
--------------------------------------------------------------------------------
/redux-sandbox/60-map-dispatch-to-props-as-object/src/components/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Counter from './counter';
3 |
4 | const App = () => {
5 | return ;
6 | };
7 |
8 | export default App;
9 |
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/README.md:
--------------------------------------------------------------------------------
1 | - Axios
2 | - Superagent
3 | - Got
4 | - Request
5 | - Reqwest
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/00-basic-project-structure/src/components/app/app.css
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/components/item-list/item-list.css:
--------------------------------------------------------------------------------
1 | .item-list .list-group-item {
2 | cursor: pointer;
3 | }
4 |
5 | .item-list .list-group-item:hover {
6 | background-color: #444;
7 | }
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/components/person-details/index.js:
--------------------------------------------------------------------------------
1 | import PersonDetails from './person-details';
2 |
3 | export default PersonDetails;
4 |
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/components/planet-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/00-basic-project-structure/src/components/planet-details/index.js
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/components/planet-details/planet-details.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/00-basic-project-structure/src/components/planet-details/planet-details.css
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/components/planet-details/planet-details.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/00-basic-project-structure/src/components/planet-details/planet-details.js
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/components/starship-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/00-basic-project-structure/src/components/starship-details/index.js
--------------------------------------------------------------------------------
/star-db/00-basic-project-structure/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/README.md:
--------------------------------------------------------------------------------
1 | - Axios
2 | - Superagent
3 | - Got
4 | - Request
5 | - Reqwest
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/app/app.css
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/item-list/item-list.css:
--------------------------------------------------------------------------------
1 | .item-list .list-group-item {
2 | cursor: pointer;
3 | }
4 |
5 | .item-list .list-group-item:hover {
6 | background-color: #444;
7 | }
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/person-details/index.js:
--------------------------------------------------------------------------------
1 | import PersonDetails from './person-details';
2 |
3 | export default PersonDetails;
4 |
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/planet-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/planet-details/index.js
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/planet-details/planet-details.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/planet-details/planet-details.css
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/planet-details/planet-details.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/planet-details/planet-details.js
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/starship-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/starship-details/index.js
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/starship-details/starship-details.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/starship-details/starship-details.css
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/components/starship-details/starship-details.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/starship-details/starship-details.js
--------------------------------------------------------------------------------
/star-db/10-transforming-api-data/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/100-higher-order-components/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/100-higher-order-components/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/hoc-helpers/index.js:
--------------------------------------------------------------------------------
1 | import withData from './with-data';
2 |
3 | export {
4 | withData
5 | };
6 |
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/item-details/index.js:
--------------------------------------------------------------------------------
1 | import ItemDetails, { Record } from './item-details';
2 |
3 | export default ItemDetails;
4 |
5 | export { Record };
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/people-page/index.js:
--------------------------------------------------------------------------------
1 | import PeoplePage from './people-page';
2 |
3 | export default PeoplePage;
4 |
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/people-page/people-page.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/100-higher-order-components/src/components/people-page/people-page.css
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/100-higher-order-components/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/100-higher-order-components/src/index.html
--------------------------------------------------------------------------------
/star-db/100-higher-order-components/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/110-hoc-composition/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/110-hoc-composition/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/hoc-helpers/index.js:
--------------------------------------------------------------------------------
1 | import withData from './with-data';
2 |
3 | export {
4 | withData
5 | };
6 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/item-details/index.js:
--------------------------------------------------------------------------------
1 | import ItemDetails, { Record } from './item-details';
2 |
3 | export default ItemDetails;
4 |
5 | export { Record };
6 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/people-page/index.js:
--------------------------------------------------------------------------------
1 | import PeoplePage from './people-page';
2 |
3 | export default PeoplePage;
4 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/people-page/people-page.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/110-hoc-composition/src/components/people-page/people-page.css
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/110-hoc-composition/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/110-hoc-composition/src/index.html
--------------------------------------------------------------------------------
/star-db/110-hoc-composition/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/120-context/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/120-context/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/120-context/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/120-context/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/120-context/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/120-context/src/components/hoc-helpers/index.js:
--------------------------------------------------------------------------------
1 | import withData from './with-data';
2 |
3 | export {
4 | withData
5 | };
6 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/item-details/index.js:
--------------------------------------------------------------------------------
1 | import ItemDetails, { Record } from './item-details';
2 |
3 | export default ItemDetails;
4 |
5 | export { Record };
6 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/item-list/item-list.css:
--------------------------------------------------------------------------------
1 | .item-list {
2 | margin-bottom: 1rem;
3 | }
4 |
5 | .item-list .list-group-item {
6 | cursor: pointer;
7 | }
8 |
9 | .item-list .list-group-item:hover {
10 | background-color: #444;
11 | }
--------------------------------------------------------------------------------
/star-db/120-context/src/components/people-page/index.js:
--------------------------------------------------------------------------------
1 | import PeoplePage from './people-page';
2 |
3 | export default PeoplePage;
4 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/people-page/people-page.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/120-context/src/components/people-page/people-page.css
--------------------------------------------------------------------------------
/star-db/120-context/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/120-context/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/120-context/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/120-context/src/components/swapi-service-context/index.js:
--------------------------------------------------------------------------------
1 | import {
2 | SwapiServiceProvider,
3 | SwapiServiceConsumer
4 | } from './swapi-service-context';
5 |
6 | export {
7 | SwapiServiceProvider,
8 | SwapiServiceConsumer
9 | };
10 |
--------------------------------------------------------------------------------
/star-db/120-context/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/120-context/src/index.html
--------------------------------------------------------------------------------
/star-db/120-context/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/130-hoc-context/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/130-hoc-context/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/hoc-helpers/index.js:
--------------------------------------------------------------------------------
1 | import withData from './with-data';
2 | import withSwapiService from './with-swapi-service';
3 |
4 | export {
5 | withData,
6 | withSwapiService
7 | };
8 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/item-details/index.js:
--------------------------------------------------------------------------------
1 | import ItemDetails, { Record } from './item-details';
2 |
3 | export default ItemDetails;
4 |
5 | export { Record };
6 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/people-page/index.js:
--------------------------------------------------------------------------------
1 | import PeoplePage from './people-page';
2 |
3 | export default PeoplePage;
4 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/people-page/people-page.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/130-hoc-context/src/components/people-page/people-page.css
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/130-hoc-context/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/130-hoc-context/src/index.html
--------------------------------------------------------------------------------
/star-db/130-hoc-context/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/140-dynamic-context-switch/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/140-dynamic-context-switch/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/hoc-helpers/index.js:
--------------------------------------------------------------------------------
1 | import withData from './with-data';
2 | import withSwapiService from './with-swapi-service';
3 |
4 | export {
5 | withData,
6 | withSwapiService
7 | };
8 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/item-details/index.js:
--------------------------------------------------------------------------------
1 | import ItemDetails, { Record } from './item-details';
2 |
3 | export default ItemDetails;
4 |
5 | export { Record };
6 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/people-page/index.js:
--------------------------------------------------------------------------------
1 | import PeoplePage from './people-page';
2 |
3 | export default PeoplePage;
4 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/people-page/people-page.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/140-dynamic-context-switch/src/components/people-page/people-page.css
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/140-dynamic-context-switch/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/140-dynamic-context-switch/src/index.html
--------------------------------------------------------------------------------
/star-db/140-dynamic-context-switch/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/150-prop-types/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/150-prop-types/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/hoc-helpers/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/item-details/index.js:
--------------------------------------------------------------------------------
1 | import ItemDetails, { Record } from './item-details';
2 |
3 | export default ItemDetails;
4 |
5 | export { Record };
6 |
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/150-prop-types/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/150-prop-types/src/index.html
--------------------------------------------------------------------------------
/star-db/150-prop-types/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/160-basic-routing/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/160-basic-routing/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/hoc-helpers/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/item-details/index.js:
--------------------------------------------------------------------------------
1 | import ItemDetails, { Record } from './item-details';
2 |
3 | export default ItemDetails;
4 |
5 | export { Record };
6 |
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/160-basic-routing/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/160-basic-routing/src/index.html
--------------------------------------------------------------------------------
/star-db/160-basic-routing/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/170-how-routing-works/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/170-how-routing-works/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/hoc-helpers/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/item-details/index.js:
--------------------------------------------------------------------------------
1 | import ItemDetails, { Record } from './item-details';
2 |
3 | export default ItemDetails;
4 |
5 | export { Record };
6 |
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/170-how-routing-works/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/170-how-routing-works/src/index.html
--------------------------------------------------------------------------------
/star-db/170-how-routing-works/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/180-relative-paths/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/180-relative-paths/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/hoc-helpers/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/item-details/index.js:
--------------------------------------------------------------------------------
1 | import ItemDetails, { Record } from './item-details';
2 |
3 | export default ItemDetails;
4 |
5 | export { Record };
6 |
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/180-relative-paths/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/180-relative-paths/src/index.html
--------------------------------------------------------------------------------
/star-db/180-relative-paths/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/190-switch-component/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/190-switch-component/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/hoc-helpers/compose.js:
--------------------------------------------------------------------------------
1 | const compose = (...funcs) => (comp) => {
2 | return funcs.reduceRight(
3 | (wrapped, f) => f(wrapped), comp);
4 | };
5 |
6 | export default compose;
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/item-details/index.js:
--------------------------------------------------------------------------------
1 | import ItemDetails, { Record } from './item-details';
2 |
3 | export default ItemDetails;
4 |
5 | export { Record };
6 |
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/190-switch-component/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/190-switch-component/src/index.html
--------------------------------------------------------------------------------
/star-db/190-switch-component/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/README.md:
--------------------------------------------------------------------------------
1 | - Axios
2 | - Superagent
3 | - Got
4 | - Request
5 | - Reqwest
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/app/app.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/app/app.css
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/person-details/index.js:
--------------------------------------------------------------------------------
1 | import PersonDetails from './person-details';
2 |
3 | export default PersonDetails;
4 |
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/planet-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/planet-details/index.js
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/planet-details/planet-details.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/planet-details/planet-details.css
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/planet-details/planet-details.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/planet-details/planet-details.js
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/starship-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/starship-details/index.js
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/starship-details/starship-details.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/starship-details/starship-details.css
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/components/starship-details/starship-details.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/starship-details/starship-details.js
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/index.html
--------------------------------------------------------------------------------
/star-db/20-handling-api-errors/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .toggle-planet {
2 | margin-bottom: 1rem;
3 | }
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/person-details/index.js:
--------------------------------------------------------------------------------
1 | import PersonDetails from './person-details';
2 |
3 | export default PersonDetails;
4 |
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/planet-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/planet-details/index.js
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/planet-details/planet-details.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/planet-details/planet-details.css
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/planet-details/planet-details.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/planet-details/planet-details.js
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/starship-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/starship-details/index.js
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/starship-details/starship-details.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/starship-details/starship-details.css
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/components/starship-details/starship-details.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/starship-details/starship-details.js
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/index.html
--------------------------------------------------------------------------------
/star-db/30-lifecycle-intro/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .toggle-planet {
2 | margin-bottom: 1rem;
3 | }
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/40-component-did-mount-practice/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/components/person-details/index.js:
--------------------------------------------------------------------------------
1 | import PersonDetails from './person-details';
2 |
3 | export default PersonDetails;
4 |
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/components/planet-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/40-component-did-mount-practice/src/components/planet-details/index.js
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/components/starship-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/40-component-did-mount-practice/src/components/starship-details/index.js
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/40-component-did-mount-practice/src/index.html
--------------------------------------------------------------------------------
/star-db/40-component-did-mount-practice/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .toggle-planet {
2 | margin-bottom: 1rem;
3 | }
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/person-details/index.js:
--------------------------------------------------------------------------------
1 | import PersonDetails from './person-details';
2 |
3 | export default PersonDetails;
4 |
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/planet-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/planet-details/index.js
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/planet-details/planet-details.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/planet-details/planet-details.css
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/planet-details/planet-details.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/planet-details/planet-details.js
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/starship-details/index.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/starship-details/index.js
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/starship-details/starship-details.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/starship-details/starship-details.css
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/components/starship-details/starship-details.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/starship-details/starship-details.js
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/index.html
--------------------------------------------------------------------------------
/star-db/50-component-did-update/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/60-error-boundries/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/60-error-boundries/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/people-page/index.js:
--------------------------------------------------------------------------------
1 | import PeoplePage from './people-page';
2 |
3 | export default PeoplePage;
4 |
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/people-page/people-page.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/60-error-boundries/src/components/people-page/people-page.css
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/person-details/index.js:
--------------------------------------------------------------------------------
1 | import PersonDetails from './person-details';
2 |
3 | export default PersonDetails;
4 |
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/60-error-boundries/src/index.html
--------------------------------------------------------------------------------
/star-db/60-error-boundries/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/components/people-page/index.js:
--------------------------------------------------------------------------------
1 | import PeoplePage from './people-page';
2 |
3 | export default PeoplePage;
4 |
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/components/person-details/index.js:
--------------------------------------------------------------------------------
1 | import PersonDetails from './person-details';
2 |
3 | export default PersonDetails;
4 |
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/70-passing-function-as-data-sources/src/index.html
--------------------------------------------------------------------------------
/star-db/70-passing-function-as-data-sources/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/80-children/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/80-children/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/80-children/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/80-children/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/80-children/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/80-children/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/80-children/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/80-children/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/80-children/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/80-children/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/80-children/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/80-children/src/components/item-list/item-list.css:
--------------------------------------------------------------------------------
1 | .item-list {
2 | margin-bottom: 1rem;
3 | }
4 |
5 | .item-list .list-group-item {
6 | cursor: pointer;
7 | }
8 |
9 | .item-list .list-group-item:hover {
10 | background-color: #444;
11 | }
--------------------------------------------------------------------------------
/star-db/80-children/src/components/people-page/index.js:
--------------------------------------------------------------------------------
1 | import PeoplePage from './people-page';
2 |
3 | export default PeoplePage;
4 |
--------------------------------------------------------------------------------
/star-db/80-children/src/components/people-page/people-page.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/80-children/src/components/people-page/people-page.css
--------------------------------------------------------------------------------
/star-db/80-children/src/components/person-details/index.js:
--------------------------------------------------------------------------------
1 | import PersonDetails from './person-details';
2 |
3 | export default PersonDetails;
4 |
--------------------------------------------------------------------------------
/star-db/80-children/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/80-children/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/80-children/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/80-children/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/80-children/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/80-children/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/80-children/src/index.html
--------------------------------------------------------------------------------
/star-db/80-children/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .button-row {
2 | margin: 0 0 1rem 0;
3 | }
4 |
5 | .button-row button {
6 | margin-right: 1rem;
7 | }
8 |
9 | .stardb-app .row {
10 | margin-bottom: 1rem;
11 | }
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/error-boundry/index.js:
--------------------------------------------------------------------------------
1 | import ErrorBoundry from './error-boundry';
2 |
3 | export default ErrorBoundry;
4 |
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/error-button/error-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/90-cloning-elements/src/components/error-button/error-button.css
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/error-button/index.js:
--------------------------------------------------------------------------------
1 | import ErrorButton from './error-button';
2 |
3 | export default ErrorButton;
4 |
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/error-indicator/death-star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/90-cloning-elements/src/components/error-indicator/death-star.png
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/error-indicator/index.js:
--------------------------------------------------------------------------------
1 | import ErrorIndicator from './error-indicator';
2 |
3 | export default ErrorIndicator;
4 |
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './header';
2 |
3 | export default Header;
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/item-details/index.js:
--------------------------------------------------------------------------------
1 | import ItemDetails, { Record } from './item-details';
2 |
3 | export default ItemDetails;
4 |
5 | export { Record };
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/item-list/index.js:
--------------------------------------------------------------------------------
1 | import ItemList from './item-list';
2 |
3 | export default ItemList;
4 |
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/people-page/index.js:
--------------------------------------------------------------------------------
1 | import PeoplePage from './people-page';
2 |
3 | export default PeoplePage;
4 |
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/people-page/people-page.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/90-cloning-elements/src/components/people-page/people-page.css
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/random-planet/index.js:
--------------------------------------------------------------------------------
1 | import RandomPlanet from './random-planet';
2 |
3 | export default RandomPlanet;
4 |
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/row/index.js:
--------------------------------------------------------------------------------
1 | import Row from './row';
2 |
3 | export default Row;
4 |
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/row/row.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/90-cloning-elements/src/components/row/row.css
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/components/spinner/index.js:
--------------------------------------------------------------------------------
1 | import Spinner from './spinner';
2 |
3 | export default Spinner;
4 |
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/90-cloning-elements/src/index.html
--------------------------------------------------------------------------------
/star-db/90-cloning-elements/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
7 |
--------------------------------------------------------------------------------
/todo/00-empty-react-project/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/00-empty-react-project/src/index.js:
--------------------------------------------------------------------------------
1 | console.log('Hello World');
--------------------------------------------------------------------------------
/todo/10-elements/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/components/app-header/index.js:
--------------------------------------------------------------------------------
1 | import AppHeader from './app-header';
2 |
3 | export default AppHeader;
4 |
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .todo-app {
2 | margin: 2rem auto 0 auto;
3 | max-width: 400px;
4 | }
5 |
6 | .top-panel {
7 | margin: 1rem 0;
8 | }
9 |
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/components/item-add-form/index.js:
--------------------------------------------------------------------------------
1 | import ItemAddForm from './item-add-form';
2 |
3 | export default ItemAddForm;
4 |
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/components/item-add-form/item-add-form.css:
--------------------------------------------------------------------------------
1 | .item-add-form {
2 | margin-top: 10px;
3 | }
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/components/item-status-filter/index.js:
--------------------------------------------------------------------------------
1 | import ItemStatusFilter from './item-status-filter';
2 |
3 | export default ItemStatusFilter;
4 |
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/components/search-panel/index.js:
--------------------------------------------------------------------------------
1 | import SearchPanel from './search-panel';
2 |
3 | export default SearchPanel;
4 |
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/components/search-panel/search-panel.css:
--------------------------------------------------------------------------------
1 | .search-input {
2 | width: auto;
3 | flex-grow: 1;
4 | margin-right: 3px;
5 | }
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/components/todo-list-item/index.js:
--------------------------------------------------------------------------------
1 | import TodoListItem from './todo-list-item';
2 |
3 | export default TodoListItem;
4 |
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/components/todo-list/index.js:
--------------------------------------------------------------------------------
1 | import TodoList from './todo-list';
2 |
3 | export default TodoList;
4 |
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/components/todo-list/todo-list.css:
--------------------------------------------------------------------------------
1 | .todo-list .list-group-item {
2 | padding: .25rem .75rem;
3 | }
4 |
--------------------------------------------------------------------------------
/todo/100-adding-removing-items/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 |
4 | import App from './components/app';
5 |
6 | ReactDOM.render(,
7 | document.getElementById('root'));
8 |
--------------------------------------------------------------------------------
/todo/120-handling-forms/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/app-header/app-header.css:
--------------------------------------------------------------------------------
1 | .app-header {
2 | align-items: flex-end;
3 | }
4 |
5 | .app-header h1 {
6 | flex-grow: 1;
7 | }
8 |
9 | .app-header h2 {
10 | font-size: 1.2rem;
11 | color: grey;
12 | }
13 |
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/app-header/index.js:
--------------------------------------------------------------------------------
1 | import AppHeader from './app-header';
2 |
3 | export default AppHeader;
4 |
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .todo-app {
2 | margin: 2rem auto 0 auto;
3 | max-width: 400px;
4 | }
5 |
6 | .top-panel {
7 | margin: 1rem 0;
8 | }
9 |
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/item-add-form/index.js:
--------------------------------------------------------------------------------
1 | import ItemAddForm from './item-add-form';
2 |
3 | export default ItemAddForm;
4 |
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/item-add-form/item-add-form.css:
--------------------------------------------------------------------------------
1 | .item-add-form {
2 | margin-top: 10px;
3 | }
4 |
5 | .item-add-form input {
6 | margin-right: 3px;
7 | }
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/item-status-filter/index.js:
--------------------------------------------------------------------------------
1 | import ItemStatusFilter from './item-status-filter';
2 |
3 | export default ItemStatusFilter;
4 |
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/item-status-filter/item-status-filter.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/todo/120-handling-forms/src/components/item-status-filter/item-status-filter.css
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/search-panel/index.js:
--------------------------------------------------------------------------------
1 | import SearchPanel from './search-panel';
2 |
3 | export default SearchPanel;
4 |
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/search-panel/search-panel.css:
--------------------------------------------------------------------------------
1 | .search-input {
2 | width: auto;
3 | flex-grow: 1;
4 | margin-right: 3px;
5 | }
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/todo-list-item/index.js:
--------------------------------------------------------------------------------
1 | import TodoListItem from './todo-list-item';
2 |
3 | export default TodoListItem;
4 |
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/todo-list/index.js:
--------------------------------------------------------------------------------
1 | import TodoList from './todo-list';
2 |
3 | export default TodoList;
4 |
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/components/todo-list/todo-list.css:
--------------------------------------------------------------------------------
1 | .todo-list .list-group-item {
2 | padding: .25rem .75rem;
3 | }
4 |
--------------------------------------------------------------------------------
/todo/120-handling-forms/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 |
4 | import App from './components/app';
5 |
6 | ReactDOM.render(,
7 | document.getElementById('root'));
8 |
--------------------------------------------------------------------------------
/todo/20-components/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/30-project-structure/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/30-project-structure/src/components/app-header.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const AppHeader = () => {
4 | return My Todo List
;
5 | };
6 |
7 | export default AppHeader;
--------------------------------------------------------------------------------
/todo/30-project-structure/src/components/search-panel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const SearchPanel = () => {
4 | return ;
5 | };
6 |
7 | export default SearchPanel;
8 |
--------------------------------------------------------------------------------
/todo/30-project-structure/src/components/todo-list-item.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const TodoListItem = () => {
4 | return Drink Coffee;
5 | };
6 |
7 | export default TodoListItem;
8 |
--------------------------------------------------------------------------------
/todo/40-props/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/40-props/src/components/app-header.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const AppHeader = () => {
4 | return My Todo List
;
5 | };
6 |
7 | export default AppHeader;
--------------------------------------------------------------------------------
/todo/40-props/src/components/search-panel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const SearchPanel = () => {
4 | return ;
5 | };
6 |
7 | export default SearchPanel;
8 |
--------------------------------------------------------------------------------
/todo/50-arrays-as-props/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/50-arrays-as-props/src/components/app-header.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const AppHeader = () => {
4 | return My Todo List
;
5 | };
6 |
7 | export default AppHeader;
--------------------------------------------------------------------------------
/todo/50-arrays-as-props/src/components/search-panel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const SearchPanel = () => {
4 | return ;
5 | };
6 |
7 | export default SearchPanel;
8 |
--------------------------------------------------------------------------------
/todo/60-collections-and-keys/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/60-collections-and-keys/src/components/app-header.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const AppHeader = () => {
4 | return My Todo List
;
5 | };
6 |
7 | export default AppHeader;
--------------------------------------------------------------------------------
/todo/60-collections-and-keys/src/components/search-panel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const SearchPanel = () => {
4 | return ;
5 | };
6 |
7 | export default SearchPanel;
8 |
--------------------------------------------------------------------------------
/todo/70-importing-css/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/70-importing-css/src/components/app-header.css:
--------------------------------------------------------------------------------
1 | .app-header {
2 | align-items: flex-end;
3 | }
4 |
5 | .app-header h1 {
6 | flex-grow: 1;
7 | }
8 |
9 | .app-header h2 {
10 | font-size: 1.2rem;
11 | color: grey;
12 | }
13 |
--------------------------------------------------------------------------------
/todo/70-importing-css/src/components/item-status-filter.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/todo/70-importing-css/src/components/item-status-filter.css
--------------------------------------------------------------------------------
/todo/70-importing-css/src/components/search-panel.css:
--------------------------------------------------------------------------------
1 | .search-input {
2 | width: auto;
3 | flex-grow: 1;
4 | margin-right: 3px;
5 | }
--------------------------------------------------------------------------------
/todo/70-importing-css/src/components/todo-list.css:
--------------------------------------------------------------------------------
1 | .todo-list .list-group-item {
2 | padding: .25rem .75rem;
3 | }
4 |
--------------------------------------------------------------------------------
/todo/70-importing-css/src/index.css:
--------------------------------------------------------------------------------
1 | .todo-app {
2 | margin: 2rem auto 0 auto;
3 | max-width: 400px;
4 | }
5 |
6 | .top-panel {
7 | margin: 1rem 0;
8 | }
9 |
--------------------------------------------------------------------------------
/todo/80-folder-per-component/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/components/app-header/app-header.css:
--------------------------------------------------------------------------------
1 | .app-header {
2 | align-items: flex-end;
3 | }
4 |
5 | .app-header h1 {
6 | flex-grow: 1;
7 | }
8 |
9 | .app-header h2 {
10 | font-size: 1.2rem;
11 | color: grey;
12 | }
13 |
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/components/app-header/index.js:
--------------------------------------------------------------------------------
1 | import AppHeader from './app-header';
2 |
3 | export default AppHeader;
4 |
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .todo-app {
2 | margin: 2rem auto 0 auto;
3 | max-width: 400px;
4 | }
5 |
6 | .top-panel {
7 | margin: 1rem 0;
8 | }
9 |
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/components/item-status-filter/index.js:
--------------------------------------------------------------------------------
1 | import ItemStatusFilter from './item-status-filter';
2 |
3 | export default ItemStatusFilter;
4 |
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/components/item-status-filter/item-status-filter.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/todo/80-folder-per-component/src/components/item-status-filter/item-status-filter.css
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/components/search-panel/index.js:
--------------------------------------------------------------------------------
1 | import SearchPanel from './search-panel';
2 |
3 | export default SearchPanel;
4 |
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/components/search-panel/search-panel.css:
--------------------------------------------------------------------------------
1 | .search-input {
2 | width: auto;
3 | flex-grow: 1;
4 | margin-right: 3px;
5 | }
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/components/todo-list-item/index.js:
--------------------------------------------------------------------------------
1 | import TodoListItem from './todo-list-item';
2 |
3 | export default TodoListItem;
4 |
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/components/todo-list/index.js:
--------------------------------------------------------------------------------
1 | import TodoList from './todo-list';
2 |
3 | export default TodoList;
4 |
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/components/todo-list/todo-list.css:
--------------------------------------------------------------------------------
1 | .todo-list .list-group-item {
2 | padding: .25rem .75rem;
3 | }
4 |
--------------------------------------------------------------------------------
/todo/80-folder-per-component/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 |
4 | import App from './components/app';
5 |
6 | ReactDOM.render(,
7 | document.getElementById('root'));
8 |
--------------------------------------------------------------------------------
/todo/90-events-and-state/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/components/app-header/app-header.css:
--------------------------------------------------------------------------------
1 | .app-header {
2 | align-items: flex-end;
3 | }
4 |
5 | .app-header h1 {
6 | flex-grow: 1;
7 | }
8 |
9 | .app-header h2 {
10 | font-size: 1.2rem;
11 | color: grey;
12 | }
13 |
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/components/app-header/index.js:
--------------------------------------------------------------------------------
1 | import AppHeader from './app-header';
2 |
3 | export default AppHeader;
4 |
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .todo-app {
2 | margin: 2rem auto 0 auto;
3 | max-width: 400px;
4 | }
5 |
6 | .top-panel {
7 | margin: 1rem 0;
8 | }
9 |
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/components/item-status-filter/index.js:
--------------------------------------------------------------------------------
1 | import ItemStatusFilter from './item-status-filter';
2 |
3 | export default ItemStatusFilter;
4 |
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/components/item-status-filter/item-status-filter.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/todo/90-events-and-state/src/components/item-status-filter/item-status-filter.css
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/components/search-panel/index.js:
--------------------------------------------------------------------------------
1 | import SearchPanel from './search-panel';
2 |
3 | export default SearchPanel;
4 |
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/components/search-panel/search-panel.css:
--------------------------------------------------------------------------------
1 | .search-input {
2 | width: auto;
3 | flex-grow: 1;
4 | margin-right: 3px;
5 | }
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/components/todo-list-item/index.js:
--------------------------------------------------------------------------------
1 | import TodoListItem from './todo-list-item';
2 |
3 | export default TodoListItem;
4 |
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/components/todo-list/index.js:
--------------------------------------------------------------------------------
1 | import TodoList from './todo-list';
2 |
3 | export default TodoList;
4 |
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/components/todo-list/todo-list.css:
--------------------------------------------------------------------------------
1 | .todo-list .list-group-item {
2 | padding: .25rem .75rem;
3 | }
4 |
--------------------------------------------------------------------------------
/todo/90-events-and-state/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 |
4 | import App from './components/app';
5 |
6 | ReactDOM.render(,
7 | document.getElementById('root'));
8 |
--------------------------------------------------------------------------------
/todo/todo-final/README.md:
--------------------------------------------------------------------------------
1 | Todo Application
2 | -----
--------------------------------------------------------------------------------
/todo/todo-final/src/components/app-header/app-header.css:
--------------------------------------------------------------------------------
1 | .app-header {
2 | align-items: flex-end;
3 | }
4 |
5 | .app-header h1 {
6 | flex-grow: 1;
7 | }
8 |
9 | .app-header h2 {
10 | font-size: 1.2rem;
11 | color: grey;
12 | }
--------------------------------------------------------------------------------
/todo/todo-final/src/components/app-header/index.js:
--------------------------------------------------------------------------------
1 | import AppHeader from './app-header';
2 |
3 | export default AppHeader;
4 |
--------------------------------------------------------------------------------
/todo/todo-final/src/components/app/app.css:
--------------------------------------------------------------------------------
1 | .todo-app {
2 | margin: 2rem auto 0 auto;
3 | max-width: 500px;
4 | }
5 |
--------------------------------------------------------------------------------
/todo/todo-final/src/components/app/index.js:
--------------------------------------------------------------------------------
1 | import App from './app';
2 |
3 | export default App;
4 |
--------------------------------------------------------------------------------
/todo/todo-final/src/components/item-add-form/index.js:
--------------------------------------------------------------------------------
1 | import ItemAddForm from './item-add-form';
2 |
3 | export default ItemAddForm;
4 |
--------------------------------------------------------------------------------
/todo/todo-final/src/components/item-add-form/item-add-form.css:
--------------------------------------------------------------------------------
1 | .bottom-panel {
2 | margin-top: 10px;
3 | }
4 |
5 | .bottom-panel .new-todo-label {
6 | width: auto;
7 | flex-grow: 1;
8 | margin-right: 3px;
9 | }
10 |
--------------------------------------------------------------------------------
/todo/todo-final/src/components/item-status-filter/index.js:
--------------------------------------------------------------------------------
1 | import ItemStatusFilter from './item-status-filter';
2 |
3 | export default ItemStatusFilter;
4 |
--------------------------------------------------------------------------------
/todo/todo-final/src/components/item-status-filter/item-status-filter.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/todo/todo-final/src/components/item-status-filter/item-status-filter.css
--------------------------------------------------------------------------------
/todo/todo-final/src/components/search-panel/index.js:
--------------------------------------------------------------------------------
1 | import SearchPanel from './search-panel';
2 |
3 | export default SearchPanel;
4 |
--------------------------------------------------------------------------------
/todo/todo-final/src/components/search-panel/search-panel.css:
--------------------------------------------------------------------------------
1 | .search-panel {
2 | margin: 1rem 0;
3 | }
4 |
5 | .search-panel .search-input {
6 | width: auto;
7 | flex-grow: 1;
8 | margin-right: 3px;
9 | }
10 |
--------------------------------------------------------------------------------
/todo/todo-final/src/components/todo-list-item/index.js:
--------------------------------------------------------------------------------
1 | import TodoListItem from './todo-list-item';
2 |
3 | export default TodoListItem;
4 |
--------------------------------------------------------------------------------
/todo/todo-final/src/components/todo-list/index.js:
--------------------------------------------------------------------------------
1 | import TodoList from './todo-list';
2 |
3 | export default TodoList;
4 |
--------------------------------------------------------------------------------
/todo/todo-final/src/components/todo-list/todo-list.css:
--------------------------------------------------------------------------------
1 | .todo-list .list-group-item {
2 | padding: .25rem .75rem;
3 | }
4 |
--------------------------------------------------------------------------------
/todo/todo-final/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import App from './components/app';
4 |
5 | ReactDOM.render(,
6 | document.getElementById('root'));
--------------------------------------------------------------------------------