@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,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Photo Restoration Feature
|
|
3
|
-
* Provider-agnostic photo restoration feature
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
// Domain Types
|
|
7
|
-
export type {
|
|
8
|
-
PhotoRestoreOptions,
|
|
9
|
-
PhotoRestoreRequest,
|
|
10
|
-
PhotoRestoreResult,
|
|
11
|
-
PhotoRestoreFeatureState,
|
|
12
|
-
PhotoRestoreTranslations,
|
|
13
|
-
PhotoRestoreFeatureConfig,
|
|
14
|
-
PhotoRestoreResultExtractor,
|
|
15
|
-
} from "./domain";
|
|
16
|
-
|
|
17
|
-
// Presentation Hooks
|
|
18
|
-
export { usePhotoRestoreFeature, type UsePhotoRestoreFeatureProps } from "./presentation";
|
|
19
|
-
|
|
20
|
-
// Presentation Components
|
|
21
|
-
export { PhotoRestoreFeature, PhotoRestoreResultView } from "./presentation";
|
|
22
|
-
export type { PhotoRestoreFeatureProps, PhotoRestoreResultViewProps } from "./presentation";
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import React, { useMemo } from "react";
|
|
2
|
-
import { PhotoUploadCard } from "../../../../presentation/components/PhotoUploadCard";
|
|
3
|
-
import { SingleImageFeatureLayout } from "../../../../presentation/layouts";
|
|
4
|
-
import type { SingleImageInputRenderProps, CustomResultRenderProps } from "../../../../presentation/layouts";
|
|
5
|
-
import { PhotoRestoreResultView } from "./PhotoRestoreResultView";
|
|
6
|
-
import { usePhotoRestoreFeature } from "../hooks";
|
|
7
|
-
import type { PhotoRestoreTranslations, PhotoRestoreFeatureConfig } from "../../domain/types";
|
|
8
|
-
|
|
9
|
-
export interface PhotoRestoreFeatureProps {
|
|
10
|
-
config: PhotoRestoreFeatureConfig;
|
|
11
|
-
translations: PhotoRestoreTranslations & {
|
|
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 PhotoRestoreFeature: React.FC<PhotoRestoreFeatureProps> = ({
|
|
23
|
-
config,
|
|
24
|
-
translations,
|
|
25
|
-
onSelectImage,
|
|
26
|
-
onSaveImage,
|
|
27
|
-
onBeforeProcess,
|
|
28
|
-
}) => {
|
|
29
|
-
const feature = usePhotoRestoreFeature({
|
|
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 restoring 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
|
-
renderCustomResult={({ processedUrl, originalImageUri, onSave, onReset }: CustomResultRenderProps) => (
|
|
72
|
-
<PhotoRestoreResultView
|
|
73
|
-
originalUri={originalImageUri}
|
|
74
|
-
processedUri={processedUrl}
|
|
75
|
-
translations={{
|
|
76
|
-
successText: translations.successText,
|
|
77
|
-
saveButtonText: translations.saveButtonText,
|
|
78
|
-
tryAnotherText: translations.tryAnotherText,
|
|
79
|
-
beforeLabel: translations.beforeLabel,
|
|
80
|
-
afterLabel: translations.afterLabel,
|
|
81
|
-
}}
|
|
82
|
-
onSave={onSave}
|
|
83
|
-
onReset={onReset}
|
|
84
|
-
/>
|
|
85
|
-
)}
|
|
86
|
-
/>
|
|
87
|
-
);
|
|
88
|
-
};
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PhotoRestoreResultView Component
|
|
3
|
-
* Displays the restored image result with before/after comparison
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import React from "react";
|
|
7
|
-
import { StyleSheet } from "react-native";
|
|
8
|
-
import {
|
|
9
|
-
AtomicText,
|
|
10
|
-
useAppDesignTokens,
|
|
11
|
-
} from "@umituz/react-native-design-system";
|
|
12
|
-
import { AIGenerationResult } from "../../../../presentation/components/display/AIGenerationResult";
|
|
13
|
-
import { ComparisonSlider } from "../../../upscaling/presentation/components/ComparisonSlider";
|
|
14
|
-
import type { PhotoRestoreTranslations } from "../../domain/types";
|
|
15
|
-
|
|
16
|
-
export interface PhotoRestoreResultViewProps {
|
|
17
|
-
originalUri: string;
|
|
18
|
-
processedUri: string;
|
|
19
|
-
translations: Pick<
|
|
20
|
-
PhotoRestoreTranslations,
|
|
21
|
-
| "successText"
|
|
22
|
-
| "saveButtonText"
|
|
23
|
-
| "tryAnotherText"
|
|
24
|
-
| "beforeLabel"
|
|
25
|
-
| "afterLabel"
|
|
26
|
-
>;
|
|
27
|
-
onSave: () => void;
|
|
28
|
-
onReset: () => void;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export const PhotoRestoreResultView: React.FC<PhotoRestoreResultViewProps> = ({
|
|
32
|
-
originalUri,
|
|
33
|
-
processedUri,
|
|
34
|
-
translations,
|
|
35
|
-
onSave,
|
|
36
|
-
onReset,
|
|
37
|
-
}) => {
|
|
38
|
-
const tokens = useAppDesignTokens();
|
|
39
|
-
|
|
40
|
-
return (
|
|
41
|
-
<AIGenerationResult
|
|
42
|
-
successText={translations.successText}
|
|
43
|
-
primaryAction={{
|
|
44
|
-
label: translations.saveButtonText,
|
|
45
|
-
onPress: onSave,
|
|
46
|
-
}}
|
|
47
|
-
secondaryAction={{
|
|
48
|
-
label: translations.tryAnotherText,
|
|
49
|
-
onPress: onReset,
|
|
50
|
-
}}
|
|
51
|
-
>
|
|
52
|
-
<ComparisonSlider
|
|
53
|
-
originalUri={originalUri}
|
|
54
|
-
processedUri={processedUri}
|
|
55
|
-
beforeLabel={translations.beforeLabel}
|
|
56
|
-
afterLabel={translations.afterLabel}
|
|
57
|
-
/>
|
|
58
|
-
|
|
59
|
-
<AtomicText
|
|
60
|
-
type="bodySmall"
|
|
61
|
-
style={[styles.hint, { color: tokens.colors.textSecondary }]}
|
|
62
|
-
>
|
|
63
|
-
Drag slider to compare
|
|
64
|
-
</AtomicText>
|
|
65
|
-
</AIGenerationResult>
|
|
66
|
-
);
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
const styles = StyleSheet.create({
|
|
70
|
-
container: {
|
|
71
|
-
flex: 1,
|
|
72
|
-
paddingHorizontal: 24,
|
|
73
|
-
},
|
|
74
|
-
title: {
|
|
75
|
-
textAlign: "center",
|
|
76
|
-
marginBottom: 24,
|
|
77
|
-
},
|
|
78
|
-
hint: {
|
|
79
|
-
textAlign: "center",
|
|
80
|
-
marginTop: 12,
|
|
81
|
-
marginBottom: 24,
|
|
82
|
-
},
|
|
83
|
-
actions: {
|
|
84
|
-
gap: 12,
|
|
85
|
-
},
|
|
86
|
-
});
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { PhotoRestoreFeature } from "./PhotoRestoreFeature";
|
|
2
|
-
export { PhotoRestoreResultView } from "./PhotoRestoreResultView";
|
|
3
|
-
export type { PhotoRestoreFeatureProps } from "./PhotoRestoreFeature";
|
|
4
|
-
export type { PhotoRestoreResultViewProps } from "./PhotoRestoreResultView";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { usePhotoRestoreFeature, type UsePhotoRestoreFeatureProps } from "./usePhotoRestoreFeature";
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* usePhotoRestoreFeature Hook
|
|
3
|
-
* Uses base single image hook for photo restoration
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { useSingleImageFeature, type BaseSingleImageHookReturn } from "../../../image-to-image";
|
|
7
|
-
import type { PhotoRestoreFeatureConfig } from "../../domain/types";
|
|
8
|
-
|
|
9
|
-
export interface UsePhotoRestoreFeatureProps {
|
|
10
|
-
config: PhotoRestoreFeatureConfig;
|
|
11
|
-
onSelectImage: () => Promise<string | null>;
|
|
12
|
-
onSaveImage: (imageUrl: string) => Promise<void>;
|
|
13
|
-
onBeforeProcess?: () => Promise<boolean>;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function usePhotoRestoreFeature(props: UsePhotoRestoreFeatureProps): BaseSingleImageHookReturn {
|
|
17
|
-
const { config, onSelectImage, onSaveImage, onBeforeProcess } = props;
|
|
18
|
-
|
|
19
|
-
return useSingleImageFeature<PhotoRestoreFeatureConfig>(
|
|
20
|
-
{ config: config as never, onSelectImage, onSaveImage, onBeforeProcess },
|
|
21
|
-
{ buildInput: (imageBase64) => ({ imageBase64 }) },
|
|
22
|
-
);
|
|
23
|
-
}
|
|
@@ -1,393 +0,0 @@
|
|
|
1
|
-
# Remove Background Feature
|
|
2
|
-
|
|
3
|
-
Remove backgrounds from images using AI with precision.
|
|
4
|
-
|
|
5
|
-
## 📍 Import Path
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
import { useRemoveBackgroundFeature } from '@umituz/react-native-ai-generation-content';
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
**Location**: `src/features/remove-background/`
|
|
12
|
-
|
|
13
|
-
## 🎯 Feature Purpose
|
|
14
|
-
|
|
15
|
-
Automatically detect and remove backgrounds from images using AI. Keeps main subjects while removing backgrounds, handling complex edges like hair, fur, and transparent objects.
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 📋 Usage Strategy
|
|
20
|
-
|
|
21
|
-
### When to Use This Feature
|
|
22
|
-
|
|
23
|
-
✅ **Use Cases:**
|
|
24
|
-
- Product photography for e-commerce
|
|
25
|
-
- Creating transparent images for design
|
|
26
|
-
- Profile picture background removal
|
|
27
|
-
- Preparing images for marketing materials
|
|
28
|
-
- Isolating subjects for compositing
|
|
29
|
-
- Creating stickers and overlays
|
|
30
|
-
|
|
31
|
-
❌ **When NOT to Use:**
|
|
32
|
-
- Manual background selection (use image editing software)
|
|
33
|
-
- Background replacement (use Replace Background)
|
|
34
|
-
- Object removal from photos (use Remove Object)
|
|
35
|
-
- Photo restoration (use Photo Restoration)
|
|
36
|
-
|
|
37
|
-
### Implementation Strategy
|
|
38
|
-
|
|
39
|
-
1. **Upload image** with clear subject
|
|
40
|
-
2. **Preview detection** before processing
|
|
41
|
-
3. **Choose edge smoothness** level
|
|
42
|
-
4. **Show before/after comparison** with transparency
|
|
43
|
-
5. **Provide download** as transparent PNG
|
|
44
|
-
6. **Offer fine-tuning** options for edges
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## ⚠️ Critical Rules (MUST FOLLOW)
|
|
49
|
-
|
|
50
|
-
### 1. Image Requirements
|
|
51
|
-
- **MUST** provide ONE image to process
|
|
52
|
-
- **MUST** have clear subject in image
|
|
53
|
-
- **MUST** use reasonable resolution (min 512x512)
|
|
54
|
-
- **MUST** use supported formats (JPEG, PNG)
|
|
55
|
-
- **MUST NOT** exceed file size limits (10MB max)
|
|
56
|
-
|
|
57
|
-
### 2. Configuration
|
|
58
|
-
- **MUST** provide valid `userId` for tracking
|
|
59
|
-
- **MUST** specify `edgeSmoothness` (low, medium, high)
|
|
60
|
-
- **MUST** implement `onError` callback
|
|
61
|
-
- **MUST** implement `onSelectImage` callback
|
|
62
|
-
- **MUST** handle transparent PNG output
|
|
63
|
-
|
|
64
|
-
### 3. State Management
|
|
65
|
-
- **MUST** check `isReady` before enabling remove button
|
|
66
|
-
- **MUST** display progress during processing
|
|
67
|
-
- **MUST** handle transparency display properly
|
|
68
|
-
- **MUST** display `error` state with clear messages
|
|
69
|
-
- **MUST** implement proper cleanup on unmount
|
|
70
|
-
|
|
71
|
-
### 4. Performance
|
|
72
|
-
- **MUST** implement image compression before upload
|
|
73
|
-
- **MUST** show progress indicator for processing
|
|
74
|
-
- **MUST** cache results locally
|
|
75
|
-
- **MUST** handle large output images
|
|
76
|
-
- **MUST NOT** process multiple images simultaneously
|
|
77
|
-
|
|
78
|
-
### 5. User Experience
|
|
79
|
-
- **MUST** show background preview with transparency grid
|
|
80
|
-
- **MUST** provide before/after comparison
|
|
81
|
-
- **MUST** offer edge smoothness options
|
|
82
|
-
- **MUST** handle complex subjects (hair, fur)
|
|
83
|
-
- **MUST** provide download as PNG
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## 🚫 Prohibitions (MUST AVOID)
|
|
88
|
-
|
|
89
|
-
### Strictly Forbidden
|
|
90
|
-
|
|
91
|
-
❌ **NEVER** do the following:
|
|
92
|
-
|
|
93
|
-
1. **No Missing Images**
|
|
94
|
-
- Always validate image is selected
|
|
95
|
-
- Never call process() without image
|
|
96
|
-
|
|
97
|
-
2. **No Auto-Processing**
|
|
98
|
-
- Never start removal without user action
|
|
99
|
-
- Always require explicit "Remove Background" button press
|
|
100
|
-
- Provide clear preview before processing
|
|
101
|
-
|
|
102
|
-
3. **No Hardcoded Credentials**
|
|
103
|
-
- Never store API keys in component files
|
|
104
|
-
- Use environment variables or secure storage
|
|
105
|
-
|
|
106
|
-
4. **No Unhandled Errors**
|
|
107
|
-
- Never ignore detection failures
|
|
108
|
-
- Always explain what went wrong
|
|
109
|
-
- Provide retry or alternative options
|
|
110
|
-
|
|
111
|
-
5. **No Memory Leaks**
|
|
112
|
-
- Never store large images unnecessarily
|
|
113
|
-
- Clean up temporary images
|
|
114
|
-
- Implement proper image disposal
|
|
115
|
-
|
|
116
|
-
6. **No Blocking UI**
|
|
117
|
-
- Never block main thread with image processing
|
|
118
|
-
- Always show progress indicator
|
|
119
|
-
- Allow cancellation
|
|
120
|
-
|
|
121
|
-
7. **No Poor Quality Output**
|
|
122
|
-
- Never compress PNG output excessively
|
|
123
|
-
- Preserve transparency quality
|
|
124
|
-
- Use appropriate edge settings
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## 🤖 AI Agent Directions
|
|
129
|
-
|
|
130
|
-
### For AI Code Generation Tools
|
|
131
|
-
|
|
132
|
-
When using this feature with AI code generation tools, follow these guidelines:
|
|
133
|
-
|
|
134
|
-
#### Prompt Template for AI Agents
|
|
135
|
-
|
|
136
|
-
```
|
|
137
|
-
You are implementing a background removal feature using @umituz/react-native-ai-generation-content.
|
|
138
|
-
|
|
139
|
-
REQUIREMENTS:
|
|
140
|
-
1. Import from: @umituz/react-native-ai-generation-content
|
|
141
|
-
2. Use the useRemoveBackgroundFeature hook
|
|
142
|
-
3. Select edge smoothness level
|
|
143
|
-
4. Implement image selection UI
|
|
144
|
-
5. Validate image before processing
|
|
145
|
-
6. Show before/after comparison with transparency
|
|
146
|
-
7. Display result on transparency grid
|
|
147
|
-
8. Implement proper error handling
|
|
148
|
-
9. Provide PNG download
|
|
149
|
-
10. Implement cleanup on unmount
|
|
150
|
-
|
|
151
|
-
CRITICAL RULES:
|
|
152
|
-
- MUST validate image before calling remove()
|
|
153
|
-
- MUST show before/after comparison
|
|
154
|
-
- MUST display transparency grid properly
|
|
155
|
-
- MUST handle complex subjects (hair, fur)
|
|
156
|
-
- MUST implement debouncing (300ms)
|
|
157
|
-
- MUST provide PNG format output
|
|
158
|
-
|
|
159
|
-
CONFIGURATION:
|
|
160
|
-
- Provide valid userId (string)
|
|
161
|
-
- Set edgeSmoothness: 'low' | 'medium' | 'high'
|
|
162
|
-
- Implement onSelectImage callback
|
|
163
|
-
- Implement onSaveImage callback
|
|
164
|
-
- Configure callbacks: onProcessingStart, onProcessingComplete, onError
|
|
165
|
-
|
|
166
|
-
OPTIONS:
|
|
167
|
-
- edgeSmoothness: 'low' | 'medium' | 'high'
|
|
168
|
-
- Low: Sharper edges, better for objects
|
|
169
|
-
- Medium: Balanced (recommended)
|
|
170
|
-
- High: Smoother edges, better for hair/fur
|
|
171
|
-
|
|
172
|
-
STRICTLY FORBIDDEN:
|
|
173
|
-
- No missing image validation
|
|
174
|
-
- No auto-processing without user action
|
|
175
|
-
- No hardcoded API keys
|
|
176
|
-
- No unhandled errors
|
|
177
|
-
- No memory leaks
|
|
178
|
-
- No blocking UI
|
|
179
|
-
- No poor quality PNG output
|
|
180
|
-
|
|
181
|
-
QUALITY CHECKLIST:
|
|
182
|
-
- [ ] Image selection implemented
|
|
183
|
-
- [ ] Edge smoothness selector
|
|
184
|
-
- [ ] Transparency grid display
|
|
185
|
-
- [ ] Before/after comparison view
|
|
186
|
-
- [ ] Progress indicator during processing
|
|
187
|
-
- [ ] Error display with retry option
|
|
188
|
-
- [ ] PNG download functionality
|
|
189
|
-
- [ ] Original image preserved
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
#### AI Implementation Checklist
|
|
193
|
-
|
|
194
|
-
Use this checklist when generating code:
|
|
195
|
-
|
|
196
|
-
- [ ] Feature imported from correct path
|
|
197
|
-
- [ ] Image selection implemented
|
|
198
|
-
- [ ] Edge smoothness selector added
|
|
199
|
-
- [ ] Validation before remove()
|
|
200
|
-
- [ ] Transparency grid for result display
|
|
201
|
-
- [ ] Before/after comparison view
|
|
202
|
-
- [ ] Progress indicator during processing
|
|
203
|
-
- [ ] Error display with user-friendly message
|
|
204
|
-
- [ ] PNG download with transparency
|
|
205
|
-
- [ ] Cleanup on unmount
|
|
206
|
-
- [ ] Original image preserved
|
|
207
|
-
- [ ] Complex subject handling
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
## 🛠️ Configuration Strategy
|
|
212
|
-
|
|
213
|
-
### Essential Configuration
|
|
214
|
-
|
|
215
|
-
```typescript
|
|
216
|
-
// Required fields
|
|
217
|
-
{
|
|
218
|
-
userId: string
|
|
219
|
-
edgeSmoothness: 'low' | 'medium' | 'high'
|
|
220
|
-
onSelectImage: () => Promise<string | null>
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
// Optional callbacks
|
|
224
|
-
{
|
|
225
|
-
onProcessingStart?: () => void
|
|
226
|
-
onProcessingComplete?: (result) => void
|
|
227
|
-
onError?: (error: string) => void
|
|
228
|
-
}
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
### Recommended Settings
|
|
232
|
-
|
|
233
|
-
1. **Edge Smoothness**
|
|
234
|
-
- Low: Sharp edges, best for simple objects
|
|
235
|
-
- Medium: Balanced (recommended for most cases)
|
|
236
|
-
- High: Smooth edges, best for hair, fur, complex subjects
|
|
237
|
-
|
|
238
|
-
2. **Image Quality**
|
|
239
|
-
- Minimum: 512x512 resolution
|
|
240
|
-
- Recommended: 1024x1024 or higher
|
|
241
|
-
- Format: JPEG or PNG
|
|
242
|
-
- Max size: 10MB
|
|
243
|
-
|
|
244
|
-
3. **Performance Settings**
|
|
245
|
-
- Compress images before upload
|
|
246
|
-
- Show progress for operations
|
|
247
|
-
- Implement timeout (60s default)
|
|
248
|
-
- Enable result caching
|
|
249
|
-
|
|
250
|
-
---
|
|
251
|
-
|
|
252
|
-
## 📊 State Management
|
|
253
|
-
|
|
254
|
-
### Feature States
|
|
255
|
-
|
|
256
|
-
**isReady**: boolean
|
|
257
|
-
- Image selected and validated
|
|
258
|
-
- Check before enabling remove button
|
|
259
|
-
|
|
260
|
-
**isProcessing**: boolean
|
|
261
|
-
- Background removal in progress
|
|
262
|
-
- Show loading/progress indicator
|
|
263
|
-
- Disable remove button
|
|
264
|
-
|
|
265
|
-
**progress**: number (0-100)
|
|
266
|
-
- Processing progress percentage
|
|
267
|
-
- Update progress bar
|
|
268
|
-
|
|
269
|
-
**error**: string | null
|
|
270
|
-
- Error message if processing failed
|
|
271
|
-
- Display to user with clear message
|
|
272
|
-
|
|
273
|
-
**result**: {
|
|
274
|
-
imageUrl: string // Transparent PNG
|
|
275
|
-
originalImageUrl?: string
|
|
276
|
-
edgeSmoothness?: string
|
|
277
|
-
metadata?: any
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
## 🎨 Best Practices
|
|
283
|
-
|
|
284
|
-
### Image Selection
|
|
285
|
-
|
|
286
|
-
1. **Subject Clarity**
|
|
287
|
-
- Good: Clear separation between subject and background
|
|
288
|
-
- Bad: Similar colors, low contrast between subject and background
|
|
289
|
-
|
|
290
|
-
2. **Lighting**
|
|
291
|
-
- Good: Even lighting on subject
|
|
292
|
-
- Bad: Harsh shadows, complex backgrounds
|
|
293
|
-
|
|
294
|
-
3. **Edge Complexity**
|
|
295
|
-
- Simple objects: Use low edge smoothness
|
|
296
|
-
- Hair/fur: Use high edge smoothness
|
|
297
|
-
- Mixed: Use medium edge smoothness
|
|
298
|
-
|
|
299
|
-
### User Experience
|
|
300
|
-
|
|
301
|
-
1. **Transparency Display**
|
|
302
|
-
- Show checkerboard pattern for transparency
|
|
303
|
-
- Allow background color preview
|
|
304
|
-
- Provide zoom for edge inspection
|
|
305
|
-
|
|
306
|
-
2. **Comparison Tools**
|
|
307
|
-
- Before/after slider
|
|
308
|
-
- Toggle original/removed
|
|
309
|
-
- Edge detail zoom
|
|
310
|
-
|
|
311
|
-
3. **Output Quality**
|
|
312
|
-
- Always provide PNG format
|
|
313
|
-
- Preserve edge quality
|
|
314
|
-
- Offer multiple resolution options
|
|
315
|
-
|
|
316
|
-
---
|
|
317
|
-
|
|
318
|
-
## 🐛 Common Pitfalls
|
|
319
|
-
|
|
320
|
-
### Detection Issues
|
|
321
|
-
|
|
322
|
-
❌ **Problem**: Background not fully removed
|
|
323
|
-
✅ **Solution**: Ensure good subject-background contrast, try different edge smoothness
|
|
324
|
-
|
|
325
|
-
### Edge Quality Issues
|
|
326
|
-
|
|
327
|
-
❌ **Problem**: Jagged or unnatural edges
|
|
328
|
-
✅ **Solution**: Adjust edge smoothness, use higher setting for hair/fur
|
|
329
|
-
|
|
330
|
-
### Transparency Issues
|
|
331
|
-
|
|
332
|
-
❌ **Problem**: Transparency not visible
|
|
333
|
-
✅ **Solution**: Display with checkerboard pattern, offer background preview
|
|
334
|
-
|
|
335
|
-
### Performance Issues
|
|
336
|
-
|
|
337
|
-
❌ **Problem**: Slow processing
|
|
338
|
-
✅ **Solution**: Compress images, show progress, implement timeout
|
|
339
|
-
|
|
340
|
-
---
|
|
341
|
-
|
|
342
|
-
## 📦 Related Components
|
|
343
|
-
|
|
344
|
-
Use these components from the library:
|
|
345
|
-
|
|
346
|
-
- **PhotoUploadCard**: Upload image interface
|
|
347
|
-
- **ResultDisplay**: Before/after comparison
|
|
348
|
-
- **TransparencyGrid**: Display transparent images
|
|
349
|
-
- **EdgeSmoothnessSelector**: Choose edge quality
|
|
350
|
-
- **ProgressBar**: Progress display
|
|
351
|
-
|
|
352
|
-
Located at: `src/presentation/components/`
|
|
353
|
-
|
|
354
|
-
---
|
|
355
|
-
|
|
356
|
-
## 🔄 Migration Strategy
|
|
357
|
-
|
|
358
|
-
If migrating from previous implementation:
|
|
359
|
-
|
|
360
|
-
1. **Update imports** to new path
|
|
361
|
-
2. **Add edge smoothness selector**
|
|
362
|
-
3. **Implement transparency grid display**
|
|
363
|
-
4. **Update state handling** for new structure
|
|
364
|
-
5. **Add before/after comparison**
|
|
365
|
-
6. **Test with complex subjects**
|
|
366
|
-
|
|
367
|
-
---
|
|
368
|
-
|
|
369
|
-
## 📚 Additional Resources
|
|
370
|
-
|
|
371
|
-
- Main documentation: `/docs/`
|
|
372
|
-
- API reference: `/docs/api/`
|
|
373
|
-
- Examples: `/docs/examples/basic/remove-background/`
|
|
374
|
-
- Architecture: `/ARCHITECTURE.md`
|
|
375
|
-
|
|
376
|
-
---
|
|
377
|
-
|
|
378
|
-
**Last Updated**: 2025-01-08
|
|
379
|
-
**Version**: 2.0.0 (Strategy-based Documentation)
|
|
380
|
-
|
|
381
|
-
---
|
|
382
|
-
|
|
383
|
-
## 📝 Changelog
|
|
384
|
-
|
|
385
|
-
### v2.0.0 - 2025-01-08
|
|
386
|
-
- **BREAKING**: Documentation format changed to strategy-based
|
|
387
|
-
- Removed extensive code examples
|
|
388
|
-
- Added rules, prohibitions, and AI agent directions
|
|
389
|
-
- Focus on best practices and implementation guidance
|
|
390
|
-
- Added transparency handling guidelines
|
|
391
|
-
|
|
392
|
-
### v1.0.0 - Initial Release
|
|
393
|
-
- Initial feature documentation
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Remove Background Feature Types
|
|
3
|
-
* Extends base image-to-image types with remove-background options
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type {
|
|
7
|
-
BaseImageResult,
|
|
8
|
-
BaseSingleImageState,
|
|
9
|
-
BaseImageTranslations,
|
|
10
|
-
SingleImageConfig,
|
|
11
|
-
} from "../../../image-to-image/domain/types";
|
|
12
|
-
|
|
13
|
-
export interface RemoveBackgroundOptions {
|
|
14
|
-
refineEdges?: boolean;
|
|
15
|
-
outputFormat?: "png" | "webp";
|
|
16
|
-
backgroundColor?: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export type RemoveBackgroundResult = BaseImageResult;
|
|
20
|
-
|
|
21
|
-
export type RemoveBackgroundFeatureState = BaseSingleImageState;
|
|
22
|
-
|
|
23
|
-
export type RemoveBackgroundTranslations = BaseImageTranslations;
|
|
24
|
-
|
|
25
|
-
export interface RemoveBackgroundFeatureConfig
|
|
26
|
-
extends SingleImageConfig<RemoveBackgroundResult> {
|
|
27
|
-
defaultOptions?: RemoveBackgroundOptions;
|
|
28
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Remove Background Feature
|
|
3
|
-
* Provider-agnostic background removal feature
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
// Domain Types
|
|
7
|
-
export type {
|
|
8
|
-
RemoveBackgroundOptions,
|
|
9
|
-
RemoveBackgroundResult,
|
|
10
|
-
RemoveBackgroundFeatureState,
|
|
11
|
-
RemoveBackgroundTranslations,
|
|
12
|
-
RemoveBackgroundFeatureConfig,
|
|
13
|
-
} from "./domain";
|
|
14
|
-
|
|
15
|
-
// Presentation Hooks
|
|
16
|
-
export { useRemoveBackgroundFeature, type UseRemoveBackgroundFeatureProps } from "./presentation";
|
|
17
|
-
|
|
18
|
-
// Presentation Components
|
|
19
|
-
export { RemoveBackgroundFeature, type RemoveBackgroundFeatureProps } from "./presentation";
|