└── src ├── Chapter_2_View_patterns ├── Example_14_Linter │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ ├── App.js │ └── App.test.js ├── Example_5_Image │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── src │ │ └── react.png │ ├── .babelrc │ └── App.test.js ├── Example_7_Button │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── App.js │ ├── .babelrc │ └── App.test.js ├── Example_10_React_ref_API │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_11_Error_Boundary │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_12_Mixin_example │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_4_ScrollView_fix │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_8_Touchable_Opacity │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── App.js │ ├── .babelrc │ └── App.test.js ├── Example_1_React_createElement │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_3_No_ScrollView_problem │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_9_Controlled_TextInput │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ ├── App.js │ └── App.test.js ├── Example_13_Mixin_replaced_with_HOC │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_2_propTypes_and_defaultProps │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── App.js │ ├── .babelrc │ ├── src │ │ └── HelloText.js │ └── App.test.js └── Example_6_Hello_World_with_your_name │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── App.js │ ├── .babelrc │ └── App.test.js ├── Chapter_3_Style_patterns ├── Example_11_Tweaking_styles │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_16_FPS_measure │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_12_Task_list_as_content │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_14_Easing_functions │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_8_Flexbox_hello_world │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_13_Animated_introduction │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_15_Scheduling_animations │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_9_Header_Main_and_Footer │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_10_justifyContent_and_alignItems │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_1_three_ways_to_define_styles │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_2_Inheritance_of_Text_component │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_5_Listening_on_dimensions_change │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_3_Composition_to_solve_inheritance_problems │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_4_Dimensions_width_and_height_not_updated │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_6_Overlapping_boxes_with_absolute_position │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js └── Example_7_mixing_absolute_and_relative_positioning │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Chapter_10_Managing_dependencies ├── Example_1_storybook │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ └── state │ │ │ │ └── reducers │ │ │ │ └── index.js │ │ ├── flux │ │ │ └── AppDispatcher.js │ │ └── examples.js │ ├── app.json │ ├── storybook │ │ ├── addons.js │ │ └── stories │ │ │ └── CenterView │ │ │ └── style.js │ ├── .babelrc │ ├── App.test.js │ └── App.js ├── Example_4_directory_structure │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ └── state │ │ │ │ └── reducers │ │ │ │ └── index.js │ │ ├── flux │ │ │ └── AppDispatcher.js │ │ ├── layout │ │ │ └── LanguageSwitcher │ │ │ │ ├── constants.js │ │ │ │ ├── state │ │ │ │ └── selectors.js │ │ │ │ └── actions │ │ │ │ └── LanguageChangeTypes.js │ │ ├── common │ │ │ └── NavigateButton │ │ │ │ └── index.js │ │ └── examples.js │ ├── app.json │ ├── storybook │ │ ├── addons.js │ │ └── stories │ │ │ └── CenterView │ │ │ └── style.js │ ├── .babelrc │ └── App.test.js ├── Example_2_dependency_injection_with_storybook │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ └── state │ │ │ │ └── reducers │ │ │ │ └── index.js │ │ ├── flux │ │ │ └── AppDispatcher.js │ │ ├── components │ │ │ └── NavigateButton │ │ │ │ └── index.js │ │ └── examples.js │ ├── app.json │ ├── storybook │ │ ├── addons.js │ │ └── stories │ │ │ └── CenterView │ │ │ └── style.js │ ├── .babelrc │ └── App.test.js └── Example_3_language_switcher_with_react_context │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ ├── features │ │ ├── search │ │ │ └── .gitkeep │ │ ├── projects │ │ │ └── .gitkeep │ │ ├── language │ │ │ ├── constants.js │ │ │ ├── state │ │ │ │ └── selectors.js │ │ │ └── actions │ │ │ │ └── LanguageChangeTypes.js │ │ └── tasks │ │ │ └── state │ │ │ └── reducers │ │ │ └── index.js │ ├── flux │ │ └── AppDispatcher.js │ ├── components │ │ └── NavigateButton │ │ │ └── index.js │ └── examples.js │ ├── app.json │ ├── storybook │ ├── addons.js │ └── stories │ │ └── CenterView │ │ └── style.js │ ├── .babelrc │ └── App.test.js ├── Chapter_11_Type_checking_patterns ├── Example_5_immutability │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ ├── state │ │ │ │ └── reducers │ │ │ │ │ └── index.ts │ │ │ │ └── actions │ │ │ │ └── types.ts │ │ ├── flux │ │ │ ├── AppDispatcher.js │ │ │ └── types.ts │ │ ├── storybook │ │ │ └── addons.js │ │ ├── layout │ │ │ └── LanguageSwitcher │ │ │ │ ├── constants.ts │ │ │ │ ├── actions │ │ │ │ └── LanguageChangeActionTypes.ts │ │ │ │ └── state │ │ │ │ ├── selectors.ts │ │ │ │ └── types.ts │ │ ├── common │ │ │ └── NavigateButton │ │ │ │ └── index.ts │ │ └── examples.js │ ├── .babelrc │ ├── app.json │ └── App.js ├── Example_4_generic_types │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ ├── state │ │ │ │ └── reducers │ │ │ │ │ └── index.js │ │ │ │ └── actions │ │ │ │ └── types.ts │ │ ├── flux │ │ │ ├── AppDispatcher.js │ │ │ └── types.ts │ │ ├── storybook │ │ │ └── addons.js │ │ ├── layout │ │ │ └── LanguageSwitcher │ │ │ │ ├── state │ │ │ │ ├── selectors.js │ │ │ │ └── types.ts │ │ │ │ ├── constants.ts │ │ │ │ └── actions │ │ │ │ └── LanguageChangeActionTypes.ts │ │ ├── common │ │ │ └── NavigateButton │ │ │ │ └── index.ts │ │ └── examples.js │ ├── .babelrc │ ├── app.json │ └── App.js ├── Example_1_TypeScript_support │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ ├── state │ │ │ │ └── reducers │ │ │ │ │ └── index.js │ │ │ │ └── actions │ │ │ │ └── types.ts │ │ ├── flux │ │ │ └── AppDispatcher.js │ │ ├── layout │ │ │ └── LanguageSwitcher │ │ │ │ ├── constants.js │ │ │ │ ├── state │ │ │ │ └── selectors.js │ │ │ │ └── actions │ │ │ │ └── LanguageChangeTypes.js │ │ ├── storybook │ │ │ └── addons.js │ │ ├── common │ │ │ └── NavigateButton │ │ │ │ └── index.ts │ │ └── examples.js │ ├── .babelrc │ ├── app.json │ └── App.js ├── Example_2_Enums_and_constants │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ ├── state │ │ │ │ └── reducers │ │ │ │ │ └── index.js │ │ │ │ └── actions │ │ │ │ └── types.ts │ │ ├── flux │ │ │ └── AppDispatcher.js │ │ ├── layout │ │ │ └── LanguageSwitcher │ │ │ │ ├── constants.js │ │ │ │ ├── state │ │ │ │ └── selectors.js │ │ │ │ └── actions │ │ │ │ └── LanguageChangeTypes.js │ │ ├── storybook │ │ │ └── addons.js │ │ ├── common │ │ │ └── NavigateButton │ │ │ │ └── index.ts │ │ └── examples.js │ ├── .babelrc │ ├── app.json │ └── App.js ├── Example_6_tslint_immutability │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ ├── state │ │ │ │ └── reducers │ │ │ │ │ └── index.ts │ │ │ │ └── actions │ │ │ │ └── types.ts │ │ ├── flux │ │ │ ├── AppDispatcher.js │ │ │ └── types.ts │ │ ├── storybook │ │ │ └── addons.js │ │ ├── layout │ │ │ └── LanguageSwitcher │ │ │ │ ├── constants.ts │ │ │ │ ├── actions │ │ │ │ └── LanguageChangeActionTypes.ts │ │ │ │ └── state │ │ │ │ ├── selectors.ts │ │ │ │ └── types.ts │ │ ├── common │ │ │ └── NavigateButton │ │ │ │ └── index.ts │ │ └── examples.js │ ├── .babelrc │ ├── app.json │ └── App.js └── Example_3_union_type_intersection_type │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ ├── features │ │ ├── projects │ │ │ └── .gitkeep │ │ ├── search │ │ │ └── .gitkeep │ │ └── tasks │ │ │ ├── state │ │ │ └── reducers │ │ │ │ └── index.js │ │ │ └── actions │ │ │ └── types.ts │ ├── flux │ │ └── AppDispatcher.js │ ├── layout │ │ └── LanguageSwitcher │ │ │ ├── constants.js │ │ │ ├── state │ │ │ └── selectors.js │ │ │ └── actions │ │ │ └── LanguageChangeTypes.js │ ├── storybook │ │ └── addons.js │ ├── common │ │ └── NavigateButton │ │ │ └── index.ts │ └── examples.js │ ├── .babelrc │ └── app.json ├── Chapter_1_React_component_patterns ├── Example_1_Hello_World │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_5_Task_list │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_15_HOC_Composition │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_16_Useful_HOCs │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_10_Decoupling_styles │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_2_Functional_Components │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_11_Container_expandable_component │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_14_Flexible_prop_names_in_HOC │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_4_Stateful_expandable_component │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_6_Component_composition_red_text │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_7_App_layout_and_Welcome_screen │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_3_Functional_Components_with_props │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_12_Higher_order_component_makeExpandable │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ └── .babelrc ├── Example_13_Higher_order_component_show_hide_button │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ └── .babelrc ├── Example_8_Snapshot_test_of_expandable_component │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ ├── .babelrc │ ├── coverage │ │ └── lcov-report │ │ │ └── sort-arrow-sprite.png │ └── App.test.js └── Example_9_Refactoring_to_presentational_component │ ├── .nvmrc │ ├── .watchmanconfig │ ├── app.json │ └── .babelrc ├── Chapter_4_Flux_patterns └── Example_1_Todo_app_with_Flux │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── src │ └── data │ │ ├── AppDispatcher.js │ │ └── TasksActionTypes.js │ ├── .babelrc │ └── App.test.js ├── Chapter_5_Store_patterns ├── Example_1_Redux_integration │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── src │ │ └── flux │ │ │ ├── AppDispatcher.js │ │ │ └── AppActionTypes.js │ ├── .babelrc │ └── App.test.js ├── Example_2_Task_app_with_Redux │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── src │ │ └── data │ │ │ ├── AppDispatcher.js │ │ │ ├── TasksActionTypes.js │ │ │ └── AppStore.js │ ├── .babelrc │ └── App.test.js ├── Example_4_Task_app_with_MobX │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── App.test.js │ └── .babelrc ├── Example_3_Moving_to_single_source_of_truth │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── src │ │ └── data │ │ │ ├── AppDispatcher.js │ │ │ └── TasksActionTypes.js │ ├── .babelrc │ └── App.test.js └── Example_5_Persistent_storage_with_AsyncStorage │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── src │ └── data │ │ ├── AppDispatcher.js │ │ └── TasksActionTypes.js │ ├── .babelrc │ └── App.test.js ├── Chapter_7_Navigational_patterns ├── Example_4_Tab_navigation │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ └── reducers │ │ │ │ └── index.js │ │ └── flux │ │ │ └── AppDispatcher.js │ ├── app.json │ ├── App.js │ ├── .babelrc │ └── App.test.js ├── Example_5_Drawer_navigation │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ └── reducers │ │ │ │ └── index.js │ │ └── flux │ │ │ └── AppDispatcher.js │ ├── App.js │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Example_1_Refactoring_structure │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ └── reducers │ │ │ │ └── index.js │ │ └── flux │ │ │ └── AppDispatcher.js │ ├── app.json │ ├── App.js │ ├── .babelrc │ └── App.test.js ├── Example_6_Standalone_React_Native │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ └── reducers │ │ │ │ └── index.js │ │ └── flux │ │ │ └── AppDispatcher.js │ ├── .gitattributes │ ├── .babelrc │ ├── App.js │ ├── app.json │ ├── android │ │ ├── app │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── res │ │ │ │ ├── values │ │ │ │ │ ├── strings.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ └── mipmap-xxxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ └── assets │ │ │ │ └── fonts │ │ │ │ ├── Entypo.ttf │ │ │ │ ├── Zocial.ttf │ │ │ │ ├── Feather.ttf │ │ │ │ ├── Ionicons.ttf │ │ │ │ ├── Octicons.ttf │ │ │ │ ├── EvilIcons.ttf │ │ │ │ ├── FontAwesome.ttf │ │ │ │ ├── Foundation.ttf │ │ │ │ ├── MaterialIcons.ttf │ │ │ │ ├── SimpleLineIcons.ttf │ │ │ │ ├── FontAwesome5_Solid.ttf │ │ │ │ ├── FontAwesome5_Brands.ttf │ │ │ │ ├── FontAwesome5_Regular.ttf │ │ │ │ └── MaterialCommunityIcons.ttf │ │ ├── keystores │ │ │ ├── debug.keystore.properties │ │ │ └── BUCK │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ └── settings.gradle │ ├── ios │ │ └── Example123 │ │ │ └── Images.xcassets │ │ │ └── Contents.json │ ├── .buckconfig │ └── index.js ├── Example_7_React_Native_Navigation │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ └── reducers │ │ │ │ └── index.js │ │ └── flux │ │ │ └── AppDispatcher.js │ ├── .gitattributes │ ├── .babelrc │ ├── app.json │ ├── App.js │ ├── index.js │ ├── android │ │ ├── app │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── res │ │ │ │ ├── values │ │ │ │ │ ├── strings.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ └── mipmap-xxxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ └── ic_launcher_round.png │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── example123 │ │ │ │ │ └── MainActivity.java │ │ │ │ └── assets │ │ │ │ └── fonts │ │ │ │ ├── Entypo.ttf │ │ │ │ ├── Zocial.ttf │ │ │ │ ├── Feather.ttf │ │ │ │ ├── Ionicons.ttf │ │ │ │ ├── Octicons.ttf │ │ │ │ ├── EvilIcons.ttf │ │ │ │ ├── FontAwesome.ttf │ │ │ │ ├── Foundation.ttf │ │ │ │ ├── MaterialIcons.ttf │ │ │ │ ├── SimpleLineIcons.ttf │ │ │ │ ├── FontAwesome5_Solid.ttf │ │ │ │ ├── FontAwesome5_Brands.ttf │ │ │ │ ├── FontAwesome5_Regular.ttf │ │ │ │ └── MaterialCommunityIcons.ttf │ │ ├── keystores │ │ │ ├── debug.keystore.properties │ │ │ └── BUCK │ │ └── gradle │ │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── ios │ │ ├── Example123 │ │ │ └── Images.xcassets │ │ │ │ └── Contents.json │ │ └── HandOnDesignPatternsWithReactNativeChapter7Example6 │ │ │ └── Images.xcassets │ │ │ └── Contents.json │ ├── .buckconfig │ └── gradle │ │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── Example_2_React_Navigator_First_Screen │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ └── reducers │ │ │ │ └── index.js │ │ └── flux │ │ │ └── AppDispatcher.js │ ├── App.js │ ├── app.json │ ├── .babelrc │ └── App.test.js └── Example_3_React_Navigator_Multiple_Screens │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ ├── features │ │ ├── search │ │ │ └── .gitkeep │ │ ├── projects │ │ │ └── .gitkeep │ │ └── tasks │ │ │ └── reducers │ │ │ └── index.js │ └── flux │ │ └── AppDispatcher.js │ ├── App.js │ ├── app.json │ ├── .babelrc │ └── App.test.js ├── Chapter_6_Data_transfer_patterns ├── Example_1_First_local_API │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── src │ │ └── data │ │ │ ├── AppDispatcher.js │ │ │ ├── TasksActionTypes.js │ │ │ └── AppStore.js │ ├── .babelrc │ └── App.test.js ├── Example_2_Fetching_local_API │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── src │ │ └── data │ │ │ ├── AppDispatcher.js │ │ │ ├── TasksActionTypes.js │ │ │ └── AppStore.js │ ├── .babelrc │ └── App.test.js ├── Example_5_Using_Redux_Thunk │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── src │ │ └── data │ │ │ └── AppDispatcher.js │ ├── .babelrc │ └── App.test.js ├── Example_6_Using_Redux_Saga │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── src │ │ ├── data │ │ │ └── AppDispatcher.js │ │ └── sagas │ │ │ └── index.js │ ├── .babelrc │ └── App.test.js ├── Example_3_Lifting_state_to_Redux │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── src │ │ └── data │ │ │ ├── AppDispatcher.js │ │ │ ├── AppStore.js │ │ │ └── TasksActionTypes.js │ ├── .babelrc │ └── App.test.js └── Example_4_Handling_dispatch_without_Redux_Thunk │ ├── .nvmrc │ ├── .watchmanconfig │ ├── App.js │ ├── app.json │ ├── src │ └── data │ │ ├── AppDispatcher.js │ │ ├── AppStore.js │ │ └── TasksActionTypes.js │ └── .babelrc ├── Chapter_8_JavaScript_patterns ├── Example_2_Selecting_from_Redux_store │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ └── state │ │ │ │ └── reducers │ │ │ │ └── index.js │ │ └── flux │ │ │ └── AppDispatcher.js │ ├── app.json │ ├── App.js │ ├── .babelrc │ └── App.test.js ├── Example_3_Caching_selectors_with_Reselect │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ │ ├── features │ │ │ ├── projects │ │ │ │ └── .gitkeep │ │ │ ├── search │ │ │ │ └── .gitkeep │ │ │ └── tasks │ │ │ │ └── state │ │ │ │ └── reducers │ │ │ │ └── index.js │ │ └── flux │ │ │ └── AppDispatcher.js │ ├── app.json │ ├── App.js │ ├── .babelrc │ └── App.test.js └── Example_1_Using_generator_to_get_task_details │ ├── .nvmrc │ ├── .watchmanconfig │ ├── src │ ├── features │ │ ├── search │ │ │ └── .gitkeep │ │ ├── projects │ │ │ └── .gitkeep │ │ └── tasks │ │ │ └── state │ │ │ └── reducers │ │ │ └── index.js │ └── flux │ │ └── AppDispatcher.js │ ├── App.js │ ├── app.json │ ├── .babelrc │ └── App.test.js └── Chapter_9_Functional_Programming_patterns └── Example_1_Using_Monads ├── .nvmrc ├── .watchmanconfig ├── src ├── features │ ├── search │ │ └── .gitkeep │ ├── projects │ │ └── .gitkeep │ └── tasks │ │ └── state │ │ └── reducers │ │ └── index.js └── flux │ └── AppDispatcher.js ├── App.js ├── app.json ├── .babelrc └── App.test.js /src/Chapter_2_View_patterns/Example_14_Linter/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_5_Image/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_7_Button/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_10_React_ref_API/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_11_Error_Boundary/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_12_Mixin_example/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_14_Linter/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_4_ScrollView_fix/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_5_Image/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_7_Button/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_8_Touchable_Opacity/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_11_Tweaking_styles/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_16_FPS_measure/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_1_Hello_World/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_5_Task_list/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_1_React_createElement/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_3_No_ScrollView_problem/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_9_Controlled_TextInput/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_12_Task_list_as_content/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_14_Easing_functions/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_8_Flexbox_hello_world/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_4_Flux_patterns/Example_1_Todo_app_with_Flux/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_1_Redux_integration/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_2_Task_app_with_Redux/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_4_Task_app_with_MobX/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_4_Tab_navigation/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_15_HOC_Composition/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_16_Useful_HOCs/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_10_React_ref_API/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_11_Error_Boundary/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_12_Mixin_example/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_13_Mixin_replaced_with_HOC/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_2_propTypes_and_defaultProps/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_4_ScrollView_fix/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_6_Hello_World_with_your_name/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_8_Touchable_Opacity/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_11_Tweaking_styles/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_13_Animated_introduction/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_15_Scheduling_animations/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_16_FPS_measure/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_9_Header_Main_and_Footer/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_1_First_local_API/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_2_Fetching_local_API/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_5_Using_Redux_Thunk/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_6_Using_Redux_Saga/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_5_Drawer_navigation/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_10_Decoupling_styles/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_1_Hello_World/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_2_Functional_Components/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_5_Task_list/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_1_React_createElement/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_3_No_ScrollView_problem/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_9_Controlled_TextInput/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_10_justifyContent_and_alignItems/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_12_Task_list_as_content/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_14_Easing_functions/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_1_three_ways_to_define_styles/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_2_Inheritance_of_Text_component/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_5_Listening_on_dimensions_change/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_8_Flexbox_hello_world/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_4_Flux_patterns/Example_1_Todo_app_with_Flux/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_1_Redux_integration/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_2_Task_app_with_Redux/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_4_Task_app_with_MobX/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_3_Lifting_state_to_Redux/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_1_Refactoring_structure/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_4_Tab_navigation/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_2_Selecting_from_Redux_store/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_9_Functional_Programming_patterns/Example_1_Using_Monads/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_15_HOC_Composition/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_16_Useful_HOCs/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_13_Mixin_replaced_with_HOC/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_2_propTypes_and_defaultProps/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_6_Hello_World_with_your_name/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_13_Animated_introduction/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_15_Scheduling_animations/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_9_Header_Main_and_Footer/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_3_Moving_to_single_source_of_truth/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_5_Persistent_storage_with_AsyncStorage/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_1_First_local_API/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_2_Fetching_local_API/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_5_Using_Redux_Thunk/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_6_Using_Redux_Saga/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_2_React_Navigator_First_Screen/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_5_Drawer_navigation/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_3_Caching_selectors_with_Reselect/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_10_Decoupling_styles/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_11_Container_expandable_component/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_14_Flexible_prop_names_in_HOC/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_2_Functional_Components/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_4_Stateful_expandable_component/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_6_Component_composition_red_text/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_7_App_layout_and_Welcome_screen/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_10_justifyContent_and_alignItems/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_1_three_ways_to_define_styles/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_2_Inheritance_of_Text_component/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_3_Composition_to_solve_inheritance_problems/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_4_Dimensions_width_and_height_not_updated/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_5_Listening_on_dimensions_change/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_6_Overlapping_boxes_with_absolute_position/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_7_mixing_absolute_and_relative_positioning/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_3_Lifting_state_to_Redux/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_1_Refactoring_structure/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_3_React_Navigator_Multiple_Screens/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_4_Tab_navigation/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_4_Tab_navigation/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_5_Drawer_navigation/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_1_Using_generator_to_get_task_details/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_2_Selecting_from_Redux_store/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_9_Functional_Programming_patterns/Example_1_Using_Monads/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_3_Functional_Components_with_props/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_3_Moving_to_single_source_of_truth/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_5_Persistent_storage_with_AsyncStorage/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_4_Handling_dispatch_without_Redux_Thunk/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_1_Refactoring_structure/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_1_Refactoring_structure/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_2_React_Navigator_First_Screen/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_5_Drawer_navigation/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_3_Caching_selectors_with_Reselect/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_9_Functional_Programming_patterns/Example_1_Using_Monads/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_11_Container_expandable_component/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_12_Higher_order_component_makeExpandable/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_13_Higher_order_component_show_hide_button/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_14_Flexible_prop_names_in_HOC/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_4_Stateful_expandable_component/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_6_Component_composition_red_text/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_7_App_layout_and_Welcome_screen/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_8_Snapshot_test_of_expandable_component/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_9_Refactoring_to_presentational_component/.nvmrc: -------------------------------------------------------------------------------- 1 | 8.11.4 -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_3_Composition_to_solve_inheritance_problems/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_4_Dimensions_width_and_height_not_updated/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_6_Overlapping_boxes_with_absolute_position/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_7_mixing_absolute_and_relative_positioning/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_2_React_Navigator_First_Screen/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_3_React_Navigator_Multiple_Screens/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_1_Using_generator_to_get_task_details/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_2_Selecting_from_Redux_store/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_2_Selecting_from_Redux_store/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_9_Functional_Programming_patterns/Example_1_Using_Monads/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_3_Functional_Components_with_props/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_4_Handling_dispatch_without_Redux_Thunk/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_2_React_Navigator_First_Screen/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_3_React_Navigator_Multiple_Screens/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_1_Using_generator_to_get_task_details/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_3_Caching_selectors_with_Reselect/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_3_Caching_selectors_with_Reselect/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/src/features/search/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_12_Higher_order_component_makeExpandable/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_13_Higher_order_component_show_hide_button/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_8_Snapshot_test_of_expandable_component/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_9_Refactoring_to_presentational_component/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_3_React_Navigator_Multiple_Screens/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_1_Using_generator_to_get_task_details/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/src/features/projects/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_14_Linter/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_5_Image/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_7_Button/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_16_FPS_measure/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_4_Flux_patterns/Example_1_Todo_app_with_Flux/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/App'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_2_Task_app_with_Redux/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/App'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_4_Task_app_with_MobX/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/App'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react-native"] 3 | } 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react-native"] 3 | } 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_4_ScrollView_fix/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_8_Touchable_Opacity/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_11_Tweaking_styles/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_14_Easing_functions/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_4_Flux_patterns/Example_1_Todo_app_with_Flux/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_1_Redux_integration/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/Counter'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_1_Redux_integration/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_4_Task_app_with_MobX/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_1_First_local_API/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/App'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_5_Using_Redux_Thunk/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/App'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_6_Using_Redux_Saga/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/App'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_1_Hello_World/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_5_Task_list/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_1_React_createElement/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_3_No_ScrollView_problem/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_9_Controlled_TextInput/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_12_Task_list_as_content/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_13_Animated_introduction/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_15_Scheduling_animations/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_8_Flexbox_hello_world/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_9_Header_Main_and_Footer/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_2_Task_app_with_Redux/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_1_First_local_API/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_2_Fetching_local_API/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/App'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_3_Lifting_state_to_Redux/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/App'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_4_Tab_navigation/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_10_Decoupling_styles/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_15_HOC_Composition/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_16_Useful_HOCs/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_2_propTypes_and_defaultProps/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_6_Hello_World_with_your_name/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_3_Moving_to_single_source_of_truth/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/App'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_2_Fetching_local_API/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_5_Using_Redux_Thunk/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_6_Using_Redux_Saga/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_1_Refactoring_structure/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_4_Tab_navigation/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/screens/index'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_5_Drawer_navigation/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/screens/index'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_5_Drawer_navigation/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_2_Functional_Components/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_10_justifyContent_and_alignItems/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_1_three_ways_to_define_styles/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_2_Inheritance_of_Text_component/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_5_Listening_on_dimensions_change/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_3_Moving_to_single_source_of_truth/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_5_Persistent_storage_with_AsyncStorage/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/App'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_3_Lifting_state_to_Redux/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/screens/index'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Example123", 3 | "displayName": "Example123" 4 | } -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Example123", 3 | "displayName": "Example123" 4 | } -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_2_Selecting_from_Redux_store/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_9_Functional_Programming_patterns/Example_1_Using_Monads/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/screens/index'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_9_Functional_Programming_patterns/Example_1_Using_Monads/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_2_Task_app_with_Redux/src/data/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_5_Persistent_storage_with_AsyncStorage/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_4_Handling_dispatch_without_Redux_Thunk/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/App'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_2_React_Navigator_First_Screen/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/screens/index'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_2_React_Navigator_First_Screen/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_4_Tab_navigation/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_2_Selecting_from_Redux_store/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/screens/index'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_3_Caching_selectors_with_Reselect/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_11_Container_expandable_component/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_14_Flexible_prop_names_in_HOC/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_3_Functional_Components_with_props/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_4_Stateful_expandable_component/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_6_Component_composition_red_text/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_7_App_layout_and_Welcome_screen/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_3_Composition_to_solve_inheritance_problems/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_4_Dimensions_width_and_height_not_updated/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_6_Overlapping_boxes_with_absolute_position/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_7_mixing_absolute_and_relative_positioning/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "26.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_1_Redux_integration/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store.dispatch; 4 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_1_First_local_API/src/data/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_2_Fetching_local_API/src/data/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_5_Using_Redux_Thunk/src/data/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_6_Using_Redux_Saga/src/data/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_1_Refactoring_structure/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/screens/TaskListScreen'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_3_React_Navigator_Multiple_Screens/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/screens/index'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_3_React_Navigator_Multiple_Screens/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_5_Drawer_navigation/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/App.js: -------------------------------------------------------------------------------- 1 | import start from './src/screens/index'; 2 | 3 | export default start(); 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/index.js: -------------------------------------------------------------------------------- 1 | import start from './src/screens/index'; 2 | 3 | export default start(); 4 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_1_Using_generator_to_get_task_details/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/screens/index'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_1_Using_generator_to_get_task_details/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_3_Caching_selectors_with_Reselect/App.js: -------------------------------------------------------------------------------- 1 | import App from './src/screens/index'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_8_Snapshot_test_of_expandable_component/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_10_React_ref_API/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0", 4 | "privacy": "unlisted" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_11_Error_Boundary/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0", 4 | "privacy": "unlisted" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_12_Mixin_example/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0", 4 | "privacy": "unlisted" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/Chapter_4_Flux_patterns/Example_1_Todo_app_with_Flux/src/data/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import { Dispatcher } from 'flux'; 2 | 3 | export default new Dispatcher(); 4 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_3_Lifting_state_to_Redux/src/data/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_4_Handling_dispatch_without_Redux_Thunk/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_1_Refactoring_structure/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_2_Selecting_from_Redux_store/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_9_Functional_Programming_patterns/Example_1_Using_Monads/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_12_Higher_order_component_makeExpandable/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_13_Higher_order_component_show_hide_button/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_9_Refactoring_to_presentational_component/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_3_Moving_to_single_source_of_truth/src/data/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_5_Persistent_storage_with_AsyncStorage/src/data/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_2_React_Navigator_First_Screen/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_3_Caching_selectors_with_Reselect/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_13_Mixin_replaced_with_HOC/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "25.0.0", 4 | "privacy": "unlisted" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_3_React_Navigator_Multiple_Screens/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_1_Using_generator_to_get_task_details/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/src/flux/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_7_Button/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import LikeCounter from './src/LikeCounter'; 3 | 4 | export default () => ; 5 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_4_Handling_dispatch_without_Redux_Thunk/src/data/AppDispatcher.js: -------------------------------------------------------------------------------- 1 | import store from './AppStore'; 2 | 3 | export default store; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/src/layout/LanguageSwitcher/constants.js: -------------------------------------------------------------------------------- 1 | export const LANG_ENGLISH = 'EN'; 2 | export const LANG_POLISH = 'PL'; 3 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/src/layout/LanguageSwitcher/constants.js: -------------------------------------------------------------------------------- 1 | export const LANG_ENGLISH = 'EN'; 2 | export const LANG_POLISH = 'PL'; 3 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/src/layout/LanguageSwitcher/constants.js: -------------------------------------------------------------------------------- 1 | export const LANG_ENGLISH = 'EN'; 2 | export const LANG_POLISH = 'PL'; 3 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/src/storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/src/storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | -------------------------------------------------------------------------------- /src/Chapter_4_Flux_patterns/Example_1_Todo_app_with_Flux/src/data/TasksActionTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | ADD_TASK: 'ADD_TASK' 3 | }; 4 | 5 | export default ActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_2_Task_app_with_Redux/src/data/TasksActionTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | ADD_TASK: 'ADD_TASK' 3 | }; 4 | 5 | export default ActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/src/features/language/constants.js: -------------------------------------------------------------------------------- 1 | export const LANG_ENGLISH = 'EN'; 2 | export const LANG_POLISH = 'PL'; 3 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/src/layout/LanguageSwitcher/constants.js: -------------------------------------------------------------------------------- 1 | export const LANG_ENGLISH = 'EN'; 2 | export const LANG_POLISH = 'PL'; 3 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_8_Touchable_Opacity/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import LikeCounter from './src/LikeCounter'; 3 | 4 | export default () => ; 5 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_1_First_local_API/src/data/TasksActionTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | ADD_TASK: 'ADD_TASK' 3 | }; 4 | 5 | export default ActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_2_Fetching_local_API/src/data/TasksActionTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | ADD_TASK: 'ADD_TASK' 3 | }; 4 | 5 | export default ActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_4_Tab_navigation/src/features/tasks/reducers/index.js: -------------------------------------------------------------------------------- 1 | import taskReducer from './taskReducer'; 2 | 3 | export default { tasks: taskReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_5_Drawer_navigation/src/features/tasks/reducers/index.js: -------------------------------------------------------------------------------- 1 | import taskReducer from './taskReducer'; 2 | 3 | export default { tasks: taskReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/src/storybook/addons.js: -------------------------------------------------------------------------------- 1 | import '@storybook/addon-actions/register'; 2 | import '@storybook/addon-links/register'; 3 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_1_Refactoring_structure/src/features/tasks/reducers/index.js: -------------------------------------------------------------------------------- 1 | import taskReducer from './taskReducer'; 2 | 3 | export default { tasks: taskReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Example123 3 | 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Example123 3 | 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/features/tasks/state/reducers/index.ts: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_5_Image/src/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_2_View_patterns/Example_5_Image/src/react.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/ios/Example123/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/src/features/tasks/reducers/index.js: -------------------------------------------------------------------------------- 1 | import taskReducer from './taskReducer'; 2 | 3 | export default { tasks: taskReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/ios/Example123/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/src/features/tasks/reducers/index.js: -------------------------------------------------------------------------------- 1 | import taskReducer from './taskReducer'; 2 | 3 | export default { tasks: taskReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/layout/LanguageSwitcher/state/selectors.js: -------------------------------------------------------------------------------- 1 | const languageSelector = state => state.language; 2 | 3 | export default languageSelector; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/features/tasks/state/reducers/index.ts: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_2_React_Navigator_First_Screen/src/features/tasks/reducers/index.js: -------------------------------------------------------------------------------- 1 | import taskReducer from './taskReducer'; 2 | 3 | export default { tasks: taskReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_3_React_Navigator_Multiple_Screens/src/features/tasks/reducers/index.js: -------------------------------------------------------------------------------- 1 | import taskReducer from './taskReducer'; 2 | 3 | export default { tasks: taskReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_9_Functional_Programming_patterns/Example_1_Using_Monads/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/src/layout/LanguageSwitcher/state/selectors.js: -------------------------------------------------------------------------------- 1 | const languageSelector = state => state.language; 2 | 3 | export default languageSelector; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/src/layout/LanguageSwitcher/state/selectors.js: -------------------------------------------------------------------------------- 1 | const languageSelector = state => state.language; 2 | 3 | export default languageSelector; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/src/layout/LanguageSwitcher/state/selectors.js: -------------------------------------------------------------------------------- 1 | const languageSelector = state => state.language; 2 | 3 | export default languageSelector; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/layout/LanguageSwitcher/constants.ts: -------------------------------------------------------------------------------- 1 | enum LANGUAGES { 2 | ENGLISH = 'EN', 3 | POLISH = 'PL' 4 | } 5 | 6 | export default LANGUAGES; 7 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/layout/LanguageSwitcher/constants.ts: -------------------------------------------------------------------------------- 1 | enum LANGUAGES { 2 | ENGLISH = 'EN', 3 | POLISH = 'PL' 4 | } 5 | 6 | export default LANGUAGES; 7 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_6_Hello_World_with_your_name/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import TextInputExample from './src/TextInputExample'; 3 | 4 | export default () => ; 5 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_2_Selecting_from_Redux_store/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/layout/LanguageSwitcher/constants.ts: -------------------------------------------------------------------------------- 1 | enum LANGUAGES { 2 | ENGLISH = 'EN', 3 | POLISH = 'PL' 4 | } 5 | 6 | export default LANGUAGES; 7 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_14_Linter/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_5_Image/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_7_Button/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_1_Using_generator_to_get_task_details/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_3_Caching_selectors_with_Reselect/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/src/features/language/state/selectors.js: -------------------------------------------------------------------------------- 1 | const languageSelector = state => state.language; 2 | 3 | export default languageSelector; 4 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/src/features/tasks/state/reducers/index.js: -------------------------------------------------------------------------------- 1 | import tasksReducer from './tasksReducer'; 2 | 3 | export default { tasks: tasksReducer }; 4 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/src/layout/LanguageSwitcher/state/selectors.js: -------------------------------------------------------------------------------- 1 | const languageSelector = state => state.language; 2 | 3 | export default languageSelector; 4 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_10_React_ref_API/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_12_Mixin_example/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_2_propTypes_and_defaultProps/App.js: -------------------------------------------------------------------------------- 1 | import makeExpandable from './src/makeExpandable'; 2 | import HelloBox from './src/HelloBox'; 3 | 4 | export default makeExpandable(HelloBox); 5 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_4_ScrollView_fix/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_16_FPS_measure/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_11_Error_Boundary/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_1_React_createElement/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_8_Touchable_Opacity/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_11_Tweaking_styles/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_14_Easing_functions/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_4_Flux_patterns/Example_1_Todo_app_with_Flux/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_1_Redux_integration/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_1_Redux_integration/src/flux/AppActionTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | INC_COUNTER: 'INC_COUNTER', 3 | DEC_COUNTER: 'DEC_COUNTER' 4 | }; 5 | 6 | export default ActionTypes; 7 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/src/features/tasks/actions/types.ts: -------------------------------------------------------------------------------- 1 | export type FetchTaskStartActionType = { 2 | type: string, 3 | payload: { 4 | taskId: string 5 | } 6 | }; 7 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_16_Useful_HOCs/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_1_Hello_World/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_5_Task_list/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_13_Mixin_replaced_with_HOC/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_3_No_ScrollView_problem/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_9_Controlled_TextInput/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_12_Task_list_as_content/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_13_Animated_introduction/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_15_Scheduling_animations/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_8_Flexbox_hello_world/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_9_Header_Main_and_Footer/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_2_Task_app_with_Redux/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_1_First_local_API/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_4_Tab_navigation/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/src/layout/LanguageSwitcher/actions/LanguageChangeTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | LANGUAGE_CHANGE: 'LANGUAGE_CHANGE' 3 | }; 4 | 5 | export default ActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/src/layout/LanguageSwitcher/actions/LanguageChangeTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | LANGUAGE_CHANGE: 'LANGUAGE_CHANGE' 3 | }; 4 | 5 | export default ActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_10_Decoupling_styles/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_15_HOC_Composition/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_14_Linter/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import LoginForm from './src/LoginForm'; 3 | import {TextInput, Text, View, Button} from 'react-native' 4 | 5 | export default () => 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_2_propTypes_and_defaultProps/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_6_Hello_World_with_your_name/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_1_three_ways_to_define_styles/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_2_Fetching_local_API/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_5_Using_Redux_Thunk/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_6_Using_Redux_Saga/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_1_Refactoring_structure/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_5_Drawer_navigation/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/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 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/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 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/src/layout/LanguageSwitcher/actions/LanguageChangeTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | LANGUAGE_CHANGE: 'LANGUAGE_CHANGE' 3 | }; 4 | 5 | export default ActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_2_Functional_Components/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_10_justifyContent_and_alignItems/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_2_Inheritance_of_Text_component/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_5_Listening_on_dimensions_change/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_3_Moving_to_single_source_of_truth/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_3_Lifting_state_to_Redux/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/ios/HandOnDesignPatternsWithReactNativeChapter7Example6/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_2_Selecting_from_Redux_store/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_9_Functional_Programming_patterns/Example_1_Using_Monads/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/src/layout/LanguageSwitcher/actions/LanguageChangeTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | LANGUAGE_CHANGE: 'LANGUAGE_CHANGE' 3 | }; 4 | 5 | export default ActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/common/NavigateButton/index.ts: -------------------------------------------------------------------------------- 1 | import { withNavigation } from 'react-navigation'; 2 | import NavButtonView from './view'; 3 | 4 | export default withNavigation(NavButtonView); 5 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/common/NavigateButton/index.ts: -------------------------------------------------------------------------------- 1 | import { withNavigation } from 'react-navigation'; 2 | import NavButtonView from './view'; 3 | 4 | export default withNavigation(NavButtonView); 5 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_14_Flexible_prop_names_in_HOC/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_3_Moving_to_single_source_of_truth/src/data/TasksActionTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | ADD_TASK: 'ADD_TASK', 3 | TASK_FORM_CHANGE: 'TASK_FORM_CHANGE' 4 | }; 5 | 6 | export default ActionTypes; 7 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_5_Persistent_storage_with_AsyncStorage/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_2_React_Navigator_First_Screen/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_3_Caching_selectors_with_Reselect/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/src/features/language/actions/LanguageChangeTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | LANGUAGE_CHANGE: 'LANGUAGE_CHANGE' 3 | }; 4 | 5 | export default ActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/src/common/NavigateButton/index.js: -------------------------------------------------------------------------------- 1 | import { withNavigation } from 'react-navigation'; 2 | import NavButtonView from './view'; 3 | 4 | export default withNavigation(NavButtonView); 5 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/src/common/NavigateButton/index.ts: -------------------------------------------------------------------------------- 1 | import { withNavigation } from 'react-navigation'; 2 | import NavButtonView from './view'; 3 | 4 | export default withNavigation(NavButtonView); 5 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/src/common/NavigateButton/index.ts: -------------------------------------------------------------------------------- 1 | import { withNavigation } from 'react-navigation'; 2 | import NavButtonView from './view'; 3 | 4 | export default withNavigation(NavButtonView); 5 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/common/NavigateButton/index.ts: -------------------------------------------------------------------------------- 1 | import { withNavigation } from 'react-navigation'; 2 | import NavButtonView from './view'; 3 | 4 | export default withNavigation(NavButtonView); 5 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_11_Container_expandable_component/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_3_Functional_Components_with_props/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_4_Stateful_expandable_component/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_6_Component_composition_red_text/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_7_App_layout_and_Welcome_screen/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_9_Controlled_TextInput/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import LoginForm from './src/LoginForm'; 3 | import {TextInput, Text, View, Button} from 'react-native' 4 | 5 | export default () => 6 | 7 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_3_Composition_to_solve_inheritance_problems/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_4_Dimensions_width_and_height_not_updated/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_6_Overlapping_boxes_with_absolute_position/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_7_mixing_absolute_and_relative_positioning/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_5_Persistent_storage_with_AsyncStorage/src/data/TasksActionTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | ADD_TASK: 'ADD_TASK', 3 | TASK_FORM_CHANGE: 'TASK_FORM_CHANGE' 4 | }; 5 | 6 | export default ActionTypes; 7 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_3_React_Navigator_Multiple_Screens/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_1_Using_generator_to_get_task_details/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/layout/LanguageSwitcher/actions/LanguageChangeActionTypes.ts: -------------------------------------------------------------------------------- 1 | enum LanguageChangeActionTypes { 2 | CHANGE = 'LANGUAGE_CHANGE' 3 | } 4 | 5 | export default LanguageChangeActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/layout/LanguageSwitcher/actions/LanguageChangeActionTypes.ts: -------------------------------------------------------------------------------- 1 | enum LanguageChangeActionTypes { 2 | CHANGE = 'LANGUAGE_CHANGE' 3 | } 4 | 5 | export default LanguageChangeActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_12_Higher_order_component_makeExpandable/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_8_Snapshot_test_of_expandable_component/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_4_Handling_dispatch_without_Redux_Thunk/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/storybook/stories/CenterView/style.js: -------------------------------------------------------------------------------- 1 | export default { 2 | main: { 3 | flex: 1, 4 | justifyContent: 'center', 5 | alignItems: 'center', 6 | backgroundColor: '#F5FCFF', 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/src/common/NavigateButton/index.ts: -------------------------------------------------------------------------------- 1 | import { withNavigation } from 'react-navigation'; 2 | import NavButtonView from './view'; 3 | 4 | export default withNavigation(NavButtonView); 5 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/layout/LanguageSwitcher/actions/LanguageChangeActionTypes.ts: -------------------------------------------------------------------------------- 1 | enum LanguageChangeActionTypes { 2 | CHANGE = 'LANGUAGE_CHANGE' 3 | } 4 | 5 | export default LanguageChangeActionTypes; 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_13_Higher_order_component_show_hide_button/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_9_Refactoring_to_presentational_component/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "plugins": ["transform-react-jsx-source"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/src/examples.js: -------------------------------------------------------------------------------- 1 | import { React } from 'react-native'; 2 | import TaskScreen from './screens/TaskListScreen'; 3 | 4 | export const taskScreen = () => ; 5 | 6 | export default taskScreen; 7 | 8 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/examples.js: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import TaskScreen from './screens/TaskListScreen'; 3 | 4 | export const taskScreen = () => ; 5 | 6 | export default taskScreen; 7 | 8 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/examples.js: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import TaskScreen from './screens/TaskListScreen'; 3 | 4 | export const taskScreen = () => ; 5 | 6 | export default taskScreen; 7 | 8 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/layout/LanguageSwitcher/state/selectors.ts: -------------------------------------------------------------------------------- 1 | import { State } from '../../../flux/types'; 2 | 3 | const languageSelector = (state:State) => state.language; 4 | 5 | export default languageSelector; 6 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/src/components/NavigateButton/index.js: -------------------------------------------------------------------------------- 1 | import { withNavigation } from 'react-navigation'; 2 | import NavButtonView from './view'; 3 | 4 | export default withNavigation(NavButtonView); 5 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/src/components/NavigateButton/index.js: -------------------------------------------------------------------------------- 1 | import { withNavigation } from 'react-navigation'; 2 | import NavButtonView from './view'; 3 | 4 | export default withNavigation(NavButtonView); 5 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/storybook/stories/CenterView/style.js: -------------------------------------------------------------------------------- 1 | export default { 2 | main: { 3 | flex: 1, 4 | justifyContent: 'center', 5 | alignItems: 'center', 6 | backgroundColor: '#F5FCFF', 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/src/examples.js: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import TaskScreen from './screens/TaskListScreen'; 3 | 4 | export const taskScreen = () => ; 5 | 6 | export default taskScreen; 7 | 8 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/src/examples.js: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import TaskScreen from './screens/TaskListScreen'; 3 | 4 | export const taskScreen = () => ; 5 | 6 | export default taskScreen; 7 | 8 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/examples.js: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import TaskScreen from './screens/TaskListScreen'; 3 | 4 | export const taskScreen = () => ; 5 | 6 | export default taskScreen; 7 | 8 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/layout/LanguageSwitcher/state/selectors.ts: -------------------------------------------------------------------------------- 1 | import { State } from '../../../flux/types'; 2 | 3 | const languageSelector = (state:State) => state.language; 4 | 5 | export default languageSelector; 6 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/src/examples.js: -------------------------------------------------------------------------------- 1 | import { React } from 'react-native'; 2 | import TaskScreen from './screens/TaskListScreen'; 3 | 4 | export const taskScreen = () => ; 5 | 6 | export default taskScreen; 7 | 8 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/flux/types.ts: -------------------------------------------------------------------------------- 1 | import { TasksState } from '../features/tasks/state/types'; 2 | import { LanguageState } from '../layout/LanguageSwitcher/state/types'; 3 | 4 | export type State = TasksState & LanguageState 5 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/flux/types.ts: -------------------------------------------------------------------------------- 1 | import { TasksState } from '../features/tasks/state/types'; 2 | import { LanguageState } from '../layout/LanguageSwitcher/state/types'; 3 | 4 | export type State = TasksState & LanguageState 5 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/keystores/BUCK: -------------------------------------------------------------------------------- 1 | keystore( 2 | name = "debug", 3 | properties = "debug.keystore.properties", 4 | store = "debug.keystore", 5 | visibility = [ 6 | "PUBLIC", 7 | ], 8 | ) 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/keystores/BUCK: -------------------------------------------------------------------------------- 1 | keystore( 2 | name = "debug", 3 | properties = "debug.keystore.properties", 4 | store = "debug.keystore", 5 | visibility = [ 6 | "PUBLIC", 7 | ], 8 | ) 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/src/examples.js: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import TaskScreen from './screens/TaskListScreen'; 3 | 4 | export const taskScreen = () => ; 5 | 6 | export default taskScreen; 7 | 8 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/flux/types.ts: -------------------------------------------------------------------------------- 1 | import { TasksState } from '../features/tasks/state/types'; 2 | import { LanguageState } from '../layout/LanguageSwitcher/state/types'; 3 | 4 | export type State = TasksState & LanguageState 5 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/storybook/stories/CenterView/style.js: -------------------------------------------------------------------------------- 1 | export default { 2 | main: { 3 | flex: 1, 4 | justifyContent: 'center', 5 | alignItems: 'center', 6 | backgroundColor: '#F5FCFF', 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/layout/LanguageSwitcher/state/types.ts: -------------------------------------------------------------------------------- 1 | import LANGUAGES from '../constants'; 2 | 3 | export type LanguageReducerState = LANGUAGES; 4 | 5 | export type LanguageState = { 6 | language: LanguageReducerState 7 | }; 8 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/layout/LanguageSwitcher/state/types.ts: -------------------------------------------------------------------------------- 1 | import LANGUAGES from '../constants'; 2 | 3 | export type LanguageReducerState = LANGUAGES; 4 | 5 | export type LanguageState = { 6 | language: LanguageReducerState 7 | }; 8 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/index.js: -------------------------------------------------------------------------------- 1 | /** @format */ 2 | 3 | import {AppRegistry} from 'react-native'; 4 | import App from './App'; 5 | import {name as appName} from './app.json'; 6 | 7 | AppRegistry.registerComponent(appName, () => App); 8 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/src/examples.js: -------------------------------------------------------------------------------- 1 | import { React } from 'react-native'; 2 | import TaskScreen from './screens/TaskListScreen'; 3 | 4 | export const taskScreen = () => ; 5 | 6 | export default taskScreen; 7 | 8 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/storybook/stories/CenterView/style.js: -------------------------------------------------------------------------------- 1 | export default { 2 | main: { 3 | flex: 1, 4 | justifyContent: 'center', 5 | alignItems: 'center', 6 | backgroundColor: '#F5FCFF', 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/src/examples.js: -------------------------------------------------------------------------------- 1 | import { React } from 'react-native'; 2 | import TaskScreen from './screens/TaskListScreen'; 3 | 4 | export const taskScreen = () => ; 5 | 6 | export default taskScreen; 7 | 8 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/src/features/tasks/actions/types.ts: -------------------------------------------------------------------------------- 1 | import TasksActionType from './TasksActionTypes'; 2 | 3 | export type FetchTaskStartActionType = { 4 | type: TasksActionType, 5 | payload: { 6 | taskId: string 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/src/features/tasks/actions/types.ts: -------------------------------------------------------------------------------- 1 | import TasksActionType from './TasksActionTypes'; 2 | 3 | export type FetchTaskStartActionType = { 4 | type: TasksActionType, 5 | payload: { 6 | taskId: string 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_6_Using_Redux_Saga/src/sagas/index.js: -------------------------------------------------------------------------------- 1 | import { all } from 'redux-saga/effects'; 2 | import watchLastFetchTasks from './fetchTasks'; 3 | 4 | function* rootSaga() { 5 | yield all([watchLastFetchTasks()]); 6 | } 7 | 8 | export default rootSaga; 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/java/com/example123/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example123; 2 | 3 | import com.reactnativenavigation.controllers.SplashActivity; 4 | 5 | public class MainActivity extends SplashActivity { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/src/features/tasks/actions/types.ts: -------------------------------------------------------------------------------- 1 | import TasksActionType from './TasksActionTypes'; 2 | 3 | export type FetchTaskStartActionType = { 4 | type: TasksActionType, 5 | payload: { 6 | taskId: string 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/layout/LanguageSwitcher/state/types.ts: -------------------------------------------------------------------------------- 1 | import LANGUAGES from '../constants'; 2 | 3 | export type LanguageReducerState = LANGUAGES; 4 | 5 | export type LanguageState = { 6 | readonly language: LanguageReducerState 7 | }; 8 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_2_propTypes_and_defaultProps/src/HelloText.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import {Text} from 'react-native'; 3 | 4 | const HelloText = ({children, ...otherProps}) => ( 5 | {children} 6 | ); 7 | 8 | export default HelloText; 9 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0", 4 | "packagerOpts": { 5 | "sourceExts": ["ts", "tsx"], 6 | "transformer": "node_modules/react-native-typescript-transformer/index.js" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0", 4 | "packagerOpts": { 5 | "sourceExts": ["ts", "tsx"], 6 | "transformer": "node_modules/react-native-typescript-transformer/index.js" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0", 4 | "packagerOpts": { 5 | "sourceExts": ["ts", "tsx"], 6 | "transformer": "node_modules/react-native-typescript-transformer/index.js" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/src/features/tasks/actions/types.ts: -------------------------------------------------------------------------------- 1 | import TasksActionType from './TasksActionTypes'; 2 | 3 | export type FetchTaskStartActionType = { 4 | type: TasksActionType, 5 | payload: { 6 | taskId: string 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Entypo.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Zocial.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Entypo.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Zocial.ttf -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0", 4 | "packagerOpts": { 5 | "sourceExts": ["ts", "tsx"], 6 | "transformer": "node_modules/react-native-typescript-transformer/index.js" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0", 4 | "packagerOpts": { 5 | "sourceExts": ["ts", "tsx"], 6 | "transformer": "node_modules/react-native-typescript-transformer/index.js" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Feather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Feather.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Ionicons.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Octicons.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Feather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Feather.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Ionicons.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Octicons.ttf -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_3_union_type_intersection_type/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "sdkVersion": "27.0.0", 4 | "packagerOpts": { 5 | "sourceExts": ["ts", "tsx"], 6 | "transformer": "node_modules/react-native-typescript-transformer/index.js" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/EvilIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/EvilIcons.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Foundation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/Foundation.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/EvilIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/EvilIcons.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Foundation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/Foundation.ttf -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/src/features/tasks/actions/types.ts: -------------------------------------------------------------------------------- 1 | import TasksActionType from './TasksActionTypes'; 2 | 3 | export type FetchTaskStartActionType = { 4 | readonly type: TasksActionType, 5 | readonly payload: { 6 | readonly taskId: string 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/MaterialIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/MaterialIcons.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/MaterialIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/MaterialIcons.ttf -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_14_Linter/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_5_Image/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_7_Button/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_2_Task_app_with_Redux/src/data/AppStore.js: -------------------------------------------------------------------------------- 1 | import { combineReducers, createStore } from 'redux'; 2 | import taskReducer from '../reducers/taskReducer'; 3 | 4 | const rootReducer = combineReducers({ tasks: taskReducer }); 5 | const store = createStore(rootReducer); 6 | export default store; 7 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/SimpleLineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/SimpleLineIcons.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/SimpleLineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/SimpleLineIcons.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_10_React_ref_API/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_12_Mixin_example/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_4_ScrollView_fix/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_16_FPS_measure/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_1_First_local_API/src/data/AppStore.js: -------------------------------------------------------------------------------- 1 | import { combineReducers, createStore } from 'redux'; 2 | import taskReducer from '../reducers/taskReducer'; 3 | 4 | const rootReducer = combineReducers({ tasks: taskReducer }); 5 | const store = createStore(rootReducer); 6 | export default store; 7 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'Example123' 2 | include ':react-native-vector-icons' 3 | project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') 4 | 5 | include ':app' 6 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_8_Snapshot_test_of_expandable_component/coverage/lcov-report/sort-arrow-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_1_React_component_patterns/Example_8_Snapshot_test_of_expandable_component/coverage/lcov-report/sort-arrow-sprite.png -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_11_Error_Boundary/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_1_React_createElement/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_8_Touchable_Opacity/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_11_Tweaking_styles/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_14_Easing_functions/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_4_Flux_patterns/Example_1_Todo_app_with_Flux/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_4_Task_app_with_MobX/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_2_Fetching_local_API/src/data/AppStore.js: -------------------------------------------------------------------------------- 1 | import { combineReducers, createStore } from 'redux'; 2 | import taskReducer from '../reducers/taskReducer'; 3 | 4 | const rootReducer = combineReducers({ tasks: taskReducer }); 5 | const store = createStore(rootReducer); 6 | export default store; 7 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_3_Lifting_state_to_Redux/src/data/AppStore.js: -------------------------------------------------------------------------------- 1 | import { combineReducers, createStore } from 'redux'; 2 | import taskReducer from '../reducers/taskReducer'; 3 | 4 | const rootReducer = combineReducers({ tasks: taskReducer }); 5 | const store = createStore(rootReducer); 6 | export default store; 7 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_3_Lifting_state_to_Redux/src/data/TasksActionTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | ADD_TASK: 'ADD_TASK', 3 | TASK_FETCH_START: 'TASK_FETCH_START', 4 | TASK_FETCH_COMPLETE: 'TASK_FETCH_COMPLETE', 5 | TASK_FETCH_ERROR: 'TASK_FETCH_ERROR' 6 | }; 7 | 8 | export default ActionTypes; 9 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/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-3.5.1-all.zip 6 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/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-3.5.1-all.zip 6 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_16_Useful_HOCs/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_1_Hello_World/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_5_Task_list/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_13_Mixin_replaced_with_HOC/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_3_No_ScrollView_problem/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_9_Controlled_TextInput/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_12_Task_list_as_content/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_13_Animated_introduction/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_15_Scheduling_animations/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_8_Flexbox_hello_world/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_9_Header_Main_and_Footer/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_1_Redux_integration/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import renderer from 'react-test-renderer'; 3 | 4 | import App from './App'; 5 | 6 | it('renders without crashing', () => { 7 | const rendered = renderer.create().toJSON(); 8 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_2_Task_app_with_Redux/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_4_Task_app_with_MobX/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["babel-preset-expo"], 3 | "env": { 4 | "development": { 5 | "presets": ["react-native"], 6 | "plugins": [ 7 | "transform-react-jsx-source", 8 | "transform-decorators-legacy" 9 | ] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_1_First_local_API/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_4_Tab_navigation/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_6_Standalone_React_Native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ajdija/hands-on-design-patterns-with-react-native/HEAD/src/Chapter_7_Navigational_patterns/Example_7_React_Native_Navigation/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_10_Decoupling_styles/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_15_HOC_Composition/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_2_propTypes_and_defaultProps/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_2_View_patterns/Example_6_Hello_World_with_your_name/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_1_three_ways_to_define_styles/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_2_Fetching_local_API/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_5_Using_Redux_Thunk/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_6_Using_Redux_Saga/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_1_Refactoring_structure/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_5_Drawer_navigation/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_4_directory_structure/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_4_generic_types/App.js: -------------------------------------------------------------------------------- 1 | import StandaloneApp from './build/dist/Root'; 2 | import StoryBookApp from './build/dist/storybook'; 3 | 4 | // CRNA process ignores all env variables that didn't start with REACT_NATIVE_ 5 | export default process.env['REACT_NATIVE_IS_STORY_BOOK'] ? StoryBookApp : StandaloneApp; 6 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_5_immutability/App.js: -------------------------------------------------------------------------------- 1 | import StandaloneApp from './build/dist/Root'; 2 | import StoryBookApp from './build/dist/storybook'; 3 | 4 | // CRNA process ignores all env variables that didn't start with REACT_NATIVE_ 5 | export default process.env['REACT_NATIVE_IS_STORY_BOOK'] ? StoryBookApp : StandaloneApp; 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_2_Functional_Components/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_10_justifyContent_and_alignItems/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_2_Inheritance_of_Text_component/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_5_Listening_on_dimensions_change/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_3_Moving_to_single_source_of_truth/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_3_Lifting_state_to_Redux/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_4_Handling_dispatch_without_Redux_Thunk/src/data/AppStore.js: -------------------------------------------------------------------------------- 1 | import { combineReducers, createStore } from 'redux'; 2 | import taskReducer from '../reducers/taskReducer'; 3 | 4 | const rootReducer = combineReducers({ tasks: taskReducer }); 5 | const store = createStore(rootReducer); 6 | export default store; 7 | -------------------------------------------------------------------------------- /src/Chapter_6_Data_transfer_patterns/Example_4_Handling_dispatch_without_Redux_Thunk/src/data/TasksActionTypes.js: -------------------------------------------------------------------------------- 1 | const ActionTypes = { 2 | ADD_TASK: 'ADD_TASK', 3 | TASK_FETCH_START: 'TASK_FETCH_START', 4 | TASK_FETCH_COMPLETE: 'TASK_FETCH_COMPLETE', 5 | TASK_FETCH_ERROR: 'TASK_FETCH_ERROR' 6 | }; 7 | 8 | export default ActionTypes; 9 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_2_Selecting_from_Redux_store/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_9_Functional_Programming_patterns/Example_1_Using_Monads/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_1_TypeScript_support/App.js: -------------------------------------------------------------------------------- 1 | import StandaloneApp from './build/dist/Root'; 2 | import StoryBookApp from './build/dist/storybook'; 3 | 4 | // CRNA process ignores all env variables that didn't start with REACT_NATIVE_ 5 | export default process.env['REACT_NATIVE_IS_STORY_BOOK'] ? StoryBookApp : StandaloneApp; 6 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_2_Enums_and_constants/App.js: -------------------------------------------------------------------------------- 1 | import StandaloneApp from './build/dist/Root'; 2 | import StoryBookApp from './build/dist/storybook'; 3 | 4 | // CRNA process ignores all env variables that didn't start with REACT_NATIVE_ 5 | export default process.env['REACT_NATIVE_IS_STORY_BOOK'] ? StoryBookApp : StandaloneApp; 6 | -------------------------------------------------------------------------------- /src/Chapter_11_Type_checking_patterns/Example_6_tslint_immutability/App.js: -------------------------------------------------------------------------------- 1 | import StandaloneApp from './build/dist/Root'; 2 | import StoryBookApp from './build/dist/storybook'; 3 | 4 | // CRNA process ignores all env variables that didn't start with REACT_NATIVE_ 5 | export default process.env['REACT_NATIVE_IS_STORY_BOOK'] ? StoryBookApp : StandaloneApp; 6 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_14_Flexible_prop_names_in_HOC/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_5_Store_patterns/Example_5_Persistent_storage_with_AsyncStorage/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_2_React_Navigator_First_Screen/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_3_Caching_selectors_with_Reselect/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_11_Container_expandable_component/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_3_Functional_Components_with_props/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_4_Stateful_expandable_component/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_6_Component_composition_red_text/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_7_App_layout_and_Welcome_screen/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_1_React_component_patterns/Example_8_Snapshot_test_of_expandable_component/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', () => { 7 | const rendered = renderer.create().toJSON(); 8 | expect(rendered).toMatchSnapshot(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_3_Composition_to_solve_inheritance_problems/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_4_Dimensions_width_and_height_not_updated/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_6_Overlapping_boxes_with_absolute_position/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_3_Style_patterns/Example_7_mixing_absolute_and_relative_positioning/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_7_Navigational_patterns/Example_3_React_Navigator_Multiple_Screens/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_8_JavaScript_patterns/Example_1_Using_generator_to_get_task_details/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_1_storybook/App.js: -------------------------------------------------------------------------------- 1 | import { default as StandaloneApp } from './src/screens/index'; 2 | import { default as StoryBookApp } from './storybook'; 3 | 4 | // CRNA process ignores all env variables that didn't start with REACT_NATIVE_ 5 | export default process.env['REACT_NATIVE_IS_STORY_BOOK'] ? StoryBookApp : StandaloneApp; 6 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_2_dependency_injection_with_storybook/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | -------------------------------------------------------------------------------- /src/Chapter_10_Managing_dependencies/Example_3_language_switcher_with_react_context/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 | expect(rendered).toBeTruthy(); 9 | }); 10 | --------------------------------------------------------------------------------