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