@umituz/react-native-ai-generation-content 1.58.4 → 1.58.6
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/README.md +2 -7
- package/package.json +1 -1
- package/src/domain/interfaces/ai-provider.interface.ts +0 -2
- package/src/domains/creations/domain/types/creation-categories.ts +2 -2
- package/src/domains/creations/domain/types/creation-types.ts +0 -2
- package/src/domains/face-detection/README.md +0 -2
- package/src/domains/generation/domain/feature-config.types.ts +1 -1
- package/src/domains/generation/infrastructure/flow/scenario-configs.ts +0 -15
- package/src/domains/generation/wizard/infrastructure/strategies/wizard-strategy.constants.ts +0 -4
- package/src/domains/generation/wizard/presentation/hooks/wizard-generation.types.ts +1 -1
- package/src/domains/prompts/infrastructure/builders/interaction-style-builder.ts +8 -25
- package/src/domains/scenarios/configs/wizard-input-detector.ts +1 -1
- package/src/domains/scenarios/domain/category-groups.ts +7 -15
- package/src/domains/scenarios/domain/scenario-category.enum.ts +0 -8
- package/src/domains/scenarios/domain/scenario-ids/ai-features.ids.ts +0 -2
- package/src/domains/scenarios/domain/scenario-ids/intimate-romantic.ids.ts +2 -39
- package/src/domains/scenarios/domain/scenario-ids/movie-legends.ids.ts +2 -31
- package/src/domains/scenarios/index.ts +2 -2
- package/src/presentation/hooks/generation/useVideoGeneration.ts +3 -3
- package/src/presentation/layouts/DualImageFeatureLayout.tsx +1 -1
- package/src/presentation/layouts/DualImageVideoFeatureLayout.tsx +1 -1
- package/src/presentation/layouts/README.md +4 -4
- package/src/presentation/layouts/types/feature-states.ts +1 -1
- package/src/presentation/screens/README.md +0 -3
package/README.md
CHANGED
|
@@ -22,9 +22,6 @@ Provider-agnostic AI generation orchestration layer. Focus on business logic and
|
|
|
22
22
|
|
|
23
23
|
### Face & Person Features
|
|
24
24
|
- **Face Swap**: Swap faces between images
|
|
25
|
-
- **AI Hug**: Generate hug images (2 people)
|
|
26
|
-
- **AI Kiss**: Generate kiss images (2 people)
|
|
27
|
-
- **Couple Future**: Future predictions for couples
|
|
28
25
|
- **Future Prediction**: Individual future scenarios
|
|
29
26
|
|
|
30
27
|
### Video & Animation
|
|
@@ -170,8 +167,7 @@ FEATURE HOOKS:
|
|
|
170
167
|
- useTextToImageFeature: Image generation
|
|
171
168
|
- useFaceSwapFeature: Face swapping
|
|
172
169
|
- useTextToVoiceFeature: Text-to-speech
|
|
173
|
-
-
|
|
174
|
-
- And 21+ more features
|
|
170
|
+
- And 20+ more features
|
|
175
171
|
|
|
176
172
|
STRICTLY FORBIDDEN:
|
|
177
173
|
- No skipping configuration
|
|
@@ -190,10 +186,9 @@ STRICTLY FORBIDDEN:
|
|
|
190
186
|
```
|
|
191
187
|
@umituz/react-native-ai-generation-content/
|
|
192
188
|
├── src/
|
|
193
|
-
│ ├── features/ #
|
|
189
|
+
│ ├── features/ # 23 AI features (each with README)
|
|
194
190
|
│ │ ├── text-to-image/
|
|
195
191
|
│ │ ├── face-swap/
|
|
196
|
-
│ │ ├── ai-hug/
|
|
197
192
|
│ │ └── ...
|
|
198
193
|
│ ├── domains/ # Shared domains
|
|
199
194
|
│ │ ├── content-moderation/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umituz/react-native-ai-generation-content",
|
|
3
|
-
"version": "1.58.
|
|
3
|
+
"version": "1.58.6",
|
|
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",
|
|
@@ -26,7 +26,7 @@ export const IMAGE_CREATION_TYPES: CreationTypeId[] = [
|
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* Video-related creation types (core types only)
|
|
29
|
-
* NOTE: All other video types (scenarios,
|
|
29
|
+
* NOTE: All other video types (scenarios, etc.)
|
|
30
30
|
* are dynamically determined by output content via isVideoUrl()
|
|
31
31
|
*/
|
|
32
32
|
export const VIDEO_CREATION_TYPES: CreationTypeId[] = [
|
|
@@ -76,7 +76,7 @@ export function getCategoryForType(type: CreationTypeId): CreationCategory {
|
|
|
76
76
|
/**
|
|
77
77
|
* Get category for a creation based on its output content
|
|
78
78
|
* This is the PRIMARY method for categorization - OUTPUT determines category, not type
|
|
79
|
-
* Handles all scenarios (solo_martial_artist, ski_resort,
|
|
79
|
+
* Handles all scenarios (solo_martial_artist, ski_resort, etc.)
|
|
80
80
|
*
|
|
81
81
|
* Strategy: API response already tells us the type via field names:
|
|
82
82
|
* - output.videoUrl exists → video
|
|
@@ -307,8 +307,6 @@ interface FaceAnalysis {
|
|
|
307
307
|
## 📚 Related Features
|
|
308
308
|
|
|
309
309
|
- [Face Swap](../../features/face-swap) - Swap faces between images
|
|
310
|
-
- [AI Hug](../../features/ai-hug) - Generate AI hug images
|
|
311
|
-
- [AI Kiss](../../features/ai-kiss) - Generate AI kiss images
|
|
312
310
|
|
|
313
311
|
---
|
|
314
312
|
|
|
@@ -30,7 +30,7 @@ export type OutputType = "image" | "video";
|
|
|
30
30
|
// ============================================================================
|
|
31
31
|
|
|
32
32
|
export interface FeatureConfig {
|
|
33
|
-
/** Unique feature identifier (e.g., '
|
|
33
|
+
/** Unique feature identifier (e.g., 'solo-fantasy', 'image-to-video') */
|
|
34
34
|
readonly id: string;
|
|
35
35
|
|
|
36
36
|
/** Generation type (determines which executor to use) */
|
|
@@ -6,21 +6,6 @@
|
|
|
6
6
|
import type { ScenarioStepConfig } from "../../../../domain/entities/step-config.types";
|
|
7
7
|
|
|
8
8
|
export const SCENARIO_CONFIGS: Record<string, ScenarioStepConfig> = {
|
|
9
|
-
"romantic-kiss": {
|
|
10
|
-
photoUploads: {
|
|
11
|
-
count: 2,
|
|
12
|
-
labels: ["First Partner", "Second Partner"],
|
|
13
|
-
showFaceDetection: true,
|
|
14
|
-
showNameInput: false,
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
"couple-hug": {
|
|
18
|
-
photoUploads: {
|
|
19
|
-
count: 2,
|
|
20
|
-
labels: ["Partner A", "Partner B"],
|
|
21
|
-
showFaceDetection: true,
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
9
|
"image-to-video": {
|
|
25
10
|
photoUploads: {
|
|
26
11
|
count: 1,
|
package/src/domains/generation/wizard/infrastructure/strategies/wizard-strategy.constants.ts
CHANGED
|
@@ -27,8 +27,6 @@ export const MODEL_INPUT_DEFAULTS = {
|
|
|
27
27
|
|
|
28
28
|
/** Video feature type patterns for scenario detection */
|
|
29
29
|
export const VIDEO_FEATURE_PATTERNS: Record<string, VideoFeatureType> = {
|
|
30
|
-
kiss: "ai-kiss",
|
|
31
|
-
hug: "ai-hug",
|
|
32
30
|
"text-to-video": "text-to-video",
|
|
33
31
|
"image-to-video": "image-to-video",
|
|
34
32
|
};
|
|
@@ -47,8 +45,6 @@ export const IMAGE_PROCESSING_PROMPTS: Record<string, string> = {
|
|
|
47
45
|
|
|
48
46
|
/** Default prompts for video generation features (no user input needed) */
|
|
49
47
|
export const VIDEO_PROCESSING_PROMPTS: Record<string, string> = {
|
|
50
|
-
"ai-kiss": "Create a romantic video where these two people share a gentle, loving kiss",
|
|
51
|
-
"ai-hug": "Create a heartwarming video where these two people share a warm, affectionate hug",
|
|
52
48
|
"image-to-video": "Animate this image with natural, smooth motion while preserving the original style",
|
|
53
49
|
"solo_renaissance_portrait": "Transform this person into an elegant Renaissance-style animated portrait with classical artistic movements and period-appropriate lighting",
|
|
54
50
|
"renaissance_portrait": "Transform this portrait into a majestic Renaissance-style animated painting with subtle classical movements",
|
|
@@ -20,7 +20,7 @@ export interface WizardScenarioData {
|
|
|
20
20
|
readonly title?: string;
|
|
21
21
|
readonly description?: string;
|
|
22
22
|
/** Video feature type - set by main app to control generation mode */
|
|
23
|
-
readonly featureType?: "text-to-video" | "image-to-video"
|
|
23
|
+
readonly featureType?: "text-to-video" | "image-to-video";
|
|
24
24
|
[key: string]: unknown;
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -15,11 +15,7 @@
|
|
|
15
15
|
// =============================================================================
|
|
16
16
|
|
|
17
17
|
/** Interaction style between people in the image */
|
|
18
|
-
export type InteractionStyle =
|
|
19
|
-
| "romantic"
|
|
20
|
-
| "friendly"
|
|
21
|
-
| "professional"
|
|
22
|
-
| "neutral";
|
|
18
|
+
export type InteractionStyle = "friendly" | "professional" | "neutral";
|
|
23
19
|
|
|
24
20
|
export interface InteractionStyleOptions {
|
|
25
21
|
/** Interaction style between people */
|
|
@@ -38,14 +34,6 @@ export interface InteractionStyleOptions {
|
|
|
38
34
|
|
|
39
35
|
/** Interaction style rules - what TO DO for each style */
|
|
40
36
|
const INTERACTION_RULES: Record<InteractionStyle, readonly string[]> = {
|
|
41
|
-
romantic: [
|
|
42
|
-
"Close physical proximity - touching, holding hands, arms around each other",
|
|
43
|
-
"Warm, genuine, loving smiles showing happiness",
|
|
44
|
-
"Affectionate eye contact or looking at camera together happily",
|
|
45
|
-
"Natural romantic body language - leaning into each other",
|
|
46
|
-
"Intimate connection visible between the two people",
|
|
47
|
-
"Comfortable and relaxed together, natural poses",
|
|
48
|
-
],
|
|
49
37
|
friendly: [
|
|
50
38
|
"Casual comfortable proximity",
|
|
51
39
|
"Genuine friendly smiles",
|
|
@@ -64,21 +52,13 @@ const INTERACTION_RULES: Record<InteractionStyle, readonly string[]> = {
|
|
|
64
52
|
|
|
65
53
|
/** Interaction style forbidden - what NOT to do for each style */
|
|
66
54
|
const INTERACTION_FORBIDDEN: Record<InteractionStyle, readonly string[]> = {
|
|
67
|
-
romantic: [
|
|
68
|
-
"Do NOT position people far apart or distant from each other",
|
|
69
|
-
"Do NOT use cold, serious, stern, or angry expressions",
|
|
70
|
-
"Do NOT create stiff, awkward, or unnatural poses",
|
|
71
|
-
"Do NOT have people looking away from each other coldly",
|
|
72
|
-
"Do NOT show disconnection or emotional distance between people",
|
|
73
|
-
"Do NOT make poses look forced or uncomfortable",
|
|
74
|
-
],
|
|
75
55
|
friendly: [
|
|
76
56
|
"Do NOT use cold or unfriendly expressions",
|
|
77
57
|
"Do NOT create awkward distancing",
|
|
78
58
|
"Do NOT make poses stiff or formal",
|
|
79
59
|
],
|
|
80
60
|
professional: [
|
|
81
|
-
"Do NOT use overly casual
|
|
61
|
+
"Do NOT use overly casual positioning",
|
|
82
62
|
"Do NOT use sloppy or unprofessional poses",
|
|
83
63
|
],
|
|
84
64
|
neutral: [],
|
|
@@ -91,14 +71,18 @@ const INTERACTION_FORBIDDEN: Record<InteractionStyle, readonly string[]> = {
|
|
|
91
71
|
/**
|
|
92
72
|
* Get interaction rules for a given style
|
|
93
73
|
*/
|
|
94
|
-
export function getInteractionRules(
|
|
74
|
+
export function getInteractionRules(
|
|
75
|
+
style: InteractionStyle,
|
|
76
|
+
): readonly string[] {
|
|
95
77
|
return INTERACTION_RULES[style];
|
|
96
78
|
}
|
|
97
79
|
|
|
98
80
|
/**
|
|
99
81
|
* Get forbidden actions for a given style
|
|
100
82
|
*/
|
|
101
|
-
export function getInteractionForbidden(
|
|
83
|
+
export function getInteractionForbidden(
|
|
84
|
+
style: InteractionStyle,
|
|
85
|
+
): readonly string[] {
|
|
102
86
|
return INTERACTION_FORBIDDEN[style];
|
|
103
87
|
}
|
|
104
88
|
|
|
@@ -153,7 +137,6 @@ export function buildMinimalInteractionStylePrompt(
|
|
|
153
137
|
}
|
|
154
138
|
|
|
155
139
|
const styleDescriptions: Record<InteractionStyle, string> = {
|
|
156
|
-
romantic: "close, touching, warm smiles, loving connection",
|
|
157
140
|
friendly: "casual proximity, friendly smiles, relaxed poses",
|
|
158
141
|
professional: "appropriate distance, confident expressions",
|
|
159
142
|
neutral: "",
|
|
@@ -20,7 +20,7 @@ export const SCENARIO_TO_WIZARD_INPUT_MAP: Record<ScenarioInputType, WizardInput
|
|
|
20
20
|
* Only matches generic I/O patterns
|
|
21
21
|
*/
|
|
22
22
|
const INPUT_PATTERNS: Record<WizardInputType, readonly RegExp[]> = {
|
|
23
|
-
[WizardInputType.DUAL_IMAGE]: [/
|
|
23
|
+
[WizardInputType.DUAL_IMAGE]: [/dual/i],
|
|
24
24
|
[WizardInputType.SINGLE_IMAGE]: [
|
|
25
25
|
/^image-to-video$/i,
|
|
26
26
|
/upscale/i,
|
|
@@ -20,10 +20,9 @@ export const TRUE_SOLO_CATEGORIES: readonly ScenarioCategory[] = [
|
|
|
20
20
|
];
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
24
|
-
* These categories contain COUPLE prompts despite the name
|
|
23
|
+
* General categories - scenarios that work with various content types
|
|
25
24
|
*/
|
|
26
|
-
export const
|
|
25
|
+
export const GENERAL_CATEGORIES: readonly ScenarioCategory[] = [
|
|
27
26
|
ScenarioCategory.FANTASY,
|
|
28
27
|
ScenarioCategory.ADVENTURE,
|
|
29
28
|
ScenarioCategory.SPORTS,
|
|
@@ -56,8 +55,6 @@ export const SINGLE_PERSON_CATEGORIES: readonly ScenarioCategory[] = [
|
|
|
56
55
|
ScenarioCategory.ELITE,
|
|
57
56
|
ScenarioCategory.GOTHIC,
|
|
58
57
|
ScenarioCategory.DAILY_ESSENCE,
|
|
59
|
-
ScenarioCategory.MOVIE_LEGENDS,
|
|
60
|
-
ScenarioCategory.ICONIC_MOMENTS,
|
|
61
58
|
ScenarioCategory.FOLKLORE,
|
|
62
59
|
ScenarioCategory.MUSIC,
|
|
63
60
|
ScenarioCategory.STEAMPUNK,
|
|
@@ -85,16 +82,11 @@ export const SINGLE_PERSON_CATEGORIES: readonly ScenarioCategory[] = [
|
|
|
85
82
|
];
|
|
86
83
|
|
|
87
84
|
/**
|
|
88
|
-
*
|
|
85
|
+
* Multi-person categories - scenarios that may involve multiple people
|
|
86
|
+
* Note: Does NOT include intimate/romantic content (App Store Guidelines 1.1)
|
|
89
87
|
*/
|
|
90
|
-
export const
|
|
91
|
-
ScenarioCategory.INTIMATE,
|
|
88
|
+
export const MULTI_PERSON_CATEGORIES: readonly ScenarioCategory[] = [
|
|
92
89
|
ScenarioCategory.WEDDING,
|
|
93
|
-
ScenarioCategory.AFFECTION,
|
|
94
|
-
ScenarioCategory.ROMANTIC_KISSES,
|
|
95
|
-
ScenarioCategory.SULTRY,
|
|
96
|
-
ScenarioCategory.STOLEN_MOMENTS,
|
|
97
|
-
ScenarioCategory.CONNECTION,
|
|
98
90
|
ScenarioCategory.FAMILY,
|
|
99
91
|
ScenarioCategory.TIME_TRAVEL,
|
|
100
92
|
ScenarioCategory.HOME_LIFE,
|
|
@@ -107,6 +99,6 @@ export const COUPLE_CATEGORIES: readonly ScenarioCategory[] = [
|
|
|
107
99
|
* All categories
|
|
108
100
|
*/
|
|
109
101
|
export const ALL_CATEGORIES: readonly ScenarioCategory[] = [
|
|
110
|
-
...
|
|
111
|
-
...
|
|
102
|
+
...GENERAL_CATEGORIES,
|
|
103
|
+
...MULTI_PERSON_CATEGORIES,
|
|
112
104
|
];
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
export enum ScenarioCategory {
|
|
7
7
|
TIME_TRAVEL = "time_travel",
|
|
8
8
|
FAMILY = "family",
|
|
9
|
-
INTIMATE = "intimate",
|
|
10
9
|
WEDDING = "wedding",
|
|
11
10
|
TRAVEL = "travel",
|
|
12
11
|
CULTURAL = "cultural",
|
|
@@ -45,18 +44,11 @@ export enum ScenarioCategory {
|
|
|
45
44
|
VILLAINOUS = "villainous",
|
|
46
45
|
ELITE = "elite",
|
|
47
46
|
GOTHIC = "gothic",
|
|
48
|
-
CONNECTION = "connection",
|
|
49
47
|
DAILY_ESSENCE = "daily_essence",
|
|
50
|
-
MOVIE_LEGENDS = "movie_legends",
|
|
51
|
-
ICONIC_MOMENTS = "iconic_moments",
|
|
52
48
|
FOLKLORE = "folklore",
|
|
53
49
|
MUSIC = "music",
|
|
54
50
|
STEAMPUNK = "steampunk",
|
|
55
51
|
ADVENTURE = "adventure",
|
|
56
|
-
AFFECTION = "affection",
|
|
57
|
-
ROMANTIC_KISSES = "romantic_kisses",
|
|
58
|
-
SULTRY = "sultry",
|
|
59
|
-
STOLEN_MOMENTS = "stolen_moments",
|
|
60
52
|
URBAN_NIGHTS = "urban_nights",
|
|
61
53
|
VINTAGE_SUMMER = "vintage_summer",
|
|
62
54
|
ART_STUDIO = "art_studio",
|
|
@@ -1,43 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Intimate & Romantic Scenario IDs
|
|
3
|
+
* REMOVED: Content violates App Store Guidelines 1.1
|
|
3
4
|
*/
|
|
4
5
|
|
|
5
|
-
export const INTIMATE_ROMANTIC_IDS = {
|
|
6
|
-
// Intimate
|
|
7
|
-
LUXURY_SPA: "luxury_spa",
|
|
8
|
-
BUBBLE_BATH: "bubble_bath",
|
|
9
|
-
SUNRISE_BED: "sunrise_bed",
|
|
10
|
-
WINE_TASTING: "wine_tasting",
|
|
11
|
-
ROSE_PETALS: "rose_petals",
|
|
12
|
-
PRIVATE_BEACH: "private_beach",
|
|
13
|
-
MASQUERADE: "masquerade",
|
|
14
|
-
MOONLIGHT_BALCONY: "moonlight_balcony",
|
|
15
|
-
// Affection
|
|
16
|
-
BACK_HUG_SURPRISE: "back_hug_surprise",
|
|
17
|
-
REUNION_EMBRACE: "reunion_embrace",
|
|
18
|
-
COZY_BLANKET_HUG: "cozy_blanket_hug",
|
|
19
|
-
BEAR_HUG_LIFT: "bear_hug_lift",
|
|
20
|
-
RAINY_STREET_EMBRACE: "rainy_street_embrace",
|
|
21
|
-
KITCHEN_WARMTH_HUG: "kitchen_warmth_hug",
|
|
22
|
-
// Romantic Kisses
|
|
23
|
-
FIRST_KISS_MOMENT: "first_kiss_moment",
|
|
24
|
-
FOREHEAD_KISS_GENTLE: "forehead_kiss_gentle",
|
|
25
|
-
HAND_KISS_ELEGANCE: "hand_kiss_elegance",
|
|
26
|
-
SUNSET_KISS_SILHOUETTE: "sunset_kiss_silhouette",
|
|
27
|
-
ESKIMO_KISS_PLAYFUL: "eskimo_kiss_playful",
|
|
28
|
-
WEDDING_KISS_ALTAR: "wedding_kiss_altar",
|
|
29
|
-
RAINY_KISS_PASSION: "rainy_kiss_passion",
|
|
30
|
-
// Sultry
|
|
31
|
-
MAGNETIC_GAZE: "magnetic_gaze",
|
|
32
|
-
STEAMY_MIRROR_SILHOUETTE: "steamy_mirror_silhouette",
|
|
33
|
-
SILK_AND_SHADOWS: "silk_and_shadows",
|
|
34
|
-
PASSIONATE_WHISPER: "passionate_whisper",
|
|
35
|
-
LOVERS_FIREPLACE_INTIMACY: "lovers_fireplace_intimacy",
|
|
36
|
-
TANGLED_SHEETS_MOMENT: "tangled_sheets_moment",
|
|
37
|
-
// Stolen Moments
|
|
38
|
-
UNDER_TABLE_HAND_HOLD: "under_table_hand_hold",
|
|
39
|
-
CROWD_STOLEN_LOOK: "crowd_stolen_look",
|
|
40
|
-
ELEVATOR_PROXIMITY: "elevator_proximity",
|
|
41
|
-
LIBRARY_SECRET_KISS: "library_secret_kiss",
|
|
42
|
-
BACKSTAGE_TENSION: "backstage_tension",
|
|
43
|
-
} as const;
|
|
6
|
+
export const INTIMATE_ROMANTIC_IDS = {} as const;
|
|
@@ -1,35 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Movie Legends & Iconic Moments Scenario IDs
|
|
3
|
+
* REMOVED: Couple/romantic content violates App Store Guidelines 1.1
|
|
3
4
|
*/
|
|
4
5
|
|
|
5
|
-
export const MOVIE_LEGENDS_IDS = {
|
|
6
|
-
// Movie Legends
|
|
7
|
-
TITANIC_BOW: "titanic_bow",
|
|
8
|
-
SMITH_BACK_TO_BACK: "smith_back_to_back",
|
|
9
|
-
PULP_FICTION_DANCE: "pulp_fiction_dance",
|
|
10
|
-
MATRIX_BULLET_TIME: "matrix_bullet_time",
|
|
11
|
-
LA_LA_LAND_DANCE: "la_la_land_dance",
|
|
12
|
-
GATSBY_CHEERS: "gatsby_cheers",
|
|
13
|
-
ROMEO_AQUARIUM: "romeo_aquarium",
|
|
14
|
-
NOTEBOOK_RAIN: "notebook_rain",
|
|
15
|
-
GHOST_POTTERY: "ghost_pottery",
|
|
16
|
-
SPIDERMAN_KISS: "spiderman_kiss",
|
|
17
|
-
DIRTY_DANCING_LIFT: "dirty_dancing_lift",
|
|
18
|
-
PRETTY_WOMAN_BALCONY: "pretty_woman_balcony",
|
|
19
|
-
TWILIGHT_MEADOW: "twilight_meadow",
|
|
20
|
-
PRIDE_PREJUDICE_WALK: "pride_prejudice_walk",
|
|
21
|
-
ETERNAL_SUNSHINE_ICE: "eternal_sunshine_ice",
|
|
22
|
-
CASABLANCA_FAREWELL: "casablanca_farewell",
|
|
23
|
-
TIFFANYS_RAIN: "tiffanys_rain",
|
|
24
|
-
STAR_IS_BORN_LOOK: "star_is_born_look",
|
|
25
|
-
GHOST_DEW_DROP: "ghost_dew_drop",
|
|
26
|
-
// Iconic Moments
|
|
27
|
-
KLIMT_THE_KISS: "klimt_the_kiss",
|
|
28
|
-
TIMES_SQUARE_KISS: "times_square_kiss",
|
|
29
|
-
AMERICAN_GOTHIC_POSE: "american_gothic_pose",
|
|
30
|
-
ABBEY_ROAD_WALK: "abbey_road_walk",
|
|
31
|
-
LENNON_YOKO_POSE: "lennon_yoko_pose",
|
|
32
|
-
SKY_LUNCH_POSE: "sky_lunch_pose",
|
|
33
|
-
MAGRITTE_LOVERS: "magritte_lovers",
|
|
34
|
-
CREATION_TOUCH: "creation_touch",
|
|
35
|
-
} as const;
|
|
6
|
+
export const MOVIE_LEGENDS_IDS = {} as const;
|
|
@@ -11,8 +11,8 @@ export type { Scenario } from "./domain/Scenario";
|
|
|
11
11
|
// Category Groups - Pre-defined category groups for filtering
|
|
12
12
|
export {
|
|
13
13
|
TRUE_SOLO_CATEGORIES,
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
GENERAL_CATEGORIES,
|
|
15
|
+
MULTI_PERSON_CATEGORIES,
|
|
16
16
|
ALL_CATEGORIES,
|
|
17
17
|
} from "./domain/category-groups";
|
|
18
18
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* useVideoGeneration Hook
|
|
3
|
-
* Generic video generation hook for dual-image video features
|
|
3
|
+
* Generic video generation hook for dual-image video features
|
|
4
4
|
* Uses centralized orchestrator for credit/error handling
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ import { createCreationsRepository } from "../../../domains/creations/infrastruc
|
|
|
13
13
|
import type { Creation } from "../../../domains/creations/domain/entities/Creation";
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
* Input for dual image video features
|
|
16
|
+
* Input for dual image video features
|
|
17
17
|
*/
|
|
18
18
|
export interface DualImageVideoInput {
|
|
19
19
|
sourceImageBase64: string;
|
|
@@ -22,7 +22,7 @@ export interface DualImageVideoInput {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export interface VideoGenerationConfig<TResult> {
|
|
25
|
-
/** Feature type
|
|
25
|
+
/** Feature type for video generation */
|
|
26
26
|
featureType: VideoFeatureType;
|
|
27
27
|
/** User ID for credit operations */
|
|
28
28
|
userId: string | undefined;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DualImageFeatureLayout
|
|
3
|
-
* Centralized layout for all dual-image processing features (face-swap
|
|
3
|
+
* Centralized layout for all dual-image processing features (face-swap)
|
|
4
4
|
* Handles: ScrollView, AIGenerationForm, AIGenerationResult, GenerationProgressContent
|
|
5
5
|
* Note: No Modal wrapper - shows fullscreen progress when processing (FutureUS pattern)
|
|
6
6
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DualImageVideoFeatureLayout
|
|
3
|
-
* Centralized layout for dual-image video features
|
|
3
|
+
* Centralized layout for dual-image video features
|
|
4
4
|
* Handles: ScrollView, AIGenerationForm, AIGenerationResult, GenerationProgressContent
|
|
5
5
|
* Note: No Modal wrapper - shows fullscreen progress when processing (FutureUS pattern)
|
|
6
6
|
*/
|
|
@@ -120,14 +120,14 @@ Layout for dual image/video features:
|
|
|
120
120
|
```tsx
|
|
121
121
|
import { DualImageVideoFeatureLayout } from '@umituz/react-native-ai-generation-content';
|
|
122
122
|
|
|
123
|
-
function
|
|
123
|
+
function ImageToVideoScreen() {
|
|
124
124
|
return (
|
|
125
125
|
<DualImageVideoFeatureLayout
|
|
126
|
-
featureId="
|
|
126
|
+
featureId="image-to-video"
|
|
127
127
|
userId="user-123"
|
|
128
128
|
config={{
|
|
129
|
-
title: '
|
|
130
|
-
description: 'Generate
|
|
129
|
+
title: 'Image to Video',
|
|
130
|
+
description: 'Generate video from images',
|
|
131
131
|
inputType: 'image',
|
|
132
132
|
}}
|
|
133
133
|
onSelectSource={async () => {
|
|
@@ -115,11 +115,8 @@ type AIFeatureId =
|
|
|
115
115
|
| 'inpainting'
|
|
116
116
|
| 'image-to-image'
|
|
117
117
|
| 'image-to-video'
|
|
118
|
-
| 'ai-hug'
|
|
119
|
-
| 'ai-kiss'
|
|
120
118
|
| 'anime-selfie'
|
|
121
119
|
| 'meme-generator'
|
|
122
|
-
| 'couple-future'
|
|
123
120
|
| 'future-prediction'
|
|
124
121
|
| 'sketch-to-image'
|
|
125
122
|
| 'script-generator'
|