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/lib/module/index.js
CHANGED
|
@@ -1,15 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import VideoTrim from "./NativeVideoTrim.js";
|
|
4
4
|
import { processColor } from 'react-native';
|
|
5
|
-
|
|
5
|
+
export * from "./NativeVideoTrim.js";
|
|
6
|
+
function createBaseOptions(overrides = {}) {
|
|
7
|
+
return {
|
|
8
|
+
saveToPhoto: false,
|
|
9
|
+
type: 'video',
|
|
10
|
+
outputExt: 'mp4',
|
|
11
|
+
openDocumentsOnFinish: false,
|
|
12
|
+
openShareSheetOnFinish: false,
|
|
13
|
+
removeAfterSavedToPhoto: false,
|
|
14
|
+
removeAfterFailedToSavePhoto: false,
|
|
15
|
+
removeAfterSavedToDocuments: false,
|
|
16
|
+
removeAfterFailedToSaveDocuments: false,
|
|
17
|
+
removeAfterShared: false,
|
|
18
|
+
removeAfterFailedToShare: false,
|
|
19
|
+
enableRotation: false,
|
|
20
|
+
rotationAngle: 0,
|
|
21
|
+
...overrides
|
|
22
|
+
};
|
|
23
|
+
}
|
|
6
24
|
function createEditorConfig(overrides = {}) {
|
|
7
25
|
return {
|
|
8
26
|
enableHapticFeedback: true,
|
|
9
|
-
saveToPhoto: false,
|
|
10
27
|
maxDuration: -1,
|
|
11
|
-
|
|
12
|
-
minDuration: 1000,
|
|
28
|
+
minDuration: -1,
|
|
13
29
|
cancelButtonText: 'Cancel',
|
|
14
30
|
saveButtonText: 'Save',
|
|
15
31
|
enableCancelDialog: true,
|
|
@@ -24,18 +40,7 @@ function createEditorConfig(overrides = {}) {
|
|
|
24
40
|
saveDialogConfirmText: 'Proceed',
|
|
25
41
|
trimmingText: 'Trimming video...',
|
|
26
42
|
fullScreenModalIOS: false,
|
|
27
|
-
type: 'video',
|
|
28
|
-
outputExt: 'mp4',
|
|
29
|
-
openDocumentsOnFinish: false,
|
|
30
|
-
openShareSheetOnFinish: false,
|
|
31
|
-
removeAfterSavedToPhoto: false,
|
|
32
|
-
removeAfterFailedToSavePhoto: false,
|
|
33
|
-
removeAfterSavedToDocuments: false,
|
|
34
|
-
removeAfterFailedToSaveDocuments: false,
|
|
35
|
-
removeAfterShared: false,
|
|
36
|
-
removeAfterFailedToShare: false,
|
|
37
43
|
autoplay: false,
|
|
38
|
-
// Adjust default as needed
|
|
39
44
|
jumpToPositionOnLoad: -1,
|
|
40
45
|
closeWhenFinish: true,
|
|
41
46
|
enableCancelTrimming: true,
|
|
@@ -46,80 +51,100 @@ function createEditorConfig(overrides = {}) {
|
|
|
46
51
|
cancelTrimmingDialogCancelText: 'Close',
|
|
47
52
|
cancelTrimmingDialogConfirmText: 'Proceed',
|
|
48
53
|
headerText: '',
|
|
49
|
-
// Adjust default as needed
|
|
50
54
|
headerTextSize: 16,
|
|
51
55
|
headerTextColor: processColor('white'),
|
|
52
56
|
alertOnFailToLoad: true,
|
|
53
57
|
alertOnFailTitle: 'Error',
|
|
54
58
|
alertOnFailMessage: 'Fail to load media. Possibly invalid file or no network connection',
|
|
55
59
|
alertOnFailCloseText: 'Close',
|
|
60
|
+
...createBaseOptions(overrides),
|
|
61
|
+
...overrides
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function createTrimOptions(overrides = {}) {
|
|
65
|
+
return {
|
|
66
|
+
startTime: 0,
|
|
67
|
+
endTime: 1000,
|
|
68
|
+
...createBaseOptions(overrides),
|
|
56
69
|
...overrides
|
|
57
70
|
};
|
|
58
71
|
}
|
|
59
|
-
function noop() {}
|
|
60
72
|
|
|
61
73
|
/**
|
|
62
|
-
*
|
|
74
|
+
* Show video editor
|
|
63
75
|
*
|
|
64
|
-
* @param {string}
|
|
76
|
+
* @param {string} filePath: absolute non-empty file path to edit
|
|
65
77
|
* @param {EditorConfig} config: editor configuration
|
|
66
|
-
* @
|
|
78
|
+
* @param {Function} onEvent: event callback
|
|
79
|
+
* @returns {void}
|
|
67
80
|
*/
|
|
68
|
-
export function showEditor(filePath, config
|
|
81
|
+
export function showEditor(filePath, config) {
|
|
69
82
|
const {
|
|
70
83
|
headerTextColor
|
|
71
84
|
} = config;
|
|
72
85
|
const color = processColor(headerTextColor || 'white');
|
|
73
|
-
|
|
86
|
+
VideoTrim.showEditor(filePath, createEditorConfig({
|
|
74
87
|
...config,
|
|
75
88
|
headerTextColor: color
|
|
76
|
-
})
|
|
89
|
+
}));
|
|
77
90
|
}
|
|
78
91
|
|
|
79
92
|
/**
|
|
80
|
-
*
|
|
93
|
+
* List output files generated at all time
|
|
81
94
|
*
|
|
82
95
|
* @returns {Promise<string[]>} A **Promise** which resolves to array of files
|
|
83
96
|
*/
|
|
84
97
|
export function listFiles() {
|
|
85
|
-
return
|
|
98
|
+
return VideoTrim.listFiles();
|
|
86
99
|
}
|
|
87
100
|
|
|
88
101
|
/**
|
|
89
102
|
* Clean output files generated at all time
|
|
90
103
|
*
|
|
91
|
-
* @returns {Promise} A **Promise** which resolves to number of deleted files
|
|
104
|
+
* @returns {Promise<number>} A **Promise** which resolves to number of deleted files
|
|
92
105
|
*/
|
|
93
106
|
export function cleanFiles() {
|
|
94
|
-
return
|
|
107
|
+
return VideoTrim.cleanFiles();
|
|
95
108
|
}
|
|
96
109
|
|
|
97
110
|
/**
|
|
98
111
|
* Delete a file
|
|
99
112
|
*
|
|
100
113
|
* @param {string} filePath: absolute non-empty file path to delete
|
|
101
|
-
* @returns {Promise} A **Promise** which resolves `true` if successful
|
|
114
|
+
* @returns {Promise<boolean>} A **Promise** which resolves `true` if successful
|
|
102
115
|
*/
|
|
103
116
|
export function deleteFile(filePath) {
|
|
104
117
|
if (!filePath?.trim().length) {
|
|
105
118
|
throw new Error('File path cannot be empty!');
|
|
106
119
|
}
|
|
107
|
-
return
|
|
120
|
+
return VideoTrim.deleteFile(filePath);
|
|
108
121
|
}
|
|
109
122
|
|
|
110
123
|
/**
|
|
111
124
|
* Close editor
|
|
112
125
|
*/
|
|
113
|
-
export function closeEditor(
|
|
114
|
-
return
|
|
126
|
+
export function closeEditor() {
|
|
127
|
+
return VideoTrim.closeEditor();
|
|
115
128
|
}
|
|
116
129
|
|
|
117
130
|
/**
|
|
118
131
|
* Check if a file is valid audio or video file
|
|
119
132
|
*
|
|
120
|
-
* @
|
|
133
|
+
* @param {string} url: file path to validate
|
|
134
|
+
* @returns {Promise<FileValidationResult>} A **Promise** which resolves file info if successful
|
|
121
135
|
*/
|
|
122
136
|
export function isValidFile(url) {
|
|
123
|
-
return
|
|
137
|
+
return VideoTrim.isValidFile(url);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Trim a video file
|
|
142
|
+
*
|
|
143
|
+
* @param {string} url: absolute non-empty file path to edit
|
|
144
|
+
* @param {TrimOptions} options: trim options
|
|
145
|
+
* @returns {Promise<string>} A **Promise** which resolves to the trimmed file path
|
|
146
|
+
*/
|
|
147
|
+
export function trim(url, options) {
|
|
148
|
+
return VideoTrim.trim(url, createTrimOptions(options));
|
|
124
149
|
}
|
|
125
150
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["VideoTrim","processColor","createBaseOptions","overrides","saveToPhoto","type","outputExt","openDocumentsOnFinish","openShareSheetOnFinish","removeAfterSavedToPhoto","removeAfterFailedToSavePhoto","removeAfterSavedToDocuments","removeAfterFailedToSaveDocuments","removeAfterShared","removeAfterFailedToShare","enableRotation","rotationAngle","createEditorConfig","enableHapticFeedback","maxDuration","minDuration","cancelButtonText","saveButtonText","enableCancelDialog","cancelDialogTitle","cancelDialogMessage","cancelDialogCancelText","cancelDialogConfirmText","enableSaveDialog","saveDialogTitle","saveDialogMessage","saveDialogCancelText","saveDialogConfirmText","trimmingText","fullScreenModalIOS","autoplay","jumpToPositionOnLoad","closeWhenFinish","enableCancelTrimming","cancelTrimmingButtonText","enableCancelTrimmingDialog","cancelTrimmingDialogTitle","cancelTrimmingDialogMessage","cancelTrimmingDialogCancelText","cancelTrimmingDialogConfirmText","headerText","headerTextSize","headerTextColor","alertOnFailToLoad","alertOnFailTitle","alertOnFailMessage","alertOnFailCloseText","createTrimOptions","startTime","endTime","showEditor","filePath","config","color","listFiles","cleanFiles","deleteFile","trim","length","Error","closeEditor","isValidFile","url","options"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native';
|
|
2
|
+
import type { EventEmitter } from 'react-native/Libraries/Types/CodegenTypes';
|
|
3
|
+
export interface BaseOptions {
|
|
4
|
+
saveToPhoto: boolean;
|
|
5
|
+
type: string;
|
|
6
|
+
outputExt: string;
|
|
7
|
+
openDocumentsOnFinish: boolean;
|
|
8
|
+
openShareSheetOnFinish: boolean;
|
|
9
|
+
removeAfterSavedToPhoto: boolean;
|
|
10
|
+
removeAfterFailedToSavePhoto: boolean;
|
|
11
|
+
removeAfterSavedToDocuments: boolean;
|
|
12
|
+
removeAfterFailedToSaveDocuments: boolean;
|
|
13
|
+
removeAfterShared: boolean;
|
|
14
|
+
removeAfterFailedToShare: boolean;
|
|
15
|
+
enableRotation: boolean;
|
|
16
|
+
rotationAngle: number;
|
|
17
|
+
}
|
|
18
|
+
export interface EditorConfig extends BaseOptions {
|
|
19
|
+
enableHapticFeedback: boolean;
|
|
20
|
+
maxDuration: number;
|
|
21
|
+
minDuration: number;
|
|
22
|
+
cancelButtonText: string;
|
|
23
|
+
saveButtonText: string;
|
|
24
|
+
enableCancelDialog: boolean;
|
|
25
|
+
cancelDialogTitle: string;
|
|
26
|
+
cancelDialogMessage: string;
|
|
27
|
+
cancelDialogCancelText: string;
|
|
28
|
+
cancelDialogConfirmText: string;
|
|
29
|
+
enableSaveDialog: boolean;
|
|
30
|
+
saveDialogTitle: string;
|
|
31
|
+
saveDialogMessage: string;
|
|
32
|
+
saveDialogCancelText: string;
|
|
33
|
+
saveDialogConfirmText: string;
|
|
34
|
+
trimmingText: string;
|
|
35
|
+
fullScreenModalIOS: boolean;
|
|
36
|
+
autoplay: boolean;
|
|
37
|
+
jumpToPositionOnLoad: number;
|
|
38
|
+
closeWhenFinish: boolean;
|
|
39
|
+
enableCancelTrimming: boolean;
|
|
40
|
+
cancelTrimmingButtonText: string;
|
|
41
|
+
enableCancelTrimmingDialog: boolean;
|
|
42
|
+
cancelTrimmingDialogTitle: string;
|
|
43
|
+
cancelTrimmingDialogMessage: string;
|
|
44
|
+
cancelTrimmingDialogCancelText: string;
|
|
45
|
+
cancelTrimmingDialogConfirmText: string;
|
|
46
|
+
headerText: string;
|
|
47
|
+
headerTextSize: number;
|
|
48
|
+
headerTextColor: number;
|
|
49
|
+
alertOnFailToLoad: boolean;
|
|
50
|
+
alertOnFailTitle: string;
|
|
51
|
+
alertOnFailMessage: string;
|
|
52
|
+
alertOnFailCloseText: string;
|
|
53
|
+
}
|
|
54
|
+
export interface TrimOptions extends BaseOptions {
|
|
55
|
+
startTime: number;
|
|
56
|
+
endTime: number;
|
|
57
|
+
}
|
|
58
|
+
export interface FileValidationResult {
|
|
59
|
+
isValid: boolean;
|
|
60
|
+
fileType: string;
|
|
61
|
+
duration: number;
|
|
62
|
+
}
|
|
63
|
+
export interface Spec extends TurboModule {
|
|
64
|
+
showEditor(filePath: string, config: EditorConfig): void;
|
|
65
|
+
listFiles(): Promise<string[]>;
|
|
66
|
+
cleanFiles(): Promise<number>;
|
|
67
|
+
deleteFile(filePath: string): Promise<boolean>;
|
|
68
|
+
closeEditor(): void;
|
|
69
|
+
isValidFile(url: string): Promise<FileValidationResult>;
|
|
70
|
+
trim(url: string, options: TrimOptions): Promise<string>;
|
|
71
|
+
readonly onStartTrimming: EventEmitter<void>;
|
|
72
|
+
readonly onCancelTrimming: EventEmitter<void>;
|
|
73
|
+
readonly onCancel: EventEmitter<void>;
|
|
74
|
+
readonly onHide: EventEmitter<void>;
|
|
75
|
+
readonly onShow: EventEmitter<void>;
|
|
76
|
+
readonly onFinishTrimming: EventEmitter<{
|
|
77
|
+
outputPath: string;
|
|
78
|
+
startTime: number;
|
|
79
|
+
endTime: number;
|
|
80
|
+
duration: number;
|
|
81
|
+
}>;
|
|
82
|
+
readonly onLog: EventEmitter<{
|
|
83
|
+
level: string;
|
|
84
|
+
message: string;
|
|
85
|
+
sessionId: number;
|
|
86
|
+
}>;
|
|
87
|
+
readonly onStatistics: EventEmitter<{
|
|
88
|
+
sessionId: number;
|
|
89
|
+
videoFrameNumber: number;
|
|
90
|
+
videoFps: number;
|
|
91
|
+
videoQuality: number;
|
|
92
|
+
size: number;
|
|
93
|
+
time: number;
|
|
94
|
+
bitrate: number;
|
|
95
|
+
speed: number;
|
|
96
|
+
}>;
|
|
97
|
+
readonly onError: EventEmitter<{
|
|
98
|
+
message: string;
|
|
99
|
+
errorCode: string;
|
|
100
|
+
}>;
|
|
101
|
+
readonly onLoad: EventEmitter<{
|
|
102
|
+
duration: number;
|
|
103
|
+
}>;
|
|
104
|
+
}
|
|
105
|
+
declare const _default: Spec;
|
|
106
|
+
export default _default;
|
|
107
|
+
//# sourceMappingURL=NativeVideoTrim.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeVideoTrim.d.ts","sourceRoot":"","sources":["../../../src/NativeVideoTrim.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import type { EditorConfig, FileValidationResult } from './
|
|
1
|
+
import type { EditorConfig, FileValidationResult, TrimOptions } from './NativeVideoTrim';
|
|
2
|
+
export * from './NativeVideoTrim';
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
+
* Show video editor
|
|
4
5
|
*
|
|
5
|
-
* @param {string}
|
|
6
|
+
* @param {string} filePath: absolute non-empty file path to edit
|
|
6
7
|
* @param {EditorConfig} config: editor configuration
|
|
7
|
-
* @
|
|
8
|
+
* @param {Function} onEvent: event callback
|
|
9
|
+
* @returns {void}
|
|
8
10
|
*/
|
|
9
11
|
export declare function showEditor(filePath: string, config: Partial<Omit<EditorConfig, 'headerTextColor'>> & {
|
|
10
12
|
headerTextColor?: string;
|
|
11
|
-
}
|
|
13
|
+
}): void;
|
|
12
14
|
/**
|
|
13
|
-
*
|
|
15
|
+
* List output files generated at all time
|
|
14
16
|
*
|
|
15
17
|
* @returns {Promise<string[]>} A **Promise** which resolves to array of files
|
|
16
18
|
*/
|
|
@@ -18,24 +20,33 @@ export declare function listFiles(): Promise<string[]>;
|
|
|
18
20
|
/**
|
|
19
21
|
* Clean output files generated at all time
|
|
20
22
|
*
|
|
21
|
-
* @returns {Promise} A **Promise** which resolves to number of deleted files
|
|
23
|
+
* @returns {Promise<number>} A **Promise** which resolves to number of deleted files
|
|
22
24
|
*/
|
|
23
25
|
export declare function cleanFiles(): Promise<number>;
|
|
24
26
|
/**
|
|
25
27
|
* Delete a file
|
|
26
28
|
*
|
|
27
29
|
* @param {string} filePath: absolute non-empty file path to delete
|
|
28
|
-
* @returns {Promise} A **Promise** which resolves `true` if successful
|
|
30
|
+
* @returns {Promise<boolean>} A **Promise** which resolves `true` if successful
|
|
29
31
|
*/
|
|
30
32
|
export declare function deleteFile(filePath: string): Promise<boolean>;
|
|
31
33
|
/**
|
|
32
34
|
* Close editor
|
|
33
35
|
*/
|
|
34
|
-
export declare function closeEditor(
|
|
36
|
+
export declare function closeEditor(): void;
|
|
35
37
|
/**
|
|
36
38
|
* Check if a file is valid audio or video file
|
|
37
39
|
*
|
|
38
|
-
* @
|
|
40
|
+
* @param {string} url: file path to validate
|
|
41
|
+
* @returns {Promise<FileValidationResult>} A **Promise** which resolves file info if successful
|
|
39
42
|
*/
|
|
40
43
|
export declare function isValidFile(url: string): Promise<FileValidationResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Trim a video file
|
|
46
|
+
*
|
|
47
|
+
* @param {string} url: absolute non-empty file path to edit
|
|
48
|
+
* @param {TrimOptions} options: trim options
|
|
49
|
+
* @returns {Promise<string>} A **Promise** which resolves to the trimmed file path
|
|
50
|
+
*/
|
|
51
|
+
export declare function trim(url: string, options: Partial<TrimOptions>): Promise<string>;
|
|
41
52
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,cAAc,mBAAmB,CAAC;AA0ElC;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,GAAG;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,IAAI,CAWN;AAED;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK7D;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAClB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,CAEjB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-video-trim",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Video trimmer for your React Native app",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
"android",
|
|
19
19
|
"ios",
|
|
20
20
|
"cpp",
|
|
21
|
-
"nitrogen",
|
|
22
21
|
"*.podspec",
|
|
23
22
|
"react-native.config.js",
|
|
24
23
|
"!ios/build",
|
|
@@ -39,7 +38,6 @@
|
|
|
39
38
|
"lint": "eslint \"**/*.{js,ts,tsx}\"",
|
|
40
39
|
"clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
|
|
41
40
|
"prepare": "bob build",
|
|
42
|
-
"nitrogen": "nitro-codegen",
|
|
43
41
|
"release": "release-it --only-version"
|
|
44
42
|
},
|
|
45
43
|
"keywords": [
|
|
@@ -66,6 +64,7 @@
|
|
|
66
64
|
"@eslint/eslintrc": "^3.3.0",
|
|
67
65
|
"@eslint/js": "^9.22.0",
|
|
68
66
|
"@evilmartians/lefthook": "^1.5.0",
|
|
67
|
+
"@react-native-community/cli": "15.0.0-alpha.2",
|
|
69
68
|
"@react-native/babel-preset": "0.79.2",
|
|
70
69
|
"@react-native/eslint-config": "^0.78.0",
|
|
71
70
|
"@release-it/conventional-changelog": "^9.0.2",
|
|
@@ -77,20 +76,17 @@
|
|
|
77
76
|
"eslint-config-prettier": "^10.1.1",
|
|
78
77
|
"eslint-plugin-prettier": "^5.2.3",
|
|
79
78
|
"jest": "^29.7.0",
|
|
80
|
-
"nitro-codegen": "^0.25.2",
|
|
81
79
|
"prettier": "^3.0.3",
|
|
82
80
|
"react": "19.0.0",
|
|
83
81
|
"react-native": "0.79.2",
|
|
84
|
-
"react-native-builder-bob": "^0.40.
|
|
85
|
-
"react-native-nitro-modules": "^0.25.2",
|
|
82
|
+
"react-native-builder-bob": "^0.40.8",
|
|
86
83
|
"release-it": "^17.10.0",
|
|
87
84
|
"turbo": "^1.10.7",
|
|
88
85
|
"typescript": "^5.8.3"
|
|
89
86
|
},
|
|
90
87
|
"peerDependencies": {
|
|
91
88
|
"react": "*",
|
|
92
|
-
"react-native": "*"
|
|
93
|
-
"react-native-nitro-modules": "^0.25.2"
|
|
89
|
+
"react-native": "*"
|
|
94
90
|
},
|
|
95
91
|
"workspaces": [
|
|
96
92
|
"example"
|
|
@@ -138,13 +134,6 @@
|
|
|
138
134
|
"source": "src",
|
|
139
135
|
"output": "lib",
|
|
140
136
|
"targets": [
|
|
141
|
-
[
|
|
142
|
-
"custom",
|
|
143
|
-
{
|
|
144
|
-
"script": "nitrogen",
|
|
145
|
-
"clean": "nitrogen/"
|
|
146
|
-
}
|
|
147
|
-
],
|
|
148
137
|
[
|
|
149
138
|
"module",
|
|
150
139
|
{
|
|
@@ -159,9 +148,17 @@
|
|
|
159
148
|
]
|
|
160
149
|
]
|
|
161
150
|
},
|
|
151
|
+
"codegenConfig": {
|
|
152
|
+
"name": "VideoTrimSpec",
|
|
153
|
+
"type": "modules",
|
|
154
|
+
"jsSrcsDir": "src",
|
|
155
|
+
"android": {
|
|
156
|
+
"javaPackageName": "com.videotrim"
|
|
157
|
+
}
|
|
158
|
+
},
|
|
162
159
|
"create-react-native-library": {
|
|
163
|
-
"languages": "kotlin-
|
|
164
|
-
"type": "
|
|
165
|
-
"version": "0.
|
|
160
|
+
"languages": "kotlin-objc",
|
|
161
|
+
"type": "turbo-module",
|
|
162
|
+
"version": "0.51.0"
|
|
166
163
|
}
|
|
167
164
|
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native';
|
|
2
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
3
|
+
import type { EventEmitter } from 'react-native/Libraries/Types/CodegenTypes';
|
|
4
|
+
|
|
5
|
+
export interface BaseOptions {
|
|
6
|
+
saveToPhoto: boolean;
|
|
7
|
+
type: string;
|
|
8
|
+
outputExt: string;
|
|
9
|
+
openDocumentsOnFinish: boolean;
|
|
10
|
+
openShareSheetOnFinish: boolean;
|
|
11
|
+
removeAfterSavedToPhoto: boolean;
|
|
12
|
+
removeAfterFailedToSavePhoto: boolean;
|
|
13
|
+
removeAfterSavedToDocuments: boolean;
|
|
14
|
+
removeAfterFailedToSaveDocuments: boolean;
|
|
15
|
+
removeAfterShared: boolean;
|
|
16
|
+
removeAfterFailedToShare: boolean;
|
|
17
|
+
enableRotation: boolean;
|
|
18
|
+
rotationAngle: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface EditorConfig extends BaseOptions {
|
|
22
|
+
enableHapticFeedback: boolean;
|
|
23
|
+
maxDuration: number;
|
|
24
|
+
minDuration: number;
|
|
25
|
+
cancelButtonText: string;
|
|
26
|
+
saveButtonText: string;
|
|
27
|
+
enableCancelDialog: boolean;
|
|
28
|
+
cancelDialogTitle: string;
|
|
29
|
+
cancelDialogMessage: string;
|
|
30
|
+
cancelDialogCancelText: string;
|
|
31
|
+
cancelDialogConfirmText: string;
|
|
32
|
+
enableSaveDialog: boolean;
|
|
33
|
+
saveDialogTitle: string;
|
|
34
|
+
saveDialogMessage: string;
|
|
35
|
+
saveDialogCancelText: string;
|
|
36
|
+
saveDialogConfirmText: string;
|
|
37
|
+
trimmingText: string;
|
|
38
|
+
fullScreenModalIOS: boolean;
|
|
39
|
+
autoplay: boolean;
|
|
40
|
+
jumpToPositionOnLoad: number;
|
|
41
|
+
closeWhenFinish: boolean;
|
|
42
|
+
enableCancelTrimming: boolean;
|
|
43
|
+
cancelTrimmingButtonText: string;
|
|
44
|
+
enableCancelTrimmingDialog: boolean;
|
|
45
|
+
cancelTrimmingDialogTitle: string;
|
|
46
|
+
cancelTrimmingDialogMessage: string;
|
|
47
|
+
cancelTrimmingDialogCancelText: string;
|
|
48
|
+
cancelTrimmingDialogConfirmText: string;
|
|
49
|
+
headerText: string;
|
|
50
|
+
headerTextSize: number;
|
|
51
|
+
headerTextColor: number;
|
|
52
|
+
alertOnFailToLoad: boolean;
|
|
53
|
+
alertOnFailTitle: string;
|
|
54
|
+
alertOnFailMessage: string;
|
|
55
|
+
alertOnFailCloseText: string;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface TrimOptions extends BaseOptions {
|
|
59
|
+
startTime: number;
|
|
60
|
+
endTime: number;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface FileValidationResult {
|
|
64
|
+
isValid: boolean;
|
|
65
|
+
fileType: string;
|
|
66
|
+
duration: number;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface Spec extends TurboModule {
|
|
70
|
+
showEditor(filePath: string, config: EditorConfig): void;
|
|
71
|
+
listFiles(): Promise<string[]>;
|
|
72
|
+
cleanFiles(): Promise<number>;
|
|
73
|
+
deleteFile(filePath: string): Promise<boolean>;
|
|
74
|
+
closeEditor(): void;
|
|
75
|
+
isValidFile(url: string): Promise<FileValidationResult>;
|
|
76
|
+
trim(url: string, options: TrimOptions): Promise<string>;
|
|
77
|
+
|
|
78
|
+
readonly onStartTrimming: EventEmitter<void>;
|
|
79
|
+
readonly onCancelTrimming: EventEmitter<void>;
|
|
80
|
+
readonly onCancel: EventEmitter<void>;
|
|
81
|
+
readonly onHide: EventEmitter<void>;
|
|
82
|
+
readonly onShow: EventEmitter<void>;
|
|
83
|
+
readonly onFinishTrimming: EventEmitter<{
|
|
84
|
+
outputPath: string;
|
|
85
|
+
startTime: number;
|
|
86
|
+
endTime: number;
|
|
87
|
+
duration: number;
|
|
88
|
+
}>;
|
|
89
|
+
readonly onLog: EventEmitter<{
|
|
90
|
+
level: string;
|
|
91
|
+
message: string;
|
|
92
|
+
sessionId: number;
|
|
93
|
+
}>;
|
|
94
|
+
readonly onStatistics: EventEmitter<{
|
|
95
|
+
sessionId: number;
|
|
96
|
+
videoFrameNumber: number;
|
|
97
|
+
videoFps: number;
|
|
98
|
+
videoQuality: number;
|
|
99
|
+
size: number;
|
|
100
|
+
time: number;
|
|
101
|
+
bitrate: number;
|
|
102
|
+
speed: number;
|
|
103
|
+
}>;
|
|
104
|
+
readonly onError: EventEmitter<{
|
|
105
|
+
message: string;
|
|
106
|
+
errorCode: string;
|
|
107
|
+
}>;
|
|
108
|
+
readonly onLoad: EventEmitter<{
|
|
109
|
+
duration: number;
|
|
110
|
+
}>;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export default TurboModuleRegistry.getEnforcing<Spec>('VideoTrim');
|