@umituz/react-native-ai-generation-content 1.17.216 → 1.17.218

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-ai-generation-content",
3
- "version": "1.17.216",
3
+ "version": "1.17.218",
4
4
  "description": "Provider-agnostic AI generation orchestration for React Native",
5
5
  "main": "src/index.ts",
6
6
  "types": "src/index.ts",
@@ -16,7 +16,7 @@
16
16
  "src"
17
17
  ],
18
18
  "scripts": {
19
- "typecheck": "tsc --noEmit",
19
+ "typecheck": "tsc --noEmit --skipLibCheck",
20
20
  "lint": "eslint src --ext .ts,.tsx --max-warnings 0",
21
21
  "lint:fix": "eslint src --ext .ts,.tsx --fix"
22
22
  },
@@ -50,16 +50,15 @@
50
50
  "peerDependencies": {
51
51
  "@react-navigation/native": ">=6.0.0",
52
52
  "@tanstack/react-query": ">=5.0.0",
53
+ "@umituz/react-native-video-editor": ">=1.0.0",
53
54
  "expo-linear-gradient": ">=15.0.0",
54
55
  "firebase": ">=10.0.0",
55
56
  "react": ">=18.0.0",
56
57
  "react-native": ">=0.74.0",
57
- "react-native-safe-area-context": ">=4.0.0",
58
- "@umituz/react-native-video-editor": ">=1.0.0"
58
+ "react-native-safe-area-context": ">=4.0.0"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@expo/vector-icons": "^15.0.3",
62
- "@gorhom/bottom-sheet": "^5.2.8",
63
62
  "@react-native-async-storage/async-storage": "^2.2.0",
64
63
  "@react-native-community/datetimepicker": "^8.5.1",
65
64
  "@react-navigation/bottom-tabs": "^7.9.0",
@@ -81,6 +80,7 @@
81
80
  "@umituz/react-native-timezone": "latest",
82
81
  "@umituz/react-native-uuid": "latest",
83
82
  "eslint": "^9.0.0",
83
+ "expo-apple-authentication": "^8.0.8",
84
84
  "expo-application": "^7.0.8",
85
85
  "expo-clipboard": "^8.0.8",
86
86
  "expo-crypto": "^15.0.8",
@@ -90,6 +90,7 @@
90
90
  "expo-image": "^3.0.11",
91
91
  "expo-linear-gradient": "~15.0.7",
92
92
  "expo-localization": "^17.0.8",
93
+ "expo-network": "^8.0.8",
93
94
  "expo-sharing": "^14.0.8",
94
95
  "expo-video": "^3.0.15",
95
96
  "firebase": "^12.6.0",
@@ -98,8 +99,8 @@
98
99
  "react-i18next": "^16.5.0",
99
100
  "react-native": "0.81.5",
100
101
  "react-native-gesture-handler": "^2.30.0",
101
- "react-native-reanimated": "^4.2.1",
102
102
  "react-native-safe-area-context": "^5.6.2",
103
+ "react-native-svg": "^15.15.1",
103
104
  "rn-emoji-keyboard": "^1.7.0",
104
105
  "typescript": "^5.9.0",
105
106
  "zustand": "^5.0.2"
@@ -3,19 +3,19 @@
3
3
  * Video player with thumbnail and play controls for creation detail view
4
4
  */
5
5
 
6
- import React, { useMemo, useState } from "react";
7
- import { View, StyleSheet } from "react-native";
6
+ import React, { useMemo } from "react";
7
+ import { View } from "react-native";
8
8
  import { VideoView, useVideoPlayer } from "expo-video";
9
9
  import { useResponsive } from "@umituz/react-native-design-system";
10
10
 
11
11
  interface DetailVideoProps {
12
12
  readonly videoUrl: string;
13
- readonly thumbnailUrl?: string;
13
+ readonly _thumbnailUrl?: string;
14
14
  }
15
15
 
16
16
  export const DetailVideo: React.FC<DetailVideoProps> = ({
17
17
  videoUrl,
18
- thumbnailUrl,
18
+ _thumbnailUrl,
19
19
  }) => {
20
20
  const { width, horizontalPadding, spacingMultiplier } = useResponsive();
21
21
  const videoWidth = width - (horizontalPadding * 2);
@@ -89,7 +89,7 @@ export const CreationDetailScreen: React.FC<CreationDetailScreenProps> = ({
89
89
  showsVerticalScrollIndicator={false}
90
90
  >
91
91
  {isVideo ? (
92
- <DetailVideo videoUrl={videoUrl} thumbnailUrl={thumbnailUrl} />
92
+ <DetailVideo videoUrl={videoUrl} _thumbnailUrl={thumbnailUrl} />
93
93
  ) : (
94
94
  <DetailImage uri={creation.uri} onPress={handleImagePress} />
95
95
  )}
@@ -4,11 +4,12 @@ import { executeCoupleFuture } from "../../infrastructure/executor";
4
4
  import type { CoupleFutureInput } from "../../domain/types";
5
5
  import type { PhotoGenerationConfig, PhotoGenerationError } from "../../../../presentation/hooks/photo-generation.types";
6
6
  import { createCreationsRepository } from "../../../../domains/creations/infrastructure/adapters";
7
+ import type { Creation } from "../../../../domains/creations/domain/entities/Creation";
7
8
 
8
9
  export interface UseCoupleFutureGenerationConfig<TInput extends CoupleFutureInput, TResult> {
9
10
  userId: string | undefined;
10
11
  processResult: (imageUrl: string, input: TInput) => Promise<TResult> | TResult;
11
- buildCreation?: (result: TResult, input: TInput) => any; // Type 'Creation' if known, otherwise any
12
+ buildCreation?: (result: TResult, input: TInput) => Creation | null;
12
13
  deductCredits?: () => Promise<void>;
13
14
  onSuccess?: (result: TResult) => void;
14
15
  onError?: (error: string) => void;
@@ -17,10 +17,20 @@ import { GenerationResultContent } from "../../../../presentation/components/res
17
17
 
18
18
  // Constants (Using default provided styles if config doesn't override)
19
19
  import { DEFAULT_IMAGE_STYLES } from "../../../text-to-image/domain/constants/styles.constants";
20
+ import type { TextToImageFeatureConfig } from "../../../text-to-image/domain/types";
20
21
 
21
22
  export interface MemeGeneratorFeatureProps {
22
- config: any; // AIFeatureConfig merged with extraConfig
23
- translations: any;
23
+ config: TextToImageFeatureConfig & {
24
+ styles?: Array<{
25
+ id: string;
26
+ name: string;
27
+ emoji?: string;
28
+ icon?: string;
29
+ description?: string;
30
+ }>;
31
+ [key: string]: unknown;
32
+ };
33
+ translations: Record<string, string>;
24
34
  onSaveImage: (url: string) => Promise<void>;
25
35
  onBeforeProcess?: () => Promise<boolean>;
26
36
  }
@@ -36,10 +46,16 @@ export const MemeGeneratorFeature: React.FC<MemeGeneratorFeatureProps> = ({
36
46
  const userId = authService.getUserId() || "anonymous";
37
47
 
38
48
  // Config can override styles, or use defaults
39
- const stylesList = config.styles || DEFAULT_IMAGE_STYLES || [];
49
+ const stylesList = config.styles || DEFAULT_IMAGE_STYLES;
40
50
 
41
51
  // Transform styles for GridSelector
42
- const styleOptions = useMemo(() => stylesList.map((s: any) => ({
52
+ const styleOptions = useMemo(() => stylesList.map((s: {
53
+ id: string;
54
+ name: string;
55
+ emoji?: string;
56
+ icon?: string;
57
+ description?: string;
58
+ }) => ({
43
59
  value: s.id,
44
60
  label: s.name,
45
61
  emoji: s.emoji || s.icon, // Handle different formats
@@ -48,10 +64,8 @@ export const MemeGeneratorFeature: React.FC<MemeGeneratorFeatureProps> = ({
48
64
 
49
65
  const { state, setPrompt, generate, reset, isReady } = useTextToImageFeature({
50
66
  config: {
67
+ ...config,
51
68
  model: config.model || "fal-ai/nano-banana-edit",
52
- buildInput: config.buildInput,
53
- extractResult: config.extractResult,
54
- ...config
55
69
  },
56
70
  userId,
57
71
  });
@@ -6,6 +6,7 @@
6
6
  import * as React from "react";
7
7
  import { useMemo } from "react";
8
8
  import {
9
+ View,
9
10
  ScrollView,
10
11
  StyleSheet,
11
12
  Dimensions,
@@ -14,7 +15,6 @@ import {
14
15
  type DimensionValue,
15
16
  } from "react-native";
16
17
  import {
17
- Animated,
18
18
  useAppDesignTokens,
19
19
  } from "@umituz/react-native-design-system";
20
20
  import { ResultHeader } from "./ResultHeader";
@@ -93,7 +93,7 @@ export const GenerationResultContent: React.FC<
93
93
  }, [tokens, cfg, width]);
94
94
 
95
95
  return (
96
- <Animated.View style={[styles.container, modalStyle]}>
96
+ <View style={[styles.container, modalStyle]}>
97
97
  <ScrollView
98
98
  style={styles.scrollView}
99
99
  contentContainerStyle={styles.scrollContent}
@@ -123,6 +123,6 @@ export const GenerationResultContent: React.FC<
123
123
  config={cfg.actions}
124
124
  />
125
125
  </ScrollView>
126
- </Animated.View>
126
+ </View>
127
127
  );
128
128
  };
@@ -1,81 +0,0 @@
1
- declare const __DEV__: boolean;
2
- declare const console: {
3
- log: (...args: unknown[]) => void;
4
- error: (...args: unknown[]) => void;
5
- warn: (...args: unknown[]) => void;
6
- info: (...args: unknown[]) => void;
7
- debug: (...args: unknown[]) => void;
8
- };
9
-
10
- // React Native + React 19 compatibility fix
11
- // https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/67742
12
- declare module 'react-native' {
13
- import type {
14
- ComponentType,
15
- ReactElement,
16
- JSXElementConstructor,
17
- ReactNode,
18
- } from 'react';
19
-
20
- export interface ViewProps {
21
- children?: ReactNode;
22
- style?: any;
23
- testID?: string;
24
- accessible?: boolean;
25
- accessibilityLabel?: string;
26
- accessibilityHint?: string;
27
- accessibilityRole?: string;
28
- accessibilityState?: any;
29
- onLayout?: (event: any) => void;
30
- pointerEvents?: 'box-none' | 'box-only' | 'auto' | 'none';
31
- hitSlop?: any;
32
- removeClippedSubviews?: boolean;
33
- collapsable?: boolean;
34
- needsOffscreenAlphaCompositing?: boolean;
35
- renderToHardwareTextureAndroid?: boolean;
36
- shouldRasterizeIOS?: boolean;
37
- onAccessibilityTap?: () => void;
38
- onMagicTap?: () => void;
39
- [key: string]: any;
40
- }
41
-
42
- export interface TextProps {
43
- children?: ReactNode;
44
- style?: any;
45
- testID?: string;
46
- numberOfLines?: number;
47
- ellipsizeMode?: 'head' | 'middle' | 'tail' | 'clip';
48
- allowFontScaling?: boolean;
49
- adjustsFontSizeToFit?: boolean;
50
- minimumFontScale?: number;
51
- maxFontSizeMultiplier?: number;
52
- selectable?: boolean;
53
- selectionColor?: string;
54
- accessibilityLabel?: string;
55
- [key: string]: any;
56
- }
57
-
58
- export const View: ComponentType<ViewProps>;
59
- export const Text: ComponentType<TextProps>;
60
- export const Image: ComponentType<any>;
61
- export const ScrollView: ComponentType<any>;
62
- export const FlatList: ComponentType<any>;
63
- export const SectionList: ComponentType<any>;
64
- export const TextInput: ComponentType<any>;
65
- export const TouchableOpacity: ComponentType<any>;
66
- export const TouchableHighlight: ComponentType<any>;
67
- export const TouchableWithoutFeedback: ComponentType<any>;
68
- export const Pressable: ComponentType<any>;
69
- export const ActivityIndicator: ComponentType<any>;
70
- export const Modal: ComponentType<any>;
71
- export const SafeAreaView: ComponentType<any>;
72
- export const KeyboardAvoidingView: ComponentType<any>;
73
- export const StatusBar: ComponentType<any>;
74
- export const Animated: {
75
- View: ComponentType<any>;
76
- Text: ComponentType<any>;
77
- Image: ComponentType<any>;
78
- ScrollView: ComponentType<any>;
79
- [key: string]: any;
80
- };
81
- }