react-native-video-trim 4.1.0 → 5.0.1
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 +89 -76
- package/VideoTrim.podspec +3 -3
- package/android/build.gradle +6 -53
- package/android/gradle.properties +1 -1
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/com/{margelo/nitro/videotrim/VideoTrim.kt → videotrim/VideoTrimModule.kt} +246 -232
- 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 +20 -18
- package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/widgets/VideoTrimmerView.java +44 -45
- 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 +24 -24
- 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 +16 -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 +29 -31
- 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/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 -67
- package/ios/VideoTrimImpl.swift +0 -957
- 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 -257
- package/lib/typescript/src/VideoTrim.nitro.d.ts.map +0 -1
- package/nitrogen/generated/android/c++/JEditorConfig.hpp +0 -237
- 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 -151
- package/nitrogen/generated/android/c++/JHybridVideoTrimSpec.hpp +0 -68
- package/nitrogen/generated/android/c++/JTrimOptions.hpp +0 -109
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/EditorConfig.kt +0 -72
- 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 -86
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/TrimOptions.kt +0 -40
- 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 -96
- package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Bridge.hpp +0 -374
- package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Umbrella.hpp +0 -56
- 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 -127
- package/nitrogen/generated/ios/swift/EditorConfig.swift +0 -541
- 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.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 -54
- package/nitrogen/generated/ios/swift/HybridVideoTrimSpec_cxx.swift +0 -241
- package/nitrogen/generated/ios/swift/TrimOptions.swift +0 -189
- package/nitrogen/generated/shared/c++/EditorConfig.hpp +0 -253
- package/nitrogen/generated/shared/c++/FileValidationResult.hpp +0 -77
- package/nitrogen/generated/shared/c++/HybridVideoTrimSpec.cpp +0 -27
- package/nitrogen/generated/shared/c++/HybridVideoTrimSpec.hpp +0 -80
- package/nitrogen/generated/shared/c++/TrimOptions.hpp +0 -125
- package/src/VideoTrim.nitro.ts +0 -263
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,19 @@
|
|
|
1
|
-
import
|
|
1
|
+
import VideoTrim from './NativeVideoTrim';
|
|
2
|
+
import type { EditorConfig, FileValidationResult, TrimOptions } from './NativeVideoTrim';
|
|
3
|
+
export * from './NativeVideoTrim';
|
|
2
4
|
/**
|
|
3
|
-
*
|
|
5
|
+
* Show video editor
|
|
4
6
|
*
|
|
5
|
-
* @param {string}
|
|
7
|
+
* @param {string} filePath: absolute non-empty file path to edit
|
|
6
8
|
* @param {EditorConfig} config: editor configuration
|
|
7
|
-
* @
|
|
9
|
+
* @param {Function} onEvent: event callback
|
|
10
|
+
* @returns {void}
|
|
8
11
|
*/
|
|
9
12
|
export declare function showEditor(filePath: string, config: Partial<Omit<EditorConfig, 'headerTextColor'>> & {
|
|
10
13
|
headerTextColor?: string;
|
|
11
|
-
}
|
|
14
|
+
}): void;
|
|
12
15
|
/**
|
|
13
|
-
*
|
|
16
|
+
* List output files generated at all time
|
|
14
17
|
*
|
|
15
18
|
* @returns {Promise<string[]>} A **Promise** which resolves to array of files
|
|
16
19
|
*/
|
|
@@ -18,24 +21,25 @@ export declare function listFiles(): Promise<string[]>;
|
|
|
18
21
|
/**
|
|
19
22
|
* Clean output files generated at all time
|
|
20
23
|
*
|
|
21
|
-
* @returns {Promise} A **Promise** which resolves to number of deleted files
|
|
24
|
+
* @returns {Promise<number>} A **Promise** which resolves to number of deleted files
|
|
22
25
|
*/
|
|
23
26
|
export declare function cleanFiles(): Promise<number>;
|
|
24
27
|
/**
|
|
25
28
|
* Delete a file
|
|
26
29
|
*
|
|
27
30
|
* @param {string} filePath: absolute non-empty file path to delete
|
|
28
|
-
* @returns {Promise} A **Promise** which resolves `true` if successful
|
|
31
|
+
* @returns {Promise<boolean>} A **Promise** which resolves `true` if successful
|
|
29
32
|
*/
|
|
30
33
|
export declare function deleteFile(filePath: string): Promise<boolean>;
|
|
31
34
|
/**
|
|
32
35
|
* Close editor
|
|
33
36
|
*/
|
|
34
|
-
export declare function closeEditor(
|
|
37
|
+
export declare function closeEditor(): void;
|
|
35
38
|
/**
|
|
36
39
|
* Check if a file is valid audio or video file
|
|
37
40
|
*
|
|
38
|
-
* @
|
|
41
|
+
* @param {string} url: file path to validate
|
|
42
|
+
* @returns {Promise<FileValidationResult>} A **Promise** which resolves file info if successful
|
|
39
43
|
*/
|
|
40
44
|
export declare function isValidFile(url: string): Promise<FileValidationResult>;
|
|
41
45
|
/**
|
|
@@ -46,4 +50,6 @@ export declare function isValidFile(url: string): Promise<FileValidationResult>;
|
|
|
46
50
|
* @returns {Promise<string>} A **Promise** which resolves to the trimmed file path
|
|
47
51
|
*/
|
|
48
52
|
export declare function trim(url: string, options: Partial<TrimOptions>): Promise<string>;
|
|
53
|
+
export * from './NativeVideoTrim';
|
|
54
|
+
export default VideoTrim;
|
|
49
55
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,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;AAED,cAAc,mBAAmB,CAAC;AAClC,eAAe,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-video-trim",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.1",
|
|
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');
|
package/src/index.tsx
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import VideoTrim from './NativeVideoTrim';
|
|
2
2
|
import type {
|
|
3
3
|
BaseOptions,
|
|
4
4
|
EditorConfig,
|
|
5
5
|
FileValidationResult,
|
|
6
6
|
TrimOptions,
|
|
7
|
-
|
|
8
|
-
} from './VideoTrim.nitro';
|
|
7
|
+
} from './NativeVideoTrim';
|
|
9
8
|
import { processColor } from 'react-native';
|
|
10
|
-
|
|
11
|
-
const VideoTrimHybridObject =
|
|
12
|
-
NitroModules.createHybridObject<VideoTrim>('VideoTrim');
|
|
9
|
+
export * from './NativeVideoTrim';
|
|
13
10
|
|
|
14
11
|
function createBaseOptions(overrides: Partial<BaseOptions> = {}): BaseOptions {
|
|
15
12
|
return {
|
|
@@ -35,8 +32,8 @@ function createEditorConfig(
|
|
|
35
32
|
): EditorConfig {
|
|
36
33
|
return {
|
|
37
34
|
enableHapticFeedback: true,
|
|
38
|
-
maxDuration: -1,
|
|
39
|
-
minDuration:
|
|
35
|
+
maxDuration: -1,
|
|
36
|
+
minDuration: -1,
|
|
40
37
|
cancelButtonText: 'Cancel',
|
|
41
38
|
saveButtonText: 'Save',
|
|
42
39
|
enableCancelDialog: true,
|
|
@@ -51,7 +48,7 @@ function createEditorConfig(
|
|
|
51
48
|
saveDialogConfirmText: 'Proceed',
|
|
52
49
|
trimmingText: 'Trimming video...',
|
|
53
50
|
fullScreenModalIOS: false,
|
|
54
|
-
autoplay: false,
|
|
51
|
+
autoplay: false,
|
|
55
52
|
jumpToPositionOnLoad: -1,
|
|
56
53
|
closeWhenFinish: true,
|
|
57
54
|
enableCancelTrimming: true,
|
|
@@ -61,7 +58,7 @@ function createEditorConfig(
|
|
|
61
58
|
cancelTrimmingDialogMessage: 'Are you sure want to cancel trimming?',
|
|
62
59
|
cancelTrimmingDialogCancelText: 'Close',
|
|
63
60
|
cancelTrimmingDialogConfirmText: 'Proceed',
|
|
64
|
-
headerText: '',
|
|
61
|
+
headerText: '',
|
|
65
62
|
headerTextSize: 16,
|
|
66
63
|
headerTextColor: processColor('white') as number,
|
|
67
64
|
alertOnFailToLoad: true,
|
|
@@ -83,80 +80,78 @@ function createTrimOptions(overrides: Partial<TrimOptions> = {}): TrimOptions {
|
|
|
83
80
|
};
|
|
84
81
|
}
|
|
85
82
|
|
|
86
|
-
function noop() {}
|
|
87
|
-
|
|
88
83
|
/**
|
|
89
|
-
*
|
|
84
|
+
* Show video editor
|
|
90
85
|
*
|
|
91
|
-
* @param {string}
|
|
86
|
+
* @param {string} filePath: absolute non-empty file path to edit
|
|
92
87
|
* @param {EditorConfig} config: editor configuration
|
|
93
|
-
* @
|
|
88
|
+
* @param {Function} onEvent: event callback
|
|
89
|
+
* @returns {void}
|
|
94
90
|
*/
|
|
95
91
|
export function showEditor(
|
|
96
92
|
filePath: string,
|
|
97
93
|
config: Partial<Omit<EditorConfig, 'headerTextColor'>> & {
|
|
98
94
|
headerTextColor?: string;
|
|
99
|
-
}
|
|
100
|
-
onEvent?: (eventName: string, payload: Record<string, string>) => void
|
|
95
|
+
}
|
|
101
96
|
): void {
|
|
102
97
|
const { headerTextColor } = config;
|
|
103
98
|
const color = processColor(headerTextColor || 'white');
|
|
104
99
|
|
|
105
|
-
|
|
100
|
+
VideoTrim.showEditor(
|
|
106
101
|
filePath,
|
|
107
102
|
createEditorConfig({
|
|
108
103
|
...config,
|
|
109
104
|
headerTextColor: color as any,
|
|
110
|
-
})
|
|
111
|
-
onEvent || noop
|
|
105
|
+
})
|
|
112
106
|
);
|
|
113
107
|
}
|
|
114
108
|
|
|
115
109
|
/**
|
|
116
|
-
*
|
|
110
|
+
* List output files generated at all time
|
|
117
111
|
*
|
|
118
112
|
* @returns {Promise<string[]>} A **Promise** which resolves to array of files
|
|
119
113
|
*/
|
|
120
114
|
export function listFiles(): Promise<string[]> {
|
|
121
|
-
return
|
|
115
|
+
return VideoTrim.listFiles();
|
|
122
116
|
}
|
|
123
117
|
|
|
124
118
|
/**
|
|
125
119
|
* Clean output files generated at all time
|
|
126
120
|
*
|
|
127
|
-
* @returns {Promise} A **Promise** which resolves to number of deleted files
|
|
121
|
+
* @returns {Promise<number>} A **Promise** which resolves to number of deleted files
|
|
128
122
|
*/
|
|
129
123
|
export function cleanFiles(): Promise<number> {
|
|
130
|
-
return
|
|
124
|
+
return VideoTrim.cleanFiles();
|
|
131
125
|
}
|
|
132
126
|
|
|
133
127
|
/**
|
|
134
128
|
* Delete a file
|
|
135
129
|
*
|
|
136
130
|
* @param {string} filePath: absolute non-empty file path to delete
|
|
137
|
-
* @returns {Promise} A **Promise** which resolves `true` if successful
|
|
131
|
+
* @returns {Promise<boolean>} A **Promise** which resolves `true` if successful
|
|
138
132
|
*/
|
|
139
133
|
export function deleteFile(filePath: string): Promise<boolean> {
|
|
140
134
|
if (!filePath?.trim().length) {
|
|
141
135
|
throw new Error('File path cannot be empty!');
|
|
142
136
|
}
|
|
143
|
-
return
|
|
137
|
+
return VideoTrim.deleteFile(filePath);
|
|
144
138
|
}
|
|
145
139
|
|
|
146
140
|
/**
|
|
147
141
|
* Close editor
|
|
148
142
|
*/
|
|
149
|
-
export function closeEditor(
|
|
150
|
-
return
|
|
143
|
+
export function closeEditor(): void {
|
|
144
|
+
return VideoTrim.closeEditor();
|
|
151
145
|
}
|
|
152
146
|
|
|
153
147
|
/**
|
|
154
148
|
* Check if a file is valid audio or video file
|
|
155
149
|
*
|
|
156
|
-
* @
|
|
150
|
+
* @param {string} url: file path to validate
|
|
151
|
+
* @returns {Promise<FileValidationResult>} A **Promise** which resolves file info if successful
|
|
157
152
|
*/
|
|
158
153
|
export function isValidFile(url: string): Promise<FileValidationResult> {
|
|
159
|
-
return
|
|
154
|
+
return VideoTrim.isValidFile(url);
|
|
160
155
|
}
|
|
161
156
|
|
|
162
157
|
/**
|
|
@@ -170,5 +165,8 @@ export function trim(
|
|
|
170
165
|
url: string,
|
|
171
166
|
options: Partial<TrimOptions>
|
|
172
167
|
): Promise<string> {
|
|
173
|
-
return
|
|
168
|
+
return VideoTrim.trim(url, createTrimOptions(options));
|
|
174
169
|
}
|
|
170
|
+
|
|
171
|
+
export * from './NativeVideoTrim';
|
|
172
|
+
export default VideoTrim;
|
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
|
-
)
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
package com.margelo.nitro.videotrim
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.TurboReactPackage
|
|
4
|
-
import com.facebook.react.bridge.NativeModule
|
|
5
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
|
-
import com.facebook.react.module.model.ReactModuleInfoProvider
|
|
7
|
-
|
|
8
|
-
class VideoTrimPackage : TurboReactPackage() {
|
|
9
|
-
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
|
|
10
|
-
return null
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
|
|
14
|
-
return ReactModuleInfoProvider { HashMap() }
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
companion object {
|
|
18
|
-
init {
|
|
19
|
-
System.loadLibrary("videotrim")
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|