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.
Files changed (99) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +89 -76
  3. package/VideoTrim.podspec +3 -3
  4. package/android/build.gradle +6 -53
  5. package/android/gradle.properties +1 -1
  6. package/android/src/main/AndroidManifest.xml +1 -1
  7. package/android/src/main/java/com/{margelo/nitro/videotrim/VideoTrim.kt → videotrim/VideoTrimModule.kt} +246 -232
  8. package/android/src/main/java/com/videotrim/VideoTrimPackage.kt +33 -0
  9. package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/enums/ErrorCode.java +1 -1
  10. package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/interfaces/IVideoTrimmerView.java +1 -1
  11. package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/interfaces/VideoTrimListener.java +5 -4
  12. package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/utils/MediaMetadataUtil.java +1 -1
  13. package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/utils/StorageUtil.java +1 -1
  14. package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/utils/VideoTrimmerUtil.java +20 -18
  15. package/android/src/main/java/com/{margelo/nitro/videotrim → videotrim}/widgets/VideoTrimmerView.java +44 -45
  16. package/ios/AssetLoader.h +19 -0
  17. package/ios/AssetLoader.mm +87 -0
  18. package/ios/ErrorCode.h +9 -0
  19. package/ios/ProgressAlertController.h +15 -0
  20. package/ios/ProgressAlertController.mm +78 -0
  21. package/ios/VideoTrim.h +31 -0
  22. package/ios/VideoTrim.mm +663 -0
  23. package/ios/VideoTrimmer.h +67 -0
  24. package/ios/VideoTrimmer.mm +863 -0
  25. package/ios/VideoTrimmerThumb.h +23 -0
  26. package/ios/VideoTrimmerThumb.mm +175 -0
  27. package/ios/VideoTrimmerViewController.h +52 -0
  28. package/ios/VideoTrimmerViewController.mm +533 -0
  29. package/lib/module/NativeVideoTrim.js +5 -0
  30. package/lib/module/NativeVideoTrim.js.map +1 -0
  31. package/lib/module/index.js +24 -24
  32. package/lib/module/index.js.map +1 -1
  33. package/lib/typescript/src/NativeVideoTrim.d.ts +107 -0
  34. package/lib/typescript/src/NativeVideoTrim.d.ts.map +1 -0
  35. package/lib/typescript/src/index.d.ts +16 -10
  36. package/lib/typescript/src/index.d.ts.map +1 -1
  37. package/package.json +15 -18
  38. package/src/NativeVideoTrim.ts +113 -0
  39. package/src/index.tsx +29 -31
  40. package/android/CMakeLists.txt +0 -24
  41. package/android/src/main/cpp/cpp-adapter.cpp +0 -6
  42. package/android/src/main/java/com/margelo/nitro/videotrim/VideoTrimPackage.kt +0 -22
  43. package/ios/AssetLoader.swift +0 -99
  44. package/ios/ErrorCode.swift +0 -17
  45. package/ios/ProgressAlertController.swift +0 -100
  46. package/ios/VideoTrim.swift +0 -67
  47. package/ios/VideoTrimImpl.swift +0 -957
  48. package/ios/VideoTrimmer.swift +0 -872
  49. package/ios/VideoTrimmerThumb.swift +0 -175
  50. package/ios/VideoTrimmerViewController.swift +0 -557
  51. package/lib/module/VideoTrim.nitro.js +0 -4
  52. package/lib/module/VideoTrim.nitro.js.map +0 -1
  53. package/lib/typescript/src/VideoTrim.nitro.d.ts +0 -257
  54. package/lib/typescript/src/VideoTrim.nitro.d.ts.map +0 -1
  55. package/nitrogen/generated/android/c++/JEditorConfig.hpp +0 -237
  56. package/nitrogen/generated/android/c++/JFileValidationResult.hpp +0 -61
  57. package/nitrogen/generated/android/c++/JFunc_void.hpp +0 -74
  58. package/nitrogen/generated/android/c++/JFunc_void_std__string_std__unordered_map_std__string__std__string_.hpp +0 -89
  59. package/nitrogen/generated/android/c++/JHybridVideoTrimSpec.cpp +0 -151
  60. package/nitrogen/generated/android/c++/JHybridVideoTrimSpec.hpp +0 -68
  61. package/nitrogen/generated/android/c++/JTrimOptions.hpp +0 -109
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/EditorConfig.kt +0 -72
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/FileValidationResult.kt +0 -28
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/Func_void.kt +0 -80
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/Func_void_std__string_std__unordered_map_std__string__std__string_.kt +0 -80
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/HybridVideoTrimSpec.kt +0 -86
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/TrimOptions.kt +0 -40
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/videotrim/videotrimOnLoad.kt +0 -35
  69. package/nitrogen/generated/android/videotrim+autolinking.cmake +0 -78
  70. package/nitrogen/generated/android/videotrim+autolinking.gradle +0 -27
  71. package/nitrogen/generated/android/videotrimOnLoad.cpp +0 -50
  72. package/nitrogen/generated/android/videotrimOnLoad.hpp +0 -25
  73. package/nitrogen/generated/ios/VideoTrim+autolinking.rb +0 -60
  74. package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Bridge.cpp +0 -96
  75. package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Bridge.hpp +0 -374
  76. package/nitrogen/generated/ios/VideoTrim-Swift-Cxx-Umbrella.hpp +0 -56
  77. package/nitrogen/generated/ios/VideoTrimAutolinking.mm +0 -33
  78. package/nitrogen/generated/ios/VideoTrimAutolinking.swift +0 -25
  79. package/nitrogen/generated/ios/c++/HybridVideoTrimSpecSwift.cpp +0 -11
  80. package/nitrogen/generated/ios/c++/HybridVideoTrimSpecSwift.hpp +0 -127
  81. package/nitrogen/generated/ios/swift/EditorConfig.swift +0 -541
  82. package/nitrogen/generated/ios/swift/FileValidationResult.swift +0 -57
  83. package/nitrogen/generated/ios/swift/Func_void.swift +0 -46
  84. package/nitrogen/generated/ios/swift/Func_void_FileValidationResult.swift +0 -46
  85. package/nitrogen/generated/ios/swift/Func_void_bool.swift +0 -46
  86. package/nitrogen/generated/ios/swift/Func_void_double.swift +0 -46
  87. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +0 -46
  88. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +0 -46
  89. package/nitrogen/generated/ios/swift/Func_void_std__string_std__unordered_map_std__string__std__string_.swift +0 -54
  90. package/nitrogen/generated/ios/swift/Func_void_std__vector_std__string_.swift +0 -46
  91. package/nitrogen/generated/ios/swift/HybridVideoTrimSpec.swift +0 -54
  92. package/nitrogen/generated/ios/swift/HybridVideoTrimSpec_cxx.swift +0 -241
  93. package/nitrogen/generated/ios/swift/TrimOptions.swift +0 -189
  94. package/nitrogen/generated/shared/c++/EditorConfig.hpp +0 -253
  95. package/nitrogen/generated/shared/c++/FileValidationResult.hpp +0 -77
  96. package/nitrogen/generated/shared/c++/HybridVideoTrimSpec.cpp +0 -27
  97. package/nitrogen/generated/shared/c++/HybridVideoTrimSpec.hpp +0 -80
  98. package/nitrogen/generated/shared/c++/TrimOptions.hpp +0 -125
  99. package/src/VideoTrim.nitro.ts +0 -263
