@umituz/react-native-ai-generation-content 1.26.2 → 1.26.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -2
- package/src/domains/generation/application/feature-registry.ts +101 -0
- package/src/domains/generation/application/generation-strategy.factory.ts +128 -0
- package/src/domains/generation/domain/feature-config.types.ts +61 -0
- package/src/domains/generation/domain/generation.types.ts +74 -0
- package/src/domains/generation/index.ts +37 -0
- package/src/domains/generation/presentation/useAIGeneration.hook.ts +106 -0
- package/src/domains/wizard/infrastructure/strategies/wizard-strategy.factory.ts +3 -4
- package/src/index.ts +1 -25
- package/src/infrastructure/executors/executor-factory.ts +53 -0
- package/src/infrastructure/executors/image-executor.ts +133 -0
- package/src/infrastructure/executors/video-executor.ts +130 -0
- package/src/features/ai-hug/README.md +0 -438
- package/src/features/ai-hug/domain/index.ts +0 -5
- package/src/features/ai-hug/domain/types/ai-hug.types.ts +0 -25
- package/src/features/ai-hug/domain/types/index.ts +0 -7
- package/src/features/ai-hug/index.ts +0 -19
- package/src/features/ai-hug/presentation/components/AIHugFeature.tsx +0 -77
- package/src/features/ai-hug/presentation/components/index.ts +0 -2
- package/src/features/ai-hug/presentation/hooks/index.ts +0 -9
- package/src/features/ai-hug/presentation/hooks/useAIHugFeature.ts +0 -34
- package/src/features/ai-hug/presentation/index.ts +0 -6
- package/src/features/ai-kiss/README.md +0 -445
- package/src/features/ai-kiss/domain/index.ts +0 -5
- package/src/features/ai-kiss/domain/types/ai-kiss.types.ts +0 -25
- package/src/features/ai-kiss/domain/types/index.ts +0 -7
- package/src/features/ai-kiss/index.ts +0 -19
- package/src/features/ai-kiss/presentation/components/AIKissFeature.tsx +0 -77
- package/src/features/ai-kiss/presentation/components/index.ts +0 -2
- package/src/features/ai-kiss/presentation/hooks/index.ts +0 -9
- package/src/features/ai-kiss/presentation/hooks/useAIKissFeature.ts +0 -34
- package/src/features/ai-kiss/presentation/index.ts +0 -6
- package/src/features/anime-selfie/README.md +0 -396
- package/src/features/anime-selfie/domain/index.ts +0 -5
- package/src/features/anime-selfie/domain/types/anime-selfie.types.ts +0 -52
- package/src/features/anime-selfie/domain/types/index.ts +0 -8
- package/src/features/anime-selfie/index.ts +0 -20
- package/src/features/anime-selfie/presentation/components/AnimeSelfieFeature.tsx +0 -86
- package/src/features/anime-selfie/presentation/components/index.ts +0 -2
- package/src/features/anime-selfie/presentation/hooks/index.ts +0 -9
- package/src/features/anime-selfie/presentation/hooks/useAnimeSelfieFeature.ts +0 -59
- package/src/features/anime-selfie/presentation/index.ts +0 -6
- package/src/features/couple-future/README.md +0 -445
- package/src/features/couple-future/domain/types.ts +0 -63
- package/src/features/couple-future/domain/wizard-config.adapter.ts +0 -76
- package/src/features/couple-future/domain/wizard.types.ts +0 -121
- package/src/features/couple-future/index.ts +0 -83
- package/src/features/couple-future/infrastructure/coupleFeatureRegistry.ts +0 -76
- package/src/features/couple-future/infrastructure/couplePromptEnhancer.ts +0 -100
- package/src/features/couple-future/infrastructure/executor.ts +0 -188
- package/src/features/couple-future/infrastructure/generationUtils.ts +0 -228
- package/src/features/couple-future/presentation/components/ArtStyleSelector.tsx +0 -146
- package/src/features/couple-future/presentation/components/ArtistStyleSelector.tsx +0 -122
- package/src/features/couple-future/presentation/components/CoupleFutureWizard.tsx +0 -239
- package/src/features/couple-future/presentation/components/GeneratingStepContent.tsx +0 -86
- package/src/features/couple-future/presentation/components/RomanticMoodSelector.tsx +0 -147
- package/src/features/couple-future/presentation/components/WardrobeSelector.tsx +0 -141
- package/src/features/couple-future/presentation/components/index.ts +0 -12
- package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.ts +0 -166
- package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.types.ts +0 -69
- package/src/features/couple-future/presentation/hooks/useCoupleFutureHandlers.ts +0 -117
- package/src/features/couple-future/presentation/screens/CoupleFeatureScreen.tsx +0 -113
- package/src/features/face-swap/README.md +0 -431
- package/src/features/face-swap/domain/index.ts +0 -5
- package/src/features/face-swap/domain/types/face-swap.types.ts +0 -26
- package/src/features/face-swap/domain/types/index.ts +0 -7
- package/src/features/face-swap/index.ts +0 -19
- package/src/features/face-swap/presentation/components/FaceSwapFeature.tsx +0 -87
- package/src/features/face-swap/presentation/components/index.ts +0 -2
- package/src/features/face-swap/presentation/hooks/index.ts +0 -6
- package/src/features/face-swap/presentation/hooks/useFaceSwapFeature.ts +0 -35
- package/src/features/face-swap/presentation/index.ts +0 -6
- package/src/features/hd-touch-up/README.md +0 -396
- package/src/features/hd-touch-up/domain/index.ts +0 -1
- package/src/features/hd-touch-up/domain/types/hd-touch-up.types.ts +0 -62
- package/src/features/hd-touch-up/domain/types/index.ts +0 -9
- package/src/features/hd-touch-up/index.ts +0 -21
- package/src/features/hd-touch-up/presentation/components/HDTouchUpFeature.tsx +0 -86
- package/src/features/hd-touch-up/presentation/components/index.ts +0 -2
- package/src/features/hd-touch-up/presentation/hooks/index.ts +0 -1
- package/src/features/hd-touch-up/presentation/hooks/useHDTouchUpFeature.ts +0 -23
- package/src/features/hd-touch-up/presentation/index.ts +0 -2
- package/src/features/image-to-image/README.md +0 -459
- package/src/features/image-to-image/domain/index.ts +0 -1
- package/src/features/image-to-image/domain/types/base.types.ts +0 -48
- package/src/features/image-to-image/domain/types/index.ts +0 -1
- package/src/features/image-to-image/domain/types/partials/config.types.ts +0 -37
- package/src/features/image-to-image/domain/types/partials/hook.types.ts +0 -53
- package/src/features/image-to-image/domain/types/partials/metadata.types.ts +0 -32
- package/src/features/image-to-image/domain/types/partials/result.types.ts +0 -44
- package/src/features/image-to-image/domain/types/partials/state.types.ts +0 -34
- package/src/features/image-to-image/domain/types/partials/translation.types.ts +0 -57
- package/src/features/image-to-image/index.ts +0 -2
- package/src/features/image-to-image/presentation/hooks/index.ts +0 -3
- package/src/features/image-to-image/presentation/hooks/useDualImageFeature.ts +0 -204
- package/src/features/image-to-image/presentation/hooks/useImageWithPromptFeature.ts +0 -223
- package/src/features/image-to-image/presentation/hooks/useSingleImageFeature.ts +0 -166
- package/src/features/image-to-image/presentation/index.ts +0 -1
- package/src/features/image-to-video/README.md +0 -414
- package/src/features/image-to-video/domain/constants/animation.constants.ts +0 -47
- package/src/features/image-to-video/domain/constants/duration.constants.ts +0 -13
- package/src/features/image-to-video/domain/constants/form.constants.ts +0 -22
- package/src/features/image-to-video/domain/constants/index.ts +0 -23
- package/src/features/image-to-video/domain/constants/music.constants.ts +0 -53
- package/src/features/image-to-video/domain/index.ts +0 -5
- package/src/features/image-to-video/domain/types/animation.types.ts +0 -20
- package/src/features/image-to-video/domain/types/config.types.ts +0 -56
- package/src/features/image-to-video/domain/types/duration.types.ts +0 -11
- package/src/features/image-to-video/domain/types/form.types.ts +0 -35
- package/src/features/image-to-video/domain/types/image-to-video.types.ts +0 -122
- package/src/features/image-to-video/domain/types/index.ts +0 -39
- package/src/features/image-to-video/domain/types/music.types.ts +0 -21
- package/src/features/image-to-video/index.ts +0 -116
- package/src/features/image-to-video/infrastructure/index.ts +0 -1
- package/src/features/image-to-video/infrastructure/services/image-to-video-executor.ts +0 -154
- package/src/features/image-to-video/infrastructure/services/index.ts +0 -5
- package/src/features/image-to-video/presentation/components/AddMoreCard.tsx +0 -52
- package/src/features/image-to-video/presentation/components/AnimationStyleSelector.tsx +0 -135
- package/src/features/image-to-video/presentation/components/DurationSelector.tsx +0 -110
- package/src/features/image-to-video/presentation/components/EmptyGridState.tsx +0 -69
- package/src/features/image-to-video/presentation/components/GridImageItem.tsx +0 -64
- package/src/features/image-to-video/presentation/components/ImageSelectionGrid.styles.ts +0 -84
- package/src/features/image-to-video/presentation/components/ImageSelectionGrid.tsx +0 -77
- package/src/features/image-to-video/presentation/components/ImageSelectionGrid.types.ts +0 -18
- package/src/features/image-to-video/presentation/components/MusicMoodSelector.tsx +0 -181
- package/src/features/image-to-video/presentation/components/index.ts +0 -30
- package/src/features/image-to-video/presentation/hooks/index.ts +0 -27
- package/src/features/image-to-video/presentation/hooks/useFormState.ts +0 -116
- package/src/features/image-to-video/presentation/hooks/useGeneration.ts +0 -85
- package/src/features/image-to-video/presentation/hooks/useGenerationExecution.ts +0 -143
- package/src/features/image-to-video/presentation/hooks/useImageToVideoFeature.ts +0 -107
- package/src/features/image-to-video/presentation/hooks/useImageToVideoForm.ts +0 -119
- package/src/features/image-to-video/presentation/hooks/useImageToVideoValidation.ts +0 -46
- package/src/features/image-to-video/presentation/index.ts +0 -5
- package/src/features/love-message/domain/constants.ts +0 -162
- package/src/features/love-message/domain/types.ts +0 -58
- package/src/features/love-message/index.ts +0 -37
- package/src/features/love-message/infrastructure/persistence/PartnerProfileRepository.ts +0 -52
- package/src/features/love-message/infrastructure/prompts/messagePromptBuilder.ts +0 -109
- package/src/features/love-message/infrastructure/services/LoveMessageService.ts +0 -35
- package/src/features/love-message/presentation/components/CategoryGrid.tsx +0 -88
- package/src/features/love-message/presentation/components/DetailsInput.tsx +0 -74
- package/src/features/love-message/presentation/components/ExploreHeader.tsx +0 -67
- package/src/features/love-message/presentation/components/FieldInput.tsx +0 -83
- package/src/features/love-message/presentation/components/GeneratorHeader.tsx +0 -88
- package/src/features/love-message/presentation/components/LoveMessageHeroSection.tsx +0 -114
- package/src/features/love-message/presentation/components/MessageListItem.tsx +0 -77
- package/src/features/love-message/presentation/components/MessageResult.tsx +0 -105
- package/src/features/love-message/presentation/components/PartnerInput.tsx +0 -78
- package/src/features/love-message/presentation/components/ProgressDots.tsx +0 -48
- package/src/features/love-message/presentation/components/StepDetails.tsx +0 -23
- package/src/features/love-message/presentation/components/StepPartner.tsx +0 -116
- package/src/features/love-message/presentation/components/StepVibe.tsx +0 -30
- package/src/features/love-message/presentation/components/ToneSelector.tsx +0 -100
- package/src/features/love-message/presentation/components/TrendingSection.tsx +0 -130
- package/src/features/love-message/presentation/components/TypeSelector.tsx +0 -99
- package/src/features/love-message/presentation/hooks/useLoveMessageGenerator.ts +0 -114
- package/src/features/love-message/presentation/hooks/usePartnerProfile.ts +0 -43
- package/src/features/love-message/presentation/navigation/LoveMessageStack.tsx +0 -39
- package/src/features/love-message/presentation/screens/LoveMessageExploreScreen.tsx +0 -53
- package/src/features/love-message/presentation/screens/LoveMessageGeneratorScreen.tsx +0 -169
- package/src/features/love-message/presentation/screens/MessageListScreen.tsx +0 -127
- package/src/features/love-message/presentation/screens/PartnerProfileScreen.tsx +0 -119
- package/src/features/meme-generator/README.md +0 -408
- package/src/features/meme-generator/index.ts +0 -3
- package/src/features/meme-generator/infrastructure/services/MemeGenerationService.ts +0 -87
- package/src/features/meme-generator/presentation/components/MemeGeneratorFeature.tsx +0 -180
- package/src/features/meme-generator/presentation/components/index.ts +0 -2
- package/src/features/meme-generator/presentation/screens/MemeGeneratorScreen.tsx +0 -168
- package/src/features/meme-generator/presentation/screens/index.ts +0 -1
- package/src/features/partner-upload/domain/types.ts +0 -59
- package/src/features/partner-upload/index.ts +0 -30
- package/src/features/partner-upload/presentation/components/PartnerInfoInput.tsx +0 -112
- package/src/features/partner-upload/presentation/components/PhotoTips.tsx +0 -53
- package/src/features/partner-upload/presentation/components/index.ts +0 -4
- package/src/features/partner-upload/presentation/hooks/index.ts +0 -7
- package/src/features/partner-upload/presentation/hooks/usePartnerStep.ts +0 -130
- package/src/features/partner-upload/presentation/screens/PartnerStepScreen.tsx +0 -231
- package/src/features/partner-upload/presentation/screens/index.ts +0 -6
- package/src/features/photo-restoration/README.md +0 -399
- package/src/features/photo-restoration/domain/index.ts +0 -1
- package/src/features/photo-restoration/domain/types/index.ts +0 -9
- package/src/features/photo-restoration/domain/types/photo-restore.types.ts +0 -64
- package/src/features/photo-restoration/index.ts +0 -22
- package/src/features/photo-restoration/presentation/components/PhotoRestoreFeature.tsx +0 -88
- package/src/features/photo-restoration/presentation/components/PhotoRestoreResultView.tsx +0 -86
- package/src/features/photo-restoration/presentation/components/index.ts +0 -4
- package/src/features/photo-restoration/presentation/hooks/index.ts +0 -1
- package/src/features/photo-restoration/presentation/hooks/usePhotoRestoreFeature.ts +0 -23
- package/src/features/photo-restoration/presentation/index.ts +0 -2
- package/src/features/remove-background/README.md +0 -393
- package/src/features/remove-background/domain/index.ts +0 -5
- package/src/features/remove-background/domain/types/index.ts +0 -7
- package/src/features/remove-background/domain/types/remove-background.types.ts +0 -28
- package/src/features/remove-background/index.ts +0 -19
- package/src/features/remove-background/presentation/components/RemoveBackgroundFeature.tsx +0 -86
- package/src/features/remove-background/presentation/components/index.ts +0 -2
- package/src/features/remove-background/presentation/hooks/index.ts +0 -1
- package/src/features/remove-background/presentation/hooks/useRemoveBackgroundFeature.ts +0 -28
- package/src/features/remove-background/presentation/index.ts +0 -6
- package/src/features/remove-object/README.md +0 -405
- package/src/features/remove-object/domain/index.ts +0 -5
- package/src/features/remove-object/domain/types/index.ts +0 -7
- package/src/features/remove-object/domain/types/remove-object.types.ts +0 -54
- package/src/features/remove-object/index.ts +0 -23
- package/src/features/remove-object/presentation/components/RemoveObjectFeature.tsx +0 -136
- package/src/features/remove-object/presentation/components/index.ts +0 -2
- package/src/features/remove-object/presentation/hooks/index.ts +0 -9
- package/src/features/remove-object/presentation/hooks/useRemoveObjectFeature.ts +0 -221
- package/src/features/remove-object/presentation/index.ts +0 -6
- package/src/features/replace-background/README.md +0 -405
- package/src/features/replace-background/domain/types/index.ts +0 -7
- package/src/features/replace-background/domain/types/replace-background.types.ts +0 -33
- package/src/features/replace-background/index.ts +0 -23
- package/src/features/replace-background/presentation/components/ReplaceBackgroundFeature.tsx +0 -105
- package/src/features/replace-background/presentation/components/index.ts +0 -6
- package/src/features/replace-background/presentation/hooks/index.ts +0 -9
- package/src/features/replace-background/presentation/hooks/useReplaceBackgroundFeature.ts +0 -55
- package/src/features/scenarios/domain/types.ts +0 -147
- package/src/features/scenarios/index.ts +0 -64
- package/src/features/scenarios/presentation/components/InspirationChips.tsx +0 -82
- package/src/features/scenarios/presentation/components/MagicPromptHeadline.tsx +0 -79
- package/src/features/scenarios/presentation/components/ScenarioGrid.tsx +0 -224
- package/src/features/scenarios/presentation/components/ScenarioHeader.tsx +0 -55
- package/src/features/scenarios/presentation/components/StyleSelector.tsx +0 -119
- package/src/features/scenarios/presentation/components/index.ts +0 -18
- package/src/features/scenarios/presentation/containers/CategoryNavigationContainer.tsx +0 -178
- package/src/features/scenarios/presentation/screens/HierarchicalScenarioListScreen.tsx +0 -266
- package/src/features/scenarios/presentation/screens/MagicPromptScreen.tsx +0 -242
- package/src/features/scenarios/presentation/screens/MainCategoryScreen.tsx +0 -198
- package/src/features/scenarios/presentation/screens/ScenarioPreviewScreen.tsx +0 -164
- package/src/features/scenarios/presentation/screens/ScenarioSelectorScreen.tsx +0 -66
- package/src/features/scenarios/presentation/screens/SubCategoryScreen.tsx +0 -216
- package/src/features/script-generator/README.md +0 -433
- package/src/features/script-generator/domain/constants/index.ts +0 -10
- package/src/features/script-generator/domain/types/script.types.ts +0 -30
- package/src/features/script-generator/index.ts +0 -5
- package/src/features/script-generator/infrastructure/services/ScriptGenerationService.ts +0 -62
- package/src/features/script-generator/presentation/components/ScriptDisplay.tsx +0 -158
- package/src/features/script-generator/presentation/components/VideoTypeSelector.tsx +0 -102
- package/src/features/script-generator/presentation/components/index.ts +0 -2
- package/src/features/script-generator/presentation/hooks/index.ts +0 -1
- package/src/features/script-generator/presentation/hooks/useScriptGenerator.ts +0 -77
- package/src/features/shared/README.md +0 -311
- package/src/features/shared/dual-image-video/domain/types/dual-image-video.types.ts +0 -88
- package/src/features/shared/dual-image-video/domain/types/index.ts +0 -14
- package/src/features/shared/dual-image-video/index.ts +0 -17
- package/src/features/shared/dual-image-video/presentation/hooks/index.ts +0 -5
- package/src/features/shared/dual-image-video/presentation/hooks/useDualImageVideoFeature.ts +0 -185
- package/src/features/shared/index.ts +0 -6
- package/src/features/text-to-image/README.md +0 -394
- package/src/features/text-to-image/domain/constants/index.ts +0 -8
- package/src/features/text-to-image/domain/constants/options.constants.ts +0 -39
- package/src/features/text-to-image/domain/constants/styles.constants.ts +0 -34
- package/src/features/text-to-image/domain/index.ts +0 -7
- package/src/features/text-to-image/domain/types/config.types.ts +0 -75
- package/src/features/text-to-image/domain/types/form.types.ts +0 -58
- package/src/features/text-to-image/domain/types/index.ts +0 -38
- package/src/features/text-to-image/domain/types/text-to-image.types.ts +0 -58
- package/src/features/text-to-image/index.ts +0 -116
- package/src/features/text-to-image/infrastructure/index.ts +0 -1
- package/src/features/text-to-image/infrastructure/services/index.ts +0 -5
- package/src/features/text-to-image/infrastructure/services/text-to-image-executor.ts +0 -147
- package/src/features/text-to-image/presentation/components/index.ts +0 -30
- package/src/features/text-to-image/presentation/hooks/index.ts +0 -30
- package/src/features/text-to-image/presentation/hooks/useFormState.ts +0 -103
- package/src/features/text-to-image/presentation/hooks/useGeneration.ts +0 -139
- package/src/features/text-to-image/presentation/hooks/useTextToImageFeature.ts +0 -111
- package/src/features/text-to-image/presentation/hooks/useTextToImageForm.ts +0 -58
- package/src/features/text-to-image/presentation/index.ts +0 -7
- package/src/features/text-to-video/README.md +0 -412
- package/src/features/text-to-video/domain/index.ts +0 -1
- package/src/features/text-to-video/domain/types/callback.types.ts +0 -69
- package/src/features/text-to-video/domain/types/component.types.ts +0 -106
- package/src/features/text-to-video/domain/types/config.types.ts +0 -61
- package/src/features/text-to-video/domain/types/index.ts +0 -56
- package/src/features/text-to-video/domain/types/request.types.ts +0 -36
- package/src/features/text-to-video/domain/types/state.types.ts +0 -53
- package/src/features/text-to-video/index.ts +0 -68
- package/src/features/text-to-video/infrastructure/index.ts +0 -1
- package/src/features/text-to-video/infrastructure/services/index.ts +0 -5
- package/src/features/text-to-video/infrastructure/services/text-to-video-executor.ts +0 -141
- package/src/features/text-to-video/presentation/components/FrameSelector.tsx +0 -153
- package/src/features/text-to-video/presentation/components/GenerationTabs.tsx +0 -73
- package/src/features/text-to-video/presentation/components/HeroSection.tsx +0 -61
- package/src/features/text-to-video/presentation/components/HintCarousel.tsx +0 -96
- package/src/features/text-to-video/presentation/components/OptionsPanel.tsx +0 -121
- package/src/features/text-to-video/presentation/components/index.ts +0 -10
- package/src/features/text-to-video/presentation/hooks/index.ts +0 -17
- package/src/features/text-to-video/presentation/hooks/useTextToVideoFeature.ts +0 -225
- package/src/features/text-to-video/presentation/hooks/useTextToVideoForm.ts +0 -134
- package/src/features/text-to-video/presentation/index.ts +0 -7
- package/src/features/text-to-voice/README.md +0 -445
- package/src/features/text-to-voice/domain/index.ts +0 -1
- package/src/features/text-to-voice/domain/types/component.types.ts +0 -91
- package/src/features/text-to-voice/domain/types/config.types.ts +0 -34
- package/src/features/text-to-voice/domain/types/form.types.ts +0 -39
- package/src/features/text-to-voice/domain/types/generation.types.ts +0 -43
- package/src/features/text-to-voice/domain/types/index.ts +0 -38
- package/src/features/text-to-voice/index.ts +0 -53
- package/src/features/text-to-voice/infrastructure/index.ts +0 -1
- package/src/features/text-to-voice/infrastructure/services/index.ts +0 -4
- package/src/features/text-to-voice/infrastructure/services/text-to-voice-executor.ts +0 -103
- package/src/features/text-to-voice/presentation/components/TextToVoiceAudioPlayer.tsx +0 -81
- package/src/features/text-to-voice/presentation/components/index.ts +0 -7
- package/src/features/text-to-voice/presentation/hooks/index.ts +0 -6
- package/src/features/text-to-voice/presentation/hooks/useTextToVoiceForm.ts +0 -91
- package/src/features/text-to-voice/presentation/hooks/useTextToVoiceGeneration.ts +0 -116
- package/src/features/text-to-voice/presentation/index.ts +0 -2
- package/src/features/upscaling/README.md +0 -396
- package/src/features/upscaling/domain/index.ts +0 -1
- package/src/features/upscaling/domain/types/index.ts +0 -1
- package/src/features/upscaling/domain/types/upscale.types.ts +0 -23
- package/src/features/upscaling/index.ts +0 -20
- package/src/features/upscaling/presentation/components/ComparisonSlider.tsx +0 -200
- package/src/features/upscaling/presentation/components/UpscaleFeature.tsx +0 -89
- package/src/features/upscaling/presentation/components/UpscaleResultView.tsx +0 -98
- package/src/features/upscaling/presentation/components/index.ts +0 -6
- package/src/features/upscaling/presentation/hooks/index.ts +0 -1
- package/src/features/upscaling/presentation/hooks/useUpscaleFeature.ts +0 -28
- package/src/features/upscaling/presentation/index.ts +0 -2
- package/src/features/wizard/domain/types.ts +0 -154
- package/src/features/wizard/index.ts +0 -43
- package/src/features/wizard/presentation/components/AIFeatureWizard.tsx +0 -231
- package/src/features/wizard/presentation/components/AIGenerationWizard.tsx +0 -132
- package/src/features/wizard/presentation/hooks/useWizard.ts +0 -120
- package/src/features/wizard/presentation/store/useWizardStore.ts +0 -82
|
@@ -1,396 +0,0 @@
|
|
|
1
|
-
# HD Touch Up Feature
|
|
2
|
-
|
|
3
|
-
Apply high-detail enhancements to images using AI.
|
|
4
|
-
|
|
5
|
-
## 📍 Import Path
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
import { useHDTouchUpFeature } from '@umituz/react-native-ai-generation-content';
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
**Location**: `src/features/hd-touch-up/`
|
|
12
|
-
|
|
13
|
-
## 🎯 Feature Purpose
|
|
14
|
-
|
|
15
|
-
Enhance image quality with AI-powered improvements including sharpening, noise reduction, facial enhancement, color adjustment, and contrast optimization. Professional-quality touch-ups for portraits, product photos, landscapes, and more.
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 📋 Usage Strategy
|
|
20
|
-
|
|
21
|
-
### When to Use This Feature
|
|
22
|
-
|
|
23
|
-
✅ **Use Cases:**
|
|
24
|
-
- Enhancing portrait photographs
|
|
25
|
-
- Improving product photo quality
|
|
26
|
-
- Sharpening landscape details
|
|
27
|
-
- Reducing noise in low-light photos
|
|
28
|
-
- Professional photo polishing
|
|
29
|
-
|
|
30
|
-
❌ **When NOT to Use:**
|
|
31
|
-
- Restoring damaged photos (use Photo Restoration)
|
|
32
|
-
- Adding color to B&W photos (use Colorization)
|
|
33
|
-
- Upscaling resolution (use Upscaling)
|
|
34
|
-
- Applying artistic filters (use Style Transfer)
|
|
35
|
-
|
|
36
|
-
### Implementation Strategy
|
|
37
|
-
|
|
38
|
-
1. **Select image** to enhance
|
|
39
|
-
2. **Choose enhancement level** (low, medium, high)
|
|
40
|
-
3. **Configure options** (enhance faces, denoise, sharpen, etc.)
|
|
41
|
-
4. **Process enhancement** with progress tracking
|
|
42
|
-
5. **Preview and compare** with original
|
|
43
|
-
6. **Save or share** enhanced image
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## ⚠️ Critical Rules (MUST FOLLOW)
|
|
48
|
-
|
|
49
|
-
### 1. Image Requirements
|
|
50
|
-
- **MUST** provide ONE image to enhance
|
|
51
|
-
- **MUST** use reasonably high-quality images (min 512x512)
|
|
52
|
-
- **MUST** have clear, visible content
|
|
53
|
-
- **MUST NOT** exceed file size limits (10MB max)
|
|
54
|
-
- **MUST NOT** use extremely blurry or unusable photos
|
|
55
|
-
|
|
56
|
-
### 2. Configuration
|
|
57
|
-
- **MUST** provide valid `userId` for tracking
|
|
58
|
-
- **MUST** specify `enhancementLevel` (low, medium, high)
|
|
59
|
-
- **MUST** configure enhancement options
|
|
60
|
-
- **MUST** implement `onError` callback
|
|
61
|
-
- **MUST** implement `onSelectImage` callback
|
|
62
|
-
|
|
63
|
-
### 3. State Management
|
|
64
|
-
- **MUST** check `isReady` before enabling enhance button
|
|
65
|
-
- **MUST** display progress during enhancement
|
|
66
|
-
- **MUST** handle long processing times
|
|
67
|
-
- **MUST** display `error` state with clear messages
|
|
68
|
-
- **MUST** implement proper cleanup on unmount
|
|
69
|
-
|
|
70
|
-
### 4. Performance
|
|
71
|
-
- **MUST** implement image compression before upload
|
|
72
|
-
- **MUST** show progress indicator for processing
|
|
73
|
-
- **MUST** cache results locally
|
|
74
|
-
- **MUST** allow users to cancel processing
|
|
75
|
-
- **MUST NOT** enhance multiple images simultaneously
|
|
76
|
-
|
|
77
|
-
### 5. Enhancement Options
|
|
78
|
-
- **MUST** provide enhancement level control
|
|
79
|
-
- **MUST** support facial enhancement toggle
|
|
80
|
-
- **MUST** support denoise option
|
|
81
|
-
- **MUST** support sharpen option
|
|
82
|
-
- **MUST** support color and contrast adjustments
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## 🚫 Prohibitions (MUST AVOID)
|
|
87
|
-
|
|
88
|
-
### Strictly Forbidden
|
|
89
|
-
|
|
90
|
-
❌ **NEVER** do the following:
|
|
91
|
-
|
|
92
|
-
1. **No Missing Images**
|
|
93
|
-
- Always validate image is selected
|
|
94
|
-
- Never call process() without image
|
|
95
|
-
|
|
96
|
-
2. **No Auto-Processing**
|
|
97
|
-
- Never start enhancement without user action
|
|
98
|
-
- Always require explicit "Enhance" button press
|
|
99
|
-
- Show preview before processing
|
|
100
|
-
|
|
101
|
-
3. **No Hardcoded Credentials**
|
|
102
|
-
- Never store API keys in component files
|
|
103
|
-
- Use environment variables or secure storage
|
|
104
|
-
|
|
105
|
-
4. **No Unhandled Errors**
|
|
106
|
-
- Never ignore enhancement failures
|
|
107
|
-
- Always explain what went wrong
|
|
108
|
-
- Provide retry or alternative options
|
|
109
|
-
|
|
110
|
-
5. **No Memory Leaks**
|
|
111
|
-
- Never store both original and enhanced simultaneously
|
|
112
|
-
- Clean up temporary images
|
|
113
|
-
- Implement proper image disposal
|
|
114
|
-
|
|
115
|
-
6. **No Blocked UI**
|
|
116
|
-
- Never block main thread with image processing
|
|
117
|
-
- Always show progress indicator
|
|
118
|
-
- Allow cancellation
|
|
119
|
-
|
|
120
|
-
7. **No Over-Enhancement**
|
|
121
|
-
- Never apply maximum enhancement by default
|
|
122
|
-
- Always start with moderate levels
|
|
123
|
-
- Allow user to adjust intensity
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
## 🤖 AI Agent Directions
|
|
128
|
-
|
|
129
|
-
### For AI Code Generation Tools
|
|
130
|
-
|
|
131
|
-
When using this feature with AI code generation tools, follow these guidelines:
|
|
132
|
-
|
|
133
|
-
#### Prompt Template for AI Agents
|
|
134
|
-
|
|
135
|
-
```
|
|
136
|
-
You are implementing an HD touch up feature using @umituz/react-native-ai-generation-content.
|
|
137
|
-
|
|
138
|
-
REQUIREMENTS:
|
|
139
|
-
1. Import from: @umituz/react-native-ai-generation-content
|
|
140
|
-
2. Use the useHDTouchUpFeature hook
|
|
141
|
-
3. Select enhancement level (low, medium, high)
|
|
142
|
-
4. Implement image selection UI
|
|
143
|
-
5. Configure enhancement options (faces, denoise, sharpen, colors, contrast)
|
|
144
|
-
6. Validate image before enhancement
|
|
145
|
-
7. Show before/after comparison
|
|
146
|
-
8. Handle long processing times with progress
|
|
147
|
-
9. Implement proper error handling
|
|
148
|
-
10. Implement cleanup on unmount
|
|
149
|
-
|
|
150
|
-
CRITICAL RULES:
|
|
151
|
-
- MUST validate image before calling enhance()
|
|
152
|
-
- MUST show before/after comparison
|
|
153
|
-
- MUST handle enhancement level selection
|
|
154
|
-
- MUST handle individual enhancement toggles
|
|
155
|
-
- MUST implement debouncing (300ms)
|
|
156
|
-
- MUST allow regeneration with different settings
|
|
157
|
-
|
|
158
|
-
CONFIGURATION:
|
|
159
|
-
- Provide valid userId (string)
|
|
160
|
-
- Set enhancementLevel: 'low' | 'medium' | 'high'
|
|
161
|
-
- Set enhanceFaces: boolean (portrait enhancement)
|
|
162
|
-
- Set denoise: boolean (reduce noise)
|
|
163
|
-
- Set sharpen: boolean (sharpen details)
|
|
164
|
-
- Set adjustColors: boolean (improve vibrancy)
|
|
165
|
-
- Set adjustContrast: boolean (enhance tones)
|
|
166
|
-
- Implement onSelectImage callback
|
|
167
|
-
- Implement onSaveResult callback
|
|
168
|
-
- Configure callbacks: onProcessingStart, onProcessingComplete, onError
|
|
169
|
-
|
|
170
|
-
ENHANCEMENT LEVELS:
|
|
171
|
-
- low: Subtle improvements, natural look
|
|
172
|
-
- medium: Balanced enhancements (recommended)
|
|
173
|
-
- high: Strong enhancements, professional quality
|
|
174
|
-
|
|
175
|
-
OPTIONS:
|
|
176
|
-
- enhanceFaces: Apply face-specific enhancements
|
|
177
|
-
- denoise: Remove noise and grain
|
|
178
|
-
- sharpen: Enhance edges and details
|
|
179
|
-
- adjustColors: Improve color vibrancy
|
|
180
|
-
- adjustContrast: Enhance contrast and tones
|
|
181
|
-
|
|
182
|
-
STRICTLY FORBIDDEN:
|
|
183
|
-
- No missing image validation
|
|
184
|
-
- No auto-processing without user action
|
|
185
|
-
- No hardcoded API keys
|
|
186
|
-
- No unhandled errors
|
|
187
|
-
- No memory leaks
|
|
188
|
-
- No blocking UI
|
|
189
|
-
- No over-enhancement
|
|
190
|
-
|
|
191
|
-
QUALITY CHECKLIST:
|
|
192
|
-
- [ ] Image selection implemented
|
|
193
|
-
- [ ] Enhancement level selector added
|
|
194
|
-
- [ ] Enhancement toggles included
|
|
195
|
-
- [ ] Validation before enhance()
|
|
196
|
-
- [ ] Before/after comparison view
|
|
197
|
-
- [ ] Progress indicator during processing
|
|
198
|
-
- [ ] Error display with retry option
|
|
199
|
-
- [ ] Download/share functionality
|
|
200
|
-
- [ ] Regeneration with different settings
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
#### AI Implementation Checklist
|
|
204
|
-
|
|
205
|
-
Use this checklist when generating code:
|
|
206
|
-
|
|
207
|
-
- [ ] Feature imported from correct path
|
|
208
|
-
- [ ] Image selection implemented
|
|
209
|
-
- [ ] Enhancement level selector added
|
|
210
|
-
- [ ] Enhancement toggles implemented
|
|
211
|
-
- [ ] Validation before enhance()
|
|
212
|
-
- [ ] Before/after comparison view
|
|
213
|
-
- [ ] Progress indicator during processing
|
|
214
|
-
- [ ] Error display with user-friendly message
|
|
215
|
-
- [ ] Download/share buttons
|
|
216
|
-
- [ ] Regeneration option
|
|
217
|
-
- [ ] Cleanup on unmount
|
|
218
|
-
- [ ] Original image preserved
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## 🛠️ Configuration Strategy
|
|
223
|
-
|
|
224
|
-
### Essential Configuration
|
|
225
|
-
|
|
226
|
-
```typescript
|
|
227
|
-
// Required fields
|
|
228
|
-
{
|
|
229
|
-
userId: string
|
|
230
|
-
enhancementLevel: 'low' | 'medium' | 'high'
|
|
231
|
-
onSelectImage: () => Promise<string | null>
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
// Optional callbacks
|
|
235
|
-
{
|
|
236
|
-
onProcessingStart?: () => void
|
|
237
|
-
onProcessingComplete?: (result) => void
|
|
238
|
-
onError?: (error: string) => void
|
|
239
|
-
}
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### Recommended Settings
|
|
243
|
-
|
|
244
|
-
1. **Enhancement Levels**
|
|
245
|
-
- Low: Subtle improvements for natural look
|
|
246
|
-
- Medium: Balanced enhancements (recommended for most photos)
|
|
247
|
-
- High: Maximum enhancements for professional quality
|
|
248
|
-
|
|
249
|
-
2. **Enhancement Options**
|
|
250
|
-
- enhanceFaces: Apply face-specific enhancements (portraits)
|
|
251
|
-
- denoise: Remove noise and grain (low-light, high-ISO photos)
|
|
252
|
-
- sharpen: Enhance edges and details
|
|
253
|
-
- adjustColors: Improve color vibrancy (faded/dull photos)
|
|
254
|
-
- adjustContrast: Enhance contrast and tones
|
|
255
|
-
|
|
256
|
-
3. **Image Quality**
|
|
257
|
-
- Minimum: 512x512 resolution
|
|
258
|
-
- Recommended: 1024x1024 or higher
|
|
259
|
-
- Format: JPEG or PNG
|
|
260
|
-
- Max size: 10MB
|
|
261
|
-
|
|
262
|
-
---
|
|
263
|
-
|
|
264
|
-
## 📊 State Management
|
|
265
|
-
|
|
266
|
-
### Feature States
|
|
267
|
-
|
|
268
|
-
**isReady**: boolean
|
|
269
|
-
- Image selected and validated
|
|
270
|
-
- Check before enabling enhance button
|
|
271
|
-
|
|
272
|
-
**isProcessing**: boolean
|
|
273
|
-
- Enhancement in progress
|
|
274
|
-
- Show loading/progress indicator
|
|
275
|
-
- Disable enhance button
|
|
276
|
-
|
|
277
|
-
**progress**: number (0-100)
|
|
278
|
-
- Enhancement progress percentage
|
|
279
|
-
- Update progress bar
|
|
280
|
-
|
|
281
|
-
**error**: string | null
|
|
282
|
-
- Error message if enhancement failed
|
|
283
|
-
- Display to user with clear message
|
|
284
|
-
|
|
285
|
-
**result**: {
|
|
286
|
-
imageUrl: string
|
|
287
|
-
originalImageUrl?: string
|
|
288
|
-
enhancementLevel?: string
|
|
289
|
-
metadata?: any
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
---
|
|
293
|
-
|
|
294
|
-
## 🎨 Best Practices
|
|
295
|
-
|
|
296
|
-
### Enhancement Selection
|
|
297
|
-
|
|
298
|
-
1. **Enhancement Level**
|
|
299
|
-
- Start with Medium for most photos
|
|
300
|
-
- Use Low for subtle improvements
|
|
301
|
-
- Use High for professional quality
|
|
302
|
-
|
|
303
|
-
2. **Subject-Specific Options**
|
|
304
|
-
- Portraits: Enable enhanceFaces
|
|
305
|
-
- Landscapes: Enable sharpen and adjustContrast
|
|
306
|
-
- Product photos: Enable sharpen and adjustColors
|
|
307
|
-
- Low-light: Enable denoise
|
|
308
|
-
|
|
309
|
-
3. **Quality**
|
|
310
|
-
- Good: Clear, well-composed photos
|
|
311
|
-
- Bad: Extremely blurry or unusable photos
|
|
312
|
-
|
|
313
|
-
### User Experience
|
|
314
|
-
|
|
315
|
-
1. **Preview**
|
|
316
|
-
- Show preview of enhancement settings
|
|
317
|
-
- Compare different enhancement levels
|
|
318
|
-
- Allow option toggles
|
|
319
|
-
|
|
320
|
-
2. **Before/After Comparison**
|
|
321
|
-
- Side-by-side comparison
|
|
322
|
-
- Slider for easy comparison
|
|
323
|
-
- Zoom for detail inspection
|
|
324
|
-
|
|
325
|
-
---
|
|
326
|
-
|
|
327
|
-
## 🐛 Common Pitfalls
|
|
328
|
-
|
|
329
|
-
### Quality Issues
|
|
330
|
-
|
|
331
|
-
❌ **Problem**: Over-enhanced appearance
|
|
332
|
-
✅ **Solution**: Reduce enhancement level, disable unnecessary options
|
|
333
|
-
|
|
334
|
-
### Subject Issues
|
|
335
|
-
|
|
336
|
-
❌ **Problem**: Wrong options for subject type
|
|
337
|
-
✅ **Solution**: Match options to photo subject (portraits, landscapes, etc.)
|
|
338
|
-
|
|
339
|
-
### Performance Issues
|
|
340
|
-
|
|
341
|
-
❌ **Problem**: Slow enhancement
|
|
342
|
-
✅ **Solution**: Compress images, show progress, allow cancellation
|
|
343
|
-
|
|
344
|
-
---
|
|
345
|
-
|
|
346
|
-
## 📦 Related Components
|
|
347
|
-
|
|
348
|
-
Use these components from the library:
|
|
349
|
-
|
|
350
|
-
- **PhotoUploadCard**: Upload image interface
|
|
351
|
-
- **EnhancementLevelSelector**: Choose enhancement intensity
|
|
352
|
-
- **EnhancementToggles**: Toggle specific enhancements
|
|
353
|
-
- **ResultDisplay**: Before/after comparison
|
|
354
|
-
- **ProgressBar**: Progress display
|
|
355
|
-
|
|
356
|
-
Located at: `src/presentation/components/`
|
|
357
|
-
|
|
358
|
-
---
|
|
359
|
-
|
|
360
|
-
## 🔄 Migration Strategy
|
|
361
|
-
|
|
362
|
-
If migrating from previous implementation:
|
|
363
|
-
|
|
364
|
-
1. **Update imports** to new path
|
|
365
|
-
2. **Add enhancement level selector**
|
|
366
|
-
3. **Implement enhancement toggles**
|
|
367
|
-
4. **Update state handling** for new structure
|
|
368
|
-
5. **Add before/after comparison**
|
|
369
|
-
6. **Test all enhancement levels**
|
|
370
|
-
|
|
371
|
-
---
|
|
372
|
-
|
|
373
|
-
## 📚 Additional Resources
|
|
374
|
-
|
|
375
|
-
- Main documentation: `/docs/`
|
|
376
|
-
- API reference: `/docs/api/`
|
|
377
|
-
- Examples: `/docs/examples/basic/hd-touch-up/`
|
|
378
|
-
- Architecture: `/ARCHITECTURE.md`
|
|
379
|
-
|
|
380
|
-
---
|
|
381
|
-
|
|
382
|
-
**Last Updated**: 2025-01-08
|
|
383
|
-
**Version**: 2.0.0 (Strategy-based Documentation)
|
|
384
|
-
|
|
385
|
-
---
|
|
386
|
-
|
|
387
|
-
## 📝 Changelog
|
|
388
|
-
|
|
389
|
-
### v2.0.0 - 2025-01-08
|
|
390
|
-
- **BREAKING**: Documentation format changed to strategy-based
|
|
391
|
-
- Removed extensive code examples
|
|
392
|
-
- Added rules, prohibitions, and AI agent directions
|
|
393
|
-
- Focus on best practices and implementation guidance
|
|
394
|
-
|
|
395
|
-
### v1.0.0 - Initial Release
|
|
396
|
-
- Initial feature documentation
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./types";
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HD Touch Up Feature Types
|
|
3
|
-
* Request, Result, Config types for HD enhancement
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export interface HDTouchUpOptions {
|
|
7
|
-
enhanceQuality?: boolean;
|
|
8
|
-
upscaleFactor?: 2 | 4;
|
|
9
|
-
sharpen?: boolean;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface HDTouchUpRequest {
|
|
13
|
-
imageUri: string;
|
|
14
|
-
imageBase64?: string;
|
|
15
|
-
userId: string;
|
|
16
|
-
options?: HDTouchUpOptions;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface HDTouchUpResult {
|
|
20
|
-
success: boolean;
|
|
21
|
-
imageUrl?: string;
|
|
22
|
-
imageBase64?: string;
|
|
23
|
-
error?: string;
|
|
24
|
-
requestId?: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface HDTouchUpFeatureState {
|
|
28
|
-
imageUri: string | null;
|
|
29
|
-
processedUrl: string | null;
|
|
30
|
-
isProcessing: boolean;
|
|
31
|
-
progress: number;
|
|
32
|
-
error: string | null;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export interface HDTouchUpTranslations {
|
|
36
|
-
uploadTitle: string;
|
|
37
|
-
uploadSubtitle: string;
|
|
38
|
-
uploadChange: string;
|
|
39
|
-
uploadAnalyzing: string;
|
|
40
|
-
description: string;
|
|
41
|
-
processingText: string;
|
|
42
|
-
processButtonText: string;
|
|
43
|
-
successText: string;
|
|
44
|
-
saveButtonText: string;
|
|
45
|
-
tryAnotherText: string;
|
|
46
|
-
beforeLabel?: string;
|
|
47
|
-
afterLabel?: string;
|
|
48
|
-
compareHint?: string;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export type HDTouchUpResultExtractor = (result: unknown) => string | undefined;
|
|
52
|
-
|
|
53
|
-
export interface HDTouchUpFeatureConfig {
|
|
54
|
-
featureType: "hd-touch-up";
|
|
55
|
-
creditCost?: number;
|
|
56
|
-
extractResult?: HDTouchUpResultExtractor;
|
|
57
|
-
prepareImage: (imageUri: string) => Promise<string>;
|
|
58
|
-
onImageSelect?: (uri: string) => void;
|
|
59
|
-
onProcessingStart?: () => void;
|
|
60
|
-
onProcessingComplete?: (result: HDTouchUpResult) => void;
|
|
61
|
-
onError?: (error: string) => void;
|
|
62
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HD Touch Up Feature
|
|
3
|
-
* Provider-agnostic HD enhancement feature
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
// Domain Types
|
|
7
|
-
export type {
|
|
8
|
-
HDTouchUpOptions,
|
|
9
|
-
HDTouchUpRequest,
|
|
10
|
-
HDTouchUpResult,
|
|
11
|
-
HDTouchUpFeatureState,
|
|
12
|
-
HDTouchUpTranslations,
|
|
13
|
-
HDTouchUpFeatureConfig,
|
|
14
|
-
HDTouchUpResultExtractor,
|
|
15
|
-
} from "./domain";
|
|
16
|
-
|
|
17
|
-
// Presentation Hooks
|
|
18
|
-
export { useHDTouchUpFeature, type UseHDTouchUpFeatureProps } from "./presentation";
|
|
19
|
-
|
|
20
|
-
// Presentation Components
|
|
21
|
-
export { HDTouchUpFeature, type HDTouchUpFeatureProps } from "./presentation";
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import React, { useMemo } from "react";
|
|
2
|
-
import { Image, StyleSheet } from "react-native";
|
|
3
|
-
import { PhotoUploadCard } from "../../../../presentation/components/PhotoUploadCard";
|
|
4
|
-
import { SingleImageFeatureLayout } from "../../../../presentation/layouts";
|
|
5
|
-
import type { SingleImageInputRenderProps, ResultRenderProps } from "../../../../presentation/layouts";
|
|
6
|
-
import { useHDTouchUpFeature } from "../hooks";
|
|
7
|
-
import type { HDTouchUpTranslations, HDTouchUpFeatureConfig } from "../../domain/types";
|
|
8
|
-
|
|
9
|
-
export interface HDTouchUpFeatureProps {
|
|
10
|
-
config: HDTouchUpFeatureConfig;
|
|
11
|
-
translations: HDTouchUpTranslations & {
|
|
12
|
-
modalTitle?: string;
|
|
13
|
-
modalMessage?: string;
|
|
14
|
-
modalHint?: string;
|
|
15
|
-
modalBackgroundHint?: string;
|
|
16
|
-
};
|
|
17
|
-
onSelectImage: () => Promise<string | null>;
|
|
18
|
-
onSaveImage: (imageUrl: string) => Promise<void>;
|
|
19
|
-
onBeforeProcess?: () => Promise<boolean>;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export const HDTouchUpFeature: React.FC<HDTouchUpFeatureProps> = ({
|
|
23
|
-
config,
|
|
24
|
-
translations,
|
|
25
|
-
onSelectImage,
|
|
26
|
-
onSaveImage,
|
|
27
|
-
onBeforeProcess,
|
|
28
|
-
}) => {
|
|
29
|
-
const feature = useHDTouchUpFeature({
|
|
30
|
-
config,
|
|
31
|
-
onSelectImage,
|
|
32
|
-
onSaveImage,
|
|
33
|
-
onBeforeProcess,
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const modalTranslations = useMemo(
|
|
37
|
-
() => ({
|
|
38
|
-
title: translations.modalTitle || "Processing",
|
|
39
|
-
message: translations.modalMessage || "AI is enhancing your photo...",
|
|
40
|
-
hint: translations.modalHint || "This may take a moment",
|
|
41
|
-
backgroundHint: translations.modalBackgroundHint || "Continue in background",
|
|
42
|
-
}),
|
|
43
|
-
[translations],
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
return (
|
|
47
|
-
<SingleImageFeatureLayout
|
|
48
|
-
feature={feature}
|
|
49
|
-
translations={translations}
|
|
50
|
-
modalTranslations={modalTranslations}
|
|
51
|
-
renderInput={({ imageUri, onSelect, isDisabled, isProcessing }: SingleImageInputRenderProps) => (
|
|
52
|
-
<PhotoUploadCard
|
|
53
|
-
imageUri={imageUri}
|
|
54
|
-
onPress={onSelect}
|
|
55
|
-
isValidating={isProcessing}
|
|
56
|
-
disabled={isDisabled}
|
|
57
|
-
translations={{
|
|
58
|
-
tapToUpload: translations.uploadTitle,
|
|
59
|
-
selectPhoto: translations.uploadSubtitle,
|
|
60
|
-
change: translations.uploadChange,
|
|
61
|
-
analyzing: translations.uploadAnalyzing,
|
|
62
|
-
}}
|
|
63
|
-
config={{
|
|
64
|
-
aspectRatio: 1,
|
|
65
|
-
borderRadius: 24,
|
|
66
|
-
showValidationStatus: false,
|
|
67
|
-
allowChange: true,
|
|
68
|
-
}}
|
|
69
|
-
/>
|
|
70
|
-
)}
|
|
71
|
-
renderResult={({ imageUrl, imageSize }: ResultRenderProps) => (
|
|
72
|
-
<Image
|
|
73
|
-
source={{ uri: imageUrl }}
|
|
74
|
-
style={[styles.resultImage, { width: imageSize, height: imageSize }]}
|
|
75
|
-
resizeMode="contain"
|
|
76
|
-
/>
|
|
77
|
-
)}
|
|
78
|
-
/>
|
|
79
|
-
);
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
const styles = StyleSheet.create({
|
|
83
|
-
resultImage: {
|
|
84
|
-
borderRadius: 16,
|
|
85
|
-
},
|
|
86
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { useHDTouchUpFeature, type UseHDTouchUpFeatureProps } from "./useHDTouchUpFeature";
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useHDTouchUpFeature Hook
|
|
3
|
-
* Uses base single image hook for HD touch up
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { useSingleImageFeature, type BaseSingleImageHookReturn } from "../../../image-to-image";
|
|
7
|
-
import type { HDTouchUpFeatureConfig } from "../../domain/types";
|
|
8
|
-
|
|
9
|
-
export interface UseHDTouchUpFeatureProps {
|
|
10
|
-
config: HDTouchUpFeatureConfig;
|
|
11
|
-
onSelectImage: () => Promise<string | null>;
|
|
12
|
-
onSaveImage: (imageUrl: string) => Promise<void>;
|
|
13
|
-
onBeforeProcess?: () => Promise<boolean>;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function useHDTouchUpFeature(props: UseHDTouchUpFeatureProps): BaseSingleImageHookReturn {
|
|
17
|
-
const { config, onSelectImage, onSaveImage, onBeforeProcess } = props;
|
|
18
|
-
|
|
19
|
-
return useSingleImageFeature<HDTouchUpFeatureConfig>(
|
|
20
|
-
{ config: config as never, onSelectImage, onSaveImage, onBeforeProcess },
|
|
21
|
-
{ buildInput: (imageBase64) => ({ imageBase64 }) },
|
|
22
|
-
);
|
|
23
|
-
}
|