react-native-video-trim 0.0.1 → 1.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 (39) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +206 -0
  3. package/android/build.gradle +105 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +2 -0
  6. package/android/src/main/AndroidManifestDeprecated.xml +3 -0
  7. package/android/src/main/java/com/videotrim/VideoTrimModule.java +315 -0
  8. package/android/src/main/java/com/videotrim/VideoTrimPackage.java +28 -0
  9. package/android/src/main/java/com/videotrim/adapters/VideoTrimmerAdapter.java +60 -0
  10. package/android/src/main/java/com/videotrim/interfaces/IVideoTrimmerView.java +5 -0
  11. package/android/src/main/java/com/videotrim/interfaces/VideoTrimListener.java +9 -0
  12. package/android/src/main/java/com/videotrim/utils/StorageUtil.java +277 -0
  13. package/android/src/main/java/com/videotrim/utils/VideoTrimmerUtil.java +109 -0
  14. package/android/src/main/java/com/videotrim/widgets/RangeSeekBarView.java +534 -0
  15. package/android/src/main/java/com/videotrim/widgets/SpacesItemDecoration2.java +33 -0
  16. package/android/src/main/java/com/videotrim/widgets/VideoTrimmerView.java +444 -0
  17. package/android/src/main/java/com/videotrim/widgets/ZVideoView.java +48 -0
  18. package/android/src/main/res/drawable/ic_video_pause_black.png +0 -0
  19. package/android/src/main/res/drawable/ic_video_play_black.png +0 -0
  20. package/android/src/main/res/drawable/ic_video_thumb_handle.png +0 -0
  21. package/android/src/main/res/drawable/icon_seek_bar.png +0 -0
  22. package/android/src/main/res/layout/video_thumb_item_layout.xml +16 -0
  23. package/android/src/main/res/layout/video_trimmer_view.xml +148 -0
  24. package/android/src/main/res/values/colors.xml +17 -0
  25. package/android/src/main/res/values/strings.xml +14 -0
  26. package/ios/VideoTrim-Bridging-Header.h +2 -0
  27. package/ios/VideoTrim.mm +10 -0
  28. package/ios/VideoTrim.swift +170 -0
  29. package/ios/VideoTrim.xcodeproj/project.pbxproj +283 -0
  30. package/ios/VideoTrim.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
  31. package/lib/commonjs/index.js +32 -0
  32. package/lib/commonjs/index.js.map +1 -0
  33. package/lib/module/index.js +25 -0
  34. package/lib/module/index.js.map +1 -0
  35. package/lib/typescript/index.d.ts +7 -0
  36. package/lib/typescript/index.d.ts.map +1 -0
  37. package/package.json +158 -7
  38. package/react-native-video-trim.podspec +41 -0
  39. package/src/index.tsx +35 -0
package/package.json CHANGED
@@ -1,12 +1,163 @@
1
1
  {
2
2
  "name": "react-native-video-trim",
3
- "version": "0.0.1",
4
- "description": "",
5
- "main": "index.js",
3
+ "version": "1.0.1",
4
+ "description": "Video trimmer for your React Native app",
5
+ "main": "lib/commonjs/index",
6
+ "module": "lib/module/index",
7
+ "types": "lib/typescript/index.d.ts",
8
+ "react-native": "src/index",
9
+ "source": "src/index",
10
+ "files": [
11
+ "src",
12
+ "lib",
13
+ "android",
14
+ "ios",
15
+ "cpp",
16
+ "*.podspec",
17
+ "!lib/typescript/example",
18
+ "!ios/build",
19
+ "!android/build",
20
+ "!android/gradle",
21
+ "!android/gradlew",
22
+ "!android/gradlew.bat",
23
+ "!android/local.properties",
24
+ "!**/__tests__",
25
+ "!**/__fixtures__",
26
+ "!**/__mocks__",
27
+ "!**/.*"
28
+ ],
6
29
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1"
30
+ "test": "jest",
31
+ "typecheck": "tsc --noEmit",
32
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
33
+ "prepack": "bob build",
34
+ "release": "release-it",
35
+ "example": "yarn --cwd example",
36
+ "build:android": "cd example/android && ./gradlew assembleDebug --no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a",
37
+ "build:ios": "cd example/ios && xcodebuild -workspace VideoTrimExample.xcworkspace -scheme VideoTrimExample -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO",
38
+ "bootstrap": "yarn example && yarn install && yarn example pods",
39
+ "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build"
8
40
  },
