react-native-video-trim 4.0.0 → 5.0.0
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/LICENSE +1 -1
- package/README.md +124 -83
- package/VideoTrim.podspec +4 -4
- package/android/build.gradle +15 -54
- package/android/gradle.properties +2 -0
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/com/videotrim/VideoTrimModule.kt +660 -0
- package/android/src/main/java/com/videotrim/VideoTrimPackage.kt +33 -0
- package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/enums/ErrorCode.java +1 -1
- package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/interfaces/IVideoTrimmerView.java +1 -1
- package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/interfaces/VideoTrimListener.java +5 -4
- package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/utils/MediaMetadataUtil.java +1 -1
- package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/utils/StorageUtil.java +1 -1
- package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/utils/VideoTrimmerUtil.java +49 -39
- package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/widgets/VideoTrimmerView.java +49 -46
- package/ios/AssetLoader.h +19 -0
- package/ios/AssetLoader.mm +87 -0
- package/ios/ErrorCode.h +9 -0
- package/ios/ProgressAlertController.h +15 -0
- package/ios/ProgressAlertController.mm +78 -0
- package/ios/VideoTrim.h +31 -0
- package/ios/VideoTrim.mm +663 -0
- package/ios/VideoTrimmer.h +67 -0
- package/ios/VideoTrimmer.mm +863 -0
- package/ios/VideoTrimmerThumb.h +23 -0
- package/ios/VideoTrimmerThumb.mm +175 -0
- package/ios/VideoTrimmerViewController.h +52 -0
- package/ios/VideoTrimmerViewController.mm +533 -0
- package/lib/module/NativeVideoTrim.js +5 -0
- package/lib/module/NativeVideoTrim.js.map +1 -0
- package/lib/module/index.js +59 -34
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/NativeVideoTrim.d.ts +107 -0
- package/lib/typescript/src/NativeVideoTrim.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +21 -10
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +15 -18
- package/src/NativeVideoTrim.ts +113 -0
- package/src/index.tsx +68 -39
- package/android/CMakeLists.txt +0 -24
- package/android/src/main/cpp/cpp-adapter.cpp +0 -6
- package/android/src/main/java/com/margelo/nitro/videotrim/VideoTrim.kt +0 -629
- package/android/src/main/java/com/margelo/nitro/videotrim/VideoTrimPackage.kt +0 -22
- package/ios/AssetLoader.swift +0 -99
- package/ios/ErrorCode.swift +0 -17
- package/ios/ProgressAlertController.swift +0 -100
- package/ios/VideoTrim.swift +0 -60
- package/ios/VideoTrimImpl.swift +0 -860
- package/ios/VideoTrimmer.swift +0 -872
- package/ios/VideoTrimmerThumb.swift +0 -175
- package/ios/VideoTrimmerViewController.swift +0 -557
- package/lib/module/VideoTrim.nitro.js +0 -4
- package/lib/module/VideoTrim.nitro.js.map +0 -1
- package/lib/typescript/src/VideoTrim.nitro.d.ts +0 -240
- package/lib/typescript/src/VideoTrim.nitro.d.ts.map +0 -1
- package/nitrogen/generated/android/c++/JEditorConfig.hpp +0 -229
- package/nitrogen/generated/android/c++/JFileValidationResult.hpp +0 -61
- package/nitrogen/generated/android/c++/JFunc_void.hpp +0 -74
- package/nitrogen/generated/android/c++/JFunc_void_std__string_std__unordered_map_std__string__std__string_.hpp +0 -89
- package/nitrogen/generated/android/c++/JHybridVideoTrimSpec.cpp +0 -131
- package/nitrogen/generated/android/c++/JHybridVideoTrimSpec.hpp +0 -67
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/EditorConfig.kt +0 -70
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/FileValidationResult.kt +0 -28
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/Func_void.kt +0 -80
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/Func_void_std__string_std__unordered_map_std__string__std__string_.kt +0 -80
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/HybridVideoTrimSpec.kt +0 -82
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/videotrimOnLoad.kt +0 -35
- package/nitrogen/generated/android/videotrim+autolinking.cmake +0 -78
- package/nitrogen/generated/android/videotrim+autolinking.gradle +0 -27
- package/nitrogen/generated/android/videotrimOnLoad.cpp +0 -50
- package/nitrogen/generated/android/videotrimOnLoad.hpp +0 -25
- package/nitrogen/generated/ios/VideoTrim+autolinking.rb +0 -60
- package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Bridge.cpp +0 -88
- package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Bridge.hpp +0 -331
- package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Umbrella.hpp +0 -53
- package/nitrogen/generated/ios/VideoTrimAutolinking.mm +0 -33
- package/nitrogen/generated/ios/VideoTrimAutolinking.swift +0 -25
- package/nitrogen/generated/ios/c++/HybridVideoTrimSpecSwift.cpp +0 -11
- package/nitrogen/generated/ios/c++/HybridVideoTrimSpecSwift.hpp +0 -116
- package/nitrogen/generated/ios/swift/EditorConfig.swift +0 -519
- package/nitrogen/generated/ios/swift/FileValidationResult.swift +0 -57
- package/nitrogen/generated/ios/swift/Func_void.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_FileValidationResult.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_double.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +0 -46
- package/nitrogen/generated/ios/swift/Func_void_std__string_std__unordered_map_std__string__std__string_.swift +0 -54
- package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +0 -46
- package/nitrogen/generated/ios/swift/HybridVideoTrimSpec.swift +0 -53
- package/nitrogen/generated/ios/swift/HybridVideoTrimSpec_cxx.swift +0 -222
- package/nitrogen/generated/shared/c++/EditorConfig.hpp +0 -245
- package/nitrogen/generated/shared/c++/FileValidationResult.hpp +0 -77
- package/nitrogen/generated/shared/c++/HybridVideoTrimSpec.cpp +0 -26
- package/nitrogen/generated/shared/c++/HybridVideoTrimSpec.hpp +0 -76
- package/src/VideoTrim.nitro.ts +0 -244
package/src/index.tsx
CHANGED
|
@@ -1,22 +1,39 @@
|
|
|
1
|
-
import
|
|
1
|
+
import VideoTrim from './NativeVideoTrim';
|
|
2
2
|
import type {
|
|
3
|
+
BaseOptions,
|
|
3
4
|
EditorConfig,
|
|
4
5
|
FileValidationResult,
|
|
5
|
-
|
|
6
|
-
} from './
|
|
6
|
+
TrimOptions,
|
|
7
|
+
} from './NativeVideoTrim';
|
|
7
8
|
import { processColor } from 'react-native';
|
|
9
|
+
export * from './NativeVideoTrim';
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
function createBaseOptions(overrides: Partial<BaseOptions> = {}): BaseOptions {
|
|
12
|
+
return {
|
|
13
|
+
saveToPhoto: false,
|
|
14
|
+
type: 'video',
|
|
15
|
+
outputExt: 'mp4',
|
|
16
|
+
openDocumentsOnFinish: false,
|
|
17
|
+
openShareSheetOnFinish: false,
|
|
18
|
+
removeAfterSavedToPhoto: false,
|
|
19
|
+
removeAfterFailedToSavePhoto: false,
|
|
20
|
+
removeAfterSavedToDocuments: false,
|
|
21
|
+
removeAfterFailedToSaveDocuments: false,
|
|
22
|
+
removeAfterShared: false,
|
|
23
|
+
removeAfterFailedToShare: false,
|
|
24
|
+
enableRotation: false,
|
|
25
|
+
rotationAngle: 0,
|
|
26
|
+
...overrides,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
11
29
|
|
|
12
30
|
function createEditorConfig(
|
|
13
31
|
overrides: Partial<EditorConfig> = {}
|
|
14
32
|
): EditorConfig {
|
|
15
33
|
return {
|
|
16
34
|
enableHapticFeedback: true,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
minDuration: 1000,
|
|
35
|
+
maxDuration: -1,
|
|
36
|
+
minDuration: -1,
|
|
20
37
|
cancelButtonText: 'Cancel',
|
|
21
38
|
saveButtonText: 'Save',
|
|
22
39
|
enableCancelDialog: true,
|
|
@@ -31,17 +48,7 @@ function createEditorConfig(
|
|
|
31
48
|
saveDialogConfirmText: 'Proceed',
|
|
32
49
|
trimmingText: 'Trimming video...',
|
|
33
50
|
fullScreenModalIOS: false,
|
|
34
|
-
|
|
35
|
-
outputExt: 'mp4',
|
|
36
|
-
openDocumentsOnFinish: false,
|
|
37
|
-
openShareSheetOnFinish: false,
|
|
38
|
-
removeAfterSavedToPhoto: false,
|
|
39
|
-
removeAfterFailedToSavePhoto: false,
|
|
40
|
-
removeAfterSavedToDocuments: false,
|
|
41
|
-
removeAfterFailedToSaveDocuments: false,
|
|
42
|
-
removeAfterShared: false,
|
|
43
|
-
removeAfterFailedToShare: false,
|
|
44
|
-
autoplay: false, // Adjust default as needed
|
|
51
|
+
autoplay: false,
|
|
45
52
|
jumpToPositionOnLoad: -1,
|
|
46
53
|
closeWhenFinish: true,
|
|
47
54
|
enableCancelTrimming: true,
|
|
@@ -51,7 +58,7 @@ function createEditorConfig(
|
|
|
51
58
|
cancelTrimmingDialogMessage: 'Are you sure want to cancel trimming?',
|
|
52
59
|
cancelTrimmingDialogCancelText: 'Close',
|
|
53
60
|
cancelTrimmingDialogConfirmText: 'Proceed',
|
|
54
|
-
headerText: '',
|
|
61
|
+
headerText: '',
|
|
55
62
|
headerTextSize: 16,
|
|
56
63
|
headerTextColor: processColor('white') as number,
|
|
57
64
|
alertOnFailToLoad: true,
|
|
@@ -59,82 +66,104 @@ function createEditorConfig(
|
|
|
59
66
|
alertOnFailMessage:
|
|
60
67
|
'Fail to load media. Possibly invalid file or no network connection',
|
|
61
68
|
alertOnFailCloseText: 'Close',
|
|
69
|
+
...createBaseOptions(overrides),
|
|
62
70
|
...overrides,
|
|
63
71
|
};
|
|
64
72
|
}
|
|
65
73
|
|
|
66
|
-
function
|
|
74
|
+
function createTrimOptions(overrides: Partial<TrimOptions> = {}): TrimOptions {
|
|
75
|
+
return {
|
|
76
|
+
startTime: 0,
|
|
77
|
+
endTime: 1000,
|
|
78
|
+
...createBaseOptions(overrides),
|
|
79
|
+
...overrides,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
67
82
|
|
|
68
83
|
/**
|
|
69
|
-
*
|
|
84
|
+
* Show video editor
|
|
70
85
|
*
|
|
71
|
-
* @param {string}
|
|
86
|
+
* @param {string} filePath: absolute non-empty file path to edit
|
|
72
87
|
* @param {EditorConfig} config: editor configuration
|
|
73
|
-
* @
|
|
88
|
+
* @param {Function} onEvent: event callback
|
|
89
|
+
* @returns {void}
|
|
74
90
|
*/
|
|
75
91
|
export function showEditor(
|
|
76
92
|
filePath: string,
|
|
77
93
|
config: Partial<Omit<EditorConfig, 'headerTextColor'>> & {
|
|
78
94
|
headerTextColor?: string;
|
|
79
|
-
}
|
|
80
|
-
onEvent?: (eventName: string, payload: Record<string, string>) => void
|
|
95
|
+
}
|
|
81
96
|
): void {
|
|
82
97
|
const { headerTextColor } = config;
|
|
83
98
|
const color = processColor(headerTextColor || 'white');
|
|
84
99
|
|
|
85
|
-
|
|
100
|
+
VideoTrim.showEditor(
|
|
86
101
|
filePath,
|
|
87
102
|
createEditorConfig({
|
|
88
103
|
...config,
|
|
89
104
|
headerTextColor: color as any,
|
|
90
|
-
})
|
|
91
|
-
onEvent || noop
|
|
105
|
+
})
|
|
92
106
|
);
|
|
93
107
|
}
|
|
94
108
|
|
|
95
109
|
/**
|
|
96
|
-
*
|
|
110
|
+
* List output files generated at all time
|
|
97
111
|
*
|
|
98
112
|
* @returns {Promise<string[]>} A **Promise** which resolves to array of files
|
|
99
113
|
*/
|
|
100
114
|
export function listFiles(): Promise<string[]> {
|
|
101
|
-
return
|
|
115
|
+
return VideoTrim.listFiles();
|
|
102
116
|
}
|
|
103
117
|
|
|
104
118
|
/**
|
|
105
119
|
* Clean output files generated at all time
|
|
106
120
|
*
|
|
107
|
-
* @returns {Promise} A **Promise** which resolves to number of deleted files
|
|
121
|
+
* @returns {Promise<number>} A **Promise** which resolves to number of deleted files
|
|
108
122
|
*/
|
|
109
123
|
export function cleanFiles(): Promise<number> {
|
|
110
|
-
return
|
|
124
|
+
return VideoTrim.cleanFiles();
|
|
111
125
|
}
|
|
112
126
|
|
|
113
127
|
/**
|
|
114
128
|
* Delete a file
|
|
115
129
|
*
|
|
116
130
|
* @param {string} filePath: absolute non-empty file path to delete
|
|
117
|
-
* @returns {Promise} A **Promise** which resolves `true` if successful
|
|
131
|
+
* @returns {Promise<boolean>} A **Promise** which resolves `true` if successful
|
|
118
132
|
*/
|
|
119
133
|
export function deleteFile(filePath: string): Promise<boolean> {
|
|
120
134
|
if (!filePath?.trim().length) {
|
|
121
135
|
throw new Error('File path cannot be empty!');
|
|
122
136
|
}
|
|
123
|
-
return
|
|
137
|
+
return VideoTrim.deleteFile(filePath);
|
|
124
138
|
}
|
|
125
139
|
|
|
126
140
|
/**
|
|
127
141
|
* Close editor
|
|
128
142
|
*/
|
|
129
|
-
export function closeEditor(
|
|
130
|
-
return
|
|
143
|
+
export function closeEditor(): void {
|
|
144
|
+
return VideoTrim.closeEditor();
|
|
131
145
|
}
|
|
132
146
|
|
|
133
147
|
/**
|
|
134
148
|
* Check if a file is valid audio or video file
|
|
135
149
|
*
|
|
136
|
-
* @
|
|
150
|
+
* @param {string} url: file path to validate
|
|
151
|
+
* @returns {Promise<FileValidationResult>} A **Promise** which resolves file info if successful
|
|
137
152
|
*/
|
|
138
153
|
export function isValidFile(url: string): Promise<FileValidationResult> {
|
|
139
|
-
return
|
|
154
|
+
return VideoTrim.isValidFile(url);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Trim a video file
|
|
159
|
+
*
|
|
160
|
+
* @param {string} url: absolute non-empty file path to edit
|
|
161
|
+
* @param {TrimOptions} options: trim options
|
|
162
|
+
* @returns {Promise<string>} A **Promise** which resolves to the trimmed file path
|
|
163
|
+
*/
|
|
164
|
+
export function trim(
|
|
165
|
+
url: string,
|
|
166
|
+
options: Partial<TrimOptions>
|
|
167
|
+
): Promise<string> {
|
|
168
|
+
return VideoTrim.trim(url, createTrimOptions(options));
|
|
140
169
|
}
|
package/android/CMakeLists.txt
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
project(videotrim)
|
|
2
|
-
cmake_minimum_required(VERSION 3.9.0)
|
|
3
|
-
|
|
4
|
-
set(PACKAGE_NAME videotrim)
|
|
5
|
-
set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
6
|
-
set(CMAKE_CXX_STANDARD 20)
|
|
7
|
-
|
|
8
|
-
# Define C++ library and add all sources
|
|
9
|
-
add_library(${PACKAGE_NAME} SHARED src/main/cpp/cpp-adapter.cpp)
|
|
10
|
-
|
|
11
|
-
# Add Nitrogen specs :)
|
|
12
|
-
include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/videotrim+autolinking.cmake)
|
|
13
|
-
|
|
14
|
-
# Set up local includes
|
|
15
|
-
include_directories("src/main/cpp" "../cpp")
|
|
16
|
-
|
|
17
|
-
find_library(LOG_LIB log)
|
|
18
|
-
|
|
19
|
-
# Link all libraries together
|
|
20
|
-
target_link_libraries(
|
|
21
|
-
${PACKAGE_NAME}
|
|
22
|
-
${LOG_LIB}
|
|
23
|
-
android # <-- Android core
|
|
24
|
-
)
|