@umituz/react-native-ai-generation-content 1.26.1 → 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/infrastructure/providers/generation-config.provider.tsx +20 -9
- 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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umituz/react-native-ai-generation-content",
|
|
3
|
-
"version": "1.26.
|
|
3
|
+
"version": "1.26.4",
|
|
4
4
|
"description": "Provider-agnostic AI generation orchestration for React Native with result preview components",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"types": "src/index.ts",
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
"./creations": "./src/domains/creations/index.ts",
|
|
12
12
|
"./face-detection": "./src/domains/face-detection/index.ts",
|
|
13
13
|
"./feature-background": "./src/domains/feature-background/index.ts",
|
|
14
|
-
"./wizard": "./src/domains/wizard/index.ts"
|
|
14
|
+
"./wizard": "./src/domains/wizard/index.ts",
|
|
15
|
+
"./generation": "./src/domains/generation/index.ts"
|
|
15
16
|
},
|
|
16
17
|
"files": [
|
|
17
18
|
"src"
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Registry
|
|
3
|
+
* Centralized registry for all AI generation features
|
|
4
|
+
* Apps register features they need during initialization
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type {
|
|
8
|
+
FeatureConfig,
|
|
9
|
+
FeatureRegistration,
|
|
10
|
+
} from "../domain/feature-config.types";
|
|
11
|
+
|
|
12
|
+
declare const __DEV__: boolean;
|
|
13
|
+
|
|
14
|
+
class FeatureRegistryImpl implements FeatureRegistration {
|
|
15
|
+
private features = new Map<string, FeatureConfig>();
|
|
16
|
+
|
|
17
|
+
register(featureId: string, config: FeatureConfig): void {
|
|
18
|
+
if (this.features.has(featureId)) {
|
|
19
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
20
|
+
console.warn(
|
|
21
|
+
`[FeatureRegistry] Feature '${featureId}' already registered. Overwriting.`,
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
this.features.set(featureId, config);
|
|
27
|
+
|
|
28
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
29
|
+
console.log("[FeatureRegistry] Feature registered", {
|
|
30
|
+
featureId,
|
|
31
|
+
type: config.type,
|
|
32
|
+
model: config.model,
|
|
33
|
+
creditCost: config.creditCost,
|
|
34
|
+
inputType: config.inputType,
|
|
35
|
+
outputType: config.outputType,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
get(featureId: string): FeatureConfig {
|
|
41
|
+
const config = this.features.get(featureId);
|
|
42
|
+
|
|
43
|
+
if (!config) {
|
|
44
|
+
const availableFeatures = Array.from(this.features.keys()).join(", ");
|
|
45
|
+
|
|
46
|
+
throw new Error(
|
|
47
|
+
`Feature not found: ${featureId}.\n\n` +
|
|
48
|
+
`Available features: ${availableFeatures || "none"}.\n` +
|
|
49
|
+
`Please register '${featureId}' using featureRegistry.register() in your app initialization.`,
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return config;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
getAll(): FeatureConfig[] {
|
|
57
|
+
return Array.from(this.features.values());
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
has(featureId: string): boolean {
|
|
61
|
+
return this.features.has(featureId);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
unregister(featureId: string): void {
|
|
65
|
+
const existed = this.features.delete(featureId);
|
|
66
|
+
|
|
67
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
68
|
+
if (existed) {
|
|
69
|
+
console.log("[FeatureRegistry] Feature unregistered", { featureId });
|
|
70
|
+
} else {
|
|
71
|
+
console.warn(
|
|
72
|
+
`[FeatureRegistry] Cannot unregister '${featureId}': not found`,
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
clear(): void {
|
|
79
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
80
|
+
console.log("[FeatureRegistry] Clearing all features");
|
|
81
|
+
}
|
|
82
|
+
this.features.clear();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
logRegisteredFeatures(): void {
|
|
86
|
+
const features = this.getAll();
|
|
87
|
+
|
|
88
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
89
|
+
console.log("[FeatureRegistry] Registered features:", {
|
|
90
|
+
count: features.length,
|
|
91
|
+
features: features.map((f) => ({
|
|
92
|
+
id: f.id,
|
|
93
|
+
type: f.type,
|
|
94
|
+
outputType: f.outputType,
|
|
95
|
+
})),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export const featureRegistry = new FeatureRegistryImpl();
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generation Strategy Factory
|
|
3
|
+
* Creates generation strategies from feature configs
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { GenerationStrategy } from "../../../presentation/hooks/generation/orchestrator";
|
|
7
|
+
import type { FeatureConfig } from "../domain/feature-config.types";
|
|
8
|
+
import type {
|
|
9
|
+
ImageGenerationInput,
|
|
10
|
+
VideoGenerationInput,
|
|
11
|
+
ImageGenerationOutput,
|
|
12
|
+
VideoGenerationOutput,
|
|
13
|
+
} from "../domain/generation.types";
|
|
14
|
+
import { ExecutorFactory } from "../../../infrastructure/executors/executor-factory";
|
|
15
|
+
import { featureRegistry } from "./feature-registry";
|
|
16
|
+
|
|
17
|
+
declare const __DEV__: boolean;
|
|
18
|
+
|
|
19
|
+
interface CreationRepository {
|
|
20
|
+
create(userId: string, creation: unknown): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface StrategyFactoryOptions {
|
|
24
|
+
featureId: string;
|
|
25
|
+
userId?: string;
|
|
26
|
+
repository?: CreationRepository;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function createGenerationStrategy(
|
|
30
|
+
options: StrategyFactoryOptions,
|
|
31
|
+
): GenerationStrategy<unknown, unknown> {
|
|
32
|
+
const { featureId, userId, repository } = options;
|
|
33
|
+
|
|
34
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
35
|
+
console.log("[StrategyFactory] Creating strategy", {
|
|
36
|
+
featureId,
|
|
37
|
+
hasUserId: !!userId,
|
|
38
|
+
hasRepository: !!repository,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const featureConfig = featureRegistry.get(featureId);
|
|
43
|
+
const executor = ExecutorFactory.create(featureConfig.type);
|
|
44
|
+
|
|
45
|
+
return {
|
|
46
|
+
execute: async (input: unknown, onProgress?: (progress: number) => void) => {
|
|
47
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
48
|
+
console.log("[StrategyFactory] Executing generation", {
|
|
49
|
+
featureId,
|
|
50
|
+
type: featureConfig.type,
|
|
51
|
+
model: featureConfig.model,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const result = await executor.generate(featureConfig.model, input, {
|
|
56
|
+
onProgress,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
if (!result.success || !result.data) {
|
|
60
|
+
throw new Error(result.error || "Generation failed");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return result.data;
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
getCreditCost: () => {
|
|
67
|
+
return featureConfig.creditCost;
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
save: async (result: unknown, uid: string) => {
|
|
71
|
+
if (!repository) {
|
|
72
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
73
|
+
console.log("[StrategyFactory] No repository provided, skipping save");
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const creation = buildCreation(featureConfig, result);
|
|
79
|
+
|
|
80
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
81
|
+
console.log("[StrategyFactory] Saving creation", {
|
|
82
|
+
featureId,
|
|
83
|
+
creationId: creation.id,
|
|
84
|
+
outputType: featureConfig.outputType,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
await repository.create(uid, creation);
|
|
89
|
+
|
|
90
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
91
|
+
console.log("[StrategyFactory] Creation saved successfully");
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function buildCreation(featureConfig: FeatureConfig, result: unknown) {
|
|
98
|
+
const creationId = `${featureConfig.id}_${Date.now()}`;
|
|
99
|
+
|
|
100
|
+
let mainUri = "";
|
|
101
|
+
let output: Record<string, unknown> = {};
|
|
102
|
+
|
|
103
|
+
if (featureConfig.outputType === "image") {
|
|
104
|
+
const imageResult = result as ImageGenerationOutput;
|
|
105
|
+
mainUri = imageResult.imageUrl || "";
|
|
106
|
+
output = { imageUrl: imageResult.imageUrl };
|
|
107
|
+
} else if (featureConfig.outputType === "video") {
|
|
108
|
+
const videoResult = result as VideoGenerationOutput;
|
|
109
|
+
mainUri = videoResult.videoUrl || "";
|
|
110
|
+
output = { videoUrl: videoResult.videoUrl };
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return {
|
|
114
|
+
id: creationId,
|
|
115
|
+
uri: mainUri,
|
|
116
|
+
type: featureConfig.id,
|
|
117
|
+
createdAt: new Date(),
|
|
118
|
+
isShared: false,
|
|
119
|
+
isFavorite: false,
|
|
120
|
+
metadata: {
|
|
121
|
+
featureId: featureConfig.id,
|
|
122
|
+
generationType: featureConfig.type,
|
|
123
|
+
outputType: featureConfig.outputType,
|
|
124
|
+
...featureConfig.metadata,
|
|
125
|
+
},
|
|
126
|
+
output,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Configuration Types
|
|
3
|
+
* Defines how apps configure AI features
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Feature Type Enums
|
|
8
|
+
// ============================================================================
|
|
9
|
+
|
|
10
|
+
export type GenerationType = "image" | "video" | "meme";
|
|
11
|
+
|
|
12
|
+
export type InputType =
|
|
13
|
+
| "single-photo"
|
|
14
|
+
| "two-photos"
|
|
15
|
+
| "text"
|
|
16
|
+
| "photo-text"
|
|
17
|
+
| "photo-photo-text";
|
|
18
|
+
|
|
19
|
+
export type OutputType = "image" | "video";
|
|
20
|
+
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Feature Configuration
|
|
23
|
+
// ============================================================================
|
|
24
|
+
|
|
25
|
+
export interface FeatureConfig {
|
|
26
|
+
/** Unique feature identifier (e.g., 'couple-future', 'ai-hug') */
|
|
27
|
+
readonly id: string;
|
|
28
|
+
|
|
29
|
+
/** Generation type (determines which executor to use) */
|
|
30
|
+
readonly type: GenerationType;
|
|
31
|
+
|
|
32
|
+
/** Model ID (from app's GENERATION_MODELS config) */
|
|
33
|
+
readonly model: string;
|
|
34
|
+
|
|
35
|
+
/** Credit cost for this feature */
|
|
36
|
+
readonly creditCost: number;
|
|
37
|
+
|
|
38
|
+
/** Input type (determines wizard steps) */
|
|
39
|
+
readonly inputType: InputType;
|
|
40
|
+
|
|
41
|
+
/** Output type (determines result preview) */
|
|
42
|
+
readonly outputType: OutputType;
|
|
43
|
+
|
|
44
|
+
/** Optional: Custom prompt template */
|
|
45
|
+
readonly promptTemplate?: string;
|
|
46
|
+
|
|
47
|
+
/** Optional: Feature-specific metadata */
|
|
48
|
+
readonly metadata?: Record<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// ============================================================================
|
|
52
|
+
// Feature Registration
|
|
53
|
+
// ============================================================================
|
|
54
|
+
|
|
55
|
+
export interface FeatureRegistration {
|
|
56
|
+
register(featureId: string, config: FeatureConfig): void;
|
|
57
|
+
get(featureId: string): FeatureConfig;
|
|
58
|
+
getAll(): FeatureConfig[];
|
|
59
|
+
has(featureId: string): boolean;
|
|
60
|
+
unregister(featureId: string): void;
|
|
61
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generation Domain Types
|
|
3
|
+
* Generic types for all AI generation features
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Generation Options
|
|
8
|
+
// ============================================================================
|
|
9
|
+
|
|
10
|
+
export interface GenerationOptions {
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
onProgress?: (progress: number) => void;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Generation Result
|
|
17
|
+
// ============================================================================
|
|
18
|
+
|
|
19
|
+
export interface GenerationResult<T> {
|
|
20
|
+
success: boolean;
|
|
21
|
+
data?: T;
|
|
22
|
+
error?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// Input Types (by generation type)
|
|
27
|
+
// ============================================================================
|
|
28
|
+
|
|
29
|
+
export interface ImageGenerationInput {
|
|
30
|
+
imageUrls?: string[];
|
|
31
|
+
prompt: string;
|
|
32
|
+
aspectRatio?: string;
|
|
33
|
+
outputFormat?: "jpeg" | "png" | "webp";
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface VideoGenerationInput {
|
|
37
|
+
sourceImageBase64: string;
|
|
38
|
+
targetImageBase64?: string;
|
|
39
|
+
prompt?: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface MemeGenerationInput {
|
|
43
|
+
text: string;
|
|
44
|
+
template?: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// Output Types (by generation type)
|
|
49
|
+
// ============================================================================
|
|
50
|
+
|
|
51
|
+
export interface ImageGenerationOutput {
|
|
52
|
+
imageUrl: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface VideoGenerationOutput {
|
|
56
|
+
videoUrl: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface MemeGenerationOutput {
|
|
60
|
+
imageUrl: string;
|
|
61
|
+
caption?: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// Generic Executor Interface
|
|
66
|
+
// ============================================================================
|
|
67
|
+
|
|
68
|
+
export interface GenerationExecutor<TInput, TOutput> {
|
|
69
|
+
generate(
|
|
70
|
+
model: string,
|
|
71
|
+
input: TInput,
|
|
72
|
+
options?: GenerationOptions,
|
|
73
|
+
): Promise<GenerationResult<TOutput>>;
|
|
74
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generation Domain
|
|
3
|
+
* Generic, feature-agnostic AI generation system
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// Presentation Layer
|
|
7
|
+
export {
|
|
8
|
+
useAIGeneration,
|
|
9
|
+
type UseAIGenerationProps,
|
|
10
|
+
type UseAIGenerationReturn,
|
|
11
|
+
type AlertMessages,
|
|
12
|
+
} from "./presentation/useAIGeneration.hook";
|
|
13
|
+
|
|
14
|
+
// Application Layer
|
|
15
|
+
export { featureRegistry } from "./application/feature-registry";
|
|
16
|
+
export { createGenerationStrategy } from "./application/generation-strategy.factory";
|
|
17
|
+
|
|
18
|
+
// Domain Layer
|
|
19
|
+
export type {
|
|
20
|
+
FeatureConfig,
|
|
21
|
+
FeatureRegistration,
|
|
22
|
+
GenerationType,
|
|
23
|
+
InputType,
|
|
24
|
+
OutputType,
|
|
25
|
+
} from "./domain/feature-config.types";
|
|
26
|
+
|
|
27
|
+
export type {
|
|
28
|
+
GenerationExecutor,
|
|
29
|
+
GenerationOptions,
|
|
30
|
+
GenerationResult,
|
|
31
|
+
ImageGenerationInput,
|
|
32
|
+
ImageGenerationOutput,
|
|
33
|
+
VideoGenerationInput,
|
|
34
|
+
VideoGenerationOutput,
|
|
35
|
+
MemeGenerationInput,
|
|
36
|
+
MemeGenerationOutput,
|
|
37
|
+
} from "./domain/generation.types";
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useAIGeneration Hook
|
|
3
|
+
* Universal hook for ALL AI generation features
|
|
4
|
+
* Replaces all feature-specific hooks (useCoupleFutureFlow, useAIHugFeature, etc.)
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { useGenerationOrchestrator } from "../../../presentation/hooks/generation/orchestrator";
|
|
8
|
+
import { createGenerationStrategy } from "../application/generation-strategy.factory";
|
|
9
|
+
|
|
10
|
+
declare const __DEV__: boolean;
|
|
11
|
+
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Types
|
|
14
|
+
// ============================================================================
|
|
15
|
+
|
|
16
|
+
export interface AlertMessages {
|
|
17
|
+
networkError: string;
|
|
18
|
+
policyViolation: string;
|
|
19
|
+
saveFailed: string;
|
|
20
|
+
creditFailed: string;
|
|
21
|
+
unknown: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface UseAIGenerationProps {
|
|
25
|
+
/** Feature ID from feature registry */
|
|
26
|
+
featureId: string;
|
|
27
|
+
|
|
28
|
+
/** User ID for saving creations */
|
|
29
|
+
userId?: string;
|
|
30
|
+
|
|
31
|
+
/** Alert messages for errors */
|
|
32
|
+
alertMessages?: AlertMessages;
|
|
33
|
+
|
|
34
|
+
/** Called when generation succeeds */
|
|
35
|
+
onSuccess?: (result: unknown) => void;
|
|
36
|
+
|
|
37
|
+
/** Called when generation fails */
|
|
38
|
+
onError?: (error: string) => void;
|
|
39
|
+
|
|
40
|
+
/** Called when credits are exhausted */
|
|
41
|
+
onCreditsExhausted?: () => void;
|
|
42
|
+
|
|
43
|
+
/** Optional: Custom repository for saving */
|
|
44
|
+
repository?: {
|
|
45
|
+
create(userId: string, creation: unknown): Promise<void>;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface UseAIGenerationReturn {
|
|
50
|
+
/** Trigger generation */
|
|
51
|
+
generate: (input: unknown) => Promise<void>;
|
|
52
|
+
|
|
53
|
+
/** Whether generation is in progress */
|
|
54
|
+
isGenerating: boolean;
|
|
55
|
+
|
|
56
|
+
/** Current progress (0-100) */
|
|
57
|
+
progress: number;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Hook
|
|
62
|
+
// ============================================================================
|
|
63
|
+
|
|
64
|
+
export function useAIGeneration(
|
|
65
|
+
props: UseAIGenerationProps,
|
|
66
|
+
): UseAIGenerationReturn {
|
|
67
|
+
const {
|
|
68
|
+
featureId,
|
|
69
|
+
userId,
|
|
70
|
+
alertMessages,
|
|
71
|
+
onSuccess,
|
|
72
|
+
onError,
|
|
73
|
+
onCreditsExhausted,
|
|
74
|
+
repository,
|
|
75
|
+
} = props;
|
|
76
|
+
|
|
77
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
78
|
+
console.log("[useAIGeneration] Initializing", {
|
|
79
|
+
featureId,
|
|
80
|
+
hasUserId: !!userId,
|
|
81
|
+
hasRepository: !!repository,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Create generic strategy
|
|
86
|
+
const strategy = createGenerationStrategy({
|
|
87
|
+
featureId,
|
|
88
|
+
userId,
|
|
89
|
+
repository,
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Use orchestrator for lifecycle management
|
|
93
|
+
const orchestrator = useGenerationOrchestrator(strategy, {
|
|
94
|
+
userId,
|
|
95
|
+
alertMessages,
|
|
96
|
+
onSuccess,
|
|
97
|
+
onError,
|
|
98
|
+
onCreditsExhausted,
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
generate: orchestrator.generate,
|
|
103
|
+
isGenerating: orchestrator.isGenerating,
|
|
104
|
+
progress: orchestrator.progress,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
@@ -366,10 +366,9 @@ export const createWizardStrategy = (
|
|
|
366
366
|
scenarioId: scenario.id,
|
|
367
367
|
scenarioTitle: scenario.title || scenario.id,
|
|
368
368
|
},
|
|
369
|
-
output:
|
|
370
|
-
imageUrl
|
|
371
|
-
videoUrl,
|
|
372
|
-
},
|
|
369
|
+
output: outputType === "image"
|
|
370
|
+
? { imageUrl }
|
|
371
|
+
: { videoUrl },
|
|
373
372
|
};
|
|
374
373
|
|
|
375
374
|
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
package/src/index.ts
CHANGED
|
@@ -143,28 +143,6 @@ export * from "./domains/content-moderation";
|
|
|
143
143
|
export * from "./domains/creations";
|
|
144
144
|
export * from "./domains/face-detection";
|
|
145
145
|
export * from "./domains/scenarios";
|
|
146
|
-
export * from "./features/image-to-image";
|
|
147
|
-
export * from "./features/replace-background";
|
|
148
|
-
export * from "./features/upscaling";
|
|
149
|
-
export * from "./features/script-generator";
|
|
150
|
-
export * from "./features/photo-restoration";
|
|
151
|
-
export type { DualImageVideoProcessingStartData, DualImageVideoResult, DualImageVideoFeatureConfig } from "./features/shared/dual-image-video";
|
|
152
|
-
export * from "./features/ai-hug";
|
|
153
|
-
export * from "./features/ai-kiss";
|
|
154
|
-
export * from "./features/face-swap";
|
|
155
|
-
export * from "./features/anime-selfie";
|
|
156
|
-
export * from "./features/remove-background";
|
|
157
|
-
export * from "./features/remove-object";
|
|
158
|
-
export * from "./features/text-to-video";
|
|
159
|
-
export * from "./features/text-to-image";
|
|
160
|
-
export * from "./features/image-to-video";
|
|
161
|
-
export * from "./features/text-to-voice";
|
|
162
|
-
export * from "./features/hd-touch-up";
|
|
163
|
-
export * from "./features/meme-generator";
|
|
164
|
-
export * from "./features/couple-future";
|
|
165
|
-
export * from "./features/love-message";
|
|
166
|
-
export * from "./features/partner-upload";
|
|
167
|
-
export * from "./features/scenarios";
|
|
168
146
|
export * from "./infrastructure/orchestration";
|
|
169
147
|
|
|
170
148
|
// Generation Config Provider (App Configuration)
|
|
@@ -206,8 +184,6 @@ export type {
|
|
|
206
184
|
PromptTranslationKeys,
|
|
207
185
|
} from "./presentation/screens/ai-feature";
|
|
208
186
|
|
|
209
|
-
// AIGenerationWizard - Generic wizard for all AI generation flows
|
|
210
|
-
export * from "./features/wizard";
|
|
211
187
|
|
|
212
188
|
// Flow System - Dynamic multi-step flow management
|
|
213
189
|
export { createFlowStore, useFlow, resetFlowStore } from "./infrastructure/flow";
|
|
@@ -229,5 +205,5 @@ export type {
|
|
|
229
205
|
FlowGenerationStatus,
|
|
230
206
|
} from "./domain/entities/flow-config.types";
|
|
231
207
|
|
|
232
|
-
// Wizard Domain - Generic, configuration-driven wizard system for ALL features
|
|
233
208
|
export * from "./domains/wizard";
|
|
209
|
+
export * from "./domains/generation";
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Executor Factory
|
|
3
|
+
* Creates appropriate executor based on generation type
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { GenerationExecutor } from "../../domains/generation/domain/generation.types";
|
|
7
|
+
import { ImageExecutor } from "./image-executor";
|
|
8
|
+
import { VideoExecutor } from "./video-executor";
|
|
9
|
+
|
|
10
|
+
declare const __DEV__: boolean;
|
|
11
|
+
|
|
12
|
+
type GenerationType = "image" | "video" | "meme";
|
|
13
|
+
|
|
14
|
+
export class ExecutorFactory {
|
|
15
|
+
private static executors = new Map<
|
|
16
|
+
GenerationType,
|
|
17
|
+
GenerationExecutor<unknown, unknown>
|
|
18
|
+
>();
|
|
19
|
+
|
|
20
|
+
static create(type: GenerationType): GenerationExecutor<unknown, unknown> {
|
|
21
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
22
|
+
console.log("[ExecutorFactory] Creating executor", { type });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (!this.executors.has(type)) {
|
|
26
|
+
switch (type) {
|
|
27
|
+
case "image":
|
|
28
|
+
this.executors.set(type, new ImageExecutor());
|
|
29
|
+
break;
|
|
30
|
+
case "video":
|
|
31
|
+
this.executors.set(type, new VideoExecutor());
|
|
32
|
+
break;
|
|
33
|
+
case "meme":
|
|
34
|
+
throw new Error("Meme executor not yet implemented");
|
|
35
|
+
default:
|
|
36
|
+
throw new Error(`Unknown executor type: ${type}`);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
40
|
+
console.log("[ExecutorFactory] Executor created and cached", { type });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return this.executors.get(type)!;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
static clear(): void {
|
|
48
|
+
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
49
|
+
console.log("[ExecutorFactory] Clearing executor cache");
|
|
50
|
+
}
|
|
51
|
+
this.executors.clear();
|
|
52
|
+
}
|
|
53
|
+
}
|