9
- "keywords": [],
10
- "author": "",
11
- "license": "ISC"
41
+ "keywords": [
42
+ "react-native",
43
+ "ios",
44
+ "android"
45
+ ],
46
+ "repository": "https://github.com/maitrungduc1410/react-native-video-trim",
47
+ "author": "Mai Trung Duc <maitrungduc1410@gmail.com> (https://github.com/maitrungduc1410)",
48
+ "license": "MIT",
49
+ "bugs": {
50
+ "url": "https://github.com/maitrungduc1410/react-native-video-trim/issues"
51
+ },
52
+ "homepage": "https://github.com/maitrungduc1410/react-native-video-trim#readme",
53
+ "publishConfig": {
54
+ "registry": "https://registry.npmjs.org/"
55
+ },
56
+ "devDependencies": {
57
+ "@commitlint/config-conventional": "^17.0.2",
58
+ "@evilmartians/lefthook": "^1.2.2",
59
+ "@react-native-community/eslint-config": "^3.0.2",
60
+ "@release-it/conventional-changelog": "^5.0.0",
61
+ "@types/jest": "^28.1.2",
62
+ "@types/react": "~17.0.21",
63
+ "@types/react-native": "0.70.0",
64
+ "commitlint": "^17.0.2",
65
+ "del-cli": "^5.0.0",
66
+ "eslint": "^8.4.1",
67
+ "eslint-config-prettier": "^8.5.0",
68
+ "eslint-plugin-prettier": "^4.0.0",
69
+ "jest": "^28.1.1",
70
+ "pod-install": "^0.1.0",
71
+ "prettier": "^2.0.5",
72
+ "react": "18.2.0",
73
+ "react-native": "0.72.3",
74
+ "react-native-builder-bob": "^0.20.0",
75
+ "release-it": "^15.0.0",
76
+ "turbo": "^1.10.7",
77
+ "typescript": "^5.0.2"
78
+ },
79
+ "resolutions": {
80
+ "@types/react": "17.0.21"
81
+ },
82
+ "peerDependencies": {
83
+ "react": "*",
84
+ "react-native": "*"
85
+ },
86
+ "engines": {
87
+ "node": ">= 16.0.0"
88
+ },
89
+ "packageManager": "^yarn@1.22.15",
90
+ "jest": {
91
+ "preset": "react-native",
92
+ "modulePathIgnorePatterns": [
93
+ "<rootDir>/example/node_modules",
94
+ "<rootDir>/lib/"
95
+ ]
96
+ },
97
+ "commitlint": {
98
+ "extends": [
99
+ "@commitlint/config-conventional"
100
+ ]
101
+ },
102
+ "release-it": {
103
+ "git": {
104
+ "commitMessage": "chore: release ${version}",
105
+ "tagName": "v${version}"
106
+ },
107
+ "npm": {
108
+ "publish": true
109
+ },
110
+ "github": {
111
+ "release": true
112
+ },
113
+ "plugins": {
114
+ "@release-it/conventional-changelog": {
115
+ "preset": "angular"
116
+ }
117
+ }
118
+ },
119
+ "eslintConfig": {
120
+ "root": true,
121
+ "extends": [
122
+ "@react-native-community",
123
+ "prettier"
124
+ ],
125
+ "rules": {
126
+ "prettier/prettier": [
127
+ "error",
128
+ {
129
+ "quoteProps": "consistent",
130
+ "singleQuote": true,
131
+ "tabWidth": 2,
132
+ "trailingComma": "es5",
133
+ "useTabs": false
134
+ }
135
+ ]
136
+ }
137
+ },
138
+ "eslintIgnore": [
139
+ "node_modules/",
140
+ "lib/"
141
+ ],
142
+ "prettier": {
143
+ "quoteProps": "consistent",
144
+ "singleQuote": true,
145
+ "tabWidth": 2,
146
+ "trailingComma": "es5",
147
+ "useTabs": false
148
+ },
149
+ "react-native-builder-bob": {
150
+ "source": "src",
151
+ "output": "lib",
152
+ "targets": [
153
+ "commonjs",
154
+ "module",
155
+ [
156
+ "typescript",
157
+ {
158
+ "project": "tsconfig.build.json"
159
+ }
160
+ ]
161
+ ]
162
+ }
12
163
  }
@@ -0,0 +1,41 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+ folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
5
+
6
+ Pod::Spec.new do |s|
7
+ s.name = "react-native-video-trim"
8
+ s.version = package["version"]
9
+ s.summary = package["description"]
10
+ s.homepage = package["homepage"]
11
+ s.license = package["license"]
12
+ s.authors = package["author"]
13
+
14
+ s.platforms = { :ios => "11.0" }
15
+ s.source = { :git => "https://github.com/maitrungduc1410/react-native-video-trim.git", :tag => "#{s.version}" }
16
+
17
+ s.source_files = "ios/**/*.{h,m,mm,swift}"
18
+
19
+ # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
20
+ # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
21
+ if respond_to?(:install_modules_dependencies, true)
22
+ install_modules_dependencies(s)
23
+ else
24
+ s.dependency "React-Core"
25
+
26
+ # Don't install the dependencies when we run `pod install` in the old architecture.
27
+ if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
28
+ s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
29
+ s.pod_target_xcconfig = {
30
+ "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
31
+ "OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
32
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
33
+ }
34
+ s.dependency "React-Codegen"
35
+ s.dependency "RCT-Folly"
36
+ s.dependency "RCTRequired"
37
+ s.dependency "RCTTypeSafety"
38
+ s.dependency "ReactCommon/turbomodule/core"
39
+ end
40
+ end
41
+ end
package/src/index.tsx ADDED
@@ -0,0 +1,35 @@
1
+ import { NativeModules, Platform } from 'react-native';
2
+
3
+ const LINKING_ERROR =
4
+ `The package 'react-native-video-trim' doesn't seem to be linked. Make sure: \n\n` +
5
+ Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
6
+ '- You rebuilt the app after installing the package\n' +
7
+ '- You are not using Expo Go\n';
8
+
9
+ const VideoTrim = NativeModules.VideoTrim
10
+ ? NativeModules.VideoTrim
11
+ : new Proxy(
12
+ {},
13
+ {
14
+ get() {
15
+ throw new Error(LINKING_ERROR);
16
+ },
17
+ }
18
+ );
19
+
20
+ export interface EditorConfig {
21
+ saveToPhoto?: boolean;
22
+ maxDuration?: number;
23
+ }
24
+
25
+ export function showEditor(videoPath: string, config: EditorConfig = {}): void {
26
+ const { maxDuration, saveToPhoto = true } = config;
27
+ VideoTrim.showEditor(videoPath, {
28
+ saveToPhoto,
29
+ maxDuration,
30
+ });
31
+ }
32
+
33
+ export function isValidVideo(videoPath: string): Promise<boolean> {
34
+ return VideoTrim.isValidVideo(videoPath);
35
+ }