From d15c1f87cd802c26670bc119ce38e5f9da46691a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odin=20Asbj=C3=B8rnsen?= Date: Fri, 10 Mar 2023 17:42:19 +0100 Subject: [PATCH] =?UTF-8?q?Add=20support=20for=20CustomPreviewAnnotations?= =?UTF-8?q?=20in=20Showkase=20=F0=9F=9A=BF=20=F0=9F=8C=88=20=20(#303)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add processing functions in showkase processor to write to internal custom annotation and return components annotated by the annotation * Add support for crossmodule custom annotation Retrieving metadata from classpath * Add test for processing test for KSP * Add comment about autogenetated file for the showkaseCustomAnnotationMetadata file gen * Add supported custom annotation types to supported types * Add ShowkaseBrowser tests and processor test for CustomPreviewAnnotation cases * Add paparazzi test for custom preview annotation * Add processor test for Custom preview annotation with injected preview parameter * Fix detekt issue * Regenerate paparazzi pictures * Fix detekt issue * update ksp flag on running kapt ui test we are checking if the flag is present, not that it is true * Update paparazzi screenshots * Add scroll actions so ensure we are verifying the components With the custom annotation feature we are having a bit to many components for the test emulator. We need to scroll town the page in the test to ensure that the components that we are verifying are visible * Address review comments * Remove compiler args for custom previews This was done because we figured out that the metadata generation strategy works and this will give a better result to the enduser. * Address review comments * Remove redundant annotation check * Add Seccond sample submodule * Add showkase browser test submodule and multimodular tests * Regenerate screenshots to screenshot tests for new submodule * Add case for multi modular processing and make it work for KAPT * Update compiler args to be seperate args * Add missing compiler arg in test * Regenerate screenshot tests --- .github/workflows/android.yml | 2 +- sample-submodule-2/.gitignore | 1 + sample-submodule-2/build.gradle | 87 ++++++++++ sample-submodule-2/proguard-rules.pro | 21 +++ .../src/main/AndroidManifest.xml | 4 + .../submodule/showkasesample/SamplePreview.kt | 12 ++ .../src/main/res/values/strings.xml | 3 + sample-submodule/build.gradle | 4 + .../submodule/showkasesample/FontPreview.kt | 6 + .../submodule/showkasesample/LocalePreview.kt | 6 + .../android/submodule/showkasesample/Names.kt | 9 + sample/build.gradle | 1 + ...eCodegen_composable_screenshot_test_10.png | Bin 2107 -> 1277 bytes ...eCodegen_composable_screenshot_test_11.png | Bin 2221 -> 3177 bytes ...eCodegen_composable_screenshot_test_12.png | Bin 3727 -> 2107 bytes ...eCodegen_composable_screenshot_test_13.png | Bin 2542 -> 2221 bytes ...eCodegen_composable_screenshot_test_14.png | Bin 2542 -> 3727 bytes ...eCodegen_composable_screenshot_test_15.png | Bin 8715 -> 2542 bytes ...eCodegen_composable_screenshot_test_16.png | Bin 8133 -> 2542 bytes ...eCodegen_composable_screenshot_test_17.png | Bin 0 -> 8715 bytes ...eCodegen_composable_screenshot_test_18.png | Bin 0 -> 8133 bytes ...eCodegen_composable_screenshot_test_19.png | Bin 0 -> 1738 bytes ...seCodegen_composable_screenshot_test_6.png | Bin 4090 -> 2024 bytes ...seCodegen_composable_screenshot_test_7.png | Bin 1322 -> 1740 bytes ...seCodegen_composable_screenshot_test_8.png | Bin 1277 -> 4090 bytes ...seCodegen_composable_screenshot_test_9.png | Bin 3177 -> 1322 bytes ...eCodegen_composable_screenshot_test_10.png | Bin 2136 -> 1320 bytes ...eCodegen_composable_screenshot_test_11.png | Bin 2207 -> 3279 bytes ...eCodegen_composable_screenshot_test_12.png | Bin 3686 -> 2136 bytes ...eCodegen_composable_screenshot_test_13.png | Bin 2639 -> 2207 bytes ...eCodegen_composable_screenshot_test_14.png | Bin 2639 -> 3686 bytes ...eCodegen_composable_screenshot_test_15.png | Bin 8701 -> 2639 bytes ...eCodegen_composable_screenshot_test_16.png | Bin 8029 -> 2639 bytes ...eCodegen_composable_screenshot_test_17.png | Bin 0 -> 8701 bytes ...eCodegen_composable_screenshot_test_18.png | Bin 0 -> 8029 bytes ...eCodegen_composable_screenshot_test_19.png | Bin 0 -> 1714 bytes ...seCodegen_composable_screenshot_test_6.png | Bin 4150 -> 2005 bytes ...seCodegen_composable_screenshot_test_7.png | Bin 1350 -> 1726 bytes ...seCodegen_composable_screenshot_test_8.png | Bin 1320 -> 4150 bytes ...seCodegen_composable_screenshot_test_9.png | Bin 3279 -> 1350 bytes .../android/showkasesample/CustomShape.kt | 35 ++++ .../com/airbnb/android/showkasesample/Text.kt | 27 ++- settings.gradle | 2 + .../ShowkaseMultiPreviewCodegenMetadata.kt | 10 ++ .../.gitignore | 1 + .../build.gradle | 94 +++++++++++ .../consumer-rules.pro | 0 .../proguard-rules.pro | 21 +++ .../src/main/AndroidManifest.xml | 5 + .../two/LocalePreview.kt | 12 ++ .../CustomSizePreviews.kt | 12 ++ .../SubmoduleTestComposables.kt | 26 +++ showkase-browser-testing/build.gradle | 4 + .../ShowkaseBrowserTest.kt | 152 ++++++++++++++++- .../TestComposables.kt | 31 +++- .../BaseProcessorTest.kt | 2 - .../ShowkaseProcessorTest.kt | 34 +++- .../input/Composables.kt | 18 ++ ...rbnb_android_showkase_processor_testing.kt | 24 +++ ...showkase_processor_testing_themepreview.kt | 18 ++ ...estingthemesHelloWorldPreviewlighttheme.kt | 16 ++ .../input/Composables.kt | 31 ++++ ...rbnb_android_showkase_processor_testing.kt | 27 +++ ...showkase_processor_testing_themepreview.kt | 18 ++ ...estingthemesHelloWorldPreviewlighttheme.kt | 25 +++ .../input/Composables.kt | 4 +- ...rbnb_android_showkase_processor_testing.kt | 17 ++ ...kase_processor_testing_combinedpreviews.kt | 19 +++ ...testingthemesHelloWorldPreviewdarktheme.kt | 16 ++ .../input/Composables.kt | 50 ++++++ ...rbnb_android_showkase_processor_testing.kt | 59 +++++++ ...kase_processor_testing_combinedpreviews.kt | 19 +++ ...owkase_processor_testing_devicepreviews.kt | 30 ++++ ...ase_processor_testing_fontscalepreviews.kt | 30 ++++ ...sortestingfontscalesComponentlargefont1.kt | 18 ++ ...ssortestingfontscalesComponentsmallfont.kt | 18 ++ ...testingthemesHelloWorldPreviewdarktheme.kt | 16 ++ .../input/Composables.kt | 33 ++++ ...rbnb_android_showkase_processor_testing.kt | 41 +++++ ..._showkase_processor_testing_fontpreview.kt | 18 ++ ...showkase_processor_testing_themepreview.kt | 29 ++++ ...testingthemesHelloWorldPreviewdarktheme.kt | 16 ++ ...stingthemesHelloWorldPreviewlighttheme1.kt | 16 ++ .../input/Composables.kt | 24 +++ ...rbnb_android_showkase_processor_testing.kt | 41 +++++ ...showkase_processor_testing_themepreview.kt | 29 ++++ ...testingthemesHelloWorldPreviewdarktheme.kt | 16 ++ ...stingthemesHelloWorldPreviewlighttheme1.kt | 16 ++ .../showkase/processor/ShowkaseProcessor.kt | 155 ++++++++++++++++-- .../processor/logging/ShowkaseValidator.kt | 3 + .../processor/models/ShowkaseMetadata.kt | 96 +++++++++++ .../processor/writer/ShowkaseBrowserWriter.kt | 57 ++++++- .../screenshot/testing/paparazzi/HighFont.kt | 6 + .../screenshot/testing/paparazzi/Text.kt | 20 +++ ...efault_group**preview_-_1.5_font**null.png | Bin 0 -> 3783 bytes ...Ltr,1.DEFAULT]_text**h6_text_row**null.png | Bin 6842 -> 4230 bytes ...Ltr,1.DEFAULT]_text**h6_text_row**null.png | Bin 0 -> 6842 bytes ...ext**h6_text_row_&_special_chars**null.png | Bin 6842 -> 4230 bytes ...ext**h6_text_row_&_special_chars**null.png | Bin 0 -> 6842 bytes ...1.Ltr,1.DEFAULT]_light_colors**primary.png | Bin 0 -> 3991 bytes ...Ltr,1.DEFAULT]_light_colors**secondary.png | Bin 0 -> 3993 bytes ...DEFAULT]_light_colors**primary_variant.png | Bin 0 -> 3991 bytes ...FAULT]_light_colors**secondary_variant.png | Bin 0 -> 3990 bytes ...tr,1.DEFAULT]_light_colors**background.png | Bin 0 -> 3986 bytes ...Ltr,1.DEFAULT]_light_colors**secondary.png | Bin 0 -> 3993 bytes ...FAULT]_light_colors**secondary_variant.png | Bin 0 -> 3990 bytes ...1.Ltr,1.DEFAULT]_light_colors**surface.png | Bin 0 -> 3986 bytes ...tr,1.DEFAULT]_light_colors**background.png | Bin 0 -> 3986 bytes ...5,1.Ltr,1.DEFAULT]_light_colors**error.png | Bin 0 -> 3991 bytes ...1.Ltr,1.DEFAULT]_light_colors**primary.png | Bin 0 -> 3991 bytes ...1.Ltr,1.DEFAULT]_light_colors**surface.png | Bin 0 -> 3986 bytes ...5,1.Ltr,1.DEFAULT]_light_colors**error.png | Bin 0 -> 3991 bytes ...DEFAULT]_light_colors**primary_variant.png | Bin 0 -> 3991 bytes ...1.Pixel5,1.Ltr,1.DEFAULT]_material**h1.png | Bin 0 -> 4813 bytes ...1.Pixel5,1.Ltr,1.DEFAULT]_material**h2.png | Bin 0 -> 4829 bytes ...1.Pixel5,1.Ltr,1.DEFAULT]_material**h3.png | Bin 0 -> 4341 bytes ...1.Pixel5,1.Ltr,1.DEFAULT]_material**h4.png | Bin 0 -> 2654 bytes ...1.Pixel5,1.Ltr,1.DEFAULT]_material**h5.png | Bin 0 -> 2468 bytes ...1.Pixel5,1.Ltr,1.DEFAULT]_material**h6.png | Bin 0 -> 2256 bytes ...5,1.Ltr,1.DEFAULT]_material**subtitle1.png | Bin 0 -> 3608 bytes ...5,1.Ltr,1.DEFAULT]_material**subtitle2.png | Bin 0 -> 3540 bytes ...ixel5,1.Ltr,1.DEFAULT]_material**body1.png | Bin 0 -> 3245 bytes ...ixel5,1.Ltr,1.DEFAULT]_material**body2.png | Bin 0 -> 3165 bytes ...xel5,1.Ltr,1.DEFAULT]_material**button.png | Bin 0 -> 2684 bytes ...el5,1.Ltr,1.DEFAULT]_material**caption.png | Bin 0 -> 2805 bytes ...l5,1.Ltr,1.DEFAULT]_material**overline.png | Bin 0 -> 2471 bytes 126 files changed, 1673 insertions(+), 40 deletions(-) create mode 100644 sample-submodule-2/.gitignore create mode 100644 sample-submodule-2/build.gradle create mode 100644 sample-submodule-2/proguard-rules.pro create mode 100644 sample-submodule-2/src/main/AndroidManifest.xml create mode 100644 sample-submodule-2/src/main/java/com/airbnb/android/submodule/showkasesample/SamplePreview.kt create mode 100644 sample-submodule-2/src/main/res/values/strings.xml create mode 100644 sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/FontPreview.kt create mode 100644 sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/LocalePreview.kt create mode 100644 sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/Names.kt create mode 100644 sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_17.png create mode 100644 sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_18.png create mode 100644 sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_19.png create mode 100644 sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_17.png create mode 100644 sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_18.png create mode 100644 sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_19.png create mode 100644 sample/src/main/java/com/airbnb/android/showkasesample/CustomShape.kt create mode 100644 showkase-annotation/src/main/java/com/airbnb/android/showkase/annotation/ShowkaseMultiPreviewCodegenMetadata.kt create mode 100644 showkase-browser-testing-submodule-2/.gitignore create mode 100644 showkase-browser-testing-submodule-2/build.gradle create mode 100644 showkase-browser-testing-submodule-2/consumer-rules.pro create mode 100644 showkase-browser-testing-submodule-2/proguard-rules.pro create mode 100644 showkase-browser-testing-submodule-2/src/main/AndroidManifest.xml create mode 100644 showkase-browser-testing-submodule-2/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/two/LocalePreview.kt create mode 100644 showkase-browser-testing-submodule/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/CustomSizePreviews.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/input/Composables.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/input/Composables.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_combinedpreviews.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/input/Composables.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_combinedpreviews.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_devicepreviews.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_fontscalepreviews.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingfontscalesComponentlargefont1.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingfontscalesComponentsmallfont.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/input/Composables.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_fontpreview.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/input/Composables.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt create mode 100644 showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1.kt create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/main/java/com/airbnb/android/showkase/screenshot/testing/paparazzi/HighFont.kt create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/main/java/com/airbnb/android/showkase/screenshot/testing/paparazzi/Text.kt create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[15.Default Group**Preview - 1.5 font**null,1.Pixel5,1.Ltr,1.DEFAULT]_default_group**preview_-_1.5_font**null.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[17.Text**H6 Text Row**null,1.Pixel5,1.Ltr,1.DEFAULT]_text**h6_text_row**null.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[19.Text**H6 Text Row & special chars**null,1.Pixel5,1.Ltr,1.DEFAULT]_text**h6_text_row_&_special_chars**null.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[20.Light Colors**Primary,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[20.Light Colors**Secondary,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**secondary.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[21.Light Colors**Primary Variant,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary_variant.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[21.Light Colors**Secondary Variant,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**secondary_variant.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[22.Light Colors**Background,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**background.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[22.Light Colors**Secondary,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**secondary.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[23.Light Colors**Secondary Variant,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**secondary_variant.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[23.Light Colors**Surface,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**surface.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[24.Light Colors**Background,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**background.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[24.Light Colors**Error,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**error.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[25.Light Colors**Primary,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[25.Light Colors**Surface,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**surface.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[26.Light Colors**Error,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**error.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[26.Light Colors**Primary Variant,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary_variant.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[27.Material**H1,1.Pixel5,1.Ltr,1.DEFAULT]_material**h1.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[28.Material**H2,1.Pixel5,1.Ltr,1.DEFAULT]_material**h2.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[29.Material**H3,1.Pixel5,1.Ltr,1.DEFAULT]_material**h3.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[30.Material**H4,1.Pixel5,1.Ltr,1.DEFAULT]_material**h4.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[31.Material**H5,1.Pixel5,1.Ltr,1.DEFAULT]_material**h5.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[32.Material**H6,1.Pixel5,1.Ltr,1.DEFAULT]_material**h6.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[33.Material**Subtitle1,1.Pixel5,1.Ltr,1.DEFAULT]_material**subtitle1.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[34.Material**Subtitle2,1.Pixel5,1.Ltr,1.DEFAULT]_material**subtitle2.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[35.Material**Body1,1.Pixel5,1.Ltr,1.DEFAULT]_material**body1.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[36.Material**Body2,1.Pixel5,1.Ltr,1.DEFAULT]_material**body2.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[37.Material**Button,1.Pixel5,1.Ltr,1.DEFAULT]_material**button.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[38.Material**Caption,1.Pixel5,1.Ltr,1.DEFAULT]_material**caption.png create mode 100644 showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[39.Material**Overline,1.Pixel5,1.Ltr,1.DEFAULT]_material**overline.png diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 69e6475e..7e02786c 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -92,7 +92,7 @@ jobs: api-level: ${{ matrix.api-level }} target: ${{ matrix.target }} arch: x86_64 - script: ./gradlew connectedCheck --no-daemon --stacktrace -PuseKsp=false --debug + script: ./gradlew connectedCheck --no-daemon --stacktrace --debug - name: Run UI Tests w/ KSP uses: reactivecircus/android-emulator-runner@v2 diff --git a/sample-submodule-2/.gitignore b/sample-submodule-2/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/sample-submodule-2/.gitignore @@ -0,0 +1 @@ +/build diff --git a/sample-submodule-2/build.gradle b/sample-submodule-2/build.gradle new file mode 100644 index 00000000..9fc3ea2b --- /dev/null +++ b/sample-submodule-2/build.gradle @@ -0,0 +1,87 @@ +plugins { + id 'com.android.library' + id 'kotlin-android' +} + +if (project.hasProperty('useKsp')) { + apply plugin: 'com.google.devtools.ksp' +} else { + apply plugin: 'kotlin-kapt' + kapt { + correctErrorTypes = true + arguments { + arg("multiPreviewType", "com.airbnb.android.submodule.showkasesample.FontPreview") + } + } +} + +android { + compileSdkVersion 32 + + defaultConfig { + minSdkVersion 21 + targetSdkVersion 32 + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = '11' + } + buildFeatures { + compose true + } + composeOptions { + kotlinCompilerVersion "${versions.kotlinCompilerVersion}" + kotlinCompilerExtensionVersion "${versions.composeCompiler}" + + } + // Added to avoid this error - + // Execution failed for task ':app:mergeDebugAndroidTestJavaResource'. + // > A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction + // > 2 files found with path 'META-INF/AL2.0' from inputs: + packagingOptions { + exclude 'META-INF/AL2.0' + exclude 'META-INF/LGPL2.1' + } +} + +dependencies { + // Support Libraries + implementation deps.support.appCompat + implementation deps.support.ktx + implementation deps.support.lifecycleExtensions + + // Showkase + implementation project(':showkase') + implementation project(':sample-submodule') + + if (project.hasProperty('useKsp')) { + ksp project(':showkase-processor') + } else { + kapt project(':showkase-processor') + } + + // Compose + implementation deps.compose.activityCompose + implementation deps.compose.composeRuntime + implementation deps.compose.constraintLayout + implementation deps.compose.core + implementation deps.compose.foundation + implementation deps.compose.tooling + implementation deps.compose.layout + implementation deps.compose.material + implementation deps.compose.savedInstanceState + implementation deps.compose.uiLiveData + androidTestImplementation deps.compose.uiTest +} diff --git a/sample-submodule-2/proguard-rules.pro b/sample-submodule-2/proguard-rules.pro new file mode 100644 index 00000000..f1b42451 --- /dev/null +++ b/sample-submodule-2/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/sample-submodule-2/src/main/AndroidManifest.xml b/sample-submodule-2/src/main/AndroidManifest.xml new file mode 100644 index 00000000..ee0485a8 --- /dev/null +++ b/sample-submodule-2/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + diff --git a/sample-submodule-2/src/main/java/com/airbnb/android/submodule/showkasesample/SamplePreview.kt b/sample-submodule-2/src/main/java/com/airbnb/android/submodule/showkasesample/SamplePreview.kt new file mode 100644 index 00000000..4f948f91 --- /dev/null +++ b/sample-submodule-2/src/main/java/com/airbnb/android/submodule/showkasesample/SamplePreview.kt @@ -0,0 +1,12 @@ +package com.airbnb.android.submodule.showkasesample + +import androidx.compose.material.Text +import androidx.compose.runtime.Composable + +@FontPreview +@Composable +fun TextPreview() { + Text( + text = "Some Font Preview" + ) +} diff --git a/sample-submodule-2/src/main/res/values/strings.xml b/sample-submodule-2/src/main/res/values/strings.xml new file mode 100644 index 00000000..7a671cda --- /dev/null +++ b/sample-submodule-2/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Sample Second Submodule + diff --git a/sample-submodule/build.gradle b/sample-submodule/build.gradle index f5005735..5667b29a 100644 --- a/sample-submodule/build.gradle +++ b/sample-submodule/build.gradle @@ -9,6 +9,10 @@ if (project.hasProperty('useKsp')) { apply plugin: 'kotlin-kapt' kapt { correctErrorTypes = true + arguments { + arg("multiPreviewType","com.airbnb.android.submodule.showkasesample.LocalePreview") + arg("multiPreviewType", "com.airbnb.android.submodule.showkasesample.FontPreview") + } } } diff --git a/sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/FontPreview.kt b/sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/FontPreview.kt new file mode 100644 index 00000000..8a55ed16 --- /dev/null +++ b/sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/FontPreview.kt @@ -0,0 +1,6 @@ +package com.airbnb.android.submodule.showkasesample + +import androidx.compose.ui.tooling.preview.Preview + +@Preview(name = "Normal font size", group = "FontPreview", fontScale = 1f) +annotation class FontPreview diff --git a/sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/LocalePreview.kt b/sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/LocalePreview.kt new file mode 100644 index 00000000..661fd565 --- /dev/null +++ b/sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/LocalePreview.kt @@ -0,0 +1,6 @@ +package com.airbnb.android.submodule.showkasesample + +import androidx.compose.ui.tooling.preview.Preview + +@Preview(name = "Norwegian", group = "LocalePreview", locale = "nb") +annotation class LocalePreview diff --git a/sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/Names.kt b/sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/Names.kt new file mode 100644 index 00000000..882f1f15 --- /dev/null +++ b/sample-submodule/src/main/java/com/airbnb/android/submodule/showkasesample/Names.kt @@ -0,0 +1,9 @@ +package com.airbnb.android.submodule.showkasesample + +import androidx.compose.material.Text +import androidx.compose.runtime.Composable + +@Composable +fun TownNamesPreview() { + Text(text = "New York") +} diff --git a/sample/build.gradle b/sample/build.gradle index e1e73988..46607fff 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -81,6 +81,7 @@ dependencies { // Figure out a way to enable using debugImplementation implementation project(':showkase') implementation project(':sample-submodule') + implementation project(':sample-submodule-2') if (project.hasProperty('useKsp')) { ksp project(':showkase-processor') kspAndroidTest project(':showkase-processor') diff --git a/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_10.png b/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_10.png index 0b084d834880beff38dde3d3830c93bafe749f6c..a5cb53b6cb5e0128edee6da4fc8b63f701294370 100644 GIT binary patch literal 1277 zcmVPk^q@(lekTN_xOf@w%l$V!BX=!O>YHCXQ`uaa*v*^UcL>eC-#}!i% z9Jpg+W7N^nL5iaMl-<g((2!Gi}B6ci+>E!*4MR8&;-N1u_MolQ12HgfKDb&&l(U~g}aK7INm$3sIy z6crUEk;zzDS<&m)uc@uAO%f8B`1p9Tx3`y^r?+q4lC!h3xO(xDjP!WJshJ78Xh!A7^G}QcFt<9UdM^U3Ygky?psnj{ExhC_FqIvTu^* zgsBlgmLdtQBfgzQv5$#TU*G!4S3ee zg_lFzwes>yGf85~%gbdZeR6Ull2=z(MWO~CZ)0O)rAP4h_ovUFKmW3hZ%fh8&_HWz zYjPfcPHJi@*4ej(qod<*-&0vxN$=mkmn9iXy9}?vd7W-)X-TuQvsc#f{Yc#0+{nkr zM|(pd4SX}9%j5H1Y6z1IPxD4ImppHh^q!3$l4%6&~lLe(db*NO|<=5oF&3IO|36^z@X?dqCar_Gl$8 zE{^Kz>Toqw4nM(9VdI=LRa#n#E22{J^YiKPVdOQIUkO*X?VZ8$mSenzM}!(wt_PmKYsiuDKA_wQ@=a#GMe+w nxy$Ccm`uv}8Js@~r!sv9pL7DZ^xcLd00000NkvXXu0mjf-pqqV literal 2107 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 G-}yJ4d&C?7 literal 2221 zcmb7G`9IX#A0A1@xES0_D9ji`*B04A(HPfE)~s2FvM&iE`w*rk`*7`BD57LZXk^J% zB-v%(m&r2r^^WEHx!?cb{&3Fgyq@uz#P_+;sOGJ2{_Dc)4(x$E~~4Vi(tF3VuFg#2FZG&@CD+J!a2KCE1k)xvU(p; z&IxwddbyXjWUZM`&0u4IEjeVP+$VjSS$v{xm*IMJOX1rYYkGE0j^BC+=f`IC`Nkk# z_3+c<`PJbHX?67p9&rOt2L}gKG}MO@urW27t?Vs@K(r>K^xYjivFS3o>v2#-w^l^E zXwde;{=zq2cHK0o%=H*3Vv2&q@i@Nz%L2@8$dVy(7ct2O$9!TwxO&WsZnH*e!lTbi zL_>LAK+)I;G#JhV`7c15KaLSohE4^lWx#LvwMalNTI=On|QyuHnxzhIg&2N zD7+ zQ+KV`IHFnB{B4H+#?+(->AFkzE_HUG#4t?y?$^-|9>WsDUvA!`5=w2Ugl{mr?!21~ zAH1ihI#VTKAGzEP#y)t^_vzzJoPML#PGO#98W8SS7BZLziM8LDZmyHDrH(`}F~2p) zRaJVtHgf4e$655xxJu8_>W|mDbJbjiEAVxA;*pqdK8YPRR_`TuIhL2W;D}?7WwimzCXpMne zg=Q6YlQA&a^>Lkefkj`vY^CzOjp^z32pd_OdV7u2!=eqpy%n?7k*cDqCi!9F(Y8~z zyi*JwHc!%y}`_>f%qVcONQSWY9;d{?4y^IJt6et+yab`d(#=RgJ3y5Ho&DKuCk=sq8(q3-%kS zbfAoL(}5Rt@-b*Wo+EEV?JK?he#${O6Xx_Y}`NMeYRz$rJ;-vP2vutAf6_x`mb~lR6uO4xoQE3x>tIc+bI?J#^6Q& z8Y#=_K9XF6?t_~(|LQ=k zdAU^(JpsIyuUQ0-aFrLysMBebgSswurb_!Qb;;=WJM<4(zIXm8f|Ctr(3LCt;GG$V zo3l~MhS>0+UX=nnFgDQxKIC+3KAMg9*yZI+pMxL*^Dtz8ZR^(~;2;oRv4X*}yFNKS zR_paDlp4 z401>WT{-BX!XpI-7LP_-u}&M^NyI2r`QmI`|nRhdJBT zPWs2#`_+6G$R#ZV;bc~u?KQjO8_7COhKw4V2+<+aQtliq)m(NkG*3(U4H~otr=(S-}qA!5`HTDaT znuEHK%UxT7@{VMk2WqF-Kxh z3Vg0<=le_vWO>6})xB?z1vurl@^77kHJaahb>|{XeISI4q&yNCHNu8xBD7xKF})PF ztvsxCa;;tnfhp#~0nvS#E^IoZPEPQVDrgP;ts5O#if=Sd1w%Wd+tZ0R(d4rz5DAJt z_d8%BMqv2A{+aaOfKw94vOC9_j)R8T41(-uA3{srfCKj^iRk#YEl;_=bRR+6I_+X#2?j0aB|b>;M1& diff --git a/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_12.png b/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_12.png index 07d2afced7c4dda00e55625adc7e85b92f15e311..0b084d834880beff38dde3d3830c93bafe749f6c 100644 GIT binary patch literal 2107 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 diff --git a/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_13.png b/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_13.png index 77de9ab662653c5fd140a6d5e461d552640bc6b0..84c759c69d5d85fd22f5c353b17daa0deb48ee0d 100644 GIT binary patch literal 2221 zcmb7G`9IX#A0A1@xES0_D9ji`*B04A(HPfE)~s2FvM&iE`w*rk`*7`BD57LZXk^J% zB-v%(m&r2r^^WEHx!?cb{&3Fgyq@uz#P_+;sOGJ2{_Dc)4(x$E~~4Vi(tF3VuFg#2FZG&@CD+J!a2KCE1k)xvU(p; z&IxwddbyXjWUZM`&0u4IEjeVP+$VjSS$v{xm*IMJOX1rYYkGE0j^BC+=f`IC`Nkk# z_3+c<`PJbHX?67p9&rOt2L}gKG}MO@urW27t?Vs@K(r>K^xYjivFS3o>v2#-w^l^E zXwde;{=zq2cHK0o%=H*3Vv2&q@i@Nz%L2@8$dVy(7ct2O$9!TwxO&WsZnH*e!lTbi zL_>LAK+)I;G#JhV`7c15KaLSohE4^lWx#LvwMalNTI=On|QyuHnxzhIg&2N zD7+ zQ+KV`IHFnB{B4H+#?+(->AFkzE_HUG#4t?y?$^-|9>WsDUvA!`5=w2Ugl{mr?!21~ zAH1ihI#VTKAGzEP#y)t^_vzzJoPML#PGO#98W8SS7BZLziM8LDZmyHDrH(`}F~2p) zRaJVtHgf4e$655xxJu8_>W|mDbJbjiEAVxA;*pqdK8YPRR_`TuIhL2W;D}?7WwimzCXpMne zg=Q6YlQA&a^>Lkefkj`vY^CzOjp^z32pd_OdV7u2!=eqpy%n?7k*cDqCi!9F(Y8~z zyi*JwHc!%y}`_>f%qVcONQSWY9;d{?4y^IJt6et+yab`d(#=RgJ3y5Ho&DKuCk=sq8(q3-%kS zbfAoL(}5Rt@-b*Wo+EEV?JK?he#${O6Xx_Y}`NMeYRz$rJ;-vP2vutAf6_x`mb~lR6uO4xoQE3x>tIc+bI?J#^6Q& z8Y#=_K9XF6?t_~(|LQ=k zdAU^(JpsIyuUQ0-aFrLysMBebgSswurb_!Qb;;=WJM<4(zIXm8f|Ctr(3LCt;GG$V zo3l~MhS>0+UX=nnFgDQxKIC+3KAMg9*yZI+pMxL*^Dtz8ZR^(~;2;oRv4X*}yFNKS zR_paDlp4 z401>WT{-BX!XpI-7LP_-u}&M^NyI2r`QmI`|nRhdJBT zPWs2#`_+6G$R#ZV;bc~u?KQjO8_7COhKw4V2+<+aQtliq)m(NkG*3(U4H~otr=(S-}qA!5`HTDaT znuEHK%UxT7@{VMk2WqF-Kxh z3Vg0<=le_vWO>6})xB?z1vurl@^77kHJaahb>|{XeISI4q&yNCHNu8xBD7xKF})PF ztvsxCa;;tnfhp#~0nvS#E^IoZPEPQVDrgP;ts5O#if=Sd1w%Wd+tZ0R(d4rz5DAJt z_d8%BMqv2A{+aaOfKw94vOC9_j)R8T41(-uA3{srfCKj^iRk#YEl;_=bRR+6I_+X#2?j0aB|b>;M1& literal 2542 zcmaKuc~H~W7RP@9l(2{hf+dv2ibdJ9Xo&;}LD`XjN{xiY3L=OB3JGD8Bt_XuN!eyGdvIO-xJJG zt$)E-NkcEJ+K2c1mUIW04z6!2-=SOem3xK>fWP$;M+ zd6GnH1uzLv06F6B1 z#(5Oq#;2!Br=I8R!#kRoIERFWCaofX0cd(g2D;Am$Itfn_4VOdM@VeZZyl-9Vfx;N zii(qq{Kw&rOa_Cl^0qdh^%;kQde?h9^hwM}ozukRWYxomp02r&=lbdjS#+-_%lPdr znN0()J~VUc-8;sQddE!6&An7rRZUCorlxVE7TwIy>+0%4 z+&&Rou|w0CG|Re=EHPVs*C!Q>AIBdHe^tb0`%!7M)*c81Vq$H5_EBKl7kYYngKW0R zZbSRLXV0Ad8?WRlDJws|ZpjaJD@cC%JBb9`HN-wgXd*Uks(s29#Y-?P_8GxY4Jztc zH798phy*(lHY0emLyh7IR7udOZ~9Tay}duu?tinG6-o7~*IPOYtNK8*GB{DC=xI)9$K`gKvJhCxGUhOMowO%e?l$sFNqMXeIqpt2u)Fe;(EY4K(#lOB4VdU(+mfY7spgEQnY&x1OAV!H%nM`vf!suQp*#c-QEJUu<<>80;GFr(Hl znasxVR?KLKdCT1T0#9q-K2uX(!$Wy?lJO1(O1SKx^+_lcAxZiKV3@1Omb8L%FG^h(ROk zj(4V*7Ml88F_Q~q%e%TGS!C6-jQIbG{-09+Yv8~A`==THdO~jOe+=MQOv;hzzPnKC ztAi$bFkD1yS!>KVJZX6%oxfW}C4XdO#ISR5pwg|XuFkijqT=!bxB1C@JfM)Z9V?T> zdw6^QOeSl5d@s0h913Orpkr=vnqN?LL)M~igUQ?2NTfb|IJffY-soHj?y`=irZL4TsDR5w`*$WcUk(fN z$82tHw!i6_A8iaBr_?`g=^UFzyZ+1jRP z0Hlyrc0Mo=Q%V0`aa($ZY~(oRii5-9x=+qkBR#^xs$`ZYPK+qvmM2`Kd=~4RhN1mN z-M{EvbX zk%QAM63L_4byxu=Dyo^o5-!ULxIuCP1b0HssQcg0Qym56GyP|L`Y2y zipI_I`A`GGHP@P_d|3RsxA(M)np&ZdRqcgF-|39T<86$Nf{g=NS7$0*a^@2Qf`dzC zfgOqU^W0{p?kQcXz(YczP#4hyjuj48>2?|E9lP>lE+B`xIJUn9IZl|h1xLFKuNjU3QMk}|+&E^>#V-xQpscR$mw*o*4U<&R|O)GZh)yvhH z{)12`>XXZUd3#euJGtoykw~0*5j8(jZ_|lCT~17w0|AXu-UTt~AsaOI;7q8c_DLrJ zCt$!fcT6sph5J2&@~?_M0CyO!W-&`&Q)xF`eT8!?v=uomW<(lB@HdNg=L^F7?mW*_ zQ^TZmf^HUNz--hQ+g zE!Re*+Siit^8G%Zo()oEjnC^2ceb`djjX}O1PrewO82(fKC2N1^+1HYDlIPR&9RfN zpWu@o%Wsdj@nna_Kn?^Q9RP$_KA#`fU+RFLV~RL5OSm0=zAjx`XV0EX(!*wE4Ooem zmX^gsNnpHmJt{jVr%>AzDURSBa3j0N#WfT=6339`0|S+Y(gOr}cPX-pn-!YD&@3vg zJ5oG5FpjAN4X&=?!s4f1LNKbR7; zfOWC`ao}5}zYZS%z$csmLY8(~)*_(Mv_XLE`xY<#VG%F~RTFXUYa;+zZg6;a>?K<8 z4&SHMoapx}D-(RB*GmcyI8DNMV2!Ju%o3eaH?+TC@8D2^`b?2TcMbnn@*b<6E_ut< z#`_<$e6Z+#q@|K`Z9~Gi2)w35(8MqsqHGOC>Dg}AK~&idg6DE`hJcN8N6U8nJ-;mz aq9Qz$k(os<36{@sfQJjx`O(R5)BX*xh~dC-@Qf{R%5X=uC*D;tcv>szRHwH3}$OWU#fm9tQ* z6Axb!k+YTAN@w7Pq$HX{K3MguDaB_&8ahQSz%6B4K;{xuv)p*|Qxp2y_o=KkLQ z9(g>4D$_PIHHCa>ekktCB%)<{Lqat;+J9!G%{V8*^;!?2d-^))eca#>IzegnV68%A(Q zZR}}bl-A7-?3Af4XV_*mi#m75F{KqjR{S2ejUzfG#|D!NW{}r%)To0dw4t9YSo{~d zo_q>9kK^;`LQfG@^p8`anew+rXg)R$Gx!15@a9tryoIr zT6>gWNhyj)Owj9H%FoKP?GOa{S1@BIA1n#$m!pX08-Ut}LB`SqR20IFepWcXU&(qS ze|Eb6orN@zmX-x~X5*r8(&9L`d%!X=*>)jSg!i#fJEir`^RvaK89OkLlF)7w6AWH{mj5-OssC`|m2NzcX2m&dFVo^@1DQ`4n^=l& z`Md=hBl_Xg2Kfii_b_HaC{k5Aavj&pY*#OPjdYRt;XM^wq%bjsTQ2 zt_Qw>%4pk1(+5YrEXb#Ra}Lo=ytXabkGe%71XKc^Qn%uHJ^O+$<3|eba3^|Y*R@k*v zAfE@hGCPlEY@tR0Ndae;;nXZ^0WL9;{A$( z9z(_X%;S*+jv|@&dseuodOee@%e?A4<60BGBXs7U`Pt~LwZ=l+#%wt>u0m|S(-3Ub zTT(Ds_%;UHP3wmirHcL@dEWlb24T~6ty;^iM9tAp_``5MHhhtkhD=@avaqoDW0NMR z<}_sBOq;&jGavA^X7uocz%qNTH#IO)*edbZ493(X`w5yv%VkwO%1ywtl`V$tPFpHB zHxP*j7cJ1}x9M_tCL`*>UBRG*ClZ4+Sp9!QW=JpzsjFJ2*+(3@as-an`&ddgI8jPL z`V1UvPjYE$UanlAF@0NB+`S$puV0G0>U4UtJ*Eq0&F0u|uE$9aWW8^sqo=XP$>v;{ zcnI*2Gvi^C1Jz2#L#9v2^OJ_%n{~Jz#tBZbN>B?qVdslyodB1u|AdZx{Gb>5WN$w3 zJ9cl@eV_=#X942WxWAHKnK!2=j0tI)M!%7dTVAL(Fr@Jh(DDsn(~yuq0+;Q%%!cpJ zd%nj52&Lllm0_(60b01@%WGmr`AYD8ggw7|1>fIM#{;f$e!iIXq966stg^PYb~jg( zfgwr?SO;DNim!TdDo6YHL|=CK)b%4pU!u=0bc54xriBaVxd?E5v^?l{YhzGaUXFdh zo2g@Y1w@{MF5R{m)5Us&qU7KVvz|RQhfw=H4DN-D!R6%CnyA^=aGA~%Um`%BR|coQ zds$|9^CH_ZaG*HJAreotW43l@?CaRIRoAK;dH|h)`t1+i4gFPBu|&K!_36rZ{U9uv zqnhV7Fa5pl+X47#S3|Ecwf(1wU8qn!X}YMZ%gjE_^8tV4r>zPjj(#HcojrN>uQZ7u zuZx5W5;$0pC%=O><5pAhhTDS2x-Sax&(B?8QI$<~4Af!M(2o-(z8i2K-r8vX9ye)> zRHJy~r$voflHqGQ+o9@0hdP08qzQMa;p<3k+tv_*zzxgYgEWBYs9e4Z zqj{nd#~r=Jq|)14*Gr6G@w6Y`DL*d|3SFJ#{Nw&;R)<~T2&+u5 z4VY+|$#`_A{AxtDZ2(5q4d130gts0RN4A(=x@J$=28=}qBGL)ppa*>E9%IMFVL!J~ zpdfP$(@kt1$UQQOA5<`Ph0vOyI5Z%Czfe>h5L1x$e;&Hg?`(!IC5k((Jl8x`aTA?_ zl=*G}`pUmQKt1i^)4ofvvU;J(I7NK5%*FIYn?vJ1SAx)W{;J#0YesLpDY2sFG_BOk z@aEBb28xm41Q-8AxR$YM1KZ|avPh~Tyj_1gjE`v8We{cx=Qj8#I&@ua z%J5}$@D%A^tHZ8?%!w=!Uhzjg-yhCX4!#52qSX2tztMI8mY94^KSIcYl;GsQd&r<2fWQ}mM@w#h8o3x%;tS)F=Z}t(`@XBVPF^QdxZRUGhm$Z-6*|%)s1~x^mv{U*(GW$I`MlVZrxedCK(KsEjRD{J)S5W-TaKo-M>-u#)q7Z8G&Tj$XU@ortRFhM<;V_@`S+TxNFF6@u`veK_}_Hr z-~axPNV(8~9r6^sdm8UgYPJS!gqgu^=spQ3aWv%W0(#{5s=F1Ek6||kOl@riKM2){;7C^+je*Jp$f{2%1~yF`L8Iv@(TXoB>#jZn3k4pILEZkFe2 literal 2542 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 diff --git a/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_16.png b/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_16.png index cd5551969bf120c38f7f3e558fc8a55754ab4252..77de9ab662653c5fd140a6d5e461d552640bc6b0 100644 GIT binary patch literal 2542 zcmaKuc~H~W7RP@9l(2{hf+dv2ibdJ9Xo&;}LD`XjN{xiY3L=OB3JGD8Bt_XuN!eyGdvIO-xJJG zt$)E-NkcEJ+K2c1mUIW04z6!2-=SOem3xK>fWP$;M+ zd6GnH1uzLv06F6B1 z#(5Oq#;2!Br=I8R!#kRoIERFWCaofX0cd(g2D;Am$Itfn_4VOdM@VeZZyl-9Vfx;N zii(qq{Kw&rOa_Cl^0qdh^%;kQde?h9^hwM}ozukRWYxomp02r&=lbdjS#+-_%lPdr znN0()J~VUc-8;sQddE!6&An7rRZUCorlxVE7TwIy>+0%4 z+&&Rou|w0CG|Re=EHPVs*C!Q>AIBdHe^tb0`%!7M)*c81Vq$H5_EBKl7kYYngKW0R zZbSRLXV0Ad8?WRlDJws|ZpjaJD@cC%JBb9`HN-wgXd*Uks(s29#Y-?P_8GxY4Jztc zH798phy*(lHY0emLyh7IR7udOZ~9Tay}duu?tinG6-o7~*IPOYtNK8*GB{DC=xI)9$K`gKvJhCxGUhOMowO%e?l$sFNqMXeIqpt2u)Fe;(EY4K(#lOB4VdU(+mfY7spgEQnY&x1OAV!H%nM`vf!suQp*#c-QEJUu<<>80;GFr(Hl znasxVR?KLKdCT1T0#9q-K2uX(!$Wy?lJO1(O1SKx^+_lcAxZiKV3@1Omb8L%FG^h(ROk zj(4V*7Ml88F_Q~q%e%TGS!C6-jQIbG{-09+Yv8~A`==THdO~jOe+=MQOv;hzzPnKC ztAi$bFkD1yS!>KVJZX6%oxfW}C4XdO#ISR5pwg|XuFkijqT=!bxB1C@JfM)Z9V?T> zdw6^QOeSl5d@s0h913Orpkr=vnqN?LL)M~igUQ?2NTfb|IJffY-soHj?y`=irZL4TsDR5w`*$WcUk(fN z$82tHw!i6_A8iaBr_?`g=^UFzyZ+1jRP z0Hlyrc0Mo=Q%V0`aa($ZY~(oRii5-9x=+qkBR#^xs$`ZYPK+qvmM2`Kd=~4RhN1mN z-M{EvbX zk%QAM63L_4byxu=Dyo^o5-!ULxIuCP1b0HssQcg0Qym56GyP|L`Y2y zipI_I`A`GGHP@P_d|3RsxA(M)np&ZdRqcgF-|39T<86$Nf{g=NS7$0*a^@2Qf`dzC zfgOqU^W0{p?kQcXz(YczP#4hyjuj48>2?|E9lP>lE+B`xIJUn9IZl|h1xLFKuNjU3QMk}|+&E^>#V-xQpscR$mw*o*4U<&R|O)GZh)yvhH z{)12`>XXZUd3#euJGtoykw~0*5j8(jZ_|lCT~17w0|AXu-UTt~AsaOI;7q8c_DLrJ zCt$!fcT6sph5J2&@~?_M0CyO!W-&`&Q)xF`eT8!?v=uomW<(lB@HdNg=L^F7?mW*_ zQ^TZmf^HUNz--hQ+g zE!Re*+Siit^8G%Zo()oEjnC^2ceb`djjX}O1PrewO82(fKC2N1^+1HYDlIPR&9RfN zpWu@o%Wsdj@nna_Kn?^Q9RP$_KA#`fU+RFLV~RL5OSm0=zAjx`XV0EX(!*wE4Ooem zmX^gsNnpHmJt{jVr%>AzDURSBa3j0N#WfT=6339`0|S+Y(gOr}cPX-pn-!YD&@3vg zJ5oG5FpjAN4X&=?!s4f1LNKbR7; zfOWC`ao}5}zYZS%z$csmLY8(~)*_(Mv_XLE`xY<#VG%F~RTFXUYa;+zZg6;a>?K<8 z4&SHMoapx}D-(RB*GmcyI8DNMV2!Ju%o3eaH?+TC@8D2^`b?2TcMbnn@*b<6E_ut< z#`_<$e6Z+#q@|K`Z9~Gi2)w35(8MqsqHGOC>Dg}AK~&idg6DE`hJcN8N6U8nJ-;mz aq9Qz$k(os<36{@sfQJjx`O(R5)BX*}>%(N>Kz<6qG80pu~U;5JC~@9YLBjX#oiY+!mC&Q2{9-A`m3h z5D1;10zs-K6ayqdLNSCS1P};;ljd6Z_W88bbv+vLE&l>Ap?;3MG?_6uW^O^H` zaof`5z}{nf0RX@O(_1(1001Ia0f1fpzwQx^NGDwi0ss_JO>bVajhSGQ#ooBukvqQ& z27;&-yZ>?U*Y;n&07Q&XYf86FZlg}^Qu&5{dv=*?Z9853>t2=T?++%Qy%~G>2)#YJ z>`r|G(?M_vC-FUx`HuonGi~P*IuZt{US|mlM0bk;!oKF)Hi1m~tcj zu%4t>-{I~z>t^)z`x+DZ;aHXPC+vQ9%joKQ#n7?6D{kn;`DRD&e3ZY8(@}1mLF<7R z0A!{c6bfzId;m5#DAJaHV{5bJUsOh8PXYF59C$;C(XX4-Zgl8^OP6Fox=kR#$yGSF zL*TTUG!zOYhBIEFXnqS_S=qtl8Wwkz}MdWL?PD4 zd=W9Xp_JQ{_3Sw4b=y&EG8z#T^%oO2$oryg@t0epy0CbQl;2#U@x7UfVxTkfkpQ5+ z{>*6EC9%miJ&+e?dqWK!9yn6-HB(NyAXI3SIzK=ECNidUQ{=|=yr=Ff zqt)L85}{q+(B5JfCFN}alM@p&E5-U|H-?>YQJ%dqto6L6t%PJW{sW$jLdc5;X)ZmM5$CZL?e}Dfs z(IV!4uzZ4~e2&bH$c^#GIb+5&Q>L|t$MG*mzl(@17gYekg8447^Yx%O3x`xvg1p!= z-K9%HW=kG-QaXQ0ul7@vsQC12jPq4dYgLHjntCC&M(bkJukb-SjoL`1Z0=bYG^GT||`-8M@7b@TG zrURYD=VeyQV6Gcr`LP;UU>$M|B;ue2QG%YXBFH!YCCEKW-#lz&VffnMs z;&*7`tGJJ{h#0 zmEpKKboCNC&8@sm+sXiaQG*ZZS2J8?jO*OPy@G16d-(!0*=z*|#+nzFcxHIYy3n^8 zYvjXDXq0=#f_R?X=Q%+N0oH)-CoOmpqFuaJH3zwl{oZ=r zzY}3>1aPKL5Ik7eTVtT*ZSsS+NZ#D4Bv#8M+&-)bRxDCY50;xv&&gmB22gCv9CO5- z)Rc^%7d?8u+m#mL)qNlTVD%fq486^AkdJK&S;=BGiv#I5Bvrymmah#AFg{9BUZWPO zw3TANr9T4nC$uNZLwbFR-rf;w7g8xZ9K_i9wr?Z4dvj2w zuAEY+JlgZnBPjj5_bPf|;weRjBz_|SSo_EB2epI`%N>OJQ{0UkZd%+YVXrr zIAal$Tk#=QXYX8r@Te1xMfHlv%<;AH78-VSlD59O0DGHolg=yi_6xX4h`t%Ym2mNz z$~!=cC(TYTI>ruOhXkQukp}t6r8H~oC$Z2!0oK-7!D^I%#@fsVukCOIGANQTe$2(8 z$3aa5xvblgkRqHP#=>F2STRSh*?q(8Yo57nN8apHxkwd!!eVVc!o$P)xB`+Vt-~ zo15wJSfdspni{l$O@$EtT12+M@u9W>)X!lm4#HEz$xeQM+$iVxd{_ z-RISnH$U$FNvfcepnBbk=p4+m>(sxN|7waW%z!nwY zrE)cKp0JPNSr{^h@cUG~x7))wh8l48P=dN9<`%x*a;i-$kMbj(oL-Z5K;r$7cn>?m z*DWA+0xn0alQVGqE2sp>P2^|>K94&&v*vb;=l1XqC z7|>n6lY(*7bwlKiVM@#U1`PP5qkal5U}7=DDm0&=RU0{X!+Gm#G#*SWDKxy6Cq-J{ zE`Vw;xt4_6IJ1knqgQQ>zO)3C)sk^fkiC1=D|f>L2i|eN zD?vX0XVdT<1&yw+8`*}id3g&_J`7&EFhTHrEDFS?5DR2#I$F=m;*?a#C=;QR+SBOprk>|ry9(^nq4__=auV=>F2 zJ0|}qV@}B+K&gcZF^g~;RyZ zeH|t`*aBaoA_F|-#FLhntFZ(Lvy3b9MKrMaeQ_e^!8Z)PrHn`AAv!eRH zXmnqc|FTg~d&6fb-ptJ$L6F14g0^@om!7F-ryP)|OdrL*f8OnI?&hacLhd+ZRcvGyHPP$+^Ramh4u>sd>mx| zC75cc?IAI^heCs5IQmC8*Adp99J8eWU;U{Sw*tM0?*4wUv?;2aoCE3dNDoXa*ObPb zt!{!D#YNVjzWo`?{WegWgV!v=HqOWuhMh<}gyXx~v_0?;l0rGb+VkEyMN4XF*llV> z%Smb8_B)LfkG=En&#Zo3^9|$g5KyPY+nY|>Q&AT*4C*e2@a>>d)F?N1)u1JY2?G`z5RRmj8h2tUvVZ9M4d z49nn@H1LOqKRI0Kymm9)F(l6Z)4ncjHMv*%6eR}s0N+PIccn?7(piL{jo&pJy0BDKdaFhVqGltC z3_{g;#|1pe`3UDHg!8xskxtw%bsBp9Ejmy=)c8<2&x&y8OcrM{-*CBg0zXyuJ<{=o((R=-VN{A6D zXrZla4TuD{053G^yaP8z*3CsMjQT0?@a%;vO!s@P9UIh$hgSLrI}Hdgv+5&H?+$uf z+}L8>?8vamB3;O{2G7?WKA;>z+3cXOg)K$M_wS1jX!LJj`#rTP5H2Uh${=q5CO9g8rF5sodcx_p`YFnxim2 zht0DrR(}q#mnu8#xG=+T^3?c7DGyQ7kQQHti-5*~2xlY45hFcGja8}7j3PK&7;@O6 zcp8WB82NSi(XZ2c8Ch&$HoHbGk2WmQ9sAaDfxnhEAA`{$0B5ZZgnh~l=JZ66(L>d9 z+BNFL=hVuJYG{?}vwd zqGMqEtH$1-4c?Gxgv7L&Y?fi@ymx{S7->99p7=pJTROVTyFkK?e8{jVBF234UMb+C z*qKCdjni|l0N-e~=fQ-BjrK&Sm){BW|#qYNq z6L6@b)X?iE<(oSckyhudq={==jPd;`$&1g0#eh`xjyrI-qD(K+DmUQ!%GDZuQ^LE2 zNJC28T^5l#imhA%eTdlbVT#7aol6AAmmExTcU8FfDV$`Q6KOYqOtSa$*qE@?b(dZ%e5A<108v`s#+;FYtGEdZ;yyN&nYdj9-XHR=UMnyeew!{m{3x zz~kSm+ro^FZ*b_GA`bV`^wi4pb8-%CZ1`IZ48%wZ7g-gSr=Q_;Qo*qBl6p_J@e_}2 z?|5vg@6^Q8Yr7w$1^3}vltXfPruj!Ek4%gs=;`^xAqrn;;6H;Pw&#H`6Rg`TJ+x$L zh*D2`38W3BOn@TpUfVkjp_+~l+T&9;HV`dU%{Ly-uK!5WzFtSwWW1}W&#;1)0)dv< zmAKHT0Ne50s&?==N$Ff7kYB5-v1Jd2klAbFz6D*GySVf~IYD zQX;(6iL-Abn>~K2f7ZKr*beVw=%34=(VHbC_`yTPxX71Ea;;zjiC$Q7lfvW#^Q!WK zURbp#ZS@gGqVq$??v2agw*4In8XUOYw4J80qrW_mH^o=IO!Cdss1_cgpe-o=>72F2 zv7+E@?&2o7XpnSG5Lv*a@oatYpI|L>YcP&!4z4s1#*SO)%P2%}gtdlt#&1NYiQm|j zqu?TN4)SN^I2bR2;YCK7=w?|!E?4WanuA#QHA20vh23O+O4#rmMlhwb*8;yuxOLGY zGj!W%GEu=}ulvjD5bo#0igoz&+>)`)esop4&3e0KbsB9fpLKNqzUzP-$A-A$OTt7a z6+p~7)L-S&YwVGM)6O!_X*e@X8I>HSkR+*1)fa#^u~d(VV)T(#omdn~Gh>QCB0@Dn z+0w|_LIeE7`elp;Dk;lQFl>0AzJaw3WZmX(2MTJAmkE=CzK>B0t*&MpnanRCME@rMWt9#Plx{WR6iikRa`FFVAR z^)9{DM=gej^*3un=7k~B>bJ5hqggwRJ>w~*3E4Bk;)0OUR2ROIR&Z|r1AgKMdK=$Y z{MlvboS2$hachrm7HProPZE|8EAZd1kl&w;&}k>h<;&lJx4-xp0Bq+ue-!5A_&A8o z7u1C7@y+~}pv8O&cTO4+ve<|X6GBW=BSQCD8lW3IJc(#Rq}OTnj~#(8X^FL+ztlF@ zE0%o)PrN|zO&;FQGj^q48vj`~_^Zu0@G(4c;Jifua3VQuTPdyGX5=0du8P4FXOO>< z*tBz}yICuz=v5ughx3oSN;bmB<%Pfg)c%aZpL;Wpbm^P{t<2x${5Sv)>#0s_2j8AQ z4d+@oRGp>=ZkgE-Bmbc!hiet|rC;(BR@mZ-1-}Y$*1&9UtcPgROTJQJ6M06lWRMD` zpB)0kfi!ktDSjGiw?xc~OC!lk;wGav-2(D*A%Y=7>$!|_SO`{Ubf>bipPsJPXZXF*QjV{*t>8m~IEd7dS&l~MKQPMU;Sw%d@}@I#C4X2C7iws=JuUh#Q9))xq!OiR z47C{w-7iB>VGv$?dem_Ls)*W=z1BEKmvf1GQaitlokv!TR4zW0?Y!%q%o)SLnmcbx zcxnX-OT?ZAhzuk9vpuWPn{&HvOuqNguk#(m0OrG+9YY?kH!XZr!MSSK zl`Q{8=q7VXS<%6n5$mAPZH65bkr6={G+a=Mc+96_)$hYgBwHRmeNM? zJMqrbxInbz3i?ClFn%UQv+&~mw?yi--RDgM0~Z$;z0f`=ul5?8Oe4J3)|_L~@<{L! zt-64bQpdX5jUgXZ3!qja=0dT<>#LD;n$I{?%eY`GXnVD5ZU!xDk@RR|{JzT(FLDj& zuwu?YR$l$hG31A1kpSZIg)GQaQ&=f|xn3r!4}+fCt=ctvcsuLD^bY!`UWFHlEZ>K0 zS2RwQSsU2^iJkvUIbPIZpc;~VmwZhV|0d0O=5tC;$|P*^E(5UIy~VTZ+1qMx_)p=* zy4b#V%f^~Rp_a@U#zJ%Y`udgz9_TZtzI>7Kc8JqbIzAaWY!ouf&|=Z5&@)Q#ujf%HomJP$k^E;tfOU7{_*Jz;kj;$F zwz;IG){=9bs{L`QBpks=O;1M>suWur8uL$yioTl3-s3noxqQdN*iU;n60EGh2Q%W+ zv8R?@e~C;3nt z+`s$w?_v0t;QQ~c_dm}2-;j{6{*SBtyL^1Q83t$UMw`}3Ij-0 z2}q67Yl4Ih0s*9#`|U8!@t!lzJ*m_xjfRzQ47$_jI*2SeXQvAP8bTd*;*y z2tr^W2zi5XJGjCdB4-al`Zqj zsUVVM_3pO2xZdUZ`V)0_!Kcm$Jv?{(H)5LQAC7Xb)9-|3Nk2b!{IgQ!4XKBkL(h>_ zZ0;49^+jJNQ%~HqgoM9pp;--zKzZEa8u5Qfus!*PX>{)R_dJ6~)Zz3@e zk`V(T823U5db1td85mmLCazDml1PpoxLM@P9pN=I-{pGK1eL{N;?U+sTTVd4#xgN5 zMYe40{N2sHyJa04rb{gApUsC^D~ZIr)*ZHK&ooZY$f!SpATab-Y<$m|pAOty?GFrG zpD@)4T%!oLbd)a?diU?D&C2|k&HLNiY`%WDYp_FXk#Q{| z$N%8^#$tsI{JSl@6-$KqTkQUO%lfxTd@^0_A_hDQSZPU2u~wci9uu1O*6^K+CC6>d zMpnFX3Yd!>i=XzlUa8dyc)T$aqWVg<^egMw&1pZ=6>4~3+-B2U;^x{sX|Y_kY^5zn zWw30I&)}odxruMz&Wosreai7Fo47JoLSE0_g{)(*B(Dw2%C~NS-+X1dxzfSl6>Pdb zZrCDQPJJ-{tg!UpIw*-Yd6l%-%v(NlcmB0u*^z0!Kv2C`9i_w4W1s?lE8syAKTdm9 ztX}c`W@j23Kn*p0B@AwDtcSee>H8)0s{2gY!0P5=#isHBK2z#_!@-%pGCwb0@N@Rb z@L7O^v0quLQB4T1ER*>KUkcq1dH(UCk@x6o3l?68#dvBZT5Gltb7SiF$KjK zQzS2I`*zh|eHO6VLmn3TN(|hXo1X&r(eHQqQ*h@#8Kr3-Vts`=BQqwc6|xt_=jCyQ z5l73{h9pMFe#7X*XfJ10wU0+O7Bx**ngs*Cf@87tZE{O^qPDAlGXo0iGwS_Zo$Z(= zM^fQ;=@lA}vcT6?R6lz6)hTfG@)ac&JWg1XrS(~1kV0#y5i=1(A^1BQw5%83> zu~3-mbaUeJ*!P^kn=7rUDiJE1%f!^h(h=olQ~N51sY5E%doMSB8}K`oRy}lP^0>wW zfe5b{D4E`@x1DVlaiEO)z^Nf}Po5exwZT*=kyoR&Q;2PSZ5pUaVQ@MSbfU@tD`kIj z^p}?!Bh!kKk`KGPyPGwy&hE^hyHrTW!g;FkLz>Im9@~wv-MX<5JqHd#a{Mg6y|_Ow zCaEKgEXA$7`)@Hc&kohM#7NsUmo1X)U`6KEVH@gECC3~(bN9)9_|{WMtb^KwZq;WJ zShx;pH@w|GU9q`w=b#o8L2nja5cRd!jaVRnQAXxAV6|}AZDwd&savTI5RZQ74&7Dg z*lQlHBu|8qfw(B<+t$yVqk}&pxac&V7n7`5sp|>8pSZ=)mw~i zjFJ)&H_F{B+l+YXOOJZXgJ$|7;x969K4Z&*jhDQ3+tocO20HeZXKwN>u_@=d=QOF$ zorM?k6)w{7cw0uxYyFJo$*#9q9J&FJ%tdwa;b-EPo8#o&ng?s2wD4QUUAv3(r8oOh z5LM#&tuB$SnsX(_E;~;Fa}$~S3ERNfG1iir`t@T->hj#k$cKZtI%IApwn5IIrb(h) z=R^~zu|&m(yqZ0+-90^7+`5j?GyPEh@b^_m1xbv&k;izixIc1?lB}&oDaeQ(z z{~U&jFwz&dnp`n2H`BUnTrsC*#Lf<8?N3Vlro zV~!}9E>|S4$W&=Nx4qUkU`!K*>R%I-HkK$Yci2^;66wNX`)}R4 zTo83A-u=S6@z)u%+cZt0Cdn159$sD}ntZqm$lTZ121$?c*0t_ZA2*UQTbUL@>?Q+W zT{gjea+@vJKNJ($DhAh3@JKaP!n9l|yiZ|$z9nm?u0Ld;A1dDpdcY|L>#4m z8VL8;+kGFrK+f2#Em6lve$xdC7-?FiKE5~|I=gzRlL?db20B*4gU0qhLtTlfe`s#K zL)RE|*LCsXMp<$k=-%e4dt5Ck=VLQjbaP-Kq490(s%y>yik|kQYt?pB%cpFKLZd zh?5fK_oNIF*s;<+ zfuv?yWdv1xe8*eU<)N2*&qBxu1~a{asD1d)dV&0rVh?g3EV?qY0MEBfaq&X8of{*Pdk;>(-Q3f|V`%rV z+_@UO>)@wH1`KJAw5}19G7r*6jC20qjl=Rq$aVEwVQPV0N6Ny&LjLvIouE;;;J-c9 zU2yb@3t^W{XYRGJwK*d3fh!atc&k2}5SH6l5g6zgH!(VzdmQ6|Fai~Y-RRZXC$m}~ zI$5i)kGeI<*DxW57+@!sf~3p6E?raCt=6Wd#5$h4T^!ZOk9&v{h(fBs7MdrGjOP+g#N}^=$UaS zKQ9Vx-K529>hBUzDq8ml9IoYEoGUG1I?q=V&M6(|BGOf(IFjB7nTY`@;5(s$zgY3_ zdeD{|r{88?y|l^~Le>iF7FJLZPI?F%{@e#<38fd%;g})w0|7cZ;ozB-k&(usU0q$# zrfQ7|%8KCxr_w_h8(I-{rGlhMfuvF&14c1b2qc@535yBnUi%iL2krx1ZuARVsSs?5 zrvtXo@e1(Fw=^eD!!|sBcFg#(s$!VXUXWP1;6gC)?hy(#j2{g|>Hzz8SFSg8z~4UM zxaIu_#A{Z#u@*smktc35qjHbHVg$jf#K1>nN4A>Nx`;mQ{7;Dd?~mPS!lEf8V{Zhs zoU4HGp?Ni|?HJX-fbKsWE^kc3G*F8^6z6{fP98HFEjHT zJ5$)}8v3Iw{4Wd-oO^0sr&aobz0>`*0t=gx6OshUICMQ!v&=d?@U0uECL%+%iko^jk=@$U z6WgRPk-6r_nd{Pv7qZ|!4tv1qHd@06lAn|3sLa{!yb(|Lz{*vBsLt=J-pWdh!c-9@tP++8>}p8&6CVlom80A6 zuF1u2Bj9=Cws=CuilzE`G+)X0N;>wzfQL6yO6Hq2K>%!JqqJT7t9V7PVW}l4Q^{)c z(=Hbp_H*N4Rl(WlXR*Ei^B9r3Zjglq0+^)(sMG*xWtg&97jbm%)F?*@k&c1QXsfuO ztK?4B42}U-NcEU#9}>Ez6^R!?1H^?JjzgB{Qi^}HMCHGxqoV^FAa)lL7!W9Ha8py$ zouP9sM+G&;sFWIDtAJ@TKn^iA7ut6{)@-(j>|8p=nKVzkdaXO(W_jP}MIB{nReGV4 zlW;l$D&x4utQ$%bBUh5l*39a^&$V zzv;5YhdB#*HCyk&M;fzDIfaF?4A)D|FBygn zA#eE5e5Xlyv3GMWBy2H!#}~Cb=;}EQIbd6>5BH1WUb4Z86xIoH=Ih?cE3%>%ln>Ek z1#perfAT8Gnn3yCD2v$~mqEwh_owu`@FhKkj=`7j5qU+tU!sdjN)$J*ntZN$)Jf$P zI{*QvUaP2j8{m@XIuh@d;zFq&st+&Hy0;*QJBfrq3+&p)J_inQOtPy;* zD$1?Q|%&P&p?Rj)Zz6>;R;U_qk zq`^5o9tBNcL-~L6Us~KQ=FY&kRp(z%U^D6W^p>R752mz0`NyCMlh9(r+V zYTb6eI!Ujo-qx-zn_ahFvRA%qH?Pi?7-p}&6h#Q-9eJG0hxeVxDook!SoHn~GK*F= zw;H^Vk6=fH;nipb1%=t8BsV~g1{^nT!nH%=`wRO#d-hfEsy@ML!HH=hZl#r4K9b-! zyJ%x)cQK5fn+w-?3H0Q;FtzMO)L|8gNtn)c;4~cnna&U9y`&dYf-+z_kNn?s&LJiW z*T!d!T9e8k>@TUxz$g2jj*f1ue0553e-HvotE|%4t0&F+hF2ma%mz+cZf>ln138&C zL-_}26-?2Nk1>svb!t*1K93ZK#L2WSR9HYJZ~I##`tu@yQqXy9yC^FZBEcxTMMt&o z2y8SSSp-4b@8fOqYXjEG&i%Mu^w>c9?2F=7YC&@!?lQM5Q7M}vY@GdR$XxA$DArIO z@j6wFpgf44iMbMVe>K&6tU0-u<*;W0bQg@apkYY1xI~T4CUwF(a|8ZU%y(EtjfKujsSmI8$RPO7f6-`}`TBA0cN)Gs7DRN64_dFT`!w*bxPKOVZM6R#l6V8(r52PSETmZw#misKTL$H|=4)VD?3wlnR3 z3jwpa@n3Ad8qSZd2JOvWsnBK)i?pzTU~z)FbYAJP+qZ&_VGeq^aVXPG+{)02PO zrRSua242wSJ8r-e_Z&P9RpK;sZpV+!uc{a|-wc(V&du&`Fgb8*K^5Utf+_MzQ|8{DY`-jN!o0iXBA zZ>@}fO9CV62)3cqp_-tnbm31n&lNID0}m|t9`S!yGm8*LU6f+0h~^_~Uay{@JHZN@ z*H!PYcQv^8o}M!atC}7g%L5M$TJSYta&odE=Q;51_)Tq!HS&fr)Sd-8p08Ozm0apG z_oH~jU(NSUbmm#aP8~qt6``?aDS9}FOFQ>R z0{#onhjMBdv$rwxyt?dIO!#5t=u^{Yo*pA`$9SI>&ZQb*_92W4u?nWsLoD_!|6irdWuHwqWx5)*V6i8ud%?9=KQhz|q-R_lHj< z_|Mj+mz61-mN&%7qfHyChBViXQDNq4Pv$}2mZ|$pafv(oM0BXnObO~M@M zA=)KMFMT%dd9fYP)2|7~-*)@`8-bGL{yARh~jBDawyrR}O9LX9%T4DK7> zMRLHm4JTun6rJ1z;_xo(cpaf2b{OSa1MW~Qwx;Pr3zo$3Lh`faJ}M( zC>0?M+dp?p9I`DgYcx1F{{iRpbvxizRI|1oc|V(6vYiFk^BqVgc zLgn8{eHd(Qn&CCn!@HlsRy@06V?~Kg)qacD*?z(6>Z7L_&T9GK7sIv}@uRI?fvz1? ze<$fgDpg{#10m_7&^SNVGS|V2GPwbwVGq184oe_2k{QeRN(Js19MXz%&J|pLq_L+~ zv4TV*_3jqT;cMGvQ4DvpWxIL8&4sRI>DH;f5_bI8`+(d(|4HsOiMz2?^vRYRuL!^EKBQHP^jj! zP}DoI3XLE~lY}aiduy7W&mpGIk7-eOdts)+uLvIE7lruvK5bsgHoho?sox4Qc$1I) z#}SqS7@d2oJ*1?pmS=}-8e^mxn4dsfJySaQroK6tb+@aCiG{&l%s!2Nkfy=+xDE{) z2Q88VH{U-Ng{Kq%KeR|Nz2HwZQU&NGQG)Z3*g#U2~Fv<;> zQQq!D&dxlfzp>0F*_s6g3ouaq^36kTaZLu{QtXbcJNDmS5Dn?b!{E1k$`*~ldctfr z%$43q4~GFf$h2A^w*Wa^h6}`9Y`U6wO1BnRSY*EAx#%DYHl_x~q44*lXAl`Ji@30gyna_+WRPhw_xjI@`n4Po>STPcK460vPP$q3TVZK(JP$t zZno~|+!wj4RNC77HfDkjuDJ_+#kW6t*p_|Qw7^>va1MB|#*1G`@SCb7A3~i2YxBEc zZLUvSoBQX8S^c#(|8K!u5?>2}KXJuYDqMAAX}kl;$=CF4+^xklL$ zBI6@vEF<2i48j%i{dFWB1D)4>G^DXbuH z%Arnz{rj_U0whkuQ1}-CG728Ky;QsAgF96AUm$|LHtmfF5DHp-phj%NDo{e*10kqS z!+S8bEqCzMNI#vS!v?@$Nn4qxp04>jDsRvj6w{{V?G}-5fY)}e5@#=6Uszlm*)ETJ z_W$B>l={HqWarIr@ zxx&d+BJv$q{T$eSgSRU{ZnSOrsGMz$b{Xha@Qk%DarR48UZ^nA=yYo2OH zN&F`O<9IOqfr${P)1GYwf<0v#?cyY0vxTJvj}=_oTCfPX+IS_-T7`lQ&y?ayi=23qJ7* z>5XN5bCC;WR!_k(jv}*MJEek1(4`>=>bg}^Tr{eDX<%*X{8JHN-}Ow$ELs_=9nq+( n1CL_7_egr)f;1?bh=&x_<*q9?BEf(1fX<%QK9zma?Dqcv&G*RY literal 0 HcmV?d00001 diff --git a/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_18.png b/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_18.png new file mode 100644 index 0000000000000000000000000000000000000000..cd5551969bf120c38f7f3e558fc8a55754ab4252 GIT binary patch literal 8133 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 literal 0 HcmV?d00001 diff --git a/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_6.png b/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_6.png index 3cc3b2e5c1f95b42f5b491532c121544176acb7e..cac95f40b5365cb64c2626cf71ff89b720c0cf70 100644 GIT binary patch literal 2024 zcmZ8ic{tSD8z0-uFhip(SLHUPj4O=LBoxLnGh$@PlFTS&cQJ@)Xc!mSiew#;T+)nX zLP#oEZe(fG45CJsv5ciG4eEZ~-}8H(-~Ih@-t(OI{XFmaocEmfbCORJane$|r9dE% zGy!jJ56l<02NVq0U|zN(2n4Ann43CA4$T)t_{h1*b=vCr1=uCK)Og@LgJLTrcSpa7 zOW^!Kbi{Gwqf?WLJFiQWUQpcQQlsKx=U9VGI>51$o#R+gV;}-H;j$n=wSO&>yAXef z%WZntv(;M|z3^R-Ec~&x5mZ7+yUUdj$I2#UTx*H_Nm8{f(s=QQbe4kVS-R2G{O}|D zO2_*F)Y=@3tjNWcnfE%Olh$3kw8*U*!wrF1n7|=@(fel}+{PB1q(*Vbb7eN>AU>zI zRL}1ne(YX(c~1gN@nToHGHurdPfvF=`|5WJ&gG|9K@up=P#*2`p~^keI5viW$3qJj zmnTkbZH#yA$TN;@HKGa~^D%+yD!6ob;n&5_X7?TMXF67s+<#b?UYZ}Or%d%J|K{FY z2j6${T%{8$e5ddd%H%60ZevI( zTuI0LWXxs-Bf&Gz@Yv%(?WV{rVLg-ll++xtP}Q{?6QCBoI+tvXggRJGbZ2L6tSxvS zFTeVI*}l|L+O;LJ)+lDvC2CEesfZ@kk&caE4q4s0k%hALbLlV#T?6fSc(lsw$Mo95 zfKtwQS4K~F_Th!&M|hCEoJKDI?hOCN>f)kga*C147-yn6GuvN4UOi_7y?jF(cPB~ZEvTT?@-wojX% z_p?%yrVoX+eS91dJ@c-x?hv9|MqIMlB1OTs^V{_6(){UocYmzN&L}%OyEpaz&ip}E z!LPW%@Q&;9Gq`swH|LD`v8Uvs6Va-kUFq_ny+CvH097-KQuA`BJ>FCFS2g)5d$SP; zzPzb|)0@Z$2wkikVFeaREc4%@=38tEF#OHd((ibaNxqnE(}k6c*1?*)Rwk(#zBJPXG1A*rlG^FN;m%+gc<0i%tMcwR1qQ z-?D(mIybc;lx|l#NV{e)3M0d|GClcy}C^vXGjQ!E@LgV6I)}p)PdIy-&>%4 zK5n!&x3>-eFjEY#sO4z6zX^j2!c^{A$C=4f&f=?cQBt-b4br2A*1hkJSjuUhb-XTr zSV3PwQL$Xf`J(re?npK0mA@u=`6YBjLh3^HVP~DaK?B7!e>bwI>B!H;&+)1o1Codq zNUC(b{|A|C-GyOrXQ<&Fz39p>4YdeiTHrG#MUQ=K8$tv!N{x%O;ox+a)D0NJ73DOW|l zhnKAnOnXE_AsA^Pu(!dRMLL(dr;7!Hn0_(Ii3pQi`_Wdao0%A|Nz&c2F*;F3x$M9)%F;_4KS5UiUI zs4A~X(*Y$%LqIK%;+ZK44515bf3+pD$wVzBc&Kw`5AydFC6^of)8abzVVDf#Sdz2g z_tvDF4mOFsDIv?)SACXbvD)|E#qq0xj}MM2aTqcnZ6>I_SCJNQRGCOh?S+{Ren5}n z@W=)sd?dNz>9r%5W)Qfv-SU?OY9smS9_Y@=gkO-6epg}bPIqY1y-D2XgAZ6tt1l+c;99}*fxjp@5ZYOD0H?*(2L0wlZJd5)HZpKEHPDB zt1SaaHPQk(MsD}F!KtC!`?ZbAh=|*pMil@Ts9mI;wbstio#{7lwf!97M1nnpa^x;{FCzE6Wc6 literal 4090 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 diff --git a/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_8.png b/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_8.png index a5cb53b6cb5e0128edee6da4fc8b63f701294370..3cc3b2e5c1f95b42f5b491532c121544176acb7e 100644 GIT binary patch literal 4090 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 diff --git a/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_9.png b/sample/screenshots/debug/Api26/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_9.png index d962d28846f417bc27d99892963e4dc046b0920e..413ce91a439487fb21d5ed867f55d51ef4e616af 100644 GIT binary patch literal 1322 zcmV+_1=aeAP)1^@s6tfKZN000E>Nkl3vIG7m+{8(ug`Bzep{m#5XT+EUDmkwRp=^Q`l3 z9%E$Qd12aE9%fn|)^)9OYW^JRzZW>)PuOx((>}Mw5_cz0)~M~r6NyHPxABgqokxHc{DaQrhE79NmE#mpFe-nj~_p% zwY8OMYiluT2FjN&U!;wXkJGDHuc)-Nl+6sECxs#YL*9sKBUzOR1@;p_rH$Qu_M( zFdE=Wcq&pj;{o6*I7@~s;97k8^obNsl>oR-TCHFhz;%Hv0I~qc0w4>3EC8|q$N~Ul z0gwei764fQWC4%`0LTI$3xF&DvH-{eAPWF@N0!f@Ka-P_lN=u(AJf;bUuke~kaBZ# zul*Xq!NFu^W+prE^z}iOTMl2){{DV?^X850$qfw+rLwXz+S%Ems;a7My+(0yG1=SO z%engcAj=(KZ*NaFaWi9MV-y=3E0KY*wY8=E{Cw)_>Y}BkCFx5{Oe9A~N2wO@;>8Pc zad9C_OG~P&tE1-TX3Eaa{!icb_O_fGA0JOqQBibuc1FX)!}Q_92kGZ(10^LT)ZN`J z&vABkrjH*#io}rRhT`VtCKq~UW=1CqM~S()Ih`zVad8wF7$~xMczBSNl@*zrn@fF? z`}gl(*vD|BDl9Cd(a}*dGBP6G{##vLE$!jMhw^{Y($ZvVaNC#PN2pmcH zUChO2TwPshetur+i(H44loXl9c*^03a9JNqn3tC)k*2b;Qu_F~prC->zke^KOPGOy z0m{kAk>jDEA&QKQge*6SwY4=G85xmxJ73h~sbeqy=A0HoCvpjk7 zMAjUWlasos;M=!v6dfH+ot>TZ?AbF43k%ap#PE8<+S*z&8g1k_-^cfEID)-=`BE0K z9K9ME8l=Ji|INX{0kYf%IP2iX=`2qToIYz8nM{3sy<{@Ke*F?j*4NiX0xi7Wc>esk zM5LggAex<>y|6DUD~sN~eM=h~8*(1MPG)8%?z7w$9zTA3<#U>vny9UR%YblPQoT*=Yh-JJpg0*Fh(YNsQH%fOyrpWG#p4C=F?@87>my9|yN+K8dA zkKubZh6X-J1ds(l764fQWC4%`Ko$TX3xF&DvH-{eAPayj06-Q1SpZ}KkOe>%aK~lg zZ=~~gM*+}>N~I#j+uIwmfGhFx@*;(Q@U{s6^uZhJl!Sx?dj0w}Mg!<2DJh8*HioMW z)YjHwM8JiVmzR^TuP-UQ-IF&$O-xLXMx(*VfWLV9^eL&;YS|VnvOIY3fI2!l=-s<_ ze^nv?h7H%9;Yt*|kDPZ}iY#2+h-x|fp4R5#Vek2cr7c7 gT1Anl!bJdn1Alu0*&sF|ng9R*07*qoM6N<$f;I7X?f?J) literal 3177 zcmb_fX;>228b&Q`n%rt~E48Au)HEf{5>Yd=GBq=^ax1-NxsVPeu0T08l?XYSXs(l) zQ@BLtf|6Jwj-Y6nf+C<0V!0qL0pfC*d+*PA?w{tz`F@<|Jm2$v@AsbfJLka}A5YDV zMjHVDfab{)$Ib!(Dz3_ore_NZRKYD+_sc6lL zhT-d$7BBWRY<~0Gu!Y45N*?v&X3E)9(Jw9m^Uio(+I{o|wd5l!+Op!DU(AcW(Sf@c z6eZ>}Y0Ufr#%ZV00)`lOI)xKCUJTGZ1!@&cVbiO-$e}?};_--KoNucBE4)`a!1yKEan)@15W!<3O++K*H$`2k2B?@Ve zcDmE*nV~^ctZ7&S523Jwjx=>Zpp(^&)^%5VXmn5%!-^eSmzAxtx&pu$J2jjx0Tcb; zGb2Qpdi=t~2O++;)uO-B*CsWd;f!ZZXvX}YeKc!2~~bP%cA|BCZ5QDQCVUUK}C1bR}@kk zpeLq^SRK)ck&CzZg8iO*7oJa9{2I^<7ejx#-C)=TNncu?en^AHP7K$_48eKnYm&0D z_Fr*Cm}vYjaLq-?Rk?jk+SpK3>Hc50|9pb6PGgfn->5nzg%8An&yM$&hBe>(a&~EP zGLQkD?|wbgJeiV+8f^S=JE-l{tTk!&z1{VX&*nIA-oS`SV+RwWnDQ4(FEqtpF+6zf zOo3e_jaP#lyQ@#5JlFzy_?Q!eI=`iD_@0*WC2rb$Pm%oY1t7YXDV6Ng{C%h+M7C_HfG zXefrm-4H^mFq?YSt|e4oSjQ*F3afrBZze<-Jwol0{3mbIQVA|4N^p+E>HT zcp(|NEb&a9A&S=NTxd{ryul?sp^IA;(8JSj`oEHRch>(1c5i#Vwauq^RT{y(7*(92 zomfR)T`Jjmd1&M1D(S6>zTd4bz1h1)npstdZ8*)h6zr<_`JO}4DL@<$HK3BZvdEmT zwj&?{1OHt5HeIOU6q>#`Feew4;?%UkuZj>$Um|<#nO0cmZx>n*&F1?1?9&gqnXN2! zMP($R(-`KUuVE94kPFk)Zjs!YTknS?3m+S{ipguO6b(B{V14Qgv9buxO^%ccaZ+WW zPAG}~cH7L%A@&XON*>cgXR?kBZF#I=ns#6fA*;ZJ(&F!J4GgyBxf&y{>_W7y*`q2; zQlb&|pQjsnHSLA9Q>z*n73W_-0YQt&&*K^9!)n}Ec_A5n~QaC)WVUkn^URmfDHc!^Xd|L4Z zODJ~nqixG}d42CyMq=xFXb8nLb3%WDe7!u&fd<=H3S%6OyZT5VcsJ9km^qFW%OnE2 z`nK3UzDkt|U8chhL$27nRO$`~00hWo9&+uicWnHzXUMhH5@H274;Pwpy}$*DKtO=3 z^)(TPtQkyQbI_4dlp3wfEn{w}6tT3=_n`^s&#oMEQS4lk07GY+AY@~6eeT-Ai=$f3 z3w_IgPqGcmve8dF-S6d|%rSecl%=DK&)TybA6ls{_TsI906L-5BuF&Ghb&E$7a4cR z-T8{`$|Uk8*_nZ2IQOt=pspV_r=j=mvJ|@xi638%j25AJQw!5ti>)QSyvOnMhwnjg&}axW1LdKokf~d^Hima zaPVp>o0Nvoy<NW|*MtF=`HZm2Fw1m%=tAy3#kF$oe`Qfw(CJzCY^_Yz2Y ziu!>D_{j#_T`*BGJkR+X3)sGSXBEWR)m=b5NNv589-%WvhfpYxHj|+|b zS*hZ;bbDs7KeSaozAV1des5qzPXtJobm-HSjAviT><>S_H)0UB@WJy?Q+h&M*=rL6 zc07H5DE~X%dgO5oerXS&y_$z>e_Sz_}eLoQEqV$qYbR$G9PZrcT$ zAf;b;F>69%YBCppPm&;&esl|BmRNZtaVj75Jen}c`iVei{zTYjV8PxhGQ$|2>yAE- zH7Snyg%H$oaDYo)|D)dLuHvsj?lH6^hp4F-{EbadQn-58a4Kj+inh!0qZY(tly{-S zer9O{D?IavXjOewD5oQ90s^cEi z*W|xjnWNjt=cCtVyp4Ou(dqT~s5_o+P?h0W0}uWE&rd4FR6+vZu?wf%2aoD_9t7?P zimMOco@YX%tw^2ORL3%%Nv{No!yqMG^XpVyZ|F<1D~W79SikG4RnX;ml7Kiqy3{_bAVm0y!$Jh#XG z;Y&hMv$h5LK;)m%*NR5Lm|SjryQbHQ{{2~x-Qhh6)%An4iC^xAAKQz`qq=1`rT02Z zs|r?%Zw+1~LJZk@W0|~tq03$tiM|5Vv0u!omhU&W6wimy0TI5r!$oUzULBb1)`YM}nSzF1y(7Lc)WR&r>bc^@_TFoRI06$Rwd?4SRkf&Fdhgew}NDf+O%cTV4WKOKSr65-RdS;_{kKtc!kD!)a>bA24 zdF!+dlE#XU2+?Mk-&Eh=0o2qL%F G-}yJ4d&C?7 diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_10.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_10.png index 2334fe5e7015782eb74b2979c6af4fb5d63e3537..5d68c76c0bd80953c55e67619880dd905d21bff3 100644 GIT binary patch literal 1320 zcmV+@1=sqCP)B^n zo>d-LLO;rZ*RxPk00^!e3-Cfky z)?#C01BHc!u(h>?baHYcS~QDRPC7a|U}k29l9Ccg-QC@2YHH$IQDUft`}p`kq880D zTKS>)Ee#C~aZTI;Mn^{>t*oqYP22)jS63nNJoItKs&*vRO96vKf}muxy59 zGc227*$m5OST@758J5km8J5kkY=&hsESq83zhYrw0hX4QVxN*4XyN<&_wSLElyvQT zP)dxZrY44mhkshevi~w9q_wpbRaI3`S67Fprzf(qvaqwWgZ%vbYuzI?H5KOO=6Let z$xq8z_WuA%XBin85&HuJ0|*ERz~je{#j%l*5fT#<(cIjO+1Xi9791Q53kwTWR#qZC zJsmbSHqg`4LrzW(%FD|U7Z>-hGJ1Fjy0^c-KQ1mVL`DTAQV`nO+DJ)B!P~cQ5fT!D z`}gnT)2C0Usi|SvzYA+?YawcEY)l**8yn-zn>QFAAD7Dx3JQXoo12jB;NSp5Lqlk3 zY2o3+hq!a+&ZT8UW@aYR($etZ!w0CUs)__T%7ZH?D1eTRj`%w zp`y>QYz0B`s3lVhs-2x3K7am*xVw*}r+frlFxB_V@Sq#cx^M{V!8IeSLj6Iy#D+b;8}<9lE-@qG#dJ_#c7> zQZ%Td7ESZx$jC_a_xFo)>+9>-+}y;oXV38N-8*=Ac!)0f%a#23psGUaCvX=W} zS!ZXbkXlw&hUn;MF+eLVEfwOsy1HO$YRa$R^x(k*I5|0q2TRtS6V!YB7@uFgdd0H; zRvf=fv<&+8C)$2hModml@_*16md&tihGjD>n_<}u%VtQGTSmE{%vZ{2ktk!4 z)?YU?G;pmbDG?D7BI{J5!2SIBbFmg%mdnH_5A;6H*RNlT)-6$1BxP9S<>iTthx+<@ zt|2Aqx+!6TL{mz#co!%AAnfh!QCwUMZ*OnWtyAvv+S;0UYYcO9rdK4E24fVXsq3cv eH*!p=Oy2-83<=k)4=s=Y0000^M*wL literal 2136 zcmb7G`#%%<8=oOFVd%II8xB!K$Tc>X%%zc{n941b%V7u2bthsn77dllIJq80xy(kn zGbfi$R12|_`=!inW=Lm$!uR{b=XpJ^=k+|#=kP9Z$K18|JhN zHp4D98wS1YbIjm;{Oihg5Y;(f=c6Pp^DzkMj4fKLn5N@-Khxl&@28+Q%g2`1|v?t-c3x`VqM8Mb22lc$I5` zL4ZTu<=VVR?6=PbDdJRAi8;rMk+{9++J1NQPkpZ!-XF&*otK7~4L4fHtI<<+UJb9) zssl+0?`zHmkM3blZckV zPIsoT77C5;c=|Nm%65LjP2BhwG1V4R*SUm9Jw`vg%6jQ%i>5!)LR0zUGg)kg-C_P} zM-zpteyE+3wh7ers^97BeR2IwydHyA!pwnM#LJoTAFgNfHYCEU9`mX_j@=d*&sh!P zm+#Iu`}H2vN9RH_#dvP9>MjEcs1S0g*2UtDEU0a^qOpJe^u__ZGeLADfN*BnZTrxs z=6S;A?EPwMp}PmW;WyB=Q1W2~b8BH}il}h*TW^MBfl=tC_C#KzFYUMPe&?P*C>y)K zvqHVY)H|3XS^GPM!|dcmA@Y(+7O~GcYs_~)zoINPsLRVCMSOOjqon=|d|bz%LC@&P zTc$sJC_|D$=+M7(#LaTHdCWbt) zzg=Ohq3CobDyC_sxtWW?~>I!8_&|zJ4>{9&fv&^0&21%8DFD*~g zIhnIh;P8n;z1a;c)D|a}B`$tO;fThvx}L+2zVYehZ$&XI;r_n-4{WM6k|I_*)fhD7 zUx^wpnuGI1rP6_RHWhFiyFqm$v+e^fJ3zBOMWiG^?Y=vB+!4lsDT5S6yG_-$5T`Vq z$b^-?2v*0m=84yy+8UN^Gz~MSn*&?gy}70(EBrk=F~p-WB*|ZVs9{mB43h`LztEyg zu!}Ah3A@jYZ+{qUeRd+4r;h8RgtlkH~dTj8A9_r$k-tXi>{Tu7i zYyXs|#$^cp;Rg0*e^CXxrG$?#|DCFd!j2fw| zeDj$a^yu6O*n9-h$}7_1u#Mi*C=j@cs2d2TVFOEh$QL&x@B|X{{{?0(ga=#nJC>A+ z?nB_pe94Stb$o1<6@$$}Y42pz#1emb13~u5@o>QTKW#BAxQ@54>@V8YBX8dO523{fE&u=k diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_11.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_11.png index f21c2c4e6c6e9a3e433c96e6813120db2206c2eb..64050b286129a133b0b545e0351568c88c2474ed 100644 GIT binary patch literal 3279 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 aXG`x(7ba1hLqz!>4}iV3vlRt(BmUoTw=CWO diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_12.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_12.png index fa652a87aa8fd048e3579a2e130dc1182fd3f686..2334fe5e7015782eb74b2979c6af4fb5d63e3537 100644 GIT binary patch literal 2136 zcmb7G`#%%<8=oOFVd%II8xB!K$Tc>X%%zc{n941b%V7u2bthsn77dllIJq80xy(kn zGbfi$R12|_`=!inW=Lm$!uR{b=XpJ^=k+|#=kP9Z$K18|JhN zHp4D98wS1YbIjm;{Oihg5Y;(f=c6Pp^DzkMj4fKLn5N@-Khxl&@28+Q%g2`1|v?t-c3x`VqM8Mb22lc$I5` zL4ZTu<=VVR?6=PbDdJRAi8;rMk+{9++J1NQPkpZ!-XF&*otK7~4L4fHtI<<+UJb9) zssl+0?`zHmkM3blZckV zPIsoT77C5;c=|Nm%65LjP2BhwG1V4R*SUm9Jw`vg%6jQ%i>5!)LR0zUGg)kg-C_P} zM-zpteyE+3wh7ers^97BeR2IwydHyA!pwnM#LJoTAFgNfHYCEU9`mX_j@=d*&sh!P zm+#Iu`}H2vN9RH_#dvP9>MjEcs1S0g*2UtDEU0a^qOpJe^u__ZGeLADfN*BnZTrxs z=6S;A?EPwMp}PmW;WyB=Q1W2~b8BH}il}h*TW^MBfl=tC_C#KzFYUMPe&?P*C>y)K zvqHVY)H|3XS^GPM!|dcmA@Y(+7O~GcYs_~)zoINPsLRVCMSOOjqon=|d|bz%LC@&P zTc$sJC_|D$=+M7(#LaTHdCWbt) zzg=Ohq3CobDyC_sxtWW?~>I!8_&|zJ4>{9&fv&^0&21%8DFD*~g zIhnIh;P8n;z1a;c)D|a}B`$tO;fThvx}L+2zVYehZ$&XI;r_n-4{WM6k|I_*)fhD7 zUx^wpnuGI1rP6_RHWhFiyFqm$v+e^fJ3zBOMWiG^?Y=vB+!4lsDT5S6yG_-$5T`Vq z$b^-?2v*0m=84yy+8UN^Gz~MSn*&?gy}70(EBrk=F~p-WB*|ZVs9{mB43h`LztEyg zu!}Ah3A@jYZ+{qUeRd+4r;h8RgtlkH~dTj8A9_r$k-tXi>{Tu7i zYyXs|#$^cp;Rg0*e^CXxrG$?#|DCFd!j2fw| zeDj$a^yu6O*n9-h$}7_1u#Mi*C=j@cs2d2TVFOEh$QL&x@B|X{{{?0(ga=#nJC>A+ z?nB_pe94Stb$o1<6@$$}Y42pz#1emb13~u5@o>QTKW#BAxQ@54>@V8YBX8dO523{fE&u=k literal 3686 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 diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_13.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_13.png index c2f9bb69000e6f0fc4ca04674cf195c5f13d2d92..f21c2c4e6c6e9a3e433c96e6813120db2206c2eb 100644 GIT binary patch literal 2207 zcmbW3dpr|t8^=dt&PL|Y$Q*JEu|&^mv&UH^MI|g1>T!z6A*SV!d7Z|FB$Rl{(@f-$ zCjWaCAN5`HM?Y2 z6?%ql&3j=ZPPZ11UlK}@ZP{I)VmUEx7t75oMr5T!YZTiGg4CuFDwwyF1Cl1?b0n7 z6pvzuLjgryfKW{&G?4&El0gX``Ck(FWx?2;@A)BCvV?Qk2dVPLUjQI ziq6I`8t68GiTV(7B#-_4VP)u6eNA1G%)n z7-a6Wsb_2KxD>=(W_wrgu-N;yhT-+;rnRmVxt;kBa*j`7I*Ye|9WB4*$*VLPa5Cf$j#uJ`w#%!r z*yU1>J3ZxbV$HNvPX|9+7|j2e0kODQU=|c+alQy{vGR<*|8P-jz4q=uZf|m_3O=ERCH+M0OnF1kFTzrgI}I3C-OA@T z2lvhcm!}#qhE)QGg!lG*)+TDr!k1jAj6_j6-tPoq$uRoHnYZm>ubc}#GvNFDVUch3 zW<;!f(k(zdY%T5_3!12@l29`F^7`V-z?oJoqZJ#o%4})cX3wB!l2BGx1k`I+FD7heoiUI#pv=Sttbs(H2g)pm9qac^6uMp)7`mLL8r^b-UV?z^^9h5e&>^BZ z#|Ww*c^9Tg*%p7$YyUC7l9G~JBSv+2q~`9W)z5G84)3497;3>Z9dieZGr6OH(NZBD zD;QYK{AWu1)0YX z4?H9&F}%G{1#!$n5{XpA8ZNF67^6f-d({VfArO$o4V_HghY1bcBk8lz!i&n%$Ib=j zoBHoG^xdekk`f|oap(W*jtR9M2Q?sWg zy=torl_cgZYmyhaG26`++G7KS1WL)AO71Swid5&@PpaZ`)6k{k1Y%4#MYc4d&9&D2T77SX@!HSTs>sRJxZz}zxxviB;4MfA?RK@Zj_{}Vt-!%rhv1k8JX{E zh6t7(S!{v9mMH4TQXB43m_eLSwgxtP=t+#h^*Zva#>x7SCLZqa^tWXgZj}hgFDTVb zKw21jHO?>G?@3d_KEMr~PBFQREA5>BKwNEd!7u5x-LUAZ_8n;Uv1H{Q?2%p$PSULa ziQqPBvLQ%xKEBy5^6Y~xjxbPCQponuBP~rC%^H9#giz-<^lTZepzGSz-8l-*zP{H; z{rU=t`&&ZAgE<@@{Pd_e*ns0~dY3r=0j{F%|0ojR72>cZu3#9YSGuKr*F+otNk)bJ zqN~ilt9hX#N&J_o&ycjz=(okEdI?GRzXeODdB_B-GirlL9i(=k53@P? zVwm8fxUT%4mMDF9GG{>#rb!U&cuu!0{}+T?o{fAh08HXq$le?|>6eieqgKt?YEB7%Mw8sF9WwNZ;Lb!P~;nu**D z`1Cp}HJn~z9f$a8kzYyTCE|Mo=Mne#PO5Nwga8fW^b30Zgg9+_*QHI_5s;*s_9jGLdVg%_j5By?$A&D#^f#%T^ z?J4+d7Ia}0l*=!&C@3NC(@)YpptnOaIIi3SNnhgy&WvULuSmqrU43|_%f*x&_V^_@6gsu5hN54L~M_KZxmlhV^SX;)3Qu);b*#g+uh&4 aXG`x(7ba1hLqz!>4}iV3vlRt(BmUoTw=CWO literal 2639 zcmbtWd00|;7rtnj=`cEJ+DMMpWJZRXX^m?*nMS&kO&%CmFZRKm{y#=bC3GcpmNC#Lv3H`xL-Bji;7(&gWi zk+rG8nv}9P*Sc>Vi2M%NjRbT72pM?U>_8KL9Boye>@T7aMDLdZd5semJ*3`SZ$;Ws z5II#zU%qAZ116I>xc@~m^twzI-`Ukgl}cmGiBmV)nXm(4S)-$;1?g9=WPovarY&$U z!Ga`v?vMh67k)vm{MZd#6O zPuE^Jx*mFz4A?cI{r!ztxkkBA*!~W%ExmpF`WI+c=le*MEqk9Aq*VrWYdN{P=2TW1 z^Q!oILrrn@pJ#@LHqlL!_m?4iX?7!B*`UcV$+sZgoV+&S4F(ZAogu|RaKR5JUF<=1Uyau z%jTa}A{=<~PZO5WGMQ`&rt2CPZMwsQ?hB8Kib5kqd%@D*vIGL3*v}KaqJ`MVbzvC* zC1n_&aMND`Jab2sQi#sUcM)l zLdgwmPhY8AgeW3qE?8_y=<7;b1*q1J)z#H=VlHA5lP#HJnmRXFfCa=h!pdgbywOTt9P0GHeKZ>@$x z;+Gfjmgq9}zF>9-_~IL;i?eg&a$?NlbUr3H*r&Bra47kkDki^BK@l1A0ObKPH(n-n z5BmMaHqdmlv$E7Dd+(<-*+hv>f}f}RHk171Ys8iDK5?ciP=?shE<-|AJGQhyK9V08aW<9PJ!!J1&75$qN$up7$y z?nismI5w&b?G=sE-$OV()|G8g9VJFvw%6f!Q`Xn1R9{Kp>C<}v?ZCEcbFUZHnqud> zp1WbCt*xz{ud4#_z9)urfpw58K`t~KKLwQ^_7u71QRR*O2bR49#qep7BO; zxqyseE|$wC3ZriKeW$Measzm=0&GXcsV07#n9%0Y*r;_ui_90I*ySQn^Z4FsS6@?} z9w$|?LXKvWaCZ52m36SaXHPGc%argKG@PZW>B*fgc^H8OshG113EVsU`0?ZYrygF{ z$u;z=PO!LGcDvA6Yd6RMW;h|F1KVO9FMU<#)~*^wBPM3Eca~*js4iEqaD)p#A37(U zefx2u_ea6nhi(|$$f({agINpyxU-);vAVU9`-)p=Y;JDO43Cvb=i(pf0&fcpje7Ui zfV}Le#rB5|7rWmNwF-apC}N@BP`{T)F#jDKHm3FJW@e~8Pw8y5*Tu=zm1Qnbz{H>X z^ua~>2(;p|vgVP{(DJ67KdnyV+E=3+=}X--F3|QiKkGTv7|n3ON68g|v(^~(ZW4L7 z-P{-4Fr*1q&!JE#hy<_NkW3V+VW4&Li$$&Slf*TWc&9-y^@Uo+*5RiKILT+(w<~l8 zeXgHJcw0v*J2c4~d4qNKfjaroJUu*uXUf{aMa5hD5+Y%-zHlURLh83TEfhWl7Zizi z;A<+g7WJPNIne@nbpBHi-Q-`}!2j?|a-umfPqhE?d+M(<8#e&jNkP2m^>>CeU3Ef* z{N)Y^GVbmm=lC2q6cAN(&L;_Cw>R}01B9$uTxh6FAnX;Wlk*B(JeD;?!apAUo@+AWsJV e+9BD$lSX~;JYrxjuLxWe0jI;RcJ!Zrx$p-ay59-_ diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_14.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_14.png index c2f9bb69000e6f0fc4ca04674cf195c5f13d2d92..fa652a87aa8fd048e3579a2e130dc1182fd3f686 100644 GIT binary patch literal 3686 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 literal 2639 zcmbtWd00|;7rtnj=`cEJ+DMMpWJZRXX^m?*nMS&kO&%CmFZRKm{y#=bC3GcpmNC#Lv3H`xL-Bji;7(&gWi zk+rG8nv}9P*Sc>Vi2M%NjRbT72pM?U>_8KL9Boye>@T7aMDLdZd5semJ*3`SZ$;Ws z5II#zU%qAZ116I>xc@~m^twzI-`Ukgl}cmGiBmV)nXm(4S)-$;1?g9=WPovarY&$U z!Ga`v?vMh67k)vm{MZd#6O zPuE^Jx*mFz4A?cI{r!ztxkkBA*!~W%ExmpF`WI+c=le*MEqk9Aq*VrWYdN{P=2TW1 z^Q!oILrrn@pJ#@LHqlL!_m?4iX?7!B*`UcV$+sZgoV+&S4F(ZAogu|RaKR5JUF<=1Uyau z%jTa}A{=<~PZO5WGMQ`&rt2CPZMwsQ?hB8Kib5kqd%@D*vIGL3*v}KaqJ`MVbzvC* zC1n_&aMND`Jab2sQi#sUcM)l zLdgwmPhY8AgeW3qE?8_y=<7;b1*q1J)z#H=VlHA5lP#HJnmRXFfCa=h!pdgbywOTt9P0GHeKZ>@$x z;+Gfjmgq9}zF>9-_~IL;i?eg&a$?NlbUr3H*r&Bra47kkDki^BK@l1A0ObKPH(n-n z5BmMaHqdmlv$E7Dd+(<-*+hv>f}f}RHk171Ys8iDK5?ciP=?shE<-|AJGQhyK9V08aW<9PJ!!J1&75$qN$up7$y z?nismI5w&b?G=sE-$OV()|G8g9VJFvw%6f!Q`Xn1R9{Kp>C<}v?ZCEcbFUZHnqud> zp1WbCt*xz{ud4#_z9)urfpw58K`t~KKLwQ^_7u71QRR*O2bR49#qep7BO; zxqyseE|$wC3ZriKeW$Measzm=0&GXcsV07#n9%0Y*r;_ui_90I*ySQn^Z4FsS6@?} z9w$|?LXKvWaCZ52m36SaXHPGc%argKG@PZW>B*fgc^H8OshG113EVsU`0?ZYrygF{ z$u;z=PO!LGcDvA6Yd6RMW;h|F1KVO9FMU<#)~*^wBPM3Eca~*js4iEqaD)p#A37(U zefx2u_ea6nhi(|$$f({agINpyxU-);vAVU9`-)p=Y;JDO43Cvb=i(pf0&fcpje7Ui zfV}Le#rB5|7rWmNwF-apC}N@BP`{T)F#jDKHm3FJW@e~8Pw8y5*Tu=zm1Qnbz{H>X z^ua~>2(;p|vgVP{(DJ67KdnyV+E=3+=}X--F3|QiKkGTv7|n3ON68g|v(^~(ZW4L7 z-P{-4Fr*1q&!JE#hy<_NkW3V+VW4&Li$$&Slf*TWc&9-y^@Uo+*5RiKILT+(w<~l8 zeXgHJcw0v*J2c4~d4qNKfjaroJUu*uXUf{aMa5hD5+Y%-zHlURLh83TEfhWl7Zizi z;A<+g7WJPNIne@nbpBHi-Q-`}!2j?|a-umfPqhE?d+M(<8#e&jNkP2m^>>CeU3Ef* z{N)Y^GVbmm=lC2q6cAN(&L;_Cw>R}01B9$uTxh6FAnX;Wlk*B(JeD;?!apAUo@+AWsJV e+9BD$lSX~;JYrxjuLxWe0jI;RcJ!Zrx$p-ay59-_ diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_15.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_15.png index 47b773834ac79b66c1c03738e7fe5dd1b0e36545..c2f9bb69000e6f0fc4ca04674cf195c5f13d2d92 100644 GIT binary patch literal 2639 zcmbtWd00|;7rtnj=`cEJ+DMMpWJZRXX^m?*nMS&kO&%CmFZRKm{y#=bC3GcpmNC#Lv3H`xL-Bji;7(&gWi zk+rG8nv}9P*Sc>Vi2M%NjRbT72pM?U>_8KL9Boye>@T7aMDLdZd5semJ*3`SZ$;Ws z5II#zU%qAZ116I>xc@~m^twzI-`Ukgl}cmGiBmV)nXm(4S)-$;1?g9=WPovarY&$U z!Ga`v?vMh67k)vm{MZd#6O zPuE^Jx*mFz4A?cI{r!ztxkkBA*!~W%ExmpF`WI+c=le*MEqk9Aq*VrWYdN{P=2TW1 z^Q!oILrrn@pJ#@LHqlL!_m?4iX?7!B*`UcV$+sZgoV+&S4F(ZAogu|RaKR5JUF<=1Uyau z%jTa}A{=<~PZO5WGMQ`&rt2CPZMwsQ?hB8Kib5kqd%@D*vIGL3*v}KaqJ`MVbzvC* zC1n_&aMND`Jab2sQi#sUcM)l zLdgwmPhY8AgeW3qE?8_y=<7;b1*q1J)z#H=VlHA5lP#HJnmRXFfCa=h!pdgbywOTt9P0GHeKZ>@$x z;+Gfjmgq9}zF>9-_~IL;i?eg&a$?NlbUr3H*r&Bra47kkDki^BK@l1A0ObKPH(n-n z5BmMaHqdmlv$E7Dd+(<-*+hv>f}f}RHk171Ys8iDK5?ciP=?shE<-|AJGQhyK9V08aW<9PJ!!J1&75$qN$up7$y z?nismI5w&b?G=sE-$OV()|G8g9VJFvw%6f!Q`Xn1R9{Kp>C<}v?ZCEcbFUZHnqud> zp1WbCt*xz{ud4#_z9)urfpw58K`t~KKLwQ^_7u71QRR*O2bR49#qep7BO; zxqyseE|$wC3ZriKeW$Measzm=0&GXcsV07#n9%0Y*r;_ui_90I*ySQn^Z4FsS6@?} z9w$|?LXKvWaCZ52m36SaXHPGc%argKG@PZW>B*fgc^H8OshG113EVsU`0?ZYrygF{ z$u;z=PO!LGcDvA6Yd6RMW;h|F1KVO9FMU<#)~*^wBPM3Eca~*js4iEqaD)p#A37(U zefx2u_ea6nhi(|$$f({agINpyxU-);vAVU9`-)p=Y;JDO43Cvb=i(pf0&fcpje7Ui zfV}Le#rB5|7rWmNwF-apC}N@BP`{T)F#jDKHm3FJW@e~8Pw8y5*Tu=zm1Qnbz{H>X z^ua~>2(;p|vgVP{(DJ67KdnyV+E=3+=}X--F3|QiKkGTv7|n3ON68g|v(^~(ZW4L7 z-P{-4Fr*1q&!JE#hy<_NkW3V+VW4&Li$$&Slf*TWc&9-y^@Uo+*5RiKILT+(w<~l8 zeXgHJcw0v*J2c4~d4qNKfjaroJUu*uXUf{aMa5hD5+Y%-zHlURLh83TEfhWl7Zizi z;A<+g7WJPNIne@nbpBHi-Q-`}!2j?|a-umfPqhE?d+M(<8#e&jNkP2m^>>CeU3Ef* z{N)Y^GVbmm=lC2q6cAN(&L;_Cw>R}01B9$uTxh6FAnX;Wlk*B(JeD;?!apAUo@+AWsJV e+9BD$lSX~;JYrxjuLxWe0jI;RcJ!Zrx$p-ay59-_ literal 8701 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 diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_16.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_16.png index cd87f6aff96db91b9e4d17966f0ca1edcd3ffa64..c2f9bb69000e6f0fc4ca04674cf195c5f13d2d92 100644 GIT binary patch literal 2639 zcmbtWd00|;7rtnj=`cEJ+DMMpWJZRXX^m?*nMS&kO&%CmFZRKm{y#=bC3GcpmNC#Lv3H`xL-Bji;7(&gWi zk+rG8nv}9P*Sc>Vi2M%NjRbT72pM?U>_8KL9Boye>@T7aMDLdZd5semJ*3`SZ$;Ws z5II#zU%qAZ116I>xc@~m^twzI-`Ukgl}cmGiBmV)nXm(4S)-$;1?g9=WPovarY&$U z!Ga`v?vMh67k)vm{MZd#6O zPuE^Jx*mFz4A?cI{r!ztxkkBA*!~W%ExmpF`WI+c=le*MEqk9Aq*VrWYdN{P=2TW1 z^Q!oILrrn@pJ#@LHqlL!_m?4iX?7!B*`UcV$+sZgoV+&S4F(ZAogu|RaKR5JUF<=1Uyau z%jTa}A{=<~PZO5WGMQ`&rt2CPZMwsQ?hB8Kib5kqd%@D*vIGL3*v}KaqJ`MVbzvC* zC1n_&aMND`Jab2sQi#sUcM)l zLdgwmPhY8AgeW3qE?8_y=<7;b1*q1J)z#H=VlHA5lP#HJnmRXFfCa=h!pdgbywOTt9P0GHeKZ>@$x z;+Gfjmgq9}zF>9-_~IL;i?eg&a$?NlbUr3H*r&Bra47kkDki^BK@l1A0ObKPH(n-n z5BmMaHqdmlv$E7Dd+(<-*+hv>f}f}RHk171Ys8iDK5?ciP=?shE<-|AJGQhyK9V08aW<9PJ!!J1&75$qN$up7$y z?nismI5w&b?G=sE-$OV()|G8g9VJFvw%6f!Q`Xn1R9{Kp>C<}v?ZCEcbFUZHnqud> zp1WbCt*xz{ud4#_z9)urfpw58K`t~KKLwQ^_7u71QRR*O2bR49#qep7BO; zxqyseE|$wC3ZriKeW$Measzm=0&GXcsV07#n9%0Y*r;_ui_90I*ySQn^Z4FsS6@?} z9w$|?LXKvWaCZ52m36SaXHPGc%argKG@PZW>B*fgc^H8OshG113EVsU`0?ZYrygF{ z$u;z=PO!LGcDvA6Yd6RMW;h|F1KVO9FMU<#)~*^wBPM3Eca~*js4iEqaD)p#A37(U zefx2u_ea6nhi(|$$f({agINpyxU-);vAVU9`-)p=Y;JDO43Cvb=i(pf0&fcpje7Ui zfV}Le#rB5|7rWmNwF-apC}N@BP`{T)F#jDKHm3FJW@e~8Pw8y5*Tu=zm1Qnbz{H>X z^ua~>2(;p|vgVP{(DJ67KdnyV+E=3+=}X--F3|QiKkGTv7|n3ON68g|v(^~(ZW4L7 z-P{-4Fr*1q&!JE#hy<_NkW3V+VW4&Li$$&Slf*TWc&9-y^@Uo+*5RiKILT+(w<~l8 zeXgHJcw0v*J2c4~d4qNKfjaroJUu*uXUf{aMa5hD5+Y%-zHlURLh83TEfhWl7Zizi z;A<+g7WJPNIne@nbpBHi-Q-`}!2j?|a-umfPqhE?d+M(<8#e&jNkP2m^>>CeU3Ef* z{N)Y^GVbmm=lC2q6cAN(&L;_Cw>R}01B9$uTxh6FAnX;Wlk*B(JeD;?!apAUo@+AWsJV e+9BD$lSX~;JYrxjuLxWe0jI;RcJ!Zrx$p-ay59-_ literal 8029 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�y%tf14PXJFt6$xf}hrUQpsx-vF|@O<9O`((qr>~O08 zrCDgwIH||Oprhu@r;6*_2f=@^l}8yj*#dRtKIw*Gg14i|(a+ZcZ!iNQe=!^o%Kke< z$m9P*g7`ZU*T3Y)e{}f2B)Uk6uswg1n*Fb1|AeXikF)D1t~6Y0`oUmV~gZq7kIHQdD}A zUK9vQ?;ui*f)qhWkRIM=g6{S1-Pe2h1M-<td?{rbKPgrs+Qud#hqUaMF$KP4&tTcMk?^u1gK zC&~Nwju`F2L^SeRri8C@7iWs=X?GbHarcC0HjW(A$rfZjgm%s7jx+HJ^Gb8Of22ln z#oyg~Wp-e)Jg&51{{G%EDn(r^GU9Fdt$^l7Ghd1qRsyva=7qh6f)>`K5E?9+)$2$s zghXK>1ZpRQV76taFSUfEq-uU~UgE+!BNiXE1nw!Hi_X%Y37QF@_Jk}}i?vtM=d);k zJSI=j0aqj4XYzPg93SPX_L2Chxo7*?(f z%(Uxj%|*Q)I_B%^d#yV!KDuHy!ab>SeQn0M>&4k|8Ji`&9D zE^4p5TWWb7#?djRwV;YX-50}EE_Y?M&xEY6(0VHAifeNZD;ryxgu$pN%Y&XWom3hQNJ(eCi||3I}6srnX0H zeX*`1Rcrpa@RcR@_*nw2AS(zRG|VLS#-@&#F>A&Qg0a*jd@Uyp-x|2`ekh)4UNOtR z>8lGT_|Y~!yt+bmKyKZu2*oaejgI$q30Z2eXx>l1A!wPT>k0YW`^Y690%&`!tkpb)#`8Pbb9CD z;PfJgF%K^1Jzm1yawOvEw2bxaUE0gSa&*uv-bP<+x%JlE^wj$yx=%&WsK|_8-MwHQ z&#a;G)P#5?_rb^R#dkP%S-iY_Jnv%5%R^X2#A1qaxpWX%So0IUg|XVq83(ZyvkJ{m zaWjDzuhFRq3D#>9rm2y^w5PhOM`epY{*mwVrBC>#Cv{%n;$uwUVI}McV)2e);D_JY zZ028>CT9iDr!D0bqe{0ftOm{9OK8*`T%>bYf4x2u5&|koWR5y>t*3M@A?m~E#JbOB z;+TlAaHDCYNKmMrFHZdWvvd54Zf0(ZmCLN1dq9!x#6iqkaS(Fr&y@!se0B;lIfoap zU!|8X49326ABs&UV{pS`^BQqOd?z zSUw8vW3M{sf~meQeI}jNC=%MA$IFvwg6Jif>kmr{;dHv}k)2u){zWbGGb`x9SvBeW;q4ZqdypbXbv0;G+X%PV~b!Dr-+1l#E{Lm)Osu!0q4!MmN9$GzU)>@geOj3}O`#rO4u0G$BLcZFj!*_0X zV!wpPqXJS;P>_E+ZFPxC9quBjtGExA<@-||Wtc$$Ug)+L4VcP_e8l57Tonq^#Vrgs z$CO=f-iWGPe6*;)HIW8gP9c~#`c0orGx@}^(+7ujMP`3CZ!BWjL!L|U`*6qk+tfP~ zwr7SAFNiPSsm#*pl2yUDxH#uV5(XTXg&JPe5=2JAIfdrh7Uvoc7#==+xH_`drN)Kn zz98;Gm;LlmrS`2$z2yN5;*kR$)tuu=_Y87RV{;H@XVIfK*?B~%c~JB;bYmmd|FE~; zH(ZIY(nk19%1InTj}wmD(;G>prRrQdw;@7!(e4uu6xKA);~ucto-H8dOioTr)W?bU zSO>VqYm{I4RIhPo^s!fSjvlsHcNpxn!`4fI+AriNst(h`>F4t1T2NRJ39#+*#NLL7 z2ed!Vi(UKtM8UaTk`czUo%Un{&z?-H@mFkO`mV07&TW6{n4tD*L$T5&yz*+t_82@S z9Vn}D!(2Z|Y=xrPY}*P*6mo=6W;LN@hkMC*3MdovG-hKlIG4ye(R;1#zPCO)ExNL@ zlCjn3B%D(MVJCe1J#{BOe?BIEv04AdjT__Br85Q{DJS#b!Zb5MJ8I0#_t+$Kr=Po* zCCs&XbCRmpXcC8PQPn2ICuVrrcJ=qA$46t`n-@gL%^mJIIIM@?6_B24TQEP{|KH0; zwf)t?m*mSs zAU29eNU$T>f&T@>41_D!1tS(jYZFe%VIs_~K+!C=@;cr2ZoS#!alV88#lDin0jOY8 z)t{Fz6f==Jih#Uh(%|5r<=yR~e#4=GJJb$wC$>ZTU+~Inogiop7k%CKr%MtyVO9;u zuO^&t8ej4|<`TkHknRH|irzjxDeOFZ%yuWPLi^J|;m*ND>6L`)YinUKn%E+D-wG6L z?EfPijO0o@iZHu?b|ehkrT^ac()GRL5iO%YhM?F9b!XXxyjchngI7Lf-ndui?!ZOD zF!GrK)R0+AfCz_@_gdT?u+`Po-C~4mXUYbjLA~#FK8hlb5oi6+Gf!M+;Yi~4ga589D=xXhnAM_pK080#+D zYm9_98eCw&!QI`xuh88lMl0x=Xs+NZLERbBR!*Z!Ae_eN(cxiR`l{!6dvf)_F7Dqw zg^5+d<(VUNg(E7&8?8sMxW9fPjjkZG|HW zK4Es}$4~&;;3}Jf_+%|fN^bq6EJ5AR1O8)i#r_5mGMX8VBM0yPH@btxUSp#oBc0FB zSj?3{w|2lTL+<)`q2WO?(4mha7cJ!w&n~m^*MpThC}Yw8X;(i2h{ECoS>Vzw_4%SV zFfedZ4F6VMqHc_7`!?L!F8k)ks`9>}g#3#w@xpg8QLKrb48d>O(>&E*EFTvzUA*sL zDA03|b8T57$tPq?(z6d?mk?%-=us!kO-1XPn7D*1ooP*c` z`0|bljet!uC7JGvGFBgii&b`ixeKf5gNv};2ivF81{VLLW7~QGlklG-$Zk#SgwjEs z*YswP4)Rb6c0nx~)W)kLVSJ;~?NAs)%%7yDO5GZm9w?06Tt&h<3*h+XG=zam=zTJ~$)F#>#qS;mv16 z29(Uq5U1&Pc~a}jK6knEPvHf0zaAwa!O~%|9wT_B6X{X>)nepGv4l!KhdGJ!h<%)J zr8?;H*A4p7!%#=htJ8$e1g)Twv&ec)b{$>u($$y zjF+mvf7Bo(Uc>*&G!x=`kwz`9t*xnEl{y)7zmiY=4S&%lqic-%bQFFg~(|^KC!!Xed zm`N_&&auSYaRiN7v5TbIG06Pde=?^aD=TX|$dUGp!a+5Susugd>nsl;Q283L?rlDk zqQ8{oesEBCN*{!c(c8@FAG&cS^Z_d@Ly;GqoSYU51O@X@6bv{?0f5L0P;}oAX24|D z+j~c9J(UmT=Lm5=jRbYXY#UWTT5tHNduaTtd)Ur{1I$WS{<$l7`%_nN9gBeldUXBD z+uaY73S4?dcM@Xro+^}kRx4F;v)OhPkiPS;k~(YM!qZG|8t+^5&ahEV$W1hGNEVlpl3Wh(&PJ5)`J2?6b zvxooCp!5^yJ=k%CS*p1{?hsRUa{=kriVF4wC?K~25|qsHk3zI@(9mF&?x`Q+M!N^) zOTu?k>^n245tf4Su$%5L9{+$pAS&7pc^pBQ^_Vx3G`!wjc$l2mqNUD<<^&WblT~)m zwZ8~s1)$u7+vy8;k--L&Z<~ji+_sx^;x8sg;&3Pv+v$LS(jCm^ zVmNPL7GLpWgcfFmxhSrw^9irKbpXhqCFE_9okr%6i4|U;u&Sn)&SR*7X^Pi;KY{qf z0%y8s)Tffk%!ZjKd3o{?0`lYuL@kT06;P+TBD?DFz^fIja~r|Q&>3njLS*c##4H7+pyN4xcxe^p6I z1+S~50K8&?FKmey5ZMiU%zy78W?O|C^ts%m@fm3*jS(o_1vu++NlD3-)Hek^*0EA& zU?Dbqp*r^1D}7gMA7jG-makeG+mT(!mai8VW*;NBI{8E0&jFPWGpIa(OOs|4qu~6< zM#KOg#C^=PDs8{PrA6xN>udj02cN#Pbs4lY6XuPd_dZhbw6BokDSeA-SFvZ>4xFmT zo+za3RZbwT z#i)8Y3JMGB`wj*9#wfYQ>|nmjUR44*gGuXQnk%INbJxy}q;FWSXODC}2h2`O%>QUiCqJ#v9Y`zZUzETzsu zXZQ_Mb|x@$5fzV}w`|I?NM}&3bBy2#+20RlzM#-ldl`#6gv$Qd!-f!TZ(LWZ%} z4qVzm@|Q4@uYxbOl?T-F7m`1eBz}UDSz#3MoFY=F1OfTefV^aNHgRcu#a8HvJV6;b zF~XFfcvQ^8lEmJo(~cthiEV6AGA}j1!=NEV@B^yMd$POp-MdG7^hvfmLc7`ER77mz z+E~eN8p{QcIcSr;(`w-%&96K9?qXhf@)e!RH%@Jm7msLp)F8~p09{kEgV&Z1R~%Ty zJrE0>G{FlbAInjX;I@LoSm9+#KuZMbYGBY!;PCQT5N=al-`~)|tj<=t8MttRv zN(j6{@Aq7%uYop13wF}Yg#$hoAQjAGfF07+GEM5vx;QL_g5b**ki;{O4qa(L7l+DP z`!+m4k1tXp4SA#t^6z3Nnc&U&CnDbr3u>GT<~_*eHy zCZ5h+=BW_L-UgxJa02WG1DpgyGIw#C<~D?2-3Y3)t@QZ!zTAOKc)K1!j|%58P!XRo z;1bm!!D+HP)SfB(1*ljiXLt7&KAR6papX)n!jvS!=^WIZ%q#DMq|j!pg|yiLUOzQ17_q&q+t|nB#xG@)-NxgGtWJLd@zd4vIF;e!wWq3vjGtL zFPT@s>jm2V=cT2k<1IDkW26pRizPZk-QX}_c96=w`k>bSoyo6Z{TV}% zW1eAt0R6|GJtgM;IQ9k_%y&LhG0&3N3R|7y;eIZD)96UmQGOY=?Ls(jz;&!8y=%46 zj&Q6&4pFqKnqrkLFo};vY$g0Aj6n}<{?oYn@9DGnaWg09r?(0vSR6nMD;LaR!l%2^ z3YcIS|7JWWzKfCyYoNx^S6Kw71xL554+{1rc(?nOASI?UdwfKx5GA=YDc%R7MMEU++uTBYz;fZlhx4JmH6oA>IeTe`2dp-ousfZr; z+faY0ulw}wJ4UPk=-~X(Yjqea1asEZgLxd>A2TC} z<>@w+S|M8mO50w(R7zvpUdWKH%RW4cSn*%f;qX0q7|2;#0FWm$RO^;lu!@yelj1mi zWu~Q)OE{W@5#&e&y)TRuJ4IMdVCY&$?R6R~x69SOSp$`2p_5pkJFEugXYUIS%zyhf zx|JZFjuCVLlPBk~<~X3cK@4lOma2d7FCzc$mq$OqjkHm`g7ay*^^}~$P8n>th;UbHI+3>B~TSowZh;knpIvSSIgX9Shglj;>1&(C-I0otNFKb?K} zIDj}XUQIa}o6c|4%&~N0s>I)Q*X8UKCtSuquDTvVzfg)BBa#%9dn5|I=_%<~%qwM21 z>vz-1L0RyqXfk3GN7XLykzMuPJys8Go^Ifu<6=&ZL)|E4=G6_hTfQXFnEBuOyvPCO z31CV@CVEtdb1pdrE`55)6*Afb+Jy4p)P&$`75jt>Ki05Bfzgq0?g?g4Hee#jV8j>y z&WO@hpbc>T(pR90qKr=M)p767W@y4+qui&p7!_+@4-YvTD<2xmrU68FNtgX{m-2tv z?mCzU80;-zud)8u48Ie~-_HPYFl@{RLwp7AiB8L0W}{vPWZQvJs52P;6hBOA(?uE` zW7LEGql2}V;DKly;ErE33yx(<*ylgD3!HT#zLph3TVd>dW&xUsUm2~fSEMQaxf0LD zJ^QN^Jc10>phDw849T!2mExOm+TvDP{2Z8TcM0Mwe6sU;G_{wSZK0M(GzGc6r(ZGyt0l z*yXS%7`;&2srG?^II+lo&B`y}q=aGECs^5-nwm~;FaFl&LOnkbEn_-*ToFJy@hr1> z0CVOUwBzPO5efL2S{E`U&#|e#MH&i)9R^4Vsv>Y{?yzXc=O?$?laAkGpm(|h;CxBn zFMZLXfnQ&NrT4d&p9tG3T@Jg`+^}(wh zC*kBW;obl&0$%o1{r19gLci6wg$0Y>5=jj2>*w$TdzC~a5*2_QD*&aPu2`8?aP3o& zL4kJG`*|&)uVFH)QY+(Jp5vm{tH0*t-x%bY)UeDrgRC@88Q z4|MQ%kFk=uE3O~&9!OPu&voUb)7F$YyRO#y`pmr@or071di znG;d3nYc85&pNHU7r9*!9u<-=MsVNuv`gW>A7M*a5NGTWNF+n`FZrvf;>0S8Lbs;h z1j6(nG(d6iJPVu!I!x*|*18`Dh{{xa=HbCz&Iu8Ad%HO|qmER=>&p`lf-Sjl8 z3|iQ~`s)_SdAW}T~w|Uj>F#U*^gLFZyWY%7GaXInO`kJ$OMWFwn zxYFSNisiOmmoTAv|BcL><;XU*w&DDwYqU093(Z85gvY=o%u`EgvaJ;umJ{pXXJ!DU zP*tc}zcnzx>EFi}cH;YnlBaVE3zfeBRydiUrO9O%F&y!9>GPZVP(hv z?l`hF7fL^a9tBf7sw>9xtm>heX7!oIrmLVQ0`hH)FSdPkJ@8|MP?CeL3J`0FU@I)N hCG8(*Tw*q4E53r(awB~l{96ZfT*u%@<{{hb{|9W=uYUjl literal 0 HcmV?d00001 diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_18.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_18.png new file mode 100644 index 0000000000000000000000000000000000000000..cd87f6aff96db91b9e4d17966f0ca1edcd3ffa64 GIT binary patch literal 8029 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�y%tf14PXJFt6$xf}hrUQpsx-vF|@O<9O`((qr>~O08 zrCDgwIH||Oprhu@r;6*_2f=@^l}8yj*#dRtKIw*Gg14i|(a+ZcZ!iNQe=!^o%Kke< z$m9P*g7`ZU*T3Y)e{}f2B)Uk6uswg1n*Fb1|AeXikF)+9&~kd2KEEnT{l zA|oSd{P^)2x7XFxm6DT_Y5DTynhWl(UAt)7v}yG4;X^VuHfDpu!ony&Kc5yaUi{mF z`{m0Qij9qBCo4l!j?K=_rk0i#N=Zo>()uWZ#Kc6}x^*iR6co^?QKK|!Z(d#=SzB9c zu5w{Oad9yRbmGK`e9_(Ao%Zb6L)Wfd6NCHw`E#nNso@Ov^zk%Io8tl$1m> zX3XGqQOQ^XGH>6$O_r9HXc=zrdJ$?F=?F7(P5jRx70)pnxpHG)AT_QU>JJQ$J=ZE(1-!CeF;BDW&op$cr z$$c63kYxy1-#(dEuU<_nR;=I!kStMAQ4}2=O%EPC;A@vJU#2r>&QN)IIqB)?QDtQ% zMMOl$`I03P0D;(ZTN{If31~cT;+LItNio#*-&csIah* z4*=)*_;`Bt>J=vrf`91HAwDaR@wvIV?4Y8eBHFNF0|f>KirLlK*~x**%*-TTUthlF z?CeZ?_wMCP6ma0c0a~(T$zOEP=OoAyG8GCU>!BE&fPm!WJ&56tXZ?f>oGAg z93%iTrR+odgP-5NeamgIy1JSZ&)(j?-#UZI*s^5{ZQHhuiwKDZ)}1+XCf&Vzm%P2b znLVKk;>xKyd-iNDWl(5INeNQ`9CGsHNe&1y2bnDZ6t;f-dTMHF;%WybO`0U$2R*^j z!qg2VrcRy8!&+lwBfWqBo+}2G2OtnoZXlq#kd*>VO-=c%PA}L5%$YMsybm238X9D= z0|J7I5`e@&^}#k&FJNnHE8ZW>J|yqDb?eyIn>KCY`}nO2buy3;_wV0lKlk+XaB`y3 z5!@R$Zm`b%wnE4Z@H7sT^_n$n==}NfGOk6`I%K@kpR5W(%SdoeZ z2t7j;K|w*xCIeN`aP)!>a)1O64GrbLF>I=%Zgutr2M5#HvuC+@z-|W*9+WL3ARvGl z?d8jtT%`!=;lqbH$e?ZvitLZ;*RRuw6DN2uKq(7@12PmDgzeC?XV2)ogb!(+kJYs{E2eEb{Ggnc8Cq5ZGW|K-0zTKrk~1(*GpMKP%1&j0`b07*qo IM6N<$f;BThe*gdg literal 0 HcmV?d00001 diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_6.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_6.png index 4bce0d1a3d8f922ef5269fe64b25885d132bbc3b..147d7b1b0fc817ac5799b482b8667aa4b0bfa9f3 100644 GIT binary patch literal 2005 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 K>(cOdAO8=g$;a*h diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_7.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_7.png index db1dc292175c7392244b918c4b10e4d84fe6cf5b..3a79e99ad605d216078326802b4fe55fb8fa18a3 100644 GIT binary patch literal 1726 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 IM6N<$f<(}sVgLXD diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_8.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_8.png index 5d68c76c0bd80953c55e67619880dd905d21bff3..4bce0d1a3d8f922ef5269fe64b25885d132bbc3b 100644 GIT binary patch literal 4150 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 K>(cOdAO8=g$;a*h literal 1320 zcmV+@1=sqCP)B^n zo>d-LLO;rZ*RxPk00^!e3-Cfky z)?#C01BHc!u(h>?baHYcS~QDRPC7a|U}k29l9Ccg-QC@2YHH$IQDUft`}p`kq880D zTKS>)Ee#C~aZTI;Mn^{>t*oqYP22)jS63nNJoItKs&*vRO96vKf}muxy59 zGc227*$m5OST@758J5km8J5kkY=&hsESq83zhYrw0hX4QVxN*4XyN<&_wSLElyvQT zP)dxZrY44mhkshevi~w9q_wpbRaI3`S67Fprzf(qvaqwWgZ%vbYuzI?H5KOO=6Let z$xq8z_WuA%XBin85&HuJ0|*ERz~je{#j%l*5fT#<(cIjO+1Xi9791Q53kwTWR#qZC zJsmbSHqg`4LrzW(%FD|U7Z>-hGJ1Fjy0^c-KQ1mVL`DTAQV`nO+DJ)B!P~cQ5fT!D z`}gnT)2C0Usi|SvzYA+?YawcEY)l**8yn-zn>QFAAD7Dx3JQXoo12jB;NSp5Lqlk3 zY2o3+hq!a+&ZT8UW@aYR($etZ!w0CUs)__T%7ZH?D1eTRj`%w zp`y>QYz0B`s3lVhs-2x3K7am*xVw*}r+frlFxB_V@Sq#cx^M{V!8IeSLj6Iy#D+b;8}<9lE-@qG#dJ_#c7> zQZ%Td7ESZx$jC_a_xFo)>+9>-+}y;oXV38N-8*=Ac!)0f%a#23psGUaCvX=W} zS!ZXbkXlw&hUn;MF+eLVEfwOsy1HO$YRa$R^x(k*I5|0q2TRtS6V!YB7@uFgdd0H; zRvf=fv<&+8C)$2hModml@_*16md&tihGjD>n_<}u%VtQGTSmE{%vZ{2ktk!4 z)?YU?G;pmbDG?D7BI{J5!2SIBbFmg%mdnH_5A;6H*RNlT)-6$1BxP9S<>iTthx+<@ zt|2Aqx+!6TL{mz#co!%AAnfh!QCwUMZ*OnWtyAvv+S;0UYYcO9rdK4E24fVXsq3cv eH*!p=Oy2-83<=k)4=s=Y0000^M*wL diff --git a/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_9.png b/sample/screenshots/debug/Api29/com.airbnb.android.showkasesample.MyScreenshotTest_ShowkaseCodegen_composable_screenshot_test_9.png index 64050b286129a133b0b545e0351568c88c2474ed..db1dc292175c7392244b918c4b10e4d84fe6cf5b 100644 GIT binary patch literal 1350 zcmV-M1-bf(P)1^@s6tfKZN000FINklbBzQC?n-{rmUB`2PL7Mih!dR-(DN87?j^sHmub(bm?6y1F{v6|yQ4 zVIm_VVMs(_jzZQ#@)x74tBZGntVvH#4~%#3-tkV5H5nfthr!QL$aP!>Wc3!yB8vJlEbC<~!1gisbjSqNnzl!Z_hLRkp;dt`a@<_+B3 z-1N1S<9_(?0S_NOL|$Iry00O{;8s>v=F;W z#rX8;6UxfU)^&~i{Cv2&y5h)@BflM^EPnw~$o>5JbA8>}*@@WLScHXz>As_*BQ9LH zfP44uVR(30#}X0}uy^lX+`M@cmoHz2mzNiI?b?Nsk`mmwaRb@e+5Z_6`2@N4i4!NV zw6vtPz)}J%*x1xiin5^&5wS)ro5JE?C8;>=IKbL9urdbDe`g}+CWIyzkdC? zd0#pe<>ci2QCXawo$=+%7kvHt)jTG7jO_2(vuD-wL}1FY!4uw{J9p~q+1XkBZpu6U z&l26<-W~w~0opA~2n`K|ot>RVHm-&?36h9PQYsNeJ|8)K`ZPK^I`r7Y#DuoHiiwFq zeSJL+9Xg~_%JlTK`Fx2EvTBkQjVW?0A8To8Q7I}bE0LO-stK-iL=tgYTU)h55@p#0 zNPZ%lEN3StCpCY`&CN9*m(_}FlFQ7@%xIL5h+smNz{$zUdhFoAgLv`c#foE@nVGs2 z9vd6e^F~KUk)EE;&sjDL?(XhuzNf0HO50s|dV1=A(Vws7D8DF zWg(P>5XwR*3!yB8vJlEbC<`H!g-{kkSqNnzl!Z_hLbR;Lkn#yr{VyS_;qUJcBPb|{ zvXC{AY6c@JDoX2Pel55nR|BWbyp-ljO0&Ktu@c!8*iU0rr07*qo IM6N<$f<(}sVgLXD literal 3279 zcmb_fdpwi-AD=`;4b?&JrBb=&gj|M%sbo&%atJjExwTksV}5lcxh40@wj9@prQFJF zl5NPPavR3V4ns_{F*BF*oZtEV`8$7|{&>EBJkRs`d_M2b=lyxVpC{=TnC(6Z1ql!c zwC~~tYex`B}4ditJDu$K2gll*3ij6GR&_U9GS z2iBP|)?`fMq!1fLGF!Sk*)-ISJ{m7u+3+i9w^}@C$G<-QeT2VD_}7K}H^2^m*&l!j z2=yac^LIr*0$4n#KQdQ{1R*Cu%Y`T6B z?Imw45MSmI^5)p$8x}TT0y$zYDXVoMY^J9x-NQHA*&6JRt!|55=XHrJd@8YZ_enKa z4tA=5^)@Be`B2L(ABg9-oMVE&Bxzvt#KB5#gd6L;x##HZEdgr)W~z-rP!5rW?hUuI zN$K)>M;LPIt;03J(47VTAayv$`E<=$ziL{D77nM=vhd0#gtR&q=)@q# z4v0!Yo`~-KSh>S(Xw(mfamCoCDrBQAR%t#?eD(x@7jw$oZ)1%^UL#lPy0kE2mRb** z`eGxelEPPpTq}}wi8Rxl`fL#8hECm?Qt39VS&U1|fum4#u6JD2mhq~Z#rkZ?^H|}k zfNwN7(>NYtS7MtEV-~y7tu2NzW#2PYLEAH56*%CsodCq{BX6)F{J~woDkZ ziS<`s%@hQdSK#7IJQ3ud=K4&RE?aE!oQScD4I?lO9O|yg%AgZjYAsZ>ncHW|V)ClO zmRk8U_$si;>@&zzvQv;YX=9mu;MmpZ4fnvBYzu*m%*N_?D0j8ZXz#62-`tfxkiFkd zH)-5gPd^Ou_DYcv%^3Vh-2b!4PU&-?e>&oG6x&qe)(+z!4ajfh1_E8;8hrixdns<$ zb-Vs}&psS_E8pQj<6L>+%m?wjijU_+QZn<|O^i6f4p!;}0Ip!zBeXSqeXfF)S!H+( z(aLO=UH)XN+DZdargx-SY^{aA6O+@A1byfoFsfjNk~VWf6K^TE8OeET?Xo2BKZn;u+ZJO==tY7fSLK0Zem+s9!Py2eD1{kwIGH!n_)=5^ByGxxbqYnHIq;H zjskKDZdS!CHn0*~&hEOulwBv^a2Ab!;~joqABKnNUJeHboxs^DF}#Wu?Q zM#4{yz$S15R_!){!3v5VkhZskNAL~3hU29G`XjNtPqqQf)U#eU2YCQJSwsDKM5C}3 zm6(MLSN@dNASX1KD42;ls5BYLOht|Mtu=i+gE>57136wBs)WB%D0q96kx1@Mtm5iJ zt2lgep!ssAdXyIhdF`2v_#I%k=79D(07~TRc#Dy73Kqn{@O7J2AC>xo!zpug-nW{pZWGQTJ@68wE%N#f*mU$ zC!*ew*Z0HHP?X3BG4VjU}SW^8NU?Zm1%JOC+HkNYzM1{d%M)J zmr5!e_1aS;^~ik>L`22^unPt&=%47tn4Y!OJ|ah=p5SCT!7c(sj83~{Kj>>hTA#00 zYNOQ}-X5&npl@voEAr3y4f_*aQUg3E6CL$_uhv(sN;{}tFY{q7{rd7BT{-*RLqI;3 zxHEn*1*1FHRrESW^r%XilvKsszcf|JSQ+*G9eJqE)jQTecNSs)gsKvw#gMh2Rsx{! zyRD=+zj51q?A+uw{kZbCeTFnObb4#1flSGZ$eQNb&J0_X{Nu2qJXbTH^(g~<3;QiZ zV$3(!b2iR-p(H@;t3IJ7;)ILeHqEmhpLQvbviBA0Zm>kO zv}k~PXig3jV}%=LE-l?jS6m+@Y-YQ9ot&I(jo~Y$kGavs3c62T4tz0H+dTDHFdwGp zm~0nHxkqS@blM;ub;k4wxUB6!;*cM4csllk^91SAAxtsNFsu~lbPZ^KB%t>ZDnu|w;)#&K0S=v=>r&!!-31rwu_XIH>nXe?cE5P5QcmC|M&u45ZG^x46u-n~^&&Xd^ z1hw3y!F7EeFi<`%W^9P1!cyBQfJ@3NPHB2JL(J`^C1VyqkId2zLlx`Pi;Fu>Xd2R~ z8rpD&S%Z;lnH9Qlr7Ou9{lEHQvehA|weN&royHFn(cfyK{LVLpOx)F1rw>#(;Q73c zKq@Nv0hSq>j?t)d-Iys1?c-C6EgSOj4Y8;<+gYc26F+AJSf#a z>gzv3M4PX_yMJ5tp!#!K{uLV7Ir@V2i}~zv*hraOE-*W(X|r}jClpfg@>xy{ET~6! zsM;0(3a>a`-94d_ktAlgnnNKuuU||Cd{|5OBLd|;-WVKKBmp-tf?m;+k{BPX5{}-61TFNjp|(<-i*dyiq8BhpxQfpiV|xQ!x0 z%w~W4SZp;agzFFfA{mwPP_F5cCqN3E&vI3v)HJlNEaNv> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade + // > More than one file was found with OS independent path 'META-INF/gradle/incremental.annotation.processors' + packagingOptions { + exclude 'META-INF/gradle/incremental.annotation.processors' + exclude("META-INF/*.kotlin_module") + } + defaultConfig { + minSdkVersion 26 + targetSdkVersion 32 + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + // The following argument makes the Android Test Orchestrator run its + // "pm clear" command after each test invocation. This command ensures + // that the app's state is completely cleared between tests. + testInstrumentationRunnerArguments clearPackageData: 'true' + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = '11' + } + buildFeatures { + compose true + } + composeOptions { + kotlinCompilerVersion "${versions.kotlinCompilerVersion}" + kotlinCompilerExtensionVersion "${versions.composeCompiler}" + } + // Added to avoid this error - + // Execution failed for task ':app:mergeDebugAndroidTestJavaResource'. + // > A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction + // > 2 files found with path 'META-INF/AL2.0' from inputs: + packagingOptions { + exclude 'META-INF/AL2.0' + exclude 'META-INF/LGPL2.1' + } + configurations { + all { + // work around this error: + // Duplicate class org.intellij.lang.annotations.Identifier found in modules annotations-12.0 (com.intellij:annotations:12.0) and annotations-13.0 (org.jetbrains:annotations:13.0) + exclude group: "com.intellij", module: "annotations" + } + } +} + +dependencies { + // Support Libraries + implementation deps.support.appCompat + + // Showkase + implementation project(':showkase') + if (project.hasProperty('useKsp')) { + ksp project(':showkase-processor') + } else { + kapt project(':showkase-processor') + } + implementation project(':showkase-processor') + implementation project(':showkase-screenshot-testing') + + // Compose + implementation deps.compose.activityCompose + implementation deps.compose.composeRuntime + implementation deps.compose.core + implementation deps.compose.foundation + implementation deps.compose.tooling + androidTestImplementation deps.compose.uiTest + + // Material + implementation deps.material.material + implementation deps.material.mdcComposeThemeAdapter + + // Testing + androidTestImplementation deps.test.junitImplementation + androidTestImplementation deps.test.androidXTestCore + androidTestImplementation deps.test.androidXTestRules + androidTestImplementation deps.test.androidxTestRunner +} diff --git a/showkase-browser-testing-submodule-2/consumer-rules.pro b/showkase-browser-testing-submodule-2/consumer-rules.pro new file mode 100644 index 00000000..e69de29b diff --git a/showkase-browser-testing-submodule-2/proguard-rules.pro b/showkase-browser-testing-submodule-2/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/showkase-browser-testing-submodule-2/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/showkase-browser-testing-submodule-2/src/main/AndroidManifest.xml b/showkase-browser-testing-submodule-2/src/main/AndroidManifest.xml new file mode 100644 index 00000000..548695e1 --- /dev/null +++ b/showkase-browser-testing-submodule-2/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/showkase-browser-testing-submodule-2/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/two/LocalePreview.kt b/showkase-browser-testing-submodule-2/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/two/LocalePreview.kt new file mode 100644 index 00000000..25150c33 --- /dev/null +++ b/showkase-browser-testing-submodule-2/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/two/LocalePreview.kt @@ -0,0 +1,12 @@ +@file:Suppress("PackageNaming") + +package com.vinaygaba.showkase_browser_testing_submodule.two + +import androidx.compose.ui.tooling.preview.Preview + +@Preview(name = "English", group = "LocalePreview", locale = "en") +annotation class EnglishLocalePreview + +@Preview(name = "Norwegian", group = "LocalePreview", locale = "no") +@Preview(name = "English", group = "LocalePreview", locale = "en") +annotation class LocalePreview diff --git a/showkase-browser-testing-submodule/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/CustomSizePreviews.kt b/showkase-browser-testing-submodule/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/CustomSizePreviews.kt new file mode 100644 index 00000000..7127b1b4 --- /dev/null +++ b/showkase-browser-testing-submodule/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/CustomSizePreviews.kt @@ -0,0 +1,12 @@ +@file:Suppress("PackageNaming") + +package com.vinaygaba.showkase_browser_testing_submodule + +import androidx.compose.ui.tooling.preview.Preview + +@Preview(name = "CustomSize 100 * 100", widthDp = 100, heightDp = 100, group = "CustomSubmodulePreview") +@Preview(name = "CustomSize 200 * 200", widthDp = 200, heightDp = 200, group = "CustomSubmodulePreview") +annotation class CustomSizePreview + +@Preview(name = "Custom Font Size 1.2f", fontScale = 1.2f, group = "Custom Size Submodule") +annotation class CustomFontSizePreview diff --git a/showkase-browser-testing-submodule/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/SubmoduleTestComposables.kt b/showkase-browser-testing-submodule/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/SubmoduleTestComposables.kt index 841ff4b3..fe42252c 100644 --- a/showkase-browser-testing-submodule/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/SubmoduleTestComposables.kt +++ b/showkase-browser-testing-submodule/src/main/java/com/vinaygaba/showkase_browser_testing_submodule/SubmoduleTestComposables.kt @@ -1,8 +1,17 @@ @file:Suppress("PackageNaming") + package com.vinaygaba.showkase_browser_testing_submodule +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.text.BasicText import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp import com.airbnb.android.showkase.annotation.ShowkaseComposable @ShowkaseComposable(name = "Submodule Component", group = "Submodule") @@ -10,3 +19,20 @@ import com.airbnb.android.showkase.annotation.ShowkaseComposable fun SubmoduleComposable() { BasicText(text = "Submodule Component") } + +@CustomFontSizePreview +@Composable +fun CustomSubmoduleText() { + BasicText(text = "Submodule text composable") +} + +@CustomSizePreview +@Composable +fun CustomShape() { + Box( + modifier = Modifier + .size(20.dp) + .background(Color.Blue) + .clip(CircleShape) + ) +} diff --git a/showkase-browser-testing/build.gradle b/showkase-browser-testing/build.gradle index e51619aa..82490e22 100644 --- a/showkase-browser-testing/build.gradle +++ b/showkase-browser-testing/build.gradle @@ -7,6 +7,9 @@ if (project.hasProperty('useKsp')) { apply plugin: 'kotlin-kapt' kapt { correctErrorTypes = true + arguments { + arg("multiPreviewType", "com.airbnb.android.submodule.showkasesample.LocalePreview") + } } } @@ -72,6 +75,7 @@ dependencies { implementation deps.support.appCompat // Submodule for testing implementation project(':showkase-browser-testing-submodule') + implementation project(':showkase-browser-testing-submodule-2') // Showkase implementation project(':showkase') diff --git a/showkase-browser-testing/src/androidTest/java/com/airbnb/android/showkase_browser_testing/ShowkaseBrowserTest.kt b/showkase-browser-testing/src/androidTest/java/com/airbnb/android/showkase_browser_testing/ShowkaseBrowserTest.kt index c73de352..4920d201 100644 --- a/showkase-browser-testing/src/androidTest/java/com/airbnb/android/showkase_browser_testing/ShowkaseBrowserTest.kt +++ b/showkase-browser-testing/src/androidTest/java/com/airbnb/android/showkase_browser_testing/ShowkaseBrowserTest.kt @@ -41,9 +41,9 @@ class ShowcaseBrowserTest { // in Kotlin 1.6. It will be available in the old backend in Kotlin version 1.7.20. // See https://youtrack.jetbrains.com/issue/KT-49682 for more information about this. private val componentSize = if (BuildConfig.IS_RUNNING_KSP) { - 11 + 20 } else { - 7 + 10 } @Test @@ -73,8 +73,6 @@ class ShowcaseBrowserTest { verifyRowsWithTextAreDisplayed( "Group1 (2)", "Group2 (1)", - "Group3 (2)", - "Submodule (1)" ) } } @@ -322,6 +320,12 @@ class ShowcaseBrowserTest { // Select components clickRowWithText("Components ($componentSize)") + onRoot().performTouchInput { + swipeUp() + } + + waitForIdle() + // Select Group 3 clickRowWithText("Group3 (2)") @@ -459,7 +463,17 @@ class ShowcaseBrowserTest { goBack() // Confirm that we are in the right screen - verifyRowsWithTextAreDisplayed("Group1 (2)", "Group2 (1)", "Group3 (2)") + verifyRowsWithTextAreDisplayed("Group1 (2)", "Group2 (1)") + + onRoot().performTouchInput { + swipeUp() + } + + waitForIdle() + + // Confirm that we are in the right screen + verifyRowsWithTextAreDisplayed("Group3 (2)") + // Go back to the landing screen goBack() @@ -560,6 +574,12 @@ class ShowcaseBrowserTest { // Tap on the "Components" row clickRowWithText("Components ($componentSize)") + onRoot().performTouchInput { + swipeUp() + } + + waitForIdle() + // Select "Group4" clickRowWithText("Group4 (1)") @@ -656,12 +676,18 @@ class ShowcaseBrowserTest { composeTestRule.apply { verifyLandingScreen( - components = 11, + components = componentSize, typography = 13, colors = 4, ) // Tap on the "Components" row - clickRowWithText("Components (11)") + clickRowWithText("Components ($componentSize)") + + waitForIdle() + + onRoot().performTouchInput { + swipeUp() + } waitForIdle() @@ -678,4 +704,116 @@ class ShowcaseBrowserTest { } } } + + @Test + fun customPreviewShowsUpInBrowser() { + composeTestRule.apply { + + verifyLandingScreen( + components = componentSize, + typography = 13, + colors = 4, + ) + // Tap on the "Components" row + clickRowWithText("Components ($componentSize)") + + waitForIdle() + + clickRowWithText("Custom Text (1)") + + waitForIdle() + + // Verify that they are all displayed and treated as different components + onNodeWithText("PreviewCustomTextLight - Custom Text Dark").assertIsDisplayed() + + } + } + + @Test + fun customSubmodulePreviewShowsUpInBrowser() { + composeTestRule.apply { + + verifyLandingScreen( + components = componentSize, + typography = 13, + colors = 4, + ) + // Tap on the "Components" row + clickRowWithText("Components ($componentSize)") + + waitForIdle() + + onNodeWithText("Custom Size Submodule (1)").performScrollTo() + + waitForIdle() + + clickRowWithText("Custom Size Submodule (1)") + + waitForIdle() + + // Verify that they are all displayed and treated as different components + onNodeWithText("CustomSubmoduleText - Custom Font Size 1.2f").assertIsDisplayed() + + } + } + + @Test + fun customStackedSubmodulePreviewShowsUpInBrowserForKsp() { + if (BuildConfig.IS_RUNNING_KSP) { + + composeTestRule.apply { + + verifyLandingScreen( + components = componentSize, + typography = 13, + colors = 4, + ) + // Tap on the "Components" row + clickRowWithText("Components ($componentSize)") + + waitForIdle() + + clickRowWithText("CustomSubmodulePreview (2)") + + waitForIdle() + + // Verify that they are all displayed and treated as different components + onNodeWithText("CustomShape - CustomSize 200 * 200").assertIsDisplayed() + onNodeWithText("CustomShape - CustomSize 100 * 100").assertIsDisplayed() + + } + } + } + + @Test + fun customStackedSubmoduleTwoPreviewShowsUpInBrowser() { + + composeTestRule.apply { + + verifyLandingScreen( + components = componentSize, + typography = 13, + colors = 4, + ) + // Tap on the "Components" row + clickRowWithText("Components ($componentSize)") + + waitForIdle() + + onRoot().performTouchInput { + swipeUp() + } + + waitForIdle() + + val composables = if (BuildConfig.IS_RUNNING_KSP) 3 else 1 + + clickRowWithText("LocalePreview ($composables)") + + onNodeWithText("Some text In locale").assertIsDisplayed() + + waitForIdle() + + } + } } diff --git a/showkase-browser-testing/src/main/java/com/airbnb/android/showkase_browser_testing/TestComposables.kt b/showkase-browser-testing/src/main/java/com/airbnb/android/showkase_browser_testing/TestComposables.kt index e09e0321..82a31625 100644 --- a/showkase-browser-testing/src/main/java/com/airbnb/android/showkase_browser_testing/TestComposables.kt +++ b/showkase-browser-testing/src/main/java/com/airbnb/android/showkase_browser_testing/TestComposables.kt @@ -9,6 +9,8 @@ import com.airbnb.android.showkase.annotation.ShowkaseComposable import com.airbnb.android.showkase.annotation.ShowkaseRoot import com.airbnb.android.showkase.annotation.ShowkaseRootModule import com.google.android.material.composethemeadapter.MdcTheme +import com.vinaygaba.showkase_browser_testing_submodule.two.EnglishLocalePreview +import com.vinaygaba.showkase_browser_testing_submodule.two.LocalePreview @ShowkaseComposable("Composable1", "Group1") @Composable @@ -67,8 +69,7 @@ fun TestComposable8() { BasicText(text = "Test Composable9and10") } -// Adding this to see on the UI tests that this compiles. -// Will remove it when we actually supports MultiPreviewAnnotations. + @Preview( name = "Custom Text Light", group = "Button", @@ -81,11 +82,37 @@ fun TestComposable8() { ) annotation class CustomButtonPreview +@Preview( + name = "Custom Text Dark", + group = "Custom Text", + uiMode = Configuration.UI_MODE_NIGHT_YES, +) +annotation class CustomTextPreview + @CustomButtonPreview @Composable fun PreviewCustomText() { BasicText(text = "MultiPreviewAnnotation!") } +@CustomTextPreview +@Composable +fun PreviewCustomTextLight() { + BasicText(text = "CustomPreviewAnnotation!") +} + +@LocalePreview +@Composable +fun PreviewText() { + BasicText(text = "Some text") +} + + +@EnglishLocalePreview +@Composable +fun PreviewEnglishText() { + BasicText(text = "Some text In locale") +} + @ShowkaseRoot class MyRootModule: ShowkaseRootModule diff --git a/showkase-processor-testing/src/test/java/com/airbnb/android/showkase_processor_testing/BaseProcessorTest.kt b/showkase-processor-testing/src/test/java/com/airbnb/android/showkase_processor_testing/BaseProcessorTest.kt index ad13b8fa..e2c8076e 100644 --- a/showkase-processor-testing/src/test/java/com/airbnb/android/showkase_processor_testing/BaseProcessorTest.kt +++ b/showkase-processor-testing/src/test/java/com/airbnb/android/showkase_processor_testing/BaseProcessorTest.kt @@ -106,7 +106,6 @@ abstract class BaseProcessorTest { if (UPDATE_TEST_OUTPUTS) { generatedSources.forEach { - println("Generated: ${it.name}") it.copyTo(File(outputDir, it.name)) } } else { @@ -114,7 +113,6 @@ abstract class BaseProcessorTest { .isEqualTo(outputDir.listFiles()?.size ?: 0) generatedSources.forEach { actualFile -> - println("Generated: ${actualFile.name}") val expectedFile = File(outputDir, actualFile.name) assertThat(expectedFile).exists() assertThat(actualFile).hasSameTextualContentAs(expectedFile) diff --git a/showkase-processor-testing/src/test/java/com/airbnb/android/showkase_processor_testing/ShowkaseProcessorTest.kt b/showkase-processor-testing/src/test/java/com/airbnb/android/showkase_processor_testing/ShowkaseProcessorTest.kt index 45119809..a5084b63 100644 --- a/showkase-processor-testing/src/test/java/com/airbnb/android/showkase_processor_testing/ShowkaseProcessorTest.kt +++ b/showkase-processor-testing/src/test/java/com/airbnb/android/showkase_processor_testing/ShowkaseProcessorTest.kt @@ -560,7 +560,15 @@ class ShowkaseProcessorTest : BaseProcessorTest() { @Test fun `composable function with multiple preview functions compiles`() { - compileInputsAndVerifyOutputs() + // Testing only KAPT here since some of these previews are stacked. + // This is yielding different output as repeatable annotations + // are not yet supported by KAPT. + compileInputsAndVerifyOutputs(modes = listOf(Mode.KAPT)) + } + + @Test + fun `composable function with multiple preview functions compiles ksp`() { + compileInputsAndVerifyOutputs(modes = listOf(Mode.KSP)) } @Test @@ -574,5 +582,29 @@ class ShowkaseProcessorTest : BaseProcessorTest() { // This functionality is only supported with KSP for now. compileInputsAndVerifyOutputs(modes = listOf(Mode.KSP)) } + + @Test + fun `composable function with custom preview annotation generates output`() { + compileInputsAndVerifyOutputs(modes = listOf(Mode.KAPT, Mode.KSP)) + } + + @Test + fun `composable function with custom preview annotation with preview param generates output`() { + compileInputsAndVerifyOutputs(modes = listOf(Mode.KAPT, Mode.KSP)) + } + + @Test + fun `composable function with repeatable custom preview annotation generates output`() { + // This is only supported by KSP for now + compileInputsAndVerifyOutputs(modes = listOf(Mode.KSP)) + } + + @Test + fun `composable function with multiple repeatable custom preview annotation generates output`() { + // This is only supported by KSP for now + compileInputsAndVerifyOutputs( + modes = listOf(Mode.KSP), + ) + } } diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/input/Composables.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/input/Composables.kt new file mode 100644 index 00000000..ba0b8d77 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/input/Composables.kt @@ -0,0 +1,18 @@ +package com.airbnb.android.showkase_processor_testing + +import android.content.res.Configuration.UI_MODE_NIGHT_NO +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview + +@Preview( + name = "light theme", + group = "themes", + uiMode = UI_MODE_NIGHT_NO +) +public annotation class ThemePreview + +@ThemePreview +@Composable +public fun HelloWorldPreview() { + +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt new file mode 100644 index 00000000..1d18a301 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt @@ -0,0 +1,24 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseCodegenMetadata +import kotlin.Unit + +public class ShowkaseMetadata_com_airbnb_android_showkase_processor_testing { + @ShowkaseCodegenMetadata( + showkaseName = "HelloWorldPreview - light theme", + showkaseGroup = "themes", + packageName = "com.airbnb.android.showkase_processor_testing", + packageSimpleName = "showkase_processor_testing", + showkaseElementName = "HelloWorldPreview", + insideObject = false, + insideWrapperClass = false, + showkaseKDoc = "", + generatedPropertyName = + "comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme", + showkaseMetadataType = "COMPONENT", + isDefaultStyle = false, + ) + public fun themesHelloWorldPreviewlighttheme(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt new file mode 100644 index 00000000..9ad524be --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt @@ -0,0 +1,18 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseMultiPreviewCodegenMetadata +import kotlin.Unit + +public class ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview { + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "light theme", + previewGroup = "themes", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.ThemePreview", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_0(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme.kt new file mode 100644 index 00000000..de41746e --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme.kt @@ -0,0 +1,16 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase_processor_testing + +import androidx.compose.runtime.Composable +import com.airbnb.android.showkase.models.ShowkaseBrowserComponent + +public val comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme: + ShowkaseBrowserComponent = ShowkaseBrowserComponent( + group = "themes", + componentName = "HelloWorldPreview - light theme", + componentKDoc = "", + componentKey = + """com.airbnb.android.showkase_processor_testing_null_themes_HelloWorldPreview-lighttheme_0_null""", + isDefaultStyle = false, + component = @Composable { HelloWorldPreview() } + ) diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/input/Composables.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/input/Composables.kt new file mode 100644 index 00000000..58ff1a6e --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/input/Composables.kt @@ -0,0 +1,31 @@ +package com.airbnb.android.showkase_processor_testing + +import android.content.res.Configuration.UI_MODE_NIGHT_NO +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter +import androidx.compose.ui.tooling.preview.PreviewParameterProvider + +@Preview( + name = "light theme", + group = "themes", + uiMode = UI_MODE_NIGHT_NO +) +public annotation class ThemePreview + +public class ParameterProvider : PreviewParameterProvider { + override val values: Sequence + get() = sequenceOf( + "String1", + "String2" + ) + + override val count: Int + get() = super.count +} + +@ThemePreview +@Composable +public fun HelloWorldPreview(@PreviewParameter(provider = ParameterProvider::class) text: String) { + +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt new file mode 100644 index 00000000..b23ae179 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt @@ -0,0 +1,27 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseCodegenMetadata +import com.airbnb.android.showkase_processor_testing.ParameterProvider +import kotlin.Unit + +public class ShowkaseMetadata_com_airbnb_android_showkase_processor_testing { + @ShowkaseCodegenMetadata( + showkaseName = "HelloWorldPreview - light theme", + showkaseGroup = "themes", + packageName = "com.airbnb.android.showkase_processor_testing", + packageSimpleName = "showkase_processor_testing", + showkaseElementName = "HelloWorldPreview", + insideObject = false, + insideWrapperClass = false, + showkaseKDoc = "", + generatedPropertyName = + "comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme", + showkaseMetadataType = "COMPONENT", + isDefaultStyle = false, + previewParameterClass = [ParameterProvider::class], + previewParameterName = "text", + ) + public fun themesHelloWorldPreviewlighttheme(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt new file mode 100644 index 00000000..9ad524be --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt @@ -0,0 +1,18 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseMultiPreviewCodegenMetadata +import kotlin.Unit + +public class ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview { + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "light theme", + previewGroup = "themes", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.ThemePreview", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_0(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme.kt new file mode 100644 index 00000000..1e622a9a --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_custom_preview_annotation_with_preview_param_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme.kt @@ -0,0 +1,25 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase_processor_testing + +import androidx.compose.runtime.Composable +import com.airbnb.android.showkase.models.ShowkaseBrowserComponent +import kotlin.collections.List + +public val comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme: + List = + ParameterProvider() + .values + .iterator() + .asSequence() + .mapIndexed { index, previewParam -> + ShowkaseBrowserComponent( + group = "themes", + componentName = "HelloWorldPreview - light theme", + componentKDoc = "", + componentKey = + """com.airbnb.android.showkase_processor_testing_null_themes_HelloWorldPreview-lighttheme_0_null_$index""", + isDefaultStyle = false, + component = @Composable { HelloWorldPreview(text = previewParam) } + ) + } + .toList() diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/input/Composables.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/input/Composables.kt index a82d7f9e..2b72499b 100644 --- a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/input/Composables.kt +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/input/Composables.kt @@ -29,8 +29,8 @@ public annotation class DevicePreviews public class Composables { - @FontScalePreviews @Preview(name = "component", group = "component-group") + @FontScalePreviews @Composable public fun Component() { } @@ -41,8 +41,6 @@ public class Composables { group = "themes", uiMode = UI_MODE_NIGHT_YES ) -@FontScalePreviews -@DevicePreviews public annotation class CombinedPreviews @CombinedPreviews diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt index 69955c2b..fb3852b0 100644 --- a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt @@ -22,4 +22,21 @@ public class ShowkaseMetadata_com_airbnb_android_showkase_processor_testing { ) public fun componentgroupcomponent(): Unit { } + + @ShowkaseCodegenMetadata( + showkaseName = "HelloWorldPreview - dark theme", + showkaseGroup = "themes", + packageName = "com.airbnb.android.showkase_processor_testing", + packageSimpleName = "showkase_processor_testing", + showkaseElementName = "HelloWorldPreview", + insideObject = false, + insideWrapperClass = false, + showkaseKDoc = "", + generatedPropertyName = + "comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme", + showkaseMetadataType = "COMPONENT", + isDefaultStyle = false, + ) + public fun themesHelloWorldPreviewdarktheme(): Unit { + } } diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_combinedpreviews.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_combinedpreviews.kt new file mode 100644 index 00000000..af333ba3 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_combinedpreviews.kt @@ -0,0 +1,19 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseMultiPreviewCodegenMetadata +import kotlin.Unit + +public class + ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_combinedpreviews { + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "dark theme", + previewGroup = "themes", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.CombinedPreviews", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_0(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt new file mode 100644 index 00000000..59cb3df6 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt @@ -0,0 +1,16 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase_processor_testing + +import androidx.compose.runtime.Composable +import com.airbnb.android.showkase.models.ShowkaseBrowserComponent + +public val comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme: + ShowkaseBrowserComponent = ShowkaseBrowserComponent( + group = "themes", + componentName = "HelloWorldPreview - dark theme", + componentKDoc = "", + componentKey = + """com.airbnb.android.showkase_processor_testing_null_themes_HelloWorldPreview-darktheme_0_null""", + isDefaultStyle = false, + component = @Composable { HelloWorldPreview() } + ) diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/input/Composables.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/input/Composables.kt new file mode 100644 index 00000000..2b72499b --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/input/Composables.kt @@ -0,0 +1,50 @@ +package com.airbnb.android.showkase_processor_testing + +import android.content.res.Configuration.UI_MODE_NIGHT_YES +import androidx.compose.runtime.Composable +import androidx.compose.ui.semantics.SemanticsProperties.Text +import androidx.compose.ui.tooling.preview.Preview + +@Preview( + name = "small font", + group = "font scales", + fontScale = 0.5f +) +@Preview( + name = "large font", + group = "font scales", + fontScale = 1.5f +) +public annotation class FontScalePreviews + +@Preview( + name = "small screen", + group = "device", +) +@Preview( + name = "large Screen", + group = "device", +) +public annotation class DevicePreviews + +public class Composables { + + @Preview(name = "component", group = "component-group") + @FontScalePreviews + @Composable + public fun Component() { + } +} + +@Preview( + name = "dark theme", + group = "themes", + uiMode = UI_MODE_NIGHT_YES +) +public annotation class CombinedPreviews + +@CombinedPreviews +@Composable +public fun HelloWorldPreview() { + +} \ No newline at end of file diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt new file mode 100644 index 00000000..388bb371 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt @@ -0,0 +1,59 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseCodegenMetadata +import com.airbnb.android.showkase_processor_testing.Composables +import kotlin.Unit + +public class ShowkaseMetadata_com_airbnb_android_showkase_processor_testing { + @ShowkaseCodegenMetadata( + showkaseName = "Component - small font", + showkaseGroup = "font scales", + packageName = "com.airbnb.android.showkase_processor_testing", + packageSimpleName = "showkase_processor_testing", + showkaseElementName = "Component", + insideObject = false, + insideWrapperClass = true, + showkaseKDoc = "", + generatedPropertyName = "comairbnbandroidshowkaseprocessortestingfontscalesComponentsmallfont", + enclosingClass = [Composables::class], + showkaseMetadataType = "COMPONENT", + isDefaultStyle = false, + ) + public fun fontscalesComponentsmallfont(): Unit { + } + + @ShowkaseCodegenMetadata( + showkaseName = "Component - large font", + showkaseGroup = "font scales", + packageName = "com.airbnb.android.showkase_processor_testing", + packageSimpleName = "showkase_processor_testing", + showkaseElementName = "Component", + insideObject = false, + insideWrapperClass = true, + showkaseKDoc = "", + generatedPropertyName = "comairbnbandroidshowkaseprocessortestingfontscalesComponentlargefont1", + enclosingClass = [Composables::class], + showkaseMetadataType = "COMPONENT", + isDefaultStyle = false, + ) + public fun fontscalesComponentlargefont1(): Unit { + } + + @ShowkaseCodegenMetadata( + showkaseName = "HelloWorldPreview - dark theme", + showkaseGroup = "themes", + packageName = "com.airbnb.android.showkase_processor_testing", + packageSimpleName = "showkase_processor_testing", + showkaseElementName = "HelloWorldPreview", + insideObject = false, + insideWrapperClass = false, + showkaseKDoc = "", + generatedPropertyName = + "comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme", + showkaseMetadataType = "COMPONENT", + isDefaultStyle = false, + ) + public fun themesHelloWorldPreviewdarktheme(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_combinedpreviews.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_combinedpreviews.kt new file mode 100644 index 00000000..af333ba3 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_combinedpreviews.kt @@ -0,0 +1,19 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseMultiPreviewCodegenMetadata +import kotlin.Unit + +public class + ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_combinedpreviews { + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "dark theme", + previewGroup = "themes", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.CombinedPreviews", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_0(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_devicepreviews.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_devicepreviews.kt new file mode 100644 index 00000000..c755436c --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_devicepreviews.kt @@ -0,0 +1,30 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseMultiPreviewCodegenMetadata +import kotlin.Unit + +public class ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_devicepreviews + { + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "small screen", + previewGroup = "device", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.DevicePreviews", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_0(): Unit { + } + + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "large Screen", + previewGroup = "device", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.DevicePreviews", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_1(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_fontscalepreviews.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_fontscalepreviews.kt new file mode 100644 index 00000000..8e3f1b4d --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_fontscalepreviews.kt @@ -0,0 +1,30 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseMultiPreviewCodegenMetadata +import kotlin.Unit + +public class + ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_fontscalepreviews { + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "small font", + previewGroup = "font scales", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.FontScalePreviews", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_0(): Unit { + } + + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "large font", + previewGroup = "font scales", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.FontScalePreviews", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_1(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingfontscalesComponentlargefont1.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingfontscalesComponentlargefont1.kt new file mode 100644 index 00000000..f3b5c454 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingfontscalesComponentlargefont1.kt @@ -0,0 +1,18 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase_processor_testing + +import androidx.compose.runtime.Composable +import com.airbnb.android.showkase.models.ShowkaseBrowserComponent + +public val comairbnbandroidshowkaseprocessortestingfontscalesComponentlargefont1: + ShowkaseBrowserComponent = ShowkaseBrowserComponent( + group = "font scales", + componentName = "Component - large font", + componentKDoc = "", + componentKey = + """com.airbnb.android.showkase_processor_testing_com.airbnb.android.showkase_processor_testing.Composables_fontscales_Component-largefont_1_null""", + isDefaultStyle = false, + component = @Composable { + Composables().Component() + } + ) diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingfontscalesComponentsmallfont.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingfontscalesComponentsmallfont.kt new file mode 100644 index 00000000..31a8f3a2 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingfontscalesComponentsmallfont.kt @@ -0,0 +1,18 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase_processor_testing + +import androidx.compose.runtime.Composable +import com.airbnb.android.showkase.models.ShowkaseBrowserComponent + +public val comairbnbandroidshowkaseprocessortestingfontscalesComponentsmallfont: + ShowkaseBrowserComponent = ShowkaseBrowserComponent( + group = "font scales", + componentName = "Component - small font", + componentKDoc = "", + componentKey = + """com.airbnb.android.showkase_processor_testing_com.airbnb.android.showkase_processor_testing.Composables_fontscales_Component-smallfont_0_null""", + isDefaultStyle = false, + component = @Composable { + Composables().Component() + } + ) diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt new file mode 100644 index 00000000..59cb3df6 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_preview_functions_compiles_ksp/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt @@ -0,0 +1,16 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase_processor_testing + +import androidx.compose.runtime.Composable +import com.airbnb.android.showkase.models.ShowkaseBrowserComponent + +public val comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme: + ShowkaseBrowserComponent = ShowkaseBrowserComponent( + group = "themes", + componentName = "HelloWorldPreview - dark theme", + componentKDoc = "", + componentKey = + """com.airbnb.android.showkase_processor_testing_null_themes_HelloWorldPreview-darktheme_0_null""", + isDefaultStyle = false, + component = @Composable { HelloWorldPreview() } + ) diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/input/Composables.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/input/Composables.kt new file mode 100644 index 00000000..02a5c15c --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/input/Composables.kt @@ -0,0 +1,33 @@ +package com.airbnb.android.showkase_processor_testing + +import android.content.res.Configuration.UI_MODE_NIGHT_NO +import android.content.res.Configuration.UI_MODE_NIGHT_YES +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview + +@Preview( + name = "dark theme", + group = "themes", + uiMode = UI_MODE_NIGHT_YES +) +@Preview( + name = "light theme", + group = "themes", + uiMode = UI_MODE_NIGHT_NO +) +public annotation class ThemePreview + + +@Preview( + name = "medium font", + group = "font", +) +public annotation class FontPreview + +@Preview("Initial Preview") +@FontPreview +@ThemePreview +@Composable +public fun HelloWorldPreview() { + +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt new file mode 100644 index 00000000..2c7e0bff --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt @@ -0,0 +1,41 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseCodegenMetadata +import kotlin.Unit + +public class ShowkaseMetadata_com_airbnb_android_showkase_processor_testing { + @ShowkaseCodegenMetadata( + showkaseName = "HelloWorldPreview - dark theme", + showkaseGroup = "themes", + packageName = "com.airbnb.android.showkase_processor_testing", + packageSimpleName = "showkase_processor_testing", + showkaseElementName = "HelloWorldPreview", + insideObject = false, + insideWrapperClass = false, + showkaseKDoc = "", + generatedPropertyName = + "comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme", + showkaseMetadataType = "COMPONENT", + isDefaultStyle = false, + ) + public fun themesHelloWorldPreviewdarktheme(): Unit { + } + + @ShowkaseCodegenMetadata( + showkaseName = "HelloWorldPreview - light theme", + showkaseGroup = "themes", + packageName = "com.airbnb.android.showkase_processor_testing", + packageSimpleName = "showkase_processor_testing", + showkaseElementName = "HelloWorldPreview", + insideObject = false, + insideWrapperClass = false, + showkaseKDoc = "", + generatedPropertyName = + "comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1", + showkaseMetadataType = "COMPONENT", + isDefaultStyle = false, + ) + public fun themesHelloWorldPreviewlighttheme1(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_fontpreview.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_fontpreview.kt new file mode 100644 index 00000000..a4d12f09 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_fontpreview.kt @@ -0,0 +1,18 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseMultiPreviewCodegenMetadata +import kotlin.Unit + +public class ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_fontpreview { + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "medium font", + previewGroup = "font", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.FontPreview", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_0(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt new file mode 100644 index 00000000..9c33bb37 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt @@ -0,0 +1,29 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseMultiPreviewCodegenMetadata +import kotlin.Unit + +public class ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview { + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "dark theme", + previewGroup = "themes", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.ThemePreview", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_0(): Unit { + } + + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "light theme", + previewGroup = "themes", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.ThemePreview", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_1(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt new file mode 100644 index 00000000..59cb3df6 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt @@ -0,0 +1,16 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase_processor_testing + +import androidx.compose.runtime.Composable +import com.airbnb.android.showkase.models.ShowkaseBrowserComponent + +public val comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme: + ShowkaseBrowserComponent = ShowkaseBrowserComponent( + group = "themes", + componentName = "HelloWorldPreview - dark theme", + componentKDoc = "", + componentKey = + """com.airbnb.android.showkase_processor_testing_null_themes_HelloWorldPreview-darktheme_0_null""", + isDefaultStyle = false, + component = @Composable { HelloWorldPreview() } + ) diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1.kt new file mode 100644 index 00000000..83c78c85 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_multiple_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1.kt @@ -0,0 +1,16 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase_processor_testing + +import androidx.compose.runtime.Composable +import com.airbnb.android.showkase.models.ShowkaseBrowserComponent + +public val comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1: + ShowkaseBrowserComponent = ShowkaseBrowserComponent( + group = "themes", + componentName = "HelloWorldPreview - light theme", + componentKDoc = "", + componentKey = + """com.airbnb.android.showkase_processor_testing_null_themes_HelloWorldPreview-lighttheme_1_null""", + isDefaultStyle = false, + component = @Composable { HelloWorldPreview() } + ) diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/input/Composables.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/input/Composables.kt new file mode 100644 index 00000000..7c8c7b42 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/input/Composables.kt @@ -0,0 +1,24 @@ +package com.airbnb.android.showkase_processor_testing + +import android.content.res.Configuration.UI_MODE_NIGHT_NO +import android.content.res.Configuration.UI_MODE_NIGHT_YES +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview + +@Preview( + name = "dark theme", + group = "themes", + uiMode = UI_MODE_NIGHT_YES +) +@Preview( + name = "light theme", + group = "themes", + uiMode = UI_MODE_NIGHT_NO +) +public annotation class ThemePreview + +@ThemePreview +@Composable +public fun HelloWorldPreview() { + +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt new file mode 100644 index 00000000..2c7e0bff --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_com_airbnb_android_showkase_processor_testing.kt @@ -0,0 +1,41 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseCodegenMetadata +import kotlin.Unit + +public class ShowkaseMetadata_com_airbnb_android_showkase_processor_testing { + @ShowkaseCodegenMetadata( + showkaseName = "HelloWorldPreview - dark theme", + showkaseGroup = "themes", + packageName = "com.airbnb.android.showkase_processor_testing", + packageSimpleName = "showkase_processor_testing", + showkaseElementName = "HelloWorldPreview", + insideObject = false, + insideWrapperClass = false, + showkaseKDoc = "", + generatedPropertyName = + "comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme", + showkaseMetadataType = "COMPONENT", + isDefaultStyle = false, + ) + public fun themesHelloWorldPreviewdarktheme(): Unit { + } + + @ShowkaseCodegenMetadata( + showkaseName = "HelloWorldPreview - light theme", + showkaseGroup = "themes", + packageName = "com.airbnb.android.showkase_processor_testing", + packageSimpleName = "showkase_processor_testing", + showkaseElementName = "HelloWorldPreview", + insideObject = false, + insideWrapperClass = false, + showkaseKDoc = "", + generatedPropertyName = + "comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1", + showkaseMetadataType = "COMPONENT", + isDefaultStyle = false, + ) + public fun themesHelloWorldPreviewlighttheme1(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt new file mode 100644 index 00000000..9c33bb37 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview.kt @@ -0,0 +1,29 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase + +import com.airbnb.android.showkase.`annotation`.ShowkaseMultiPreviewCodegenMetadata +import kotlin.Unit + +public class ShowkaseMetadata_showkase_com_airbnb_android_showkase_processor_testing_themepreview { + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "dark theme", + previewGroup = "themes", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.ThemePreview", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_0(): Unit { + } + + @ShowkaseMultiPreviewCodegenMetadata( + previewName = "light theme", + previewGroup = "themes", + supportTypeQualifiedName = "com.airbnb.android.showkase_processor_testing.ThemePreview", + showkaseWidth = -1, + showkaseHeight = -1, + packageName = "com.airbnb.android.showkase_processor_testing", + ) + public fun Preview_1(): Unit { + } +} diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt new file mode 100644 index 00000000..59cb3df6 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme.kt @@ -0,0 +1,16 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase_processor_testing + +import androidx.compose.runtime.Composable +import com.airbnb.android.showkase.models.ShowkaseBrowserComponent + +public val comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewdarktheme: + ShowkaseBrowserComponent = ShowkaseBrowserComponent( + group = "themes", + componentName = "HelloWorldPreview - dark theme", + componentKDoc = "", + componentKey = + """com.airbnb.android.showkase_processor_testing_null_themes_HelloWorldPreview-darktheme_0_null""", + isDefaultStyle = false, + component = @Composable { HelloWorldPreview() } + ) diff --git a/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1.kt b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1.kt new file mode 100644 index 00000000..83c78c85 --- /dev/null +++ b/showkase-processor-testing/src/test/resources/ShowkaseProcessorTest/composable_function_with_repeatable_custom_preview_annotation_generates_output/output/comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1.kt @@ -0,0 +1,16 @@ +// This is an auto-generated file. Please do not edit/modify this file. +package com.airbnb.android.showkase_processor_testing + +import androidx.compose.runtime.Composable +import com.airbnb.android.showkase.models.ShowkaseBrowserComponent + +public val comairbnbandroidshowkaseprocessortestingthemesHelloWorldPreviewlighttheme1: + ShowkaseBrowserComponent = ShowkaseBrowserComponent( + group = "themes", + componentName = "HelloWorldPreview - light theme", + componentKDoc = "", + componentKey = + """com.airbnb.android.showkase_processor_testing_null_themes_HelloWorldPreview-lighttheme_1_null""", + isDefaultStyle = false, + component = @Composable { HelloWorldPreview() } + ) diff --git a/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/ShowkaseProcessor.kt b/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/ShowkaseProcessor.kt index 8a4e1490..fdc79db5 100644 --- a/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/ShowkaseProcessor.kt +++ b/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/ShowkaseProcessor.kt @@ -8,6 +8,7 @@ import androidx.room.compiler.processing.XTypeElement import com.airbnb.android.showkase.annotation.ShowkaseCodegenMetadata import com.airbnb.android.showkase.annotation.ShowkaseColor import com.airbnb.android.showkase.annotation.ShowkaseComposable +import com.airbnb.android.showkase.annotation.ShowkaseMultiPreviewCodegenMetadata import com.airbnb.android.showkase.annotation.ShowkaseRoot import com.airbnb.android.showkase.annotation.ShowkaseRootCodegen import com.airbnb.android.showkase.annotation.ShowkaseScreenshot @@ -20,6 +21,7 @@ import com.airbnb.android.showkase.processor.models.ShowkaseMetadataType import com.airbnb.android.showkase.processor.models.getCodegenMetadataTypes import com.airbnb.android.showkase.processor.models.getShowkaseColorMetadata import com.airbnb.android.showkase.processor.models.getShowkaseMetadata +import com.airbnb.android.showkase.processor.models.getShowkaseMetadataFromCustomAnnotation import com.airbnb.android.showkase.processor.models.getShowkaseMetadataFromPreview import com.airbnb.android.showkase.processor.models.getShowkaseTypographyMetadata import com.airbnb.android.showkase.processor.writer.PaparazziShowkaseScreenshotTestWriter @@ -50,18 +52,33 @@ class ShowkaseProcessor @JvmOverloads constructor( private val logger = ShowkaseExceptionLogger() private val showkaseValidator = ShowkaseValidator() - override fun getSupportedAnnotationTypes(): MutableSet = mutableSetOf( - ShowkaseComposable::class.java.name, - PREVIEW_CLASS_NAME, - ShowkaseColor::class.java.name, - ShowkaseTypography::class.java.name, - ShowkaseRoot::class.java.name, - ShowkaseScreenshot::class.java.name, - ) + override fun getSupportedAnnotationTypes(): MutableSet { + val supportedAnnotations = mutableSetOf( + ShowkaseComposable::class.java.name, + PREVIEW_CLASS_NAME, + ShowkaseColor::class.java.name, + ShowkaseTypography::class.java.name, + ShowkaseRoot::class.java.name, + ShowkaseScreenshot::class.java.name, + ShowkaseMultiPreviewCodegenMetadata::class.java.name, + ) + supportedAnnotations.addAll(supportedCustomAnnotationTypes()) + return supportedAnnotations + } - override fun getSupportedOptions(): MutableSet { - return mutableSetOf("skipPrivatePreviews") + // Getting the custom annotations that are supported as an compiler argument. + // It is expected to get the compiler argument as follows: + // arg("multiPreviewTypes", "com.airbnb.android.submodule.showkasesample.FontPreview") + // This should only be provided by KAPT users + private fun supportedCustomAnnotationTypes(): MutableSet { + val set = mutableSetOf() + environment + .options["multiPreviewType"] + ?.split(",")?.map { it.replace(" ", "") } + ?.toSet()?.let { set.addAll(it) } + return set } + override fun getSupportedOptions() = mutableSetOf("skipPrivatePreviews", "multiPreviewType") override fun process(environment: XProcessingEnv, round: XRoundEnv) { val componentMetadata = processComponentAnnotation(round) @@ -82,7 +99,9 @@ class ShowkaseProcessor @JvmOverloads constructor( private fun processComponentAnnotation(roundEnvironment: XRoundEnv): Set { val showkaseComposablesMetadata = processShowkaseAnnotation(roundEnvironment) val previewComposablesMetadata = processPreviewAnnotation(roundEnvironment) - return (showkaseComposablesMetadata + previewComposablesMetadata) + + val customPreviewFromClassPathMetadata = processCustomAnnotationFromClasspath(roundEnvironment) + return (showkaseComposablesMetadata + previewComposablesMetadata + customPreviewFromClassPathMetadata) .dedupeAndSort() .toSet() } @@ -112,7 +131,14 @@ class ShowkaseProcessor @JvmOverloads constructor( val skipPrivatePreviews = environment.options["skipPrivatePreviews"] == "true" return roundEnvironment.getElementsAnnotatedWith(PREVIEW_CLASS_NAME) .mapNotNull { element -> - if (showkaseValidator.checkElementIsAnnotationClass(element)) return@mapNotNull null + if (showkaseValidator.checkElementIsAnnotationClass(element)) { + // Writing preview data to a internal annotation to store values through + // processing rounds + ShowkaseBrowserWriter(environment).writeCustomAnnotationElementToMetadata( + element + ) + return@mapNotNull processCustomAnnotation(roundEnvironment, element) + } val skipElement = showkaseValidator.validateComponentElementOrSkip( element, PREVIEW_SIMPLE_NAME, @@ -127,6 +153,95 @@ class ShowkaseProcessor @JvmOverloads constructor( }.flatten().mapNotNull { it }.toSet() } + private fun processCustomAnnotation( + roundEnvironment: XRoundEnv, + annotation: XTypeElement? = null + ): Set { + val supportedTypes = mutableListOf() + if (annotation != null) supportedTypes.add(annotation.qualifiedName) + val components = mutableSetOf() + + supportedTypes.map { supportedType -> + val annotatedElements = roundEnvironment.getElementsAnnotatedWith(supportedType) + annotatedElements.map { annotatedElement -> + if (!showkaseValidator.checkElementIsAnnotationClass(annotatedElement)) { + + showkaseValidator.validateComponentElementOrSkip( + element = annotatedElement, + annotationName = supportedType, + ) + components.addAll( + getShowkaseMetadataFromCustomAnnotation( + element = annotatedElement, + showkaseValidator = showkaseValidator, + supportedType.getCustomAnnotationSimpleName(), + ).toSet() + ) + } + } + } + return components + } + + private fun String.getCustomAnnotationSimpleName(): String { + return this.split(".").last() + } + + private fun processCustomAnnotationFromClasspath(roundEnvironment: XRoundEnv): Set { + // In this function we are checking generated classpath for MultiPreview codegen annotations. + // We also check the current module if there is any composables that are annotated with the qualified name + // from the annotation from classpath. We use the fields from the classpath annotation to build + // common data for the ShowkaseMetadata. + + // Supported annotations from classpath + val supportedCustomPreview = mutableSetOf() + environment.getTypeElementsFromPackage(CODEGEN_PACKAGE_NAME) + .flatMap { it.getEnclosedElements() }.mapNotNull { + return@mapNotNull when ( + val annotation = it.getAnnotation(ShowkaseMultiPreviewCodegenMetadata::class) + ) { + null -> { + null + } + else -> { + val codeGenAnnotation = ShowkaseMultiPreviewCodegenMetadata( + previewName = annotation.value.previewName, + previewGroup = annotation.value.previewGroup, + supportTypeQualifiedName = annotation.value.supportTypeQualifiedName, + packageName = annotation.value.packageName, + showkaseWidth = annotation.value.showkaseWidth, + showkaseHeight = annotation.value.showkaseHeight, + ) + supportedAnnotationTypes.add(annotation.value.supportTypeQualifiedName) + supportedCustomPreview.add(codeGenAnnotation) + } + } + } + val components = mutableSetOf() + supportedCustomPreview + .mapIndexed { index: Int, customPreviewMetadata: ShowkaseMultiPreviewCodegenMetadata -> + roundEnvironment + .getElementsAnnotatedWith(customPreviewMetadata.supportTypeQualifiedName) + .mapIndexed elementRoot@{ elementIndex, xElement -> + showkaseValidator.validateComponentElementOrSkip( + xElement, + customPreviewMetadata.supportTypeQualifiedName, + ) + components.add( + getShowkaseMetadata( + xElement = xElement, + customPreviewMetadata = customPreviewMetadata, + elementIndex = elementIndex, + index = index, + showkaseValidator = showkaseValidator + ) + ) + + } + } + return components + } + private fun writeMetadataFile( componentMetadata: Set, colorMetadata: Set, @@ -213,7 +328,9 @@ class ShowkaseProcessor @JvmOverloads constructor( val rootElement = getShowkaseRootElement(roundEnvironment, environment) // Showkase test annotation - val (screenshotTestElement, screenshotTestType) = getShowkaseScreenshotTestElement(roundEnvironment) + val (screenshotTestElement, screenshotTestType) = getShowkaseScreenshotTestElement( + roundEnvironment + ) var showkaseBrowserProperties = ShowkaseBrowserProperties() @@ -234,8 +351,10 @@ class ShowkaseProcessor @JvmOverloads constructor( if (screenshotTestElement != null && screenshotTestType != null) { // Generate screenshot test file if ShowkaseScreenshotTest is present in the root module - writeScreenshotTestFiles(screenshotTestElement, screenshotTestType, rootElement, - showkaseBrowserProperties) + writeScreenshotTestFiles( + screenshotTestElement, screenshotTestType, rootElement, + showkaseBrowserProperties + ) } } @@ -253,7 +372,8 @@ class ShowkaseProcessor @JvmOverloads constructor( ): Pair { val testElements = roundEnvironment.getElementsAnnotatedWith(ShowkaseScreenshot::class) .filterIsInstance() - val screenshotTestType = showkaseValidator.validateShowkaseTestElement(testElements, environment) + val screenshotTestType = + showkaseValidator.validateShowkaseTestElement(testElements, environment) return testElements.singleOrNull() to screenshotTestType } @@ -284,7 +404,8 @@ class ShowkaseProcessor @JvmOverloads constructor( colors = classpathColors, typography = classpathTypography ) - val allShowkaseBrowserProperties = currentShowkaseBrowserProperties + classpathShowkaseBrowserProperties + val allShowkaseBrowserProperties = + currentShowkaseBrowserProperties + classpathShowkaseBrowserProperties writeShowkaseBrowserFiles(rootElement, allShowkaseBrowserProperties) return allShowkaseBrowserProperties diff --git a/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/logging/ShowkaseValidator.kt b/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/logging/ShowkaseValidator.kt index aaffff8b..08bf701f 100644 --- a/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/logging/ShowkaseValidator.kt +++ b/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/logging/ShowkaseValidator.kt @@ -83,6 +83,9 @@ internal class ShowkaseValidator { // This should check if it is an annotation that's annotated with @Preview or @ShowkaseComposable annotation internal fun checkElementIsAnnotationClass(element: XElement): Boolean { + contract { + returns(true) implies (element is XTypeElement) + } return element.isTypeElement() && element.isAnnotationClass() } diff --git a/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/models/ShowkaseMetadata.kt b/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/models/ShowkaseMetadata.kt index 3953351d..19322597 100644 --- a/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/models/ShowkaseMetadata.kt +++ b/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/models/ShowkaseMetadata.kt @@ -12,6 +12,7 @@ import androidx.room.compiler.processing.compat.XConverters.toJavac import com.airbnb.android.showkase.annotation.ShowkaseCodegenMetadata import com.airbnb.android.showkase.annotation.ShowkaseColor import com.airbnb.android.showkase.annotation.ShowkaseComposable +import com.airbnb.android.showkase.annotation.ShowkaseMultiPreviewCodegenMetadata import com.airbnb.android.showkase.annotation.ShowkaseTypography import com.airbnb.android.showkase.processor.ShowkaseProcessor.Companion.PREVIEW_PARAMETER_SIMPLE_NAME import com.airbnb.android.showkase.processor.ShowkaseProcessor.Companion.PREVIEW_SIMPLE_NAME @@ -298,6 +299,101 @@ internal fun getShowkaseMetadataFromPreview( } } +internal fun getShowkaseMetadataFromCustomAnnotation( + element: XMethodElement, + showkaseValidator: ShowkaseValidator, + annotationName: String, +): List { + val customAnnotation = element.requireAnnotationBySimpleName(annotationName) + + val previewAnnotations = customAnnotation.map { + it.typeElement.requireAnnotationBySimpleName(PREVIEW_SIMPLE_NAME) + }.flatten() + + val showkaseComosableAnnotation = element.getAnnotation(ShowkaseComposable::class)?.value + // If this component was configured to be skipped, return early + if (showkaseComosableAnnotation != null && showkaseComosableAnnotation.skip) return listOf() // Will be mapped out + return previewAnnotations.mapIndexed { index, annotation -> + val commonMetadata = element.extractCommonMetadata(showkaseValidator) + + val annotationNameParam = annotation.getAsString("name") + val annotationHasName = annotationNameParam.isNotEmpty() + val showkaseNameFromAnnotation = if (annotationHasName) annotationNameParam else index + + val showkaseName = "${element.name} - $showkaseNameFromAnnotation" + val showkaseGroup = getShowkaseGroup( + annotation.getAsString("group"), + commonMetadata.enclosingClass, + ) + + val width = annotation.getAsInt("widthDp") + val height = annotation.getAsInt("heightDp") + + val previewParameterMetadata = element.getPreviewParameterMetadata() + + ShowkaseMetadata.Component( + packageSimpleName = commonMetadata.moduleName, + packageName = commonMetadata.packageName, + enclosingClassName = commonMetadata.enclosingClassName, + elementName = element.name, + showkaseKDoc = commonMetadata.kDoc, + showkaseName = showkaseName, + showkaseGroup = showkaseGroup, + showkaseWidthDp = if (width == -1) null else width, + showkaseHeightDp = if (height == -1) null else width, + insideWrapperClass = commonMetadata.showkaseFunctionType == ShowkaseFunctionType.INSIDE_CLASS, + insideObject = commonMetadata.showkaseFunctionType.insideObject(), + element = element, + previewParameterName = previewParameterMetadata?.first, + previewParameterProviderType = previewParameterMetadata?.second, + componentIndex = index, + ) + } +} + +internal fun getShowkaseMetadata( + xElement: XMethodElement, + customPreviewMetadata: ShowkaseMultiPreviewCodegenMetadata, + elementIndex: Int, + index: Int, + showkaseValidator: ShowkaseValidator, +): ShowkaseMetadata.Component { + val commonMetadata = xElement.extractCommonMetadata(showkaseValidator) + val previewParamMetadata = xElement.getPreviewParameterMetadata() + val isInsideObject = + commonMetadata.showkaseFunctionType == ShowkaseFunctionType.INSIDE_OBJECT + val heightDp = if (customPreviewMetadata.showkaseHeight == -1) { + null + } else { + customPreviewMetadata.showkaseHeight + } + val widthDp = if (customPreviewMetadata.showkaseWidth == -1) { + null + } else { + customPreviewMetadata.showkaseWidth + } + return ShowkaseMetadata.Component( + element = xElement, + elementName = xElement.name, + packageName = commonMetadata.packageName, + packageSimpleName = commonMetadata.moduleName, + showkaseName = "${xElement.name} - ${customPreviewMetadata.previewName} - $elementIndex", + insideObject = commonMetadata.showkaseFunctionType.insideObject(), + previewParameterName = previewParamMetadata?.first, + previewParameterProviderType = previewParamMetadata?.second, + showkaseGroup = getShowkaseGroup( + customPreviewMetadata.previewGroup, + commonMetadata.enclosingClass + ), + showkaseKDoc = commonMetadata.kDoc, + enclosingClassName = commonMetadata.enclosingClassName, + componentIndex = elementIndex + index, + insideWrapperClass = isInsideObject, + showkaseHeightDp = heightDp, + showkaseWidthDp = widthDp, + ) +} + private fun XMethodElement.getPreviewParameterMetadata(): Pair? { val previewParameterPair = getPreviewParameterAnnotation() return previewParameterPair?.let { diff --git a/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/writer/ShowkaseBrowserWriter.kt b/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/writer/ShowkaseBrowserWriter.kt index 8545e125..07a3391b 100644 --- a/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/writer/ShowkaseBrowserWriter.kt +++ b/showkase-processor/src/main/java/com/airbnb/android/showkase/processor/writer/ShowkaseBrowserWriter.kt @@ -1,14 +1,25 @@ package com.airbnb.android.showkase.processor.writer +import androidx.room.compiler.processing.XElement +import androidx.room.compiler.processing.XFiler import androidx.room.compiler.processing.XProcessingEnv +import androidx.room.compiler.processing.get +import androidx.room.compiler.processing.isTypeElement +import androidx.room.compiler.processing.writeTo +import com.airbnb.android.showkase.annotation.ShowkaseMultiPreviewCodegenMetadata import com.airbnb.android.showkase.annotation.ShowkaseRootCodegen import com.airbnb.android.showkase.processor.ShowkaseGeneratedMetadata +import com.airbnb.android.showkase.processor.ShowkaseProcessor import com.squareup.kotlinpoet.AnnotationSpec import com.squareup.kotlinpoet.ClassName import com.squareup.kotlinpoet.CodeBlock +import com.squareup.kotlinpoet.FileSpec +import com.squareup.kotlinpoet.FunSpec import com.squareup.kotlinpoet.LIST import com.squareup.kotlinpoet.MemberName import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy +import com.squareup.kotlinpoet.TypeSpec +import java.util.Locale internal class ShowkaseBrowserWriter(private val environment: XProcessingEnv) { @Suppress("LongMethod", "LongParameterList") @@ -24,7 +35,8 @@ internal class ShowkaseBrowserWriter(private val environment: XProcessingEnv) { allShowkaseBrowserProperties.componentsWithPreviewParameters ) val colorCodeBlock = initializeColorCodeBlock(allShowkaseBrowserProperties.colors) - val typographyCodeBlock = initializeTypographyCodeBlock(allShowkaseBrowserProperties.typography) + val typographyCodeBlock = + initializeTypographyCodeBlock(allShowkaseBrowserProperties.typography) val showkaseRootCodegenAnnotation = initializeShowkaseRootCodegenAnnotation( allShowkaseBrowserProperties.componentsWithoutPreviewParameters.size, @@ -82,7 +94,10 @@ internal class ShowkaseBrowserWriter(private val environment: XProcessingEnv) { addLineBreak() withDoubleIndent { withParameterPropertyNames.forEachIndexed { index, metadata -> - add("addAll(%M)", MemberName(metadata.propertyPackage, metadata.propertyName)) + add( + "addAll(%M)", + MemberName(metadata.propertyPackage, metadata.propertyName) + ) if (index != withParameterPropertyNames.lastIndex) { addLineBreak() } @@ -144,6 +159,44 @@ internal class ShowkaseBrowserWriter(private val environment: XProcessingEnv) { .addMember("numTypography = %L", typographySize) .build() + // This is to aggregate metadata for the custom annotation annotated with Preview + internal fun writeCustomAnnotationElementToMetadata(element: XElement) { + if (!element.isTypeElement()) return + if (element.isAnnotationClass() && element.qualifiedName == ShowkaseProcessor.PREVIEW_CLASS_NAME) return + + val moduleName = "Showkase_${element.qualifiedName.replace(".", "_")}" + val generatedClassName = + "ShowkaseMetadata_${moduleName.lowercase(Locale.getDefault())}" + + val previewAnnotations = + element.getAllAnnotations().filter { it.name == ShowkaseProcessor.PREVIEW_SIMPLE_NAME } + + val fileBuilder = FileSpec.builder( + ShowkaseProcessor.CODEGEN_PACKAGE_NAME, + generatedClassName + ) + + val functions = previewAnnotations.mapIndexed { index, xAnnotation -> + FunSpec.builder("${xAnnotation.name}_$index") + .addAnnotation( + AnnotationSpec + .builder(ShowkaseMultiPreviewCodegenMetadata::class) + .addMember("previewName = %S", xAnnotation.get("name")) + .addMember("previewGroup = %S", xAnnotation.get("group")) + .addMember("supportTypeQualifiedName = %S", element.qualifiedName) + .addMember("showkaseWidth = %L", xAnnotation.getAsInt("widthDp")) + .addMember("showkaseHeight = %L", xAnnotation.getAsInt("heightDp")) + .addMember("packageName = %S", element.packageName) + .build() + ).build() + } + + fileBuilder.addType( + TypeSpec.classBuilder(generatedClassName).addFunctions(functions).build() + ).addFileComment("This is an auto-generated file. Please do not edit/modify this file.") + fileBuilder.build().writeTo(environment.filer, mode = XFiler.Mode.Aggregating) + } + companion object { internal const val CODEGEN_AUTOGEN_CLASS_NAME = "Codegen" private const val COMPONENT_INTERFACE_METHOD_NAME = "getShowkaseComponents" diff --git a/showkase-screenshot-testing-paparazzi-sample/src/main/java/com/airbnb/android/showkase/screenshot/testing/paparazzi/HighFont.kt b/showkase-screenshot-testing-paparazzi-sample/src/main/java/com/airbnb/android/showkase/screenshot/testing/paparazzi/HighFont.kt new file mode 100644 index 00000000..cde03287 --- /dev/null +++ b/showkase-screenshot-testing-paparazzi-sample/src/main/java/com/airbnb/android/showkase/screenshot/testing/paparazzi/HighFont.kt @@ -0,0 +1,6 @@ +package com.airbnb.android.showkase.screenshot.testing.paparazzi + +import androidx.compose.ui.tooling.preview.Preview + +@Preview(name = "1.5 font", fontScale = 1.5f) +annotation class HighFont diff --git a/showkase-screenshot-testing-paparazzi-sample/src/main/java/com/airbnb/android/showkase/screenshot/testing/paparazzi/Text.kt b/showkase-screenshot-testing-paparazzi-sample/src/main/java/com/airbnb/android/showkase/screenshot/testing/paparazzi/Text.kt new file mode 100644 index 00000000..0dfd2d86 --- /dev/null +++ b/showkase-screenshot-testing-paparazzi-sample/src/main/java/com/airbnb/android/showkase/screenshot/testing/paparazzi/Text.kt @@ -0,0 +1,20 @@ +package com.airbnb.android.showkase.screenshot.testing.paparazzi + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color + + +// This is for testing that custom annotation +// works with paparazzi +@HighFont +@Composable +fun Preview() { + Text( + modifier = Modifier.background(color = Color.White).fillMaxWidth(), + text = "Gustav" + ) +} diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[15.Default Group**Preview - 1.5 font**null,1.Pixel5,1.Ltr,1.DEFAULT]_default_group**preview_-_1.5_font**null.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[15.Default Group**Preview - 1.5 font**null,1.Pixel5,1.Ltr,1.DEFAULT]_default_group**preview_-_1.5_font**null.png new file mode 100644 index 0000000000000000000000000000000000000000..399041281edb7a3e8983d4d39235d51cb7e324e8 GIT binary patch literal 3783 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 literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[16.Text**H6 Text Row**null,1.Pixel5,1.Ltr,1.DEFAULT]_text**h6_text_row**null.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[16.Text**H6 Text Row**null,1.Pixel5,1.Ltr,1.DEFAULT]_text**h6_text_row**null.png index 13d0e12a43c51fba26ad058a113511d83debc664..0c69482f40abb2995fe43a8ee55b066e97673e73 100644 GIT binary patch literal 4230 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 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[17.Text**H6 Text Row**null,1.Pixel5,1.Ltr,1.DEFAULT]_text**h6_text_row**null.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[17.Text**H6 Text Row**null,1.Pixel5,1.Ltr,1.DEFAULT]_text**h6_text_row**null.png new file mode 100644 index 0000000000000000000000000000000000000000..13d0e12a43c51fba26ad058a113511d83debc664 GIT binary patch literal 6842 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 literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[18.Text**H6 Text Row & special chars**null,1.Pixel5,1.Ltr,1.DEFAULT]_text**h6_text_row_&_special_chars**null.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[18.Text**H6 Text Row & special chars**null,1.Pixel5,1.Ltr,1.DEFAULT]_text**h6_text_row_&_special_chars**null.png index 13d0e12a43c51fba26ad058a113511d83debc664..0c69482f40abb2995fe43a8ee55b066e97673e73 100644 GIT binary patch literal 4230 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 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[19.Text**H6 Text Row & special chars**null,1.Pixel5,1.Ltr,1.DEFAULT]_text**h6_text_row_&_special_chars**null.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[19.Text**H6 Text Row & special chars**null,1.Pixel5,1.Ltr,1.DEFAULT]_text**h6_text_row_&_special_chars**null.png new file mode 100644 index 0000000000000000000000000000000000000000..13d0e12a43c51fba26ad058a113511d83debc664 GIT binary patch literal 6842 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 literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[20.Light Colors**Primary,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[20.Light Colors**Primary,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary.png new file mode 100644 index 0000000000000000000000000000000000000000..90a126da4fea23a6ea56257a7ccba6c2b7f68d15 GIT binary patch literal 3991 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{Cz*Nh@1{7IVAF+Uefj`dE#WAEJ?(KC$K?X&E z0|zd5{jcP{p!~pd<59E136Y<3fl42&-N_83KG-+&0Vzf{Ss=;8V+ABxBuaoJhXK%7 z27!bNj0_A42NnR;Iy5-4GcYtTjA|GSrO~7@njc0>jnSfVw0;<^6i1s5qwS^9M&fA8 jc(ng8+G!dIJw+M2$bC2JgoHYQogfBJS3j3^P6 z$;4v?Bv~X%fFy?j&=LlLgbP3&3I|3tjE2%^(iqJTqou}ZQ8`*aj8=-HO^4C;(r6=b mv}HWne;DmFjf9>e`+<*ZE4$`gm<=rS7(8A5T-G@yGywo2XiAm< literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[21.Light Colors**Primary Variant,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary_variant.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[21.Light Colors**Primary Variant,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary_variant.png new file mode 100644 index 0000000000000000000000000000000000000000..446b1f0a36379a9b7fcb22281496fc8ab9fc4986 GIT binary patch literal 3991 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{Cz*Nh@1{7IVAF+Uefj`dE#WAEJ?(KC$#sdlh z2M(0Ce&A}6WmG-PyZwk`+S%=l3=9q1pYZ`T9Qe;;1*BLcN`NGX0nj7{frJY{d4&TD zm>C!x8XVbyY8jeAY8lyNfh5zYhS5+OO&X*5VYJj3Ehyt^ZsXX=zp@N`5Yrq)xO!XK(gUGj}?$&kthL@90ou`7z7e70Ob`9EMR6}aAjnSfVw0;<^6i1s5qwS^9M&fA8c(ng8+G!dI cJ;ee>tDNSiJkPRT0rNbAr>mdKI;Vst0MvR#^#A|> literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[22.Light Colors**Secondary,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**secondary.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[22.Light Colors**Secondary,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..9be2cd703ceb0c9f1b783382ccacf73add30fce7 GIT binary patch literal 3993 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{Cz*Nh@1{7IVAF+Uefj`01#WAEJ?(KC$!2=2m z2OQpg$X~5wz+BDh&?aBk+1#^pA1_ex9@Bq}Kx)VN1 z$;4v?Bv~X%fFy?j&=LlLgbP3&3I|3tjE2%^(iqJTqou}ZQ8`*aj8=-HO^4C;(r6=b mv}HWne;DmFjf9>e`+<*ZE4$`gm<=rS7(8A5T-G@yGywo2XiAm< literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[23.Light Colors**Secondary Variant,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**secondary_variant.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[23.Light Colors**Secondary Variant,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**secondary_variant.png new file mode 100644 index 0000000000000000000000000000000000000000..cd09d576ff726374cbc27b4eb354453a2c2d5596 GIT binary patch literal 3990 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{Cz*Nh@1{7IVAF+Uefj`#M#WAEJ?(Ox3j0Y4L z4j5F_&Ec(McW`y_v41h+^=+WS1JRG=fmFk99xEWlB2fY)IShaXF$g4FU}RuWIIw`3 zfx)4{ksYXrp_vaT!N?{HB$-AvjE2%^(iqJTqou}ZQ8`*aj8=-HO^4C;(r6=bv}HWn ie;DmFjf9?J0fT6o*iNgEFdkr@XYh3Ob6Mw<&;$UIuSNO* literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[23.Light Colors**Surface,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**surface.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[23.Light Colors**Surface,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**surface.png new file mode 100644 index 0000000000000000000000000000000000000000..3f9e439b7a118fd867f69cfd3310781f2a8b6e52 GIT binary patch literal 3986 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{Cz*Nh@1{7IVAF+Uefj`pI#WAEJ?(KC$Mg|3* z0~>yt^ZsXX=zp@N`5Yrq)xO!XK(gUGj}?$&kthL@90ou`7z7e70Ob`9EMR6}aAjnSfVw0;<^6i1s5qwS^9M&fA8c(ng8+G!dI cJ;ee>tDNSiJkPRT0rNbAr>mdKI;Vst0MvR#^#A|> literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[24.Light Colors**Background,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**background.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[24.Light Colors**Background,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**background.png new file mode 100644 index 0000000000000000000000000000000000000000..3f9e439b7a118fd867f69cfd3310781f2a8b6e52 GIT binary patch literal 3986 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{Cz*Nh@1{7IVAF+Uefj`pI#WAEJ?(KC$Mg|3* z0~>yt^ZsXX=zp@N`5Yrq)xO!XK(gUGj}?$&kthL@90ou`7z7e70Ob`9EMR6}aAjnSfVw0;<^6i1s5qwS^9M&fA8c(ng8+G!dI cJ;ee>tDNSiJkPRT0rNbAr>mdKI;Vst0MvR#^#A|> literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[24.Light Colors**Error,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**error.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[24.Light Colors**Error,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**error.png new file mode 100644 index 0000000000000000000000000000000000000000..f1ef48f6e7da0b674857d09c3bfda554841bbf54 GIT binary patch literal 3991 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{Cz*Nh@1{7IVAF+Uefj`dE#WAEJ?(Ox3j0Y41 z4jhng{Tph|a-Ko;(UF-s6Mm-U0+l{kyOSA6eXwul15%7^vOtoF#|lWYNR$9c4g;XE z3<3!k7#SE84lDqwb!c#8XJBYx7}YQuN~1|*G(U`%8ly$!X#Fr+DULQBM%zoHjl|KG k@o4{Hw9_;adWtd~sexavEA2@Kc7hl@UHx3vIVCg!05FY6qyPW_ literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[25.Light Colors**Primary,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[25.Light Colors**Primary,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary.png new file mode 100644 index 0000000000000000000000000000000000000000..90a126da4fea23a6ea56257a7ccba6c2b7f68d15 GIT binary patch literal 3991 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{Cz*Nh@1{7IVAF+Uefj`dE#WAEJ?(KC$K?X&E z0|zd5{jcP{p!~pd<59E136Y<3fl42&-N_83KG-+&0Vzf{Ss=;8V+ABxBuaoJhXK%7 z27!bNj0_A42NnR;Iy5-4GcYtTjA|GSrO~7@njc0>jnSfVw0;<^6i1s5qwS^9M&fA8 jc(ng8+G!dIJw+M2$bC2JgoHYQogfBJS3j3^P6yt^ZsXX=zp@N`5Yrq)xO!XK(gUGj}?$&kthL@90ou`7z7e70Ob`9EMR6}aAjnSfVw0;<^6i1s5qwS^9M&fA8c(ng8+G!dI cJ;ee>tDNSiJkPRT0rNbAr>mdKI;Vst0MvR#^#A|> literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[26.Light Colors**Error,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**error.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[26.Light Colors**Error,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**error.png new file mode 100644 index 0000000000000000000000000000000000000000..f1ef48f6e7da0b674857d09c3bfda554841bbf54 GIT binary patch literal 3991 zcmeAS@N?(olHy`uVBq!ia0y~yV1B{Cz*Nh@1{7IVAF+Uefj`dE#WAEJ?(Ox3j0Y41 z4jhng{Tph|a-Ko;(UF-s6Mm-U0+l{kyOSA6eXwul15%7^vOtoF#|lWYNR$9c4g;XE z3<3!k7#SE84lDqwb!c#8XJBYx7}YQuN~1|*G(U`%8ly$!X#Fr+DULQBM%zoHjl|KG k@o4{Hw9_;adWtd~sexavEA2@Kc7hl@UHx3vIVCg!05FY6qyPW_ literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[26.Light Colors**Primary Variant,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary_variant.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[26.Light Colors**Primary Variant,1.Pixel5,1.Ltr,1.DEFAULT]_light_colors**primary_variant.png new file mode 100644 index 0000000000000000000000000000000000000000..446b1f0a36379a9b7fcb22281496fc8ab9fc4986 GIT binary patch literal 3991 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 literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[29.Material**H3,1.Pixel5,1.Ltr,1.DEFAULT]_material**h3.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[29.Material**H3,1.Pixel5,1.Ltr,1.DEFAULT]_material**h3.png new file mode 100644 index 0000000000000000000000000000000000000000..0545fadffb6d678d9d804342f51fcdaba9a63b4b GIT binary patch literal 4341 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 F`Ul#?w~_z= literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[31.Material**H5,1.Pixel5,1.Ltr,1.DEFAULT]_material**h5.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[31.Material**H5,1.Pixel5,1.Ltr,1.DEFAULT]_material**h5.png new file mode 100644 index 0000000000000000000000000000000000000000..4c25ec4975e7fc2275f09c9306b8bf841208ea41 GIT binary patch literal 2468 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 Vow@`U1EL5y5E8og!PmzN{{#LYua^J- literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[34.Material**Subtitle2,1.Pixel5,1.Ltr,1.DEFAULT]_material**subtitle2.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[34.Material**Subtitle2,1.Pixel5,1.Ltr,1.DEFAULT]_material**subtitle2.png new file mode 100644 index 0000000000000000000000000000000000000000..3836dd585a5387d22861a56b779c852b97d4c202 GIT binary patch literal 3540 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 literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[36.Material**Body2,1.Pixel5,1.Ltr,1.DEFAULT]_material**body2.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[36.Material**Body2,1.Pixel5,1.Ltr,1.DEFAULT]_material**body2.png new file mode 100644 index 0000000000000000000000000000000000000000..f74e585825d621c6052c692a3bdf4aff36b40d2b GIT binary patch literal 3165 zcmeHJ`&Uy}77hV~5`j7uLPbcePHmxrjFo_xkcutRnTies6ii^rj3NOdr4S*IMA}GO zfw*+kE_s9&TOEB(uw1L2Z7u*!24D2ZNM|-;SDVaw0&RF@sCrlU{~aln=($| zwbQYg9MR23uN#WXopfQR5?9i-=BFF60ujB~g!tL~?bGD!EVtJ$$wxm;8rf$^IkXDUVO($=OTux=} z*L^g~3jMG#7~i|T??h9}tYuS*&mvnE?*5+s6+XNfDuyViYeju`vq)tGJVeV9SeI^% zK(wAlRW!||rs19`3iccO>s!gC9n+cg%FXG{&-qK1Xo_IVs^#m`JMSygP%LJ4>JXns zHO|PiALU*`{ndk4EwxD!>h5eG$^rCu`A|f3vx$4~EV?3%+I`R!TiuL2aj?D7W>S)! zqHbn)Ek%KlUeiz36OvV4Q2BG7AETX+PbQk9Xnk==dTU^0`+A{0L!zuS$y?(33C^YCLB))TO1}*k|C+dv(Ukt~?AT+f-wIYEk2IV3 zI3wQ9(4Ys^ITuz`NYywZtH&LHID1oWp=|vgDO?Wg-}{fim}F1G%xmUj$(Fna!_1Z* zS?IC;6m**gjGE-lQ-m#G|xH* zrk3;qWg0UP6%nfk{F+&u|h}{6+ z*=gA#1^a!zuQgY@s_QED5x8`DtM-M@BDx3C-_hS$r6@@}6Y($%mlB&!VW{L9w2{0O3J|C-+V5UISF-#H z>%D5u;4?pjF?LCKn1zb3_242_fwa>d7NB9M=erqtQFN0u?GfY^y9urv*ri`4U@#a& zY@wejgkawrgBA;RRNSUkCPY33Ps#@x;*noxk3 zVmQXB>S#>(`&K#}Dro}s^c*XAb`+2NsVohltSixwfMeF|fGDB6A?@f=t~H-O$)}t;Ww+_1mpeACQM9^PPU%tGWHU{-i`+ZbR}Ho?riXjj%kx)J{$YOX zXRxtYsbuW%-2}NS`^##s`)br-$0awhW<+Z_#@M@tfE^0Yhp&1MdCtUc#|v4z5ajr{ z&3o+7cT@XA{b6~x>ESa4-@tj>eDt;#i?;&63(G4~a(cLhdu|F8BJG{{08L1JAhJ0+)*E=4lH;vECxk-3Gb#Jl#3~GeKz<`v3jdrb3$~~|s z;(`1w`N_W;_*LKq=pH2N1yHs|e;b|}cp0+3cRVeG&ipMz+Pyc3n`zr!V_NJ5J7ZXr z8wKw~w9|CFtqOVNNl!!Q?wZfYb7gU=Gl!6&-XC#O0&HjJ@$e_i2_}y>8m8WN>-$z(O)yoxkgaPz7xnBR%8@GG94S6< z4wiuzCKq>PAVbeTPH^;?05MVO*XiCGs^m0A9Bp336~(iq))>6>6;fwMa=T4ihO(OJ zShqf0ja)Vsi=JfuOv4#b=aIS_U3W-d>r-?kK=PUGH;;H3c77oW9}^e&D+TusP-Q)N zh%k9=<;h&+{^nL~U78_dv;KEZpQGXP)t430zp=V}G>t@YMj1e%P(gmTIek%4xD)QR z7^Y&E;GY}Xd?$ULqU+;YO746gm3coK%`wf$Kv;7zDLxy?{@VGoBrj_yjdmET@X zK)=_&AhAglU7O;A9u`k^XIlXZgV`=wF)xu$iqGh}FA`ss}P@DBN?rYUvCddzg1w zc^INY4>Bq6P4A6bIc}tm`s$fIHxciLRx`hVr{ToGLS+ zd05i}CC1aS+tHL@dK0+ni-az>N{^vR4tnAApCdeAklqij1U^YTfo~Td_yvo>tW;T| z*V1>yv**j63ZoKFBtPYKy)8PcWWBMc(IN?We9g+5MXWO-eiTa=~L5d zS+%PJY|#A(whDi^(Ezr1ztBe|x9IVCy`}dfo71W36F~dfoe#EB^Ky7EsIHepMG zp985u76O3Ku=CL`_kIrqLx%XHH~oK2y4_!a;|yxweK-gN8kF?O$>W{Jva9|BD_Xfi literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[37.Material**Button,1.Pixel5,1.Ltr,1.DEFAULT]_material**button.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[37.Material**Button,1.Pixel5,1.Ltr,1.DEFAULT]_material**button.png new file mode 100644 index 0000000000000000000000000000000000000000..b9fd0d935e0e8a4fa00547a56e3fb598bffefc8e GIT binary patch literal 2684 zcmeHJ`&&|J9w)VnHsy$`X_{76%u}S}Sl$q%a>j8Ksc9-5-E_4i*N}|16fa~ov+HP) zHr_%x?zXFzrWK}`7m87_K#sF+sez!PLZX?XTs&O%(C)K;!2UevhxfeS=Q;29`=0On zxx58Oqr*4ZZM8!n5St>t4*M2?uvWtJ{0-~i@%W?LDg?srNJQA7?=nx%kHt}k`nUdg z?3VQ!p0DjLd?2c7!fXy&pmjCeuk{LY$q>^`*=KYA6v9)Y-OWfKeszuW%X zlK*uqo`W}Q=Eajr<+;Vx6;-LUGmD)GY33(&y3ECQLv_=6@)%14dwaI3lVytS(e5ZI!9KNc7N?9#i0 zcG}A97b9A&w!Ap>7F0LYLA^KLTev0k%#Uk*zdCZbKN1L?!&|{7hmSmL$Xfi!No-TB6X0FO6Z%1*K=av^@@}pbrJ_{j;@z+ zGUQQ^VfZ6dj=u>WWQMJ}^k!vAIAg#^;8Z+u$oI(3&Mw?{s>v{d@|%_W6Ig1IVCo6c z-Q8Viii%_Yl_LJCY(y(oxGvTa0q;=3&3w~{c;H&=f?5F*bNG;Uf$k1+klQ^%G9MYx z!#jL#yJcao)f@D5kC1H5`7E!AMjybf`BYQ5iKWh4nSH(F zaHI1?sH}M5m7h*p4-?@78}3<1p>+M~1J~snX`Z}-SM3#1H}>EmdBhoQKFg&$7t$0w zVwF(cxL&_voo4QZ!~sV=w4RIrMSzIMKn}U8(3A==(?~THm?Yo1oU)7B*04nabITz6 z%7!Mb!inOW?MBTz2N$GW9XZ!?c$bP^O9J~z#hh(iugGyno!+oCEkJ3&3O$-%HEPN* zn_{RB`+VP;^b5LJ(R|D9<>VR#ZJMAqwi9kvgI|boZNYH*#5;}T8q_NC@0Ble4Z6ii z7=)p%#QqdpEr+P?u*O0uLi9E;DvypX-aQ*@1%T{bIfh&As)>n-CAIJy?Y=cT1+Ubx z-2nm>-{{4^143U%A5ipt*+kTUgu-~S%}St2qUXCP32`D8RWK3+W^_n6pBKV<@n}yz zt3N8y-~Q>9&gqhEQ+9DzN;r~wr8aU(!Qs0(RnCK(7^b^t#V5G0 zaZXA-y@WIbscy@o>KVxlK8&MB1u%}ly@DRUBiJqAK=3*mj{{_ZK?6Tz^a;*i2^F)F zS(v)}cmS%_8@l$>&82EslVVP}IVlVNDQp6qTU5@%|N$tx|j5>33*9uIL#5)fOHErdM2W{uj6k>(OCqzHodGe~We>q+Je49rae+c}>V04TB)r^~)YMR~oDtiO^(o$b9i@N6wj zBCxgOu$pjbQuouRD?@oy5Jx#&)BOFUY1TBuXxy2WIwL5h50+ahT~D5*dJj5s z^#dRBBnh_5?epPWq|y~L+-PjdGIhYu5{6yXMNbJGPE3#O{7;If_RC@C{uby^efBLG zFksj{a!v6D50bbph2f_O6nivSWaq)DD_$~si=qvK8eR=0D&^8 z)Rfv0Mzdi@&w%>fO2hLDFt!+RegOa`-;lK(|IiCw(=T;yBCHI6mfEu%}p5#!vY zvJz5fQ5Ty{O#-AYZ;MAi2wy2UGtw51_CNUI3R$D(Ip)HER^bk%l|827e>B zD*iN`Jum0n6S`uy9}JqR|4xRu{U$_69j>pYYdqUhYfa{A4Ra1Y zZRR-afwGbsk?=~@*^~N4WFvVl!ByMIKbU8Zy$5^ORaxY3SC#+ore?NAga_X_vnlD1 QaHA0sUq**D9ZtOVZ-qps4gdfE literal 0 HcmV?d00001 diff --git a/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[38.Material**Caption,1.Pixel5,1.Ltr,1.DEFAULT]_material**caption.png b/showkase-screenshot-testing-paparazzi-sample/src/test/snapshots/images/com.airbnb.android.showkase.screenshot.testing.paparazzi.sample_MyPaparazziShowkaseScreenshotTest_PaparazziShowkaseTest_test_previews[38.Material**Caption,1.Pixel5,1.Ltr,1.DEFAULT]_material**caption.png new file mode 100644 index 0000000000000000000000000000000000000000..0b955593380282e1fcaf39379cd0a58ef500b16b GIT binary patch literal 2805 zcmeHJ`&-g!7AMMTv~<&*aJo2c&$>;evZaN2gL<;dv`XbP+M{AQ8)ivJT3o(@+0N7y z+I6x_1-jW*rnac41a!sb@d9NN7Q$C^1(e{61A_47vR~%eXMf&5V19Yed7t+^?>W!s zob!3lnVsod=LaqdM4?dgw{P3L8-l1Zbwq~5aV z#I6km+3jO>CBcyI=#VRGO5BlEO#VCVQ-eLHE;KE4{=TxQ8;ghkf%mzs$QvlPIHCyj zD_$mgDIyjwQ_eu4_RaWx^M7MNOcnUNFmxK^z$S~aS?0at^Nya!d-Y=C<$h|vqY$5o zLY=s)*)xZ=!0T~_u5V24_sqc^Mdi->CuN6ObQ}Kna8D`=yv{06skD6X|0m0qHCG@ z@CK%-O%;4TA~|99Vc~cm52Fi%{1L5rLp`h6Q(9Tyy_ou#mUK6t4cAXjsq(&5c#sv} zv~Z9Uj6yw`>gXas9HT=EK=FyBI#H|SfLT2qQ-pW^`||T0SV?K6t@F9JXb%@FonGA~c61#WRzsEf()YIf6pEPjDkWWjgle&M+$Uf= zxGFOaB3Y?2kNw^7kwSQN^W&rQwAGb3xjpgLUWeTMYY#SrU+#5If{+w8zk^kag{NEB zT}}omjdo3Hg?wTvt>>5QcF=BW9&;{*da$yxq*GeRYNEwydj()A=@wMS%j@}=Xf|~K zx@nh4#_VD!*TV9NB3urifwvQH9I>#PE3>=iv!RODly5KJ23JN*zty=NOg_VK7ac1kh+zOmc=Zt8kp%y zkoTtkz&y&)4`!L@iGC*1=k5_WzPFnrv9qu=JX4KPS>vXcmsWENBI0mx)D}?%e}I79 z$p!PJrp0%^7>oJpZw%b1rgCaLJb(gHPnG9)SWJKf)T^zM9Rj+$q(U%yXgge&2T$a0 zyrHFG%=NzGmAz~FQY)G9pu0W+d{!27ur4tI@oh(Zm)l-%?cUZK$@#W%kY|ayE{c7- z@@(yzn1rAaN|ruOSXjK%kg}(p3>`PEO zTKVL5Zr?6MpiyVpx%S+B?yZB;_C$BNIWq}R`|1h^sCL;I?{=SSE}&%jo-HD zY%4zzLk)!uteY%qr~3|Ca=?&md#Dhhm3g%{Ao0ck0zc@CzKO&T_2Jf@`O*3PKvgA1x2vrr!npPf?>(Od(1o@CoeKdqPNq9w4@ zL4Hu13@s--8VaZ|y*&AvricPy4R?%|A<*0Csvt-*dZ9;C zmds6(6C!es|e@Q(d+3VY-#L08w55i_XD7R87crjo1?sl9*s6@z*A(vhp z{hzBV6}4k!@*I|-Wnp(tnHWD=bFOXJ?eb*;d^t#6x z61sZw_GFOxjOH_gDbypL#Ugi>>*F8H*a9D1$cDp8v;8B?FejHH;IEp;m7~{7v|DVs zz5jybhN-lttcjtFp#mmgH&bP4Lhn-I2X9k%$>o8PqW5mlnTRxgG1LFCtNQ~IkQ5AE zA;?hv!g+Ez)PVVIMq=znd(gA|hs3W1c?2Q_!o2{VIVt!Xeo6#pxdLq8PjTdpAla8l sJd6~|Z}zC5KloGH^7{tWa>9o~WzsL5I-*NQAVFs!)k8fHCIqvJB;cs|6nT8(a_wB;c!%`6X1rj<1v5X?bC*Fb9o6$G-)+)c^K zE-6u=n3|eWJR>5|>KNq-jB7~+f`cm<;s)^(23M!(~_9~{0v8{o#3_bK{D-z8334O)V+4oFgp(8KJV(V zk|Qz`@&Uu5xh+hr0lOeKFfmZdc%pn=u!Ows`t;akc%;3NVgUZJ8A^bWSB5D97}d12 z@FYJqNa`7!(??BKN)|mp$C}DY`<3X=pCt#>;w;%H7j<`pNb?BoMhzH%E49XX=07LV zKu0Faf)o#dVP2&Uy|E>-CnM0RxdPvw{+UwB+6-Me$Oz4cQC2563iTP63?yLn10%-( zzn^VG;Z>N{H5>q69Vkj6JY7T>pL2xc>cjC0eECchv~7W}6Dl|g#@HUiu#>(G3-_3- zmGqQCjdH98$Ve$|ILFpblZp&u7}E4al>(c!k=Zs7$h%WDr&zAP z#-P*Avv9OJXzvA$e!0U3A8_1WX0=h76geiEFXDBfUHa;ie-5NWYmd%`JW*B9NAxK|M5o^Oz(vcfcEjcaAL z@B7}1#fnH`JDIn?Hcryz+Qh{v$3-t2Msv(oy!e0u5`n_QhD&Z8i0*K=>ZPzh(lR-{ z3o+K@u3mwj+i(WZeK;i6r2s;2(QWO%74rIv>0l2bfsLLc5*%K2)>7q<+`p_n1n6$W z$??2^|7${-obyZ4eTCxa%YH!!QDds-*@W$-G=Y~ljv8|X z$XO`}xC^xwkexV-=zxJzqw`$7f_AeGS;$DkcVT>u!bX+u&-!L?Ert^>J--sCCte z>h8P*d@2dIu}dnCU6OZkqSVBPC??Hw3+*PH{)>gV6frU~zqdANRuIevA9&a7ILEPg zJ%A_BWfLU-@l}Kdq1bxMj*A8Ux*yt>=-WqY4s{evh|^fc-Q1bwVBJnBS5>Yyy2;dx z24PCwkN}NGAvrVn_|Wk2IQc+OKG@HeuxC+JxxcmqBe_v=XR_^60^sju-`_)j7VN;! z)!s+QnmoUT3l;5IpGsy=N;*QL)xwe3siXiYx9%|vUY#wN33ls@4bW8!`Vo_$%pv6w zTVin-%8?sfYm&yG97CPPj~#@`Cdx)`olbBWL=;DE+(T&eEuSV%vKnkxc{W5Kvv%o~ z5#8C2XmJEbGLT(qw-VjF3vR{uD0I178n}!ZxnVf{Tj*Qm>q0i4W-tusn{F>W&aFRl zfs2&2b6c5h@sac>nD1PKOQT796j@f!*a{NShe0Vfdmiyv%Jpy34@tgvEvr|ED(V%@ zORo%%xTD|2GJHhN?f&mQ-Qg(9N5&h;b}7(>&cMPz=S%x|Q80Mk&P1+iZ(Ssex~v%` zmR66eoQ$!*C1(l)7RppUYonLPg%WwyOp292Cm*ad$Tq6_W%*bevL@w!fjkFyOZlCp z?iS1g5~V01Rfl;P@#Hxdb+GWe=F+bfC7DZz7p|54`l@hd-2q)u^);&7lsEUz1}aD% zR^O}R*{qKy&Hjft=(l(OMF4v-de5KF6Bh1(>+)*44L7{3-TwoTF27X=m2) z)g0U9Fx&OBTu&FJUlwyZyxcXx*