├── 011 ├── style │ └── style.css ├── src │ ├── actions │ │ └── index.js │ ├── reducers │ │ └── index.js │ ├── components │ │ ├── child.js │ │ └── app.js │ └── index.js ├── .babelrc ├── .gitignore ├── index.html ├── test │ ├── components │ │ └── app_test.js │ └── test_helper.js ├── server.js ├── webpack.config.js ├── README.md └── package.json ├── 016 ├── style │ └── style.css ├── src │ ├── actions │ │ └── index.js │ ├── reducers │ │ └── index.js │ ├── index.js │ └── components │ │ ├── google_map.js │ │ └── app.js ├── .babelrc ├── .gitignore ├── test │ ├── components │ │ └── app_test.js │ └── test_helper.js ├── webpack.config.js ├── index.html ├── README.md └── package.json ├── 20 - redux ├── .gitkeep └── code.js ├── 018 - RN vs Flutter └── .gitkeep ├── 019 - Animations ├── .gitkeep ├── dev │ ├── android │ │ ├── gradle.properties │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── app │ │ │ ├── src │ │ │ │ └── main │ │ │ │ │ ├── res │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── values │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── drawable │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── java │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── scoped │ │ │ │ │ │ └── MainActivity.java │ │ │ │ │ └── AndroidManifest.xml │ │ │ └── build.gradle │ │ ├── .gitignore │ │ ├── settings.gradle │ │ └── build.gradle │ ├── ios │ │ ├── Flutter │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ └── AppFrameworkInfo.plist │ │ ├── Runner │ │ │ ├── AppDelegate.h │ │ │ ├── Assets.xcassets │ │ │ │ ├── LaunchImage.imageset │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ ├── README.md │ │ │ │ │ └── Contents.json │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ ├── main.m │ │ │ ├── AppDelegate.m │ │ │ ├── Info.plist │ │ │ └── Base.lproj │ │ │ │ └── Main.storyboard │ │ ├── Runner.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ ├── Runner.xcodeproj │ │ │ └── project.xcworkspace │ │ │ │ └── contents.xcworkspacedata │ │ └── .gitignore │ ├── .gitignore │ ├── README.md │ ├── .metadata │ ├── .idea │ │ ├── runConfigurations │ │ │ └── main_dart.xml │ │ ├── libraries │ │ │ ├── Flutter_for_Android.xml │ │ │ └── Dart_SDK.xml │ │ ├── modules.xml │ │ └── workspace.xml │ ├── scoped.iml │ ├── test │ │ └── widget_test.dart │ ├── scoped_android.iml │ ├── lib │ │ └── main.dart │ └── pubspec.yaml └── prod │ ├── android │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── app │ │ ├── src │ │ │ └── main │ │ │ │ ├── res │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── values │ │ │ │ │ └── styles.xml │ │ │ │ └── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── prod │ │ │ │ │ └── MainActivity.java │ │ │ │ └── AndroidManifest.xml │ │ └── build.gradle │ ├── .gitignore │ ├── settings.gradle │ └── build.gradle │ ├── ios │ ├── Flutter │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ └── AppFrameworkInfo.plist │ ├── Runner │ │ ├── AppDelegate.h │ │ ├── Assets.xcassets │ │ │ ├── LaunchImage.imageset │ │ │ │ ├── LaunchImage.png │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ ├── README.md │ │ │ │ └── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ ├── main.m │ │ ├── AppDelegate.m │ │ ├── Info.plist │ │ └── Base.lproj │ │ │ └── Main.storyboard │ ├── Runner.xcworkspace │ │ └── contents.xcworkspacedata │ ├── Runner.xcodeproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── .gitignore │ ├── .gitignore │ ├── README.md │ ├── .metadata │ ├── .idea │ ├── runConfigurations │ │ └── main_dart.xml │ ├── libraries │ │ ├── Flutter_for_Android.xml │ │ └── Dart_SDK.xml │ ├── modules.xml │ └── workspace.xml │ ├── prod.iml │ ├── test │ └── widget_test.dart │ ├── prod_android.iml │ ├── lib │ └── main.dart │ └── pubspec.yaml ├── .gitignore ├── 002 - Basics of Redux Thunk ├── style │ └── style.css ├── .gitignore ├── .babelrc ├── src │ ├── reducers │ │ └── index.js │ ├── actions │ │ └── index.js │ ├── index.js │ └── components │ │ └── app.js ├── test │ ├── components │ │ └── app_test.js │ └── test_helper.js ├── index.html ├── webpack.config.js ├── README.md └── package.json ├── 008 - Building Modals with React ├── src │ ├── actions │ │ └── index.js │ ├── reducers │ │ └── index.js │ ├── components │ │ ├── bad_modal.js │ │ ├── colors.js │ │ ├── app.js │ │ └── modal.js │ └── index.js ├── .babelrc ├── .gitignore ├── test │ ├── components │ │ └── app_test.js │ └── test_helper.js ├── index.html ├── style │ └── style.css ├── webpack.config.js ├── README.md └── package.json ├── 004 - Logicless Components with Reselect ├── style │ └── style.css ├── .gitignore ├── .babelrc ├── src │ ├── actions │ │ ├── types.js │ │ └── index.js │ ├── reducers │ │ ├── index.js │ │ ├── reducer_posts.js │ │ └── reducer_selected_posts.js │ ├── components │ │ ├── app.js │ │ ├── selected_posts_list.js │ │ └── posts_list.js │ ├── index.js │ └── selectors │ │ └── selected_posts.js ├── index.html ├── webpack.config.js ├── README.md └── package.json ├── 006 - Animation of React Components ├── src │ ├── actions │ │ └── index.js │ ├── reducers │ │ └── index.js │ ├── index.js │ └── components │ │ └── app.js ├── .babelrc ├── index.html ├── test │ ├── components │ │ └── app_test.js │ └── test_helper.js ├── webpack.config.js ├── style │ └── style.css ├── README.md ├── npm-debug.log └── package.json ├── 017 - React Native Testing ├── testing │ ├── .watchmanconfig │ ├── .gitignore │ ├── app.json │ ├── .babelrc │ ├── App.test.js │ ├── App.js │ ├── package.json │ ├── __snapshots__ │ │ └── App.test.js.snap │ └── .flowconfig └── rn_cli_example │ ├── .watchmanconfig │ ├── .gitattributes │ ├── .babelrc │ ├── app.json │ ├── android │ ├── settings.gradle │ ├── app │ │ ├── src │ │ │ └── main │ │ │ │ ├── res │ │ │ │ ├── values │ │ │ │ │ ├── strings.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ └── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── rn_cli_example │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ └── MainApplication.java │ │ │ │ └── AndroidManifest.xml │ │ └── BUCK │ ├── keystores │ │ ├── debug.keystore.properties │ │ └── BUCK │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── build.gradle │ └── gradle.properties │ ├── .buckconfig │ ├── __tests__ │ ├── index.ios.js │ └── index.android.js │ ├── ios │ ├── rn_cli_example │ │ ├── AppDelegate.h │ │ ├── main.m │ │ ├── Images.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── AppDelegate.m │ │ └── Info.plist │ ├── rn_cli_exampleTests │ │ └── Info.plist │ ├── rn_cli_example-tvOSTests │ │ └── Info.plist │ └── rn_cli_example-tvOS │ │ └── Info.plist │ ├── package.json │ ├── .gitignore │ ├── index.ios.js │ ├── index.android.js │ └── .flowconfig ├── 013 - Deployment of Webpack Apps ├── .gitignore ├── .babelrc ├── index.html ├── server.js ├── style │ └── style.css ├── webpack.config.js ├── src │ ├── components │ │ ├── video_item.js │ │ ├── video_list.js │ │ ├── search_bar.js │ │ └── video_detail.js │ └── index.js └── package.json ├── 003 - Dynamic Forms with Redux Form ├── .gitignore ├── style │ └── style.css ├── .babelrc ├── src │ ├── components │ │ ├── app.js │ │ ├── posts_index.js │ │ ├── posts_show.js │ │ └── posts_new.js │ ├── reducers │ │ ├── index.js │ │ └── reducer_posts.js │ ├── routes.js │ ├── index.js │ └── actions │ │ └── index.js ├── index.html ├── webpack.config.js ├── README.md └── package.json ├── 001 - Combining Redux and Firebase ├── .babelrc ├── style │ └── style.css ├── src │ ├── actions │ │ ├── types.js │ │ └── index.js │ ├── reducers │ │ ├── index.js │ │ └── posts_reducer.js │ ├── index.js │ └── components │ │ ├── post_item.js │ │ └── app.js ├── test │ ├── components │ │ └── app_test.js │ └── test_helper.js ├── index.html ├── webpack.config.js ├── README.md └── package.json ├── 005 - A Better Way to Load Data ├── src │ ├── actions │ │ ├── types.js │ │ └── index.js │ ├── index.js │ ├── routes │ │ ├── route_callbacks.js │ │ └── index.js │ ├── reducers │ │ ├── index.js │ │ └── photos_reducer.js │ ├── components │ │ ├── app.js │ │ └── photos.js │ └── store.js ├── .babelrc ├── style │ └── style.css ├── test │ ├── components │ │ └── app_test.js │ └── test_helper.js ├── index.html ├── webpack.config.js ├── README.md └── package.json ├── README.md └── LICENSE.md /011/style/style.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /016/style/style.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /20 - redux/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /011/src/actions/index.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /016/src/actions/index.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /018 - RN vs Flutter/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /019 - Animations/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .DS_Store -------------------------------------------------------------------------------- /002 - Basics of Redux Thunk/style/style.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /008 - Building Modals with React/src/actions/index.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/style/style.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /006 - Animation of React Components/src/actions/index.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /017 - React Native Testing/testing/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /011/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015", "stage-1"] 3 | } 4 | -------------------------------------------------------------------------------- /016/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015", "stage-1"] 3 | } 4 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /019 - Animations/dev/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /019 - Animations/prod/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /002 - Basics of Redux Thunk/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | bundle.js 3 | npm-debug.log 4 | -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /013 - Deployment of Webpack Apps/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | bundle.js 3 | npm-debug.log 4 | -------------------------------------------------------------------------------- /017 - React Native Testing/testing/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .expo/ 3 | npm-debug.* 4 | -------------------------------------------------------------------------------- /002 - Basics of Redux Thunk/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015", "stage-1"] 3 | } 4 | -------------------------------------------------------------------------------- /003 - Dynamic Forms with Redux Form/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | bundle.js 3 | npm-debug.log 4 | -------------------------------------------------------------------------------- /003 - Dynamic Forms with Redux Form/style/style.css: -------------------------------------------------------------------------------- 1 | form a { 2 | margin-left: 5px; 3 | } 4 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react-native"] 3 | } 4 | -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015", "stage-1"] 3 | } 4 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | bundle.js 3 | npm-debug.log 4 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/src/actions/types.js: -------------------------------------------------------------------------------- 1 | export const FETCH_PHOTOS = 'fetch_photos'; 2 | -------------------------------------------------------------------------------- /008 - Building Modals with React/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015", "stage-1"] 3 | } 4 | -------------------------------------------------------------------------------- /011/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | bundle.js 3 | npm-debug.log 4 | 5 | # IntelliJ 6 | *.iml 7 | /.idea -------------------------------------------------------------------------------- /013 - Deployment of Webpack Apps/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015", "stage-1"] 3 | } 4 | -------------------------------------------------------------------------------- /016/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | bundle.js 3 | npm-debug.log 4 | 5 | # IntelliJ 6 | *.iml 7 | /.idea -------------------------------------------------------------------------------- /003 - Dynamic Forms with Redux Form/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015", "stage-1"] 3 | } 4 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015", "stage-1"] 3 | } 4 | 5 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015", "stage-1"] 3 | } 4 | -------------------------------------------------------------------------------- /006 - Animation of React Components/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015", "stage-1"] 3 | } 4 | 5 | -------------------------------------------------------------------------------- /017 - React Native Testing/testing/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "17.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/style/style.css: -------------------------------------------------------------------------------- 1 | .list-group-item { 2 | display: inline-block !important; 3 | } 4 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rn_cli_example", 3 | "displayName": "rn_cli_example" 4 | } -------------------------------------------------------------------------------- /008 - Building Modals with React/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | bundle.js 3 | npm-debug.log 4 | 5 | # IntelliJ 6 | *.iml 7 | /.idea -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'rn_cli_example' 2 | 3 | include ':app' 4 | -------------------------------------------------------------------------------- /019 - Animations/dev/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .dart_tool/ 3 | 4 | .packages 5 | .pub/ 6 | 7 | build/ 8 | 9 | .flutter-plugins 10 | -------------------------------------------------------------------------------- /019 - Animations/prod/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .dart_tool/ 3 | 4 | .packages 5 | .pub/ 6 | 7 | build/ 8 | 9 | .flutter-plugins 10 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | rn_cli_example 3 | 4 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/src/index.js: -------------------------------------------------------------------------------- 1 | import ReactDOM from 'react-dom'; 2 | import Routes from './routes'; 3 | 4 | ReactDOM.render(Routes, document.querySelector('.container')); 5 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /019 - Animations/dev/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /011/src/reducers/index.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | 3 | const rootReducer = combineReducers({ 4 | state: (state = {}) => state 5 | }); 6 | 7 | export default rootReducer; 8 | -------------------------------------------------------------------------------- /016/src/reducers/index.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | 3 | const rootReducer = combineReducers({ 4 | state: (state = {}) => state 5 | }); 6 | 7 | export default rootReducer; 8 | -------------------------------------------------------------------------------- /019 - Animations/prod/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/src/actions/types.js: -------------------------------------------------------------------------------- 1 | export const FETCH_POSTS = 'fetch_posts'; 2 | export const SELECT_POST = 'select_post'; 3 | export const DESELECT_POST = 'deslect_post'; 4 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/keystores/debug.keystore.properties: -------------------------------------------------------------------------------- 1 | key.store=debug.keystore 2 | key.alias=androiddebugkey 3 | key.store.password=android 4 | key.alias.password=android 5 | -------------------------------------------------------------------------------- /017 - React Native Testing/testing/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /019 - Animations/prod/README.md: -------------------------------------------------------------------------------- 1 | # prod 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | For help getting started with Flutter, view our online 8 | [documentation](https://flutter.io/). 9 | -------------------------------------------------------------------------------- /019 - Animations/dev/README.md: -------------------------------------------------------------------------------- 1 | # scoped 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | For help getting started with Flutter, view our online 8 | [documentation](https://flutter.io/). 9 | -------------------------------------------------------------------------------- /019 - Animations/dev/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /019 - Animations/dev/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /019 - Animations/dev/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /019 - Animations/prod/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /019 - Animations/prod/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/style/style.css: -------------------------------------------------------------------------------- 1 | li.list-group-item { 2 | display: flex; 3 | justify-content: space-between; 4 | align-items: center; 5 | } 6 | 7 | form { 8 | margin: 10px 0px; 9 | } 10 | -------------------------------------------------------------------------------- /019 - Animations/dev/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /019 - Animations/dev/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /019 - Animations/prod/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /019 - Animations/prod/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /019 - Animations/prod/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/src/routes/route_callbacks.js: -------------------------------------------------------------------------------- 1 | import store from '../store'; 2 | import { fetchPhotos } from '../actions'; 3 | 4 | export function onPhotosEnter() { 5 | store.dispatch(fetchPhotos()); 6 | } 7 | -------------------------------------------------------------------------------- /019 - Animations/dev/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | *.class 3 | .gradle 4 | /local.properties 5 | /.idea/workspace.xml 6 | /.idea/libraries 7 | .DS_Store 8 | /build 9 | /captures 10 | GeneratedPluginRegistrant.java 11 | -------------------------------------------------------------------------------- /019 - Animations/prod/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | *.class 3 | .gradle 4 | /local.properties 5 | /.idea/workspace.xml 6 | /.idea/libraries 7 | .DS_Store 8 | /build 9 | /captures 10 | GeneratedPluginRegistrant.java 11 | -------------------------------------------------------------------------------- /006 - Animation of React Components/src/reducers/index.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | 3 | const rootReducer = combineReducers({ 4 | state: (state = {}) => state 5 | }); 6 | 7 | export default rootReducer; 8 | -------------------------------------------------------------------------------- /008 - Building Modals with React/src/reducers/index.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | 3 | const rootReducer = combineReducers({ 4 | colors: () => ['red', 'blue', 'green'] 5 | }); 6 | 7 | export default rootReducer; 8 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/017 - React Native Testing/rn_cli_example/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/src/actions/types.js: -------------------------------------------------------------------------------- 1 | export const FETCH_POSTS = 'FETCH_POSTS'; 2 | export const UPDATE_POST = 'UPDATE_POST'; 3 | export const DELETE_POST = 'DELETE_POST'; 4 | export const CREATE_POST = 'CREATE_POST'; 5 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /002 - Basics of Redux Thunk/src/reducers/index.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | 3 | const rootReducer = combineReducers({ 4 | users: (state = [], action) => action.payload || state 5 | }); 6 | 7 | export default rootReducer; 8 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/src/reducers/index.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | import photos from './photos_reducer'; 3 | 4 | const rootReducer = combineReducers({ 5 | photos 6 | }); 7 | 8 | export default rootReducer; 9 | -------------------------------------------------------------------------------- /008 - Building Modals with React/src/components/bad_modal.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default ({ children }) => { 4 | return ( 5 |
6 | {children} 7 |
8 | ); 9 | }; 10 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/keystores/BUCK: -------------------------------------------------------------------------------- 1 | keystore( 2 | name = "debug", 3 | properties = "debug.keystore.properties", 4 | store = "debug.keystore", 5 | visibility = [ 6 | "PUBLIC", 7 | ], 8 | ) 9 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/dev/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/017 - React Native Testing/rn_cli_example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/017 - React Native Testing/rn_cli_example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/019 - Animations/prod/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/017 - React Native Testing/rn_cli_example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StephenGrider/RallyCodingWeekly/master/017 - React Native Testing/rn_cli_example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/src/reducers/index.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | import postsReducer from './posts_reducer'; 3 | 4 | const rootReducer = combineReducers({ 5 | posts: postsReducer 6 | }); 7 | 8 | export default rootReducer; 9 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/src/components/app.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Component } from 'react'; 3 | 4 | export default class App extends Component { 5 | render() { 6 | return ( 7 |
{this.props.children}
8 | ); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 6 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /003 - Dynamic Forms with Redux Form/src/components/app.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Component } from 'react'; 3 | 4 | export default class App extends Component { 5 | render() { 6 | return ( 7 |
8 | {this.props.children} 9 |
10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /019 - Animations/dev/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip 7 | -------------------------------------------------------------------------------- /019 - Animations/prod/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip 7 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/src/reducers/photos_reducer.js: -------------------------------------------------------------------------------- 1 | import { FETCH_PHOTOS } from '../actions/types'; 2 | 3 | export default function(state = [], action) { 4 | switch (action.type) { 5 | case FETCH_PHOTOS: 6 | return action.payload.data; 7 | default: 8 | return state; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/src/store.js: -------------------------------------------------------------------------------- 1 | import { createStore, applyMiddleware } from 'redux'; 2 | import reduxPromise from 'redux-promise'; 3 | import reducers from './reducers'; 4 | 5 | const createStoreWithMiddleware = applyMiddleware(reduxPromise)(createStore); 6 | 7 | export default createStoreWithMiddleware(reducers) 8 | -------------------------------------------------------------------------------- /019 - Animations/dev/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: c7ea3ca377e909469c68f2ab878a5bc53d3cf66b 8 | channel: beta 9 | -------------------------------------------------------------------------------- /019 - Animations/prod/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: c7ea3ca377e909469c68f2ab878a5bc53d3cf66b 8 | channel: beta 9 | -------------------------------------------------------------------------------- /019 - Animations/dev/.idea/runConfigurations/main_dart.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /019 - Animations/prod/.idea/runConfigurations/main_dart.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /003 - Dynamic Forms with Redux Form/src/reducers/index.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | import {reducer as formReducer} from 'redux-form'; 3 | import PostsReducer from './reducer_posts'; 4 | 5 | const rootReducer = combineReducers({ 6 | posts: PostsReducer, 7 | form: formReducer 8 | }); 9 | 10 | export default rootReducer; 11 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/src/reducers/index.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | import posts from 'reducers/reducer_posts'; 3 | import selectedPostIds from 'reducers/reducer_selected_posts'; 4 | 5 | const rootReducer = combineReducers({ 6 | posts, 7 | selectedPostIds 8 | }); 9 | 10 | export default rootReducer; 11 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/src/reducers/reducer_posts.js: -------------------------------------------------------------------------------- 1 | import _ from 'lodash'; 2 | import { FETCH_POSTS } from 'actions/types'; 3 | 4 | export default function(state = {}, action) { 5 | switch(action.type) { 6 | case FETCH_POSTS: 7 | return _.mapKeys(action.payload.data, 'id'); 8 | } 9 | 10 | return state; 11 | } 12 | -------------------------------------------------------------------------------- /002 - Basics of Redux Thunk/src/actions/index.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | export function fetchUsers() { 4 | const request = axios.get('http://jsonplaceholder.typicode.com/users'); 5 | 6 | return (dispatch) => { 7 | request.then(({data}) => { 8 | dispatch({ type: 'FETCH_PROFILES', payload: data }) 9 | }); 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /011/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /011/src/components/child.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | export default class User extends Component { 4 | render() { 5 | return ( 6 |
7 |
    8 |
  • User #1
  • 9 |
  • User #2
  • 10 |
  • User #3
  • 11 |
12 |
13 | ); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/src/actions/index.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | 3 | import { 4 | FETCH_PHOTOS 5 | } from './types'; 6 | 7 | export function fetchPhotos() { 8 | const request = axios.get('http://jsonplaceholder.typicode.com/photos?albumId=41'); 9 | 10 | return { 11 | type: FETCH_PHOTOS, 12 | payload: request 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /019 - Animations/dev/.idea/libraries/Flutter_for_Android.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/__tests__/index.ios.js: -------------------------------------------------------------------------------- 1 | import 'react-native'; 2 | import React from 'react'; 3 | import Index from '../index.ios.js'; 4 | 5 | // Note: test renderer must be required after react-native. 6 | import renderer from 'react-test-renderer'; 7 | 8 | it('renders correctly', () => { 9 | const tree = renderer.create(); 10 | }); 11 | -------------------------------------------------------------------------------- /019 - Animations/prod/.idea/libraries/Flutter_for_Android.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /011/test/components/app_test.js: -------------------------------------------------------------------------------- 1 | import { renderComponent , expect } from '../test_helper'; 2 | import App from '../../src/components/app'; 3 | 4 | describe('App' , () => { 5 | let component; 6 | 7 | beforeEach(() => { 8 | component = renderComponent(App); 9 | }); 10 | 11 | it('renders something', () => { 12 | expect(component).to.exist; 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /013 - Deployment of Webpack Apps/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /016/test/components/app_test.js: -------------------------------------------------------------------------------- 1 | import { renderComponent , expect } from '../test_helper'; 2 | import App from '../../src/components/app'; 3 | 4 | describe('App' , () => { 5 | let component; 6 | 7 | beforeEach(() => { 8 | component = renderComponent(App); 9 | }); 10 | 11 | it('renders something', () => { 12 | expect(component).to.exist; 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /006 - Animation of React Components/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /011/src/components/app.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Link } from 'react-router'; 3 | 4 | export default class App extends Component { 5 | render() { 6 | return ( 7 |
8 |

App

9 | Users 10 |
11 | {this.props.children} 12 |
13 | ); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /013 - Deployment of Webpack Apps/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | const port = process.env.PORT || 8080; 4 | const app = express(); 5 | 6 | app.use(express.static(__dirname)); 7 | 8 | app.get('*', (req, res) => { 9 | res.sendFile(path.resolve(__dirname, 'index.html')); 10 | }); 11 | 12 | app.listen(port); 13 | console.log('Server started'); 14 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/__tests__/index.android.js: -------------------------------------------------------------------------------- 1 | import 'react-native'; 2 | import React from 'react'; 3 | import Index from '../index.android.js'; 4 | 5 | // Note: test renderer must be required after react-native. 6 | import renderer from 'react-test-renderer'; 7 | 8 | it('renders correctly', () => { 9 | const tree = renderer.create( 10 | 11 | ); 12 | }); 13 | -------------------------------------------------------------------------------- /002 - Basics of Redux Thunk/test/components/app_test.js: -------------------------------------------------------------------------------- 1 | import { renderComponent , expect } from '../test_helper'; 2 | import App from '../../src/components/app'; 3 | 4 | describe('App' , () => { 5 | let component; 6 | 7 | beforeEach(() => { 8 | component = renderComponent(App); 9 | }); 10 | 11 | it('renders something', () => { 12 | expect(component).to.exist; 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/test/components/app_test.js: -------------------------------------------------------------------------------- 1 | import { renderComponent , expect } from '../test_helper'; 2 | import App from '../../src/components/app'; 3 | 4 | describe('App' , () => { 5 | let component; 6 | 7 | beforeEach(() => { 8 | component = renderComponent(App); 9 | }); 10 | 11 | it('renders something', () => { 12 | expect(component).to.exist; 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/test/components/app_test.js: -------------------------------------------------------------------------------- 1 | import { renderComponent , expect } from '../test_helper'; 2 | import App from '../../src/components/app'; 3 | 4 | describe('App' , () => { 5 | let component; 6 | 7 | beforeEach(() => { 8 | component = renderComponent(App); 9 | }); 10 | 11 | it('renders something', () => { 12 | expect(component).to.exist; 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /006 - Animation of React Components/test/components/app_test.js: -------------------------------------------------------------------------------- 1 | import { renderComponent , expect } from '../test_helper'; 2 | import App from '../../src/components/app'; 3 | 4 | describe('App' , () => { 5 | let component; 6 | 7 | beforeEach(() => { 8 | component = renderComponent(App); 9 | }); 10 | 11 | it('renders something', () => { 12 | expect(component).to.exist; 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /008 - Building Modals with React/test/components/app_test.js: -------------------------------------------------------------------------------- 1 | import { renderComponent , expect } from '../test_helper'; 2 | import App from '../../src/components/app'; 3 | 4 | describe('App' , () => { 5 | let component; 6 | 7 | beforeEach(() => { 8 | component = renderComponent(App); 9 | }); 10 | 11 | it('renders something', () => { 12 | expect(component).to.exist; 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /013 - Deployment of Webpack Apps/style/style.css: -------------------------------------------------------------------------------- 1 | .search-bar input { 2 | width: 75%; 3 | } 4 | 5 | .video-item img { 6 | max-width: 64px; 7 | } 8 | 9 | .video-detail .details { 10 | margin-top: 10px; 11 | padding: 10px; 12 | border: 1px solid #ddd; 13 | border-radius: 4px; 14 | } 15 | 16 | .list-group-item { 17 | cursor: pointer; 18 | } 19 | 20 | .list-group-item:hover { 21 | background-color: #eee; 22 | } 23 | -------------------------------------------------------------------------------- /019 - Animations/prod/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /019 - Animations/dev/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /011/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | const port = 8080; 4 | const app = express(); 5 | 6 | app.use(express.static(__dirname)); 7 | 8 | app.get('/api/posts', (req, res) => { 9 | res.send([{ id: 1 }]); 10 | }); 11 | 12 | app.get('*', (req, res) => { 13 | res.sendFile(path.resolve(__dirname, 'index.html')); 14 | }); 15 | 16 | app.listen(port); 17 | console.log('Server started'); 18 | -------------------------------------------------------------------------------- /019 - Animations/dev/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /019 - Animations/prod/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /002 - Basics of Redux Thunk/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /008 - Building Modals with React/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /008 - Building Modals with React/src/components/colors.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { connect } from 'react-redux'; 3 | 4 | const Colors = ({ colors }) => { 5 | return ( 6 |
7 | {colors.map(color =>

{color}

)} 8 |
9 | ); 10 | }; 11 | 12 | function mapStateToProps({ colors }) { 13 | return { colors }; 14 | } 15 | 16 | export default connect(mapStateToProps)(Colors); 17 | -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /003 - Dynamic Forms with Redux Form/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/src/reducers/reducer_selected_posts.js: -------------------------------------------------------------------------------- 1 | import _ from 'lodash'; 2 | import { 3 | SELECT_POST, 4 | DESELECT_POST 5 | } from 'actions/types'; 6 | 7 | export default function(state = {}, action) { 8 | switch(action.type) { 9 | case SELECT_POST: 10 | return [ ...state, action.payload ]; 11 | case DESELECT_POST: 12 | return _.without(state, action.payload); 13 | } 14 | 15 | return state; 16 | } 17 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/src/components/app.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Component } from 'react'; 3 | 4 | import Posts from 'components/posts_list'; 5 | import SelectedPostsList from 'components/selected_posts_list'; 6 | 7 | export default () => { 8 | return ( 9 |
10 |

Selected Posts

11 | 12 |
13 |

All Posts

14 | 15 |
16 | ); 17 | } 18 | -------------------------------------------------------------------------------- /013 - Deployment of Webpack Apps/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: [ 3 | './src/index.js' 4 | ], 5 | output: { 6 | path: __dirname, 7 | publicPath: '/', 8 | filename: 'bundle.js' 9 | }, 10 | module: { 11 | loaders: [{ 12 | exclude: /node_modules/, 13 | loader: 'babel' 14 | }] 15 | }, 16 | resolve: { 17 | extensions: ['', '.js', '.jsx'] 18 | }, 19 | devServer: { 20 | contentBase: './' 21 | } 22 | }; 23 | -------------------------------------------------------------------------------- /003 - Dynamic Forms with Redux Form/src/reducers/reducer_posts.js: -------------------------------------------------------------------------------- 1 | import { FETCH_POSTS, FETCH_POST } from '../actions/index'; 2 | 3 | const INITIAL_STATE = { all: [], post: null }; 4 | 5 | export default function(state = INITIAL_STATE, action) { 6 | switch(action.type) { 7 | case FETCH_POST: 8 | return { ...state, post: action.payload.data }; 9 | case FETCH_POSTS: 10 | return { ...state, all: action.payload.data }; 11 | default: 12 | return state; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /019 - Animations/dev/android/app/src/main/java/com/example/scoped/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.scoped; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /019 - Animations/prod/android/app/src/main/java/com/example/prod/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.prod; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /002 - Basics of Redux Thunk/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: [ 3 | './src/index.js' 4 | ], 5 | output: { 6 | path: __dirname, 7 | publicPath: '/', 8 | filename: 'bundle.js' 9 | }, 10 | module: { 11 | loaders: [{ 12 | exclude: /node_modules/, 13 | loader: 'babel' 14 | }] 15 | }, 16 | resolve: { 17 | extensions: ['', '.js', '.jsx'] 18 | }, 19 | devServer: { 20 | historyApiFallback: true, 21 | contentBase: './' 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /017 - React Native Testing/testing/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import App from './App'; 3 | 4 | import renderer from 'react-test-renderer'; 5 | 6 | it('renders without crashing', () => { 7 | const rendered = renderer.create().toJSON(); 8 | 9 | expect(rendered).toMatchSnapshot(); 10 | }); 11 | 12 | it('renders with given text', () => { 13 | const rendered = renderer.create().toJSON(); 14 | 15 | expect(rendered).toMatchSnapshot(); 16 | }); 17 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: [ 3 | './src/index.js' 4 | ], 5 | output: { 6 | path: __dirname, 7 | publicPath: '/', 8 | filename: 'bundle.js' 9 | }, 10 | module: { 11 | loaders: [{ 12 | exclude: /node_modules/, 13 | loader: 'babel' 14 | }] 15 | }, 16 | resolve: { 17 | extensions: ['', '.js', '.jsx'] 18 | }, 19 | devServer: { 20 | historyApiFallback: true, 21 | contentBase: './' 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: [ 3 | './src/index.js' 4 | ], 5 | output: { 6 | path: __dirname, 7 | publicPath: '/', 8 | filename: 'bundle.js' 9 | }, 10 | module: { 11 | loaders: [{ 12 | exclude: /node_modules/, 13 | loader: 'babel' 14 | }] 15 | }, 16 | resolve: { 17 | extensions: ['', '.js', '.jsx'] 18 | }, 19 | devServer: { 20 | historyApiFallback: true, 21 | contentBase: './' 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /003 - Dynamic Forms with Redux Form/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: [ 3 | './src/index.js' 4 | ], 5 | output: { 6 | path: __dirname, 7 | publicPath: '/', 8 | filename: 'bundle.js' 9 | }, 10 | module: { 11 | loaders: [{ 12 | exclude: /node_modules/, 13 | loader: 'babel' 14 | }] 15 | }, 16 | resolve: { 17 | extensions: ['', '.js', '.jsx'] 18 | }, 19 | devServer: { 20 | historyApiFallback: true, 21 | contentBase: './' 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /006 - Animation of React Components/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: [ 3 | './src/index.js' 4 | ], 5 | output: { 6 | path: __dirname, 7 | publicPath: '/', 8 | filename: 'bundle.js' 9 | }, 10 | module: { 11 | loaders: [{ 12 | exclude: /node_modules/, 13 | loader: 'babel' 14 | }] 15 | }, 16 | resolve: { 17 | extensions: ['', '.js', '.jsx'] 18 | }, 19 | devServer: { 20 | historyApiFallback: true, 21 | contentBase: './' 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /016/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { Provider } from 'react-redux'; 4 | import { createStore, applyMiddleware } from 'redux'; 5 | 6 | import App from './components/app'; 7 | import reducers from './reducers'; 8 | 9 | const createStoreWithMiddleware = applyMiddleware()(createStore); 10 | 11 | ReactDOM.render( 12 | 13 | 14 | 15 | , document.querySelector('.container')); 16 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/src/reducers/posts_reducer.js: -------------------------------------------------------------------------------- 1 | import _ from 'lodash'; 2 | import { 3 | FETCH_POSTS, 4 | CREATE_POST, 5 | DELETE_POST 6 | } from '../actions/types'; 7 | 8 | export default function(state = {}, action) { 9 | switch (action.type) { 10 | case FETCH_POSTS: 11 | return action.payload; 12 | case CREATE_POST: 13 | return { ...state, ...action.payload }; 14 | case DELETE_POST: 15 | return _.omit(state, action.payload); 16 | } 17 | 18 | return state; 19 | } 20 | -------------------------------------------------------------------------------- /008 - Building Modals with React/style/style.css: -------------------------------------------------------------------------------- 1 | .app { 2 | display: flex; 3 | justify-content: space-around; 4 | } 5 | 6 | .left { 7 | z-index: 3; 8 | } 9 | 10 | .right { 11 | position: relative; 12 | z-index: 1; 13 | } 14 | 15 | body .modal { 16 | position: fixed; 17 | top: 40px; 18 | left: 40px; 19 | right: 40px; 20 | bottom: 40px; 21 | border: 1px solid #ccc; 22 | background: #fff; 23 | overflow: auto; 24 | border-radius: 4px; 25 | outline: none; 26 | padding: 20px; 27 | display: block; 28 | } 29 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/app/src/main/java/com/rn_cli_example/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.rn_cli_example; 2 | 3 | import com.facebook.react.ReactActivity; 4 | 5 | public class MainActivity extends ReactActivity { 6 | 7 | /** 8 | * Returns the name of the main component registered from JavaScript. 9 | * This is used to schedule rendering of the component. 10 | */ 11 | @Override 12 | protected String getMainComponentName() { 13 | return "rn_cli_example"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /006 - Animation of React Components/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { Provider } from 'react-redux'; 4 | import { createStore, applyMiddleware } from 'redux'; 5 | 6 | import App from './components/app'; 7 | import reducers from './reducers'; 8 | 9 | const createStoreWithMiddleware = applyMiddleware()(createStore); 10 | 11 | ReactDOM.render( 12 | 13 | 14 | 15 | , document.querySelector('.container')); 16 | -------------------------------------------------------------------------------- /019 - Animations/dev/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /019 - Animations/prod/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: [ 3 | './src/index.js' 4 | ], 5 | output: { 6 | path: __dirname, 7 | publicPath: '/', 8 | filename: 'bundle.js' 9 | }, 10 | module: { 11 | loaders: [{ 12 | exclude: /node_modules/, 13 | loader: 'babel' 14 | }] 15 | }, 16 | resolve: { 17 | root: [ __dirname + '/src' ], 18 | extensions: ['', '.js', '.jsx'] 19 | }, 20 | devServer: { 21 | historyApiFallback: true, 22 | contentBase: './' 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /011/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: [ 3 | './src/index.js' 4 | ], 5 | output: { 6 | path: __dirname, 7 | publicPath: '/', 8 | filename: 'bundle.js' 9 | }, 10 | module: { 11 | loaders: [{ 12 | exclude: /node_modules/, 13 | loader: 'babel', 14 | query: { 15 | presets: ['react', 'es2015', 'stage-1'] 16 | } 17 | }] 18 | }, 19 | resolve: { 20 | extensions: ['', '.js', '.jsx'] 21 | }, 22 | devServer: { 23 | historyApiFallback: true, 24 | contentBase: './' 25 | } 26 | }; 27 | -------------------------------------------------------------------------------- /016/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: [ 3 | './src/index.js' 4 | ], 5 | output: { 6 | path: __dirname, 7 | publicPath: '/', 8 | filename: 'bundle.js' 9 | }, 10 | module: { 11 | loaders: [{ 12 | exclude: /node_modules/, 13 | loader: 'babel', 14 | query: { 15 | presets: ['react', 'es2015', 'stage-1'] 16 | } 17 | }] 18 | }, 19 | resolve: { 20 | extensions: ['', '.js', '.jsx'] 21 | }, 22 | devServer: { 23 | historyApiFallback: true, 24 | contentBase: './' 25 | } 26 | }; 27 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /008 - Building Modals with React/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { Provider } from 'react-redux'; 4 | import { createStore, applyMiddleware } from 'redux'; 5 | 6 | import App from './components/app'; 7 | import reducers from './reducers'; 8 | 9 | const createStoreWithMiddleware = applyMiddleware()(createStore); 10 | 11 | export const store = createStoreWithMiddleware(reducers); 12 | 13 | ReactDOM.render( 14 | 15 | 16 | 17 | , document.querySelector('.container')); 18 | -------------------------------------------------------------------------------- /003 - Dynamic Forms with Redux Form/src/routes.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Route, IndexRoute } from 'react-router'; 3 | import App from './components/app'; 4 | import PostsIndex from './components/posts_index'; 5 | import PostsNew from './components/posts_new.js'; 6 | import PostsShow from './components/posts_show.js'; 7 | 8 | export default ( 9 | 10 | 11 | 12 | 13 | 14 | ); 15 | -------------------------------------------------------------------------------- /002 - Basics of Redux Thunk/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { Provider } from 'react-redux'; 4 | import { createStore, applyMiddleware } from 'redux'; 5 | import reduxThunk from 'redux-thunk'; 6 | 7 | import App from './components/app'; 8 | import reducers from './reducers'; 9 | 10 | const createStoreWithMiddleware = applyMiddleware(reduxThunk)(createStore); 11 | 12 | ReactDOM.render( 13 | 14 | 15 | 16 | , document.querySelector('.container')); 17 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/ios/rn_cli_example/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | @interface AppDelegate : UIResponder 13 | 14 | @property (nonatomic, strong) UIWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /019 - Animations/dev/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /019 - Animations/prod/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { Provider } from 'react-redux'; 4 | import { createStore, applyMiddleware } from 'redux'; 5 | import reduxThunk from 'redux-thunk'; 6 | 7 | import App from './components/app'; 8 | import reducers from './reducers'; 9 | 10 | const createStoreWithMiddleware = applyMiddleware(reduxThunk)(createStore); 11 | 12 | ReactDOM.render( 13 | 14 | 15 | 16 | , document.querySelector('.container')); 17 | -------------------------------------------------------------------------------- /008 - Building Modals with React/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: [ 3 | './src/index.js' 4 | ], 5 | output: { 6 | path: __dirname, 7 | publicPath: '/', 8 | filename: 'bundle.js' 9 | }, 10 | module: { 11 | loaders: [{ 12 | exclude: /node_modules/, 13 | loader: 'babel', 14 | query: { 15 | presets: ['react', 'es2015', 'stage-1'] 16 | } 17 | }] 18 | }, 19 | resolve: { 20 | extensions: ['', '.js', '.jsx'] 21 | }, 22 | devServer: { 23 | historyApiFallback: true, 24 | contentBase: './' 25 | } 26 | }; 27 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rn_cli_example", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "node node_modules/react-native/local-cli/cli.js start", 7 | "test": "jest" 8 | }, 9 | "dependencies": { 10 | "react": "16.0.0-alpha.12", 11 | "react-native": "0.45.1" 12 | }, 13 | "devDependencies": { 14 | "babel-jest": "20.0.3", 15 | "babel-preset-react-native": "2.0.0", 16 | "jest": "20.0.4", 17 | "react-test-renderer": "16.0.0-alpha.12" 18 | }, 19 | "jest": { 20 | "preset": "react-native" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /016/src/components/google_map.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | export default class extends Component { 4 | shouldComponentUpdate() { 5 | return false; 6 | } 7 | 8 | componentWillReceiveProps(nextProps) { 9 | this.map.panTo({ lat: nextProps.lat, lng: nextProps.lng }); 10 | } 11 | 12 | componentDidMount() { 13 | this.map = new google.maps.Map(this.refs.map, { 14 | center: { lat: this.props.lat, lng: this.props.lng }, 15 | zoom: 8 16 | }); 17 | } 18 | 19 | render() { 20 | return ( 21 |
22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /013 - Deployment of Webpack Apps/src/components/video_item.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default ({ video, onClick }) => { 4 | const imageUrl = video.snippet.thumbnails.default.url; 5 | 6 | return ( 7 |
  • 8 |
    9 |
    10 | 11 |
    12 |
    13 |
    {video.snippet.title}
    14 |
    15 |
    16 |
  • 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /016/src/components/app.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import GoogleMap from './google_map'; 3 | 4 | export default class App extends Component { 5 | constructor(props) { 6 | super(props); 7 | 8 | this.state = { lat: -34.397, lng: 150.644 }; 9 | } 10 | 11 | render() { 12 | return ( 13 |
    14 | Map me! 15 | 18 | 19 |
    20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /019 - Animations/dev/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.0.1' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /019 - Animations/prod/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.0.1' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/src/actions/index.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import { 3 | FETCH_POSTS, 4 | SELECT_POST, 5 | DESELECT_POST 6 | } from './types' 7 | 8 | export function fetchPosts() { 9 | const request = axios.get('http://jsonplaceholder.typicode.com/posts'); 10 | 11 | return { 12 | type: FETCH_POSTS, 13 | payload: request 14 | }; 15 | } 16 | 17 | export function selectPost(id) { 18 | return { 19 | type: SELECT_POST, 20 | payload: id 21 | }; 22 | } 23 | 24 | export function deselectPost(id) { 25 | return { 26 | type: DESELECT_POST, 27 | payload: id 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/ios/rn_cli_example/main.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2015-present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | #import 11 | 12 | #import "AppDelegate.h" 13 | 14 | int main(int argc, char * argv[]) { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /013 - Deployment of Webpack Apps/src/components/video_list.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | import VideoItem from './video_item'; 4 | 5 | export default class VideoList extends Component { 6 | render() { 7 | return ( 8 |
    9 | {this.videos()} 10 |
    11 | ); 12 | } 13 | 14 | videos() { 15 | return this.props.videos.map((video, index) => { 16 | return ( 17 | this.props.onVideoSelect(index)} 19 | key={video.etag} 20 | video={video} /> 21 | ); 22 | }); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/src/routes/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Provider } from 'react-redux'; 3 | import { Router, Route, browserHistory } from 'react-router'; 4 | 5 | import App from '../components/app'; 6 | import Photos from '../components/photos'; 7 | import store from '../store'; 8 | 9 | import { onPhotosEnter } from './route_callbacks'; 10 | 11 | export default ( 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | ); 20 | -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/src/components/post_item.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { connect } from 'react-redux'; 3 | import * as actions from '../actions'; 4 | 5 | class PostItem extends Component { 6 | handleClick() { 7 | this.props.deletePost(this.props.id); 8 | } 9 | 10 | render() { 11 | return ( 12 |
  • 13 | {this.props.post} 14 | 19 |
  • 20 | ); 21 | } 22 | } 23 | 24 | export default connect(null, actions)(PostItem); 25 | -------------------------------------------------------------------------------- /016/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 17 | 18 | 19 |
    20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /003 - Dynamic Forms with Redux Form/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { Provider } from 'react-redux'; 4 | import { createStore, applyMiddleware } from 'redux'; 5 | import { Router, browserHistory } from 'react-router'; 6 | import promise from 'redux-promise'; 7 | import reducers from './reducers'; 8 | import routes from './routes'; 9 | 10 | const createStoreWithMiddleware = applyMiddleware( 11 | promise 12 | )(createStore); 13 | 14 | ReactDOM.render( 15 | 16 | 17 | 18 | , document.querySelector('.container')); 19 | -------------------------------------------------------------------------------- /013 - Deployment of Webpack Apps/src/components/search_bar.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import _ from 'lodash'; 3 | 4 | export default class SearchBar extends Component { 5 | constructor(props) { 6 | super(props); 7 | 8 | this.state = { term: '' }; 9 | } 10 | 11 | render() { 12 | return ( 13 |
    14 | this.onInputChange(event) } /> 15 |
    16 | ); 17 | } 18 | 19 | onInputChange(event) { 20 | const term = event.target.value; 21 | 22 | this.setState({ term }); 23 | this.props.onChange(term); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/src/components/selected_posts_list.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { connect } from 'react-redux'; 3 | import SelectedPostsSelector from 'selectors/selected_posts'; 4 | 5 | const SelectedPostsList = (props) => { 6 | return ( 7 |
      8 | { 9 | props.posts.map(post => { 10 | return
    • {post.title}
    • 11 | }) 12 | } 13 |
    14 | ); 15 | }; 16 | 17 | const mapStateToProps = state => { 18 | return { 19 | posts: SelectedPostsSelector(state) 20 | }; 21 | }; 22 | 23 | export default connect(mapStateToProps)(SelectedPostsList); 24 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { Provider } from 'react-redux'; 4 | import { createStore, applyMiddleware, compose } from 'redux'; 5 | import ReduxPromise from 'redux-promise'; 6 | 7 | import reducers from 'reducers'; 8 | import App from 'components/app'; 9 | 10 | const createStoreWithMiddleware = compose( 11 | applyMiddleware(ReduxPromise), 12 | window.devToolsExtension ? window.devToolsExtension() : f => f 13 | )(createStore); 14 | 15 | ReactDOM.render( 16 | 17 | 18 | 19 | , document.querySelector('.container')); 20 | -------------------------------------------------------------------------------- /017 - React Native Testing/testing/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { StyleSheet, Text, View } from 'react-native'; 3 | 4 | export default class App extends React.Component { 5 | render() { 6 | return ( 7 | 8 | Changes you make will automatically reload. 9 | 10 | {this.props.headerText} 11 | Shake your phone to open the developer menu. 12 | 13 | 14 | ); 15 | } 16 | } 17 | 18 | const styles = StyleSheet.create({ 19 | container: { 20 | flex: 1, 21 | backgroundColor: '#fff', 22 | alignItems: 'center', 23 | justifyContent: 'center' 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/src/actions/index.js: -------------------------------------------------------------------------------- 1 | import Firebase from 'firebase'; 2 | import _ from 'lodash'; 3 | import { 4 | FETCH_POSTS, 5 | DELETE_POST, 6 | CREATE_POST 7 | } from './types'; 8 | 9 | const Posts = new Firebase('https://fbredux.firebaseio.com/'); 10 | 11 | export function fetchPosts() { 12 | return dispatch => { 13 | Posts.on('value', snapshot => { 14 | dispatch({ 15 | type: FETCH_POSTS, 16 | payload: snapshot.val() 17 | }); 18 | }); 19 | }; 20 | } 21 | 22 | export function createPost(post) { 23 | return dispatch => Posts.push(post); 24 | } 25 | 26 | export function deletePost(key) { 27 | return dispatch => Posts.child(key).remove(); 28 | } 29 | -------------------------------------------------------------------------------- /006 - Animation of React Components/style/style.css: -------------------------------------------------------------------------------- 1 | img { 2 | width: 200px; 3 | } 4 | 5 | ul { 6 | position: relative; 7 | } 8 | 9 | li { 10 | display: flex !important; 11 | justify-content: space-between; 12 | align-items: center; 13 | position: relative; 14 | } 15 | 16 | /* starting state of animation */ 17 | .fade-enter { 18 | transform: rotateX(90deg) rotateZ(90deg); 19 | opacity: 0; 20 | } 21 | 22 | /* end state of animation */ 23 | .fade-enter-active { 24 | transform: rotateX(0deg) rotateZ(0deg); 25 | opacity: 1.0; 26 | transition: .5s ease-in all; 27 | } 28 | 29 | .fade-leave { 30 | opacity: 1.0; 31 | } 32 | 33 | .fade-leave-active { 34 | opacity: 0; 35 | transition: .5s ease-out all; 36 | } 37 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/app.flx 37 | /Flutter/app.zip 38 | /Flutter/flutter_assets/ 39 | /Flutter/App.framework 40 | /Flutter/Flutter.framework 41 | /Flutter/Generated.xcconfig 42 | /ServiceDefinitions.json 43 | 44 | Pods/ 45 | .symlinks/ 46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #RallyCoding 2 | 3 | 4 | Weekly videos on the Javascript and React Ecosystem. 5 | 6 | Each separate folder contains the code for each weekly video. You can run any individual project by running `npm install` then `npm start`, then navigate to `localhost:8080` in your browser. 7 | 8 | ### Videos 9 | 10 | Check it out here: [RallyCoding.com](http://www.rallycoding.com) 11 | 12 | ### Tutorials 13 | 14 | Interested in learning more about React and Redux? Check out [Modern React with Redux](https://www.udemy.com/react-redux/?couponCode=rallycoding19) if you're just getting started, or [Advanced React and Redux](https://www.udemy.com/react-redux-tutorial/?couponCode=rallycoding19) if you're looking for some more challenging material. 15 | -------------------------------------------------------------------------------- /003 - Dynamic Forms with Redux Form/README.md: -------------------------------------------------------------------------------- 1 | # ReduxSimpleStarter 2 | 3 | ###Getting Started### 4 | 5 | There are two methods for getting started with this repo. 6 | 7 | ####Familiar with Git?##### 8 | Checkout this repo, install depdencies, then start the gulp process with the following: 9 | 10 | ``` 11 | > git clone git@github.com:StephenGrider/ReduxSimpleStarter.git 12 | > cd ReduxSimpleStarter 13 | > npm install 14 | > npm start 15 | ``` 16 | 17 | ####Not Familiar with Git?##### 18 | Click [here](https://github.com/StephenGrider/ReactStarter/releases) then download the .zip file. Extract the contents of the zip file, then open your terminal, change to the project directory, and: 19 | 20 | ``` 21 | > npm install 22 | > npm start 23 | ``` 24 | -------------------------------------------------------------------------------- /019 - Animations/prod/ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/app.flx 37 | /Flutter/app.zip 38 | /Flutter/flutter_assets/ 39 | /Flutter/App.framework 40 | /Flutter/Flutter.framework 41 | /Flutter/Generated.xcconfig 42 | /ServiceDefinitions.json 43 | 44 | Pods/ 45 | .symlinks/ 46 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/README.md: -------------------------------------------------------------------------------- 1 | # ReduxSimpleStarter 2 | 3 | ###Getting Started### 4 | 5 | There are two methods for getting started with this repo. 6 | 7 | ####Familiar with Git?##### 8 | Checkout this repo, install depdencies, then start the gulp process with the following: 9 | 10 | ``` 11 | > git clone git@github.com:StephenGrider/ReduxSimpleStarter.git 12 | > cd ReduxSimpleStarter 13 | > npm install 14 | > npm start 15 | ``` 16 | 17 | ####Not Familiar with Git?##### 18 | Click [here](https://github.com/StephenGrider/ReactStarter/releases) then download the .zip file. Extract the contents of the zip file, then open your terminal, change to the project directory, and: 19 | 20 | ``` 21 | > npm install 22 | > npm start 23 | ``` 24 | -------------------------------------------------------------------------------- /011/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { Provider } from 'react-redux'; 4 | import { createStore, applyMiddleware } from 'redux'; 5 | import { Router, Route, browserHistory } from 'react-router'; 6 | 7 | import App from './components/app'; 8 | import UsersList from './components/child'; 9 | import reducers from './reducers'; 10 | 11 | const createStoreWithMiddleware = applyMiddleware()(createStore); 12 | 13 | ReactDOM.render( 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | , document.querySelector('.container')); 22 | -------------------------------------------------------------------------------- /013 - Deployment of Webpack Apps/src/components/video_detail.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default (props) => { 4 | if (!props.video) { 5 | return
    Loading
    ; 6 | } 7 | 8 | const videoId = props.video.id.videoId; 9 | const url = `https://www.youtube.com/embed/${videoId}`; 10 | 11 | return ( 12 |
    13 |
    14 | 15 |
    16 |
    17 |
    {props.video.snippet.title}
    18 |
    {props.video.snippet.description}
    19 |
    20 |
    21 | ); 22 | }; 23 | -------------------------------------------------------------------------------- /011/README.md: -------------------------------------------------------------------------------- 1 | # ReduxSimpleStarter 2 | 3 | Interested in learning [Redux](https://www.udemy.com/react-redux/)? 4 | 5 | ###Getting Started### 6 | 7 | There are two methods for getting started with this repo. 8 | 9 | ####Familiar with Git?##### 10 | Checkout this repo, install dependencies, then start the gulp process with the following: 11 | 12 | ``` 13 | > git clone git@github.com:StephenGrider/ReduxSimpleStarter.git 14 | > cd ReduxSimpleStarter 15 | > npm install 16 | > npm start 17 | ``` 18 | 19 | ####Not Familiar with Git?##### 20 | Click [here](https://github.com/StephenGrider/ReactStarter/releases) then download the .zip file. Extract the contents of the zip file, then open your terminal, change to the project directory, and: 21 | 22 | ``` 23 | > npm install 24 | > npm start 25 | ``` 26 | -------------------------------------------------------------------------------- /016/README.md: -------------------------------------------------------------------------------- 1 | # ReduxSimpleStarter 2 | 3 | Interested in learning [Redux](https://www.udemy.com/react-redux/)? 4 | 5 | ###Getting Started### 6 | 7 | There are two methods for getting started with this repo. 8 | 9 | ####Familiar with Git?##### 10 | Checkout this repo, install dependencies, then start the gulp process with the following: 11 | 12 | ``` 13 | > git clone git@github.com:StephenGrider/ReduxSimpleStarter.git 14 | > cd ReduxSimpleStarter 15 | > npm install 16 | > npm start 17 | ``` 18 | 19 | ####Not Familiar with Git?##### 20 | Click [here](https://github.com/StephenGrider/ReactStarter/releases) then download the .zip file. Extract the contents of the zip file, then open your terminal, change to the project directory, and: 21 | 22 | ``` 23 | > npm install 24 | > npm start 25 | ``` 26 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.2.3' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | mavenLocal() 18 | jcenter() 19 | maven { 20 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 21 | url "$rootDir/../node_modules/react-native/android" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /017 - React Native Testing/testing/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "testing", 3 | "version": "0.1.0", 4 | "private": true, 5 | "devDependencies": { 6 | "react-native-scripts": "0.0.31", 7 | "jest-expo": "~1.0.1", 8 | "react-test-renderer": "16.0.0-alpha.6" 9 | }, 10 | "main": "./node_modules/react-native-scripts/build/bin/crna-entry.js", 11 | "scripts": { 12 | "start": "react-native-scripts start", 13 | "eject": "react-native-scripts eject", 14 | "android": "react-native-scripts android", 15 | "ios": "react-native-scripts ios", 16 | "test": "node node_modules/jest/bin/jest.js --watch" 17 | }, 18 | "jest": { 19 | "preset": "jest-expo" 20 | }, 21 | "dependencies": { 22 | "expo": "^17.0.0", 23 | "react": "16.0.0-alpha.6", 24 | "react-native": "^0.44.0" 25 | } 26 | } -------------------------------------------------------------------------------- /002 - Basics of Redux Thunk/README.md: -------------------------------------------------------------------------------- 1 | # ReduxSimpleStarter 2 | 3 | Interested in learning [Redux](https://www.udemy.com/react-redux/)? 4 | 5 | ###Getting Started### 6 | 7 | There are two methods for getting started with this repo. 8 | 9 | ####Familiar with Git?##### 10 | Checkout this repo, install depdencies, then start the gulp process with the following: 11 | 12 | ``` 13 | > git clone git@github.com:StephenGrider/ReduxSimpleStarter.git 14 | > cd ReduxSimpleStarter 15 | > npm install 16 | > npm start 17 | ``` 18 | 19 | ####Not Familiar with Git?##### 20 | Click [here](https://github.com/StephenGrider/ReactStarter/releases) then download the .zip file. Extract the contents of the zip file, then open your terminal, change to the project directory, and: 21 | 22 | ``` 23 | > npm install 24 | > npm start 25 | ``` 26 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/README.md: -------------------------------------------------------------------------------- 1 | # ReduxSimpleStarter 2 | 3 | Interested in learning [Redux](https://www.udemy.com/react-redux/)? 4 | 5 | ###Getting Started### 6 | 7 | There are two methods for getting started with this repo. 8 | 9 | ####Familiar with Git?##### 10 | Checkout this repo, install depdencies, then start the gulp process with the following: 11 | 12 | ``` 13 | > git clone git@github.com:StephenGrider/ReduxSimpleStarter.git 14 | > cd ReduxSimpleStarter 15 | > npm install 16 | > npm start 17 | ``` 18 | 19 | ####Not Familiar with Git?##### 20 | Click [here](https://github.com/StephenGrider/ReactStarter/releases) then download the .zip file. Extract the contents of the zip file, then open your terminal, change to the project directory, and: 21 | 22 | ``` 23 | > npm install 24 | > npm start 25 | ``` 26 | -------------------------------------------------------------------------------- /001 - Combining Redux and Firebase/README.md: -------------------------------------------------------------------------------- 1 | # ReduxSimpleStarter 2 | 3 | Interested in learning [Redux](https://www.udemy.com/react-redux/)? 4 | 5 | ###Getting Started### 6 | 7 | There are two methods for getting started with this repo. 8 | 9 | ####Familiar with Git?##### 10 | Checkout this repo, install depdencies, then start the gulp process with the following: 11 | 12 | ``` 13 | > git clone git@github.com:StephenGrider/ReduxSimpleStarter.git 14 | > cd ReduxSimpleStarter 15 | > npm install 16 | > npm start 17 | ``` 18 | 19 | ####Not Familiar with Git?##### 20 | Click [here](https://github.com/StephenGrider/ReactStarter/releases) then download the .zip file. Extract the contents of the zip file, then open your terminal, change to the project directory, and: 21 | 22 | ``` 23 | > npm install 24 | > npm start 25 | ``` 26 | -------------------------------------------------------------------------------- /006 - Animation of React Components/README.md: -------------------------------------------------------------------------------- 1 | # ReduxSimpleStarter 2 | 3 | Interested in learning [Redux](https://www.udemy.com/react-redux/)? 4 | 5 | ###Getting Started### 6 | 7 | There are two methods for getting started with this repo. 8 | 9 | ####Familiar with Git?##### 10 | Checkout this repo, install depdencies, then start the gulp process with the following: 11 | 12 | ``` 13 | > git clone git@github.com:StephenGrider/ReduxSimpleStarter.git 14 | > cd ReduxSimpleStarter 15 | > npm install 16 | > npm start 17 | ``` 18 | 19 | ####Not Familiar with Git?##### 20 | Click [here](https://github.com/StephenGrider/ReactStarter/releases) then download the .zip file. Extract the contents of the zip file, then open your terminal, change to the project directory, and: 21 | 22 | ``` 23 | > npm install 24 | > npm start 25 | ``` 26 | -------------------------------------------------------------------------------- /008 - Building Modals with React/README.md: -------------------------------------------------------------------------------- 1 | # ReduxSimpleStarter 2 | 3 | Interested in learning [Redux](https://www.udemy.com/react-redux/)? 4 | 5 | ###Getting Started### 6 | 7 | There are two methods for getting started with this repo. 8 | 9 | ####Familiar with Git?##### 10 | Checkout this repo, install dependencies, then start the gulp process with the following: 11 | 12 | ``` 13 | > git clone git@github.com:StephenGrider/ReduxSimpleStarter.git 14 | > cd ReduxSimpleStarter 15 | > npm install 16 | > npm start 17 | ``` 18 | 19 | ####Not Familiar with Git?##### 20 | Click [here](https://github.com/StephenGrider/ReactStarter/releases) then download the .zip file. Extract the contents of the zip file, then open your terminal, change to the project directory, and: 21 | 22 | ``` 23 | > npm install 24 | > npm start 25 | ``` 26 | -------------------------------------------------------------------------------- /005 - A Better Way to Load Data/src/components/photos.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { connect } from 'react-redux'; 3 | import { Link } from 'react-router'; 4 | 5 | class UserList extends Component { 6 | renderPhotos() { 7 | return this.props.photos.map(photo => { 8 | return ( 9 | 10 |
  • 11 | 12 |
  • 13 | 14 | ); 15 | }); 16 | } 17 | 18 | render() { 19 | return ( 20 |
      21 | {this.renderPhotos()} 22 |
    23 | ); 24 | } 25 | } 26 | 27 | function mapStateToProps({ photos }) { 28 | return { photos } 29 | } 30 | 31 | export default connect(mapStateToProps)(UserList); 32 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/ios/rn_cli_example/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /008 - Building Modals with React/src/components/app.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Colors from './colors'; 3 | import BadModal from './bad_modal'; 4 | import Modal from './modal'; 5 | 6 | export default class App extends Component { 7 | render() { 8 | return ( 9 |
    10 |
    11 |

    Hello

    Hello

    Hello

    Hello

    Hello
    12 |
    13 |
    14 |

    Hello

    Hello

    Hello

    Hello

    Hello
    15 |
    16 | 17 |

    A really long amount of Modal Content

    18 |

    Etc.

    19 | 20 |
    21 |
    22 |
    23 |
    24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /004 - Logicless Components with Reselect/src/selectors/selected_posts.js: -------------------------------------------------------------------------------- 1 | // Reselect selector 2 | // Takes a list of posts and post Ids, and picks out 3 | // the selected Posts 4 | import _ from 'lodash'; 5 | import { createSelector } from 'reselect'; 6 | 7 | // Create select functions to pick off the pieces of state we care about 8 | // for this calculation 9 | const postsSelector = state => state.posts 10 | const selectedPostsSelector = state => state.selectedPostIds 11 | 12 | const getPosts = (posts, selectedPostIds) => { 13 | const selectedPosts = _.filter( 14 | posts, 15 | post => _.contains(selectedPostIds, post.id) 16 | ); 17 | 18 | return selectedPosts; 19 | }; 20 | 21 | export default createSelector( 22 | postsSelector, // pick off a piece of state 23 | selectedPostsSelector, // pick off a piece of state 24 | getPosts // last argument is the function that has our select logic 25 | ); 26 | -------------------------------------------------------------------------------- /002 - Basics of Redux Thunk/src/components/app.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { connect } from 'react-redux'; 3 | import * as actions from '../actions'; 4 | 5 | export default class App extends Component { 6 | componentWillMount() { 7 | this.props.fetchUsers(); 8 | } 9 | 10 | renderUser({id, name, email}) { 11 | return ( 12 |
  • 13 | 14 | {email} 15 | 16 | {name} 17 |
  • 18 | ); 19 | } 20 | 21 | render() { 22 | return ( 23 |
    24 |

    Email Directory

    25 |
      26 | {this.props.users.map(this.renderUser)} 27 |
    28 |
    29 | ); 30 | } 31 | } 32 | 33 | export default connect((state => state), actions)(App); 34 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/ios/rn_cli_exampleTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /019 - Animations/dev/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /019 - Animations/prod/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /017 - React Native Testing/rn_cli_example/ios/rn_cli_example-tvOSTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /019 - Animations/dev/scoped.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /019 - Animations/prod/prod.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /008 - Building Modals with React/src/components/modal.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { store } from '../index'; 4 | import { Provider } from 'react-redux'; 5 | 6 | class Modal extends Component { 7 | componentDidMount() { 8 | this.modalTarget = document.createElement('div'); 9 | this.modalTarget.className = 'modal'; 10 | document.body.appendChild(this.modalTarget); 11 | this._render(); 12 | } 13 | 14 | componentWillUpdate() { 15 | this._render(); 16 | } 17 | 18 | componentWillUnmount() { 19 | ReactDOM.unmountComponentAtNode(this.modalTarget); 20 | document.body.removeChild(this.modalTarget); 21 | } 22 | 23 | _render() { 24 | ReactDOM.render( 25 | 26 |
    {this.props.children}
    27 |
    , 28 | this.modalTarget 29 | ); 30 | } 31 | 32 | render() { 33 | return