@@ -1 +1 @@
1
- {"version":3,"names":["NitroModules","processColor","VideoTrimHybridObject","createHybridObject","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","noop","showEditor","filePath","config","onEvent","color","listFiles","cleanFiles","deleteFile","trim","length","Error","closeEditor","onComplete","isValidFile","url","options"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
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 type { EditorConfig, FileValidationResult, TrimOptions } from './VideoTrim.nitro';
1
+ import VideoTrim from './NativeVideoTrim';
2
+ import type { EditorConfig, FileValidationResult, TrimOptions } from './NativeVideoTrim';
3
+ export * from './NativeVideoTrim';
2
4
  /**
3
- * Delete a file
5
+ * Show video editor
4
6
  *
5
- * @param {string} videoPath: absolute non-empty file path to edit
7
+ * @param {string} filePath: absolute non-empty file path to edit
6
8
  * @param {EditorConfig} config: editor configuration
7
- * @returns {void} A **Promise** which resolves `void`
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
- }, onEvent?: (eventName: string, payload: Record<string, string>) => void): void;
14
+ }): void;
12
15
  /**
13
- * Clean output files generated at all time
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(onComplete?: () => void): void;
37
+ export declare function closeEditor(): void;
35
38
  /**
36
39
  * Check if a file is valid audio or video file
37
40
  *
38
- * @returns {Promise} A **Promise** which resolves file info if successful
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":"AACA,OAAO,KAAK,EAEV,YAAY,EACZ,oBAAoB,EACpB,WAAW,EAEZ,MAAM,mBAAmB,CAAC;AAgF3B;;;;;;GAMG;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,EACD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,GACrE,IAAI,CAYN;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,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAEzD;AAED;;;;GAIG;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"}
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": "4.1.0",
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.11",
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-swift",
164
- "type": "nitro-module",
165
- "version": "0.50.3"
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 { NitroModules } from 'react-native-nitro-modules';
1
+ import VideoTrim from './NativeVideoTrim';
2
2
  import type {
3
3
  BaseOptions,
4
4
  EditorConfig,
5
5
  FileValidationResult,
6
6
  TrimOptions,
7
- VideoTrim,
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, // Adjust default as needed
39
- minDuration: 1000,
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, // Adjust default as needed
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: '', // Adjust default as needed
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
- * Delete a file
84
+ * Show video editor
90
85
  *
91
- * @param {string} videoPath: absolute non-empty file path to edit
86
+ * @param {string} filePath: absolute non-empty file path to edit
92
87
  * @param {EditorConfig} config: editor configuration
93
- * @returns {void} A **Promise** which resolves `void`
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
- VideoTrimHybridObject.showEditor(
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
- * Clean output files generated at all time
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 VideoTrimHybridObject.listFiles();
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 VideoTrimHybridObject.cleanFiles();
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 VideoTrimHybridObject.deleteFile(filePath);
137
+ return VideoTrim.deleteFile(filePath);
144
138
  }
145
139
 
146
140
  /**
147
141
  * Close editor
148
142
  */
149
- export function closeEditor(onComplete?: () => void): void {
150
- return VideoTrimHybridObject.closeEditor(onComplete || noop);
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
- * @returns {Promise} A **Promise** which resolves file info if successful
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 VideoTrimHybridObject.isValidFile(url);
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 VideoTrimHybridObject.trim(url, createTrimOptions(options));
168
+ return VideoTrim.trim(url, createTrimOptions(options));
174
169
  }
170
+
171
+ export * from './NativeVideoTrim';
172
+ export default VideoTrim;
@@ -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,6 +0,0 @@
1
- #include <jni.h>
2
- #include "videotrimOnLoad.hpp"
3
-
4
- JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
5
- return margelo::nitro::videotrim::initialize(vm);
6
- }
@@ -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
- }