react-native-photo-video-editor 0.1.0 → 0.1.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 (203) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/PhotoVideoEditor.podspec +1 -0
  3. package/README.md +10 -6
  4. package/THIRD_PARTY_NOTICES.md +20 -0
  5. package/android/build.gradle +1 -1
  6. package/android/src/main/AndroidManifest.xml +1 -1
  7. package/android/src/main/assets/Stickers/AUTUMN_1.png +0 -0
  8. package/android/src/main/assets/Stickers/AUTUMN_10.png +0 -0
  9. package/android/src/main/assets/Stickers/AUTUMN_11.png +0 -0
  10. package/android/src/main/assets/Stickers/AUTUMN_12.png +0 -0
  11. package/android/src/main/assets/Stickers/AUTUMN_13.png +0 -0
  12. package/android/src/main/assets/Stickers/AUTUMN_14.png +0 -0
  13. package/android/src/main/assets/Stickers/AUTUMN_15.png +0 -0
  14. package/android/src/main/assets/Stickers/AUTUMN_16.png +0 -0
  15. package/android/src/main/assets/Stickers/AUTUMN_17.png +0 -0
  16. package/android/src/main/assets/Stickers/AUTUMN_18.png +0 -0
  17. package/android/src/main/assets/Stickers/AUTUMN_2.png +0 -0
  18. package/android/src/main/assets/Stickers/AUTUMN_3.png +0 -0
  19. package/android/src/main/assets/Stickers/AUTUMN_4.png +0 -0
  20. package/android/src/main/assets/Stickers/AUTUMN_5.png +0 -0
  21. package/android/src/main/assets/Stickers/AUTUMN_6.png +0 -0
  22. package/android/src/main/assets/Stickers/AUTUMN_7.png +0 -0
  23. package/android/src/main/assets/Stickers/AUTUMN_8.png +0 -0
  24. package/android/src/main/assets/Stickers/AUTUMN_9.png +0 -0
  25. package/android/src/main/assets/Stickers/LOL_1.png +0 -0
  26. package/android/src/main/assets/Stickers/LOL_10.png +0 -0
  27. package/android/src/main/assets/Stickers/LOL_11.png +0 -0
  28. package/android/src/main/assets/Stickers/LOL_12.png +0 -0
  29. package/android/src/main/assets/Stickers/LOL_13.png +0 -0
  30. package/android/src/main/assets/Stickers/LOL_14.png +0 -0
  31. package/android/src/main/assets/Stickers/LOL_15.png +0 -0
  32. package/android/src/main/assets/Stickers/LOL_16.png +0 -0
  33. package/android/src/main/assets/Stickers/LOL_17.png +0 -0
  34. package/android/src/main/assets/Stickers/LOL_18.png +0 -0
  35. package/android/src/main/assets/Stickers/LOL_19.png +0 -0
  36. package/android/src/main/assets/Stickers/LOL_2.png +0 -0
  37. package/android/src/main/assets/Stickers/LOL_3.png +0 -0
  38. package/android/src/main/assets/Stickers/LOL_4.png +0 -0
  39. package/android/src/main/assets/Stickers/LOL_5.png +0 -0
  40. package/android/src/main/assets/Stickers/LOL_6.png +0 -0
  41. package/android/src/main/assets/Stickers/LOL_7.png +0 -0
  42. package/android/src/main/assets/Stickers/LOL_8.png +0 -0
  43. package/android/src/main/assets/Stickers/LOL_9.png +0 -0
  44. package/android/src/main/assets/Stickers/SPRING_1.png +0 -0
  45. package/android/src/main/assets/Stickers/SPRING_2.png +0 -0
  46. package/android/src/main/assets/Stickers/SPRING_3.png +0 -0
  47. package/android/src/main/assets/Stickers/SPRING_4.png +0 -0
  48. package/android/src/main/assets/Stickers/SPRING_5.png +0 -0
  49. package/android/src/main/assets/Stickers/SPRING_6.png +0 -0
  50. package/android/src/main/assets/Stickers/SUMMER_1.png +0 -0
  51. package/android/src/main/assets/Stickers/SUMMER_10.png +0 -0
  52. package/android/src/main/assets/Stickers/SUMMER_11.png +0 -0
  53. package/android/src/main/assets/Stickers/SUMMER_12.png +0 -0
  54. package/android/src/main/assets/Stickers/SUMMER_13.png +0 -0
  55. package/android/src/main/assets/Stickers/SUMMER_14.png +0 -0
  56. package/android/src/main/assets/Stickers/SUMMER_15.png +0 -0
  57. package/android/src/main/assets/Stickers/SUMMER_16.png +0 -0
  58. package/android/src/main/assets/Stickers/SUMMER_17.png +0 -0
  59. package/android/src/main/assets/Stickers/SUMMER_18.png +0 -0
  60. package/android/src/main/assets/Stickers/SUMMER_19.png +0 -0
  61. package/android/src/main/assets/Stickers/SUMMER_2.png +0 -0
  62. package/android/src/main/assets/Stickers/SUMMER_20.png +0 -0
  63. package/android/src/main/assets/Stickers/SUMMER_21.png +0 -0
  64. package/android/src/main/assets/Stickers/SUMMER_3.png +0 -0
  65. package/android/src/main/assets/Stickers/SUMMER_4.png +0 -0
  66. package/android/src/main/assets/Stickers/SUMMER_5.png +0 -0
  67. package/android/src/main/assets/Stickers/SUMMER_6.png +0 -0
  68. package/android/src/main/assets/Stickers/SUMMER_7.png +0 -0
  69. package/android/src/main/assets/Stickers/SUMMER_8.png +0 -0
  70. package/android/src/main/assets/Stickers/SUMMER_9.png +0 -0
  71. package/android/src/main/assets/Stickers/TEXT_1.png +0 -0
  72. package/android/src/main/assets/Stickers/TEXT_12.png +0 -0
  73. package/android/src/main/assets/Stickers/TEXT_13.png +0 -0
  74. package/android/src/main/assets/Stickers/TEXT_14.png +0 -0
  75. package/android/src/main/assets/Stickers/TEXT_15.png +0 -0
  76. package/android/src/main/assets/Stickers/TEXT_16.png +0 -0
  77. package/android/src/main/assets/Stickers/TEXT_2.png +0 -0
  78. package/android/src/main/assets/Stickers/TEXT_25.png +0 -0
  79. package/android/src/main/assets/Stickers/TEXT_26.png +0 -0
  80. package/android/src/main/assets/Stickers/TEXT_27.png +0 -0
  81. package/android/src/main/assets/Stickers/TEXT_28.png +0 -0
  82. package/android/src/main/assets/Stickers/TEXT_29.png +0 -0
  83. package/android/src/main/assets/Stickers/TEXT_3.png +0 -0
  84. package/android/src/main/assets/Stickers/TEXT_30.png +0 -0
  85. package/android/src/main/assets/Stickers/TEXT_31.png +0 -0
  86. package/android/src/main/assets/Stickers/TEXT_32.png +0 -0
  87. package/android/src/main/assets/Stickers/TEXT_7.png +0 -0
  88. package/android/src/main/assets/Stickers/TEXT_8.png +0 -0
  89. package/android/src/main/assets/Stickers/TEXT_9.png +0 -0
  90. package/android/src/main/java/com/photovideoeditor/editor/PhotoVideoEditorActivity.kt +188 -108
  91. package/android/src/main/java/com/photovideoeditor/photo/render/PhotoLayer.kt +5 -1
  92. package/android/src/main/java/com/photovideoeditor/photo/render/PhotoLayerRenderer.kt +21 -0
  93. package/android/src/main/java/com/photovideoeditor/photo/ui/CropOverlayView.kt +34 -2
  94. package/android/src/main/java/com/photovideoeditor/photo/ui/DrawOverlayView.kt +66 -0
  95. package/android/src/main/java/com/photovideoeditor/photo/ui/LayerOverlayView.kt +21 -1
  96. package/android/src/main/java/com/photovideoeditor/stickers/OnlineStickerSheet.kt +135 -104
  97. package/android/src/main/res/drawable/ic_draw.xml +6 -0
  98. package/android/src/main/res/drawable/ic_pause.xml +7 -0
  99. package/android/src/main/res/drawable/ic_play.xml +7 -0
  100. package/docs/api.md +1 -1
  101. package/docs/photo-editor.md +5 -6
  102. package/ios/Editor/PhotoVideoEditorViewController.swift +166 -77
  103. package/ios/Photo/Rendering/PhotoLayer.swift +5 -1
  104. package/ios/Photo/Rendering/PhotoLayerRenderer.swift +14 -0
  105. package/ios/Photo/UI/CropOverlayView.swift +38 -1
  106. package/ios/Photo/UI/DrawOverlayView.swift +48 -0
  107. package/ios/Photo/UI/LayerOverlayView.swift +9 -1
  108. package/ios/Resources/Stickers/AUTUMN_1.png +0 -0
  109. package/ios/Resources/Stickers/AUTUMN_10.png +0 -0
  110. package/ios/Resources/Stickers/AUTUMN_11.png +0 -0
  111. package/ios/Resources/Stickers/AUTUMN_12.png +0 -0
  112. package/ios/Resources/Stickers/AUTUMN_13.png +0 -0
  113. package/ios/Resources/Stickers/AUTUMN_14.png +0 -0
  114. package/ios/Resources/Stickers/AUTUMN_15.png +0 -0
  115. package/ios/Resources/Stickers/AUTUMN_16.png +0 -0
  116. package/ios/Resources/Stickers/AUTUMN_17.png +0 -0
  117. package/ios/Resources/Stickers/AUTUMN_18.png +0 -0
  118. package/ios/Resources/Stickers/AUTUMN_2.png +0 -0
  119. package/ios/Resources/Stickers/AUTUMN_3.png +0 -0
  120. package/ios/Resources/Stickers/AUTUMN_4.png +0 -0
  121. package/ios/Resources/Stickers/AUTUMN_5.png +0 -0
  122. package/ios/Resources/Stickers/AUTUMN_6.png +0 -0
  123. package/ios/Resources/Stickers/AUTUMN_7.png +0 -0
  124. package/ios/Resources/Stickers/AUTUMN_8.png +0 -0
  125. package/ios/Resources/Stickers/AUTUMN_9.png +0 -0
  126. package/ios/Resources/Stickers/LOL_1.png +0 -0
  127. package/ios/Resources/Stickers/LOL_10.png +0 -0
  128. package/ios/Resources/Stickers/LOL_11.png +0 -0
  129. package/ios/Resources/Stickers/LOL_12.png +0 -0
  130. package/ios/Resources/Stickers/LOL_13.png +0 -0
  131. package/ios/Resources/Stickers/LOL_14.png +0 -0
  132. package/ios/Resources/Stickers/LOL_15.png +0 -0
  133. package/ios/Resources/Stickers/LOL_16.png +0 -0
  134. package/ios/Resources/Stickers/LOL_17.png +0 -0
  135. package/ios/Resources/Stickers/LOL_18.png +0 -0
  136. package/ios/Resources/Stickers/LOL_19.png +0 -0
  137. package/ios/Resources/Stickers/LOL_2.png +0 -0
  138. package/ios/Resources/Stickers/LOL_3.png +0 -0
  139. package/ios/Resources/Stickers/LOL_4.png +0 -0
  140. package/ios/Resources/Stickers/LOL_5.png +0 -0
  141. package/ios/Resources/Stickers/LOL_6.png +0 -0
  142. package/ios/Resources/Stickers/LOL_7.png +0 -0
  143. package/ios/Resources/Stickers/LOL_8.png +0 -0
  144. package/ios/Resources/Stickers/LOL_9.png +0 -0
  145. package/ios/Resources/Stickers/SPRING_1.png +0 -0
  146. package/ios/Resources/Stickers/SPRING_2.png +0 -0
  147. package/ios/Resources/Stickers/SPRING_3.png +0 -0
  148. package/ios/Resources/Stickers/SPRING_4.png +0 -0
  149. package/ios/Resources/Stickers/SPRING_5.png +0 -0
  150. package/ios/Resources/Stickers/SPRING_6.png +0 -0
  151. package/ios/Resources/Stickers/SUMMER_1.png +0 -0
  152. package/ios/Resources/Stickers/SUMMER_10.png +0 -0
  153. package/ios/Resources/Stickers/SUMMER_11.png +0 -0
  154. package/ios/Resources/Stickers/SUMMER_12.png +0 -0
  155. package/ios/Resources/Stickers/SUMMER_13.png +0 -0
  156. package/ios/Resources/Stickers/SUMMER_14.png +0 -0
  157. package/ios/Resources/Stickers/SUMMER_15.png +0 -0
  158. package/ios/Resources/Stickers/SUMMER_16.png +0 -0
  159. package/ios/Resources/Stickers/SUMMER_17.png +0 -0
  160. package/ios/Resources/Stickers/SUMMER_18.png +0 -0
  161. package/ios/Resources/Stickers/SUMMER_19.png +0 -0
  162. package/ios/Resources/Stickers/SUMMER_2.png +0 -0
  163. package/ios/Resources/Stickers/SUMMER_20.png +0 -0
  164. package/ios/Resources/Stickers/SUMMER_21.png +0 -0
  165. package/ios/Resources/Stickers/SUMMER_3.png +0 -0
  166. package/ios/Resources/Stickers/SUMMER_4.png +0 -0
  167. package/ios/Resources/Stickers/SUMMER_5.png +0 -0
  168. package/ios/Resources/Stickers/SUMMER_6.png +0 -0
  169. package/ios/Resources/Stickers/SUMMER_7.png +0 -0
  170. package/ios/Resources/Stickers/SUMMER_8.png +0 -0
  171. package/ios/Resources/Stickers/SUMMER_9.png +0 -0
  172. package/ios/Resources/Stickers/TEXT_1.png +0 -0
  173. package/ios/Resources/Stickers/TEXT_12.png +0 -0
  174. package/ios/Resources/Stickers/TEXT_13.png +0 -0
  175. package/ios/Resources/Stickers/TEXT_14.png +0 -0
  176. package/ios/Resources/Stickers/TEXT_15.png +0 -0
  177. package/ios/Resources/Stickers/TEXT_16.png +0 -0
  178. package/ios/Resources/Stickers/TEXT_2.png +0 -0
  179. package/ios/Resources/Stickers/TEXT_25.png +0 -0
  180. package/ios/Resources/Stickers/TEXT_26.png +0 -0
  181. package/ios/Resources/Stickers/TEXT_27.png +0 -0
  182. package/ios/Resources/Stickers/TEXT_28.png +0 -0
  183. package/ios/Resources/Stickers/TEXT_29.png +0 -0
  184. package/ios/Resources/Stickers/TEXT_3.png +0 -0
  185. package/ios/Resources/Stickers/TEXT_30.png +0 -0
  186. package/ios/Resources/Stickers/TEXT_31.png +0 -0
  187. package/ios/Resources/Stickers/TEXT_32.png +0 -0
  188. package/ios/Resources/Stickers/TEXT_7.png +0 -0
  189. package/ios/Resources/Stickers/TEXT_8.png +0 -0
  190. package/ios/Resources/Stickers/TEXT_9.png +0 -0
  191. package/ios/Resources/Stickers/a_pety_icon.png +0 -0
  192. package/ios/Stickers/OnlineStickerSheetViewController.swift +102 -159
  193. package/lib/module/index.js +2 -2
  194. package/lib/module/index.js.map +1 -1
  195. package/lib/typescript/src/types.d.ts +2 -2
  196. package/lib/typescript/src/types.d.ts.map +1 -1
  197. package/package.json +2 -1
  198. package/src/index.ts +1 -1
  199. package/src/types.ts +2 -2
  200. package/android/src/main/java/com/photovideoeditor/stickers/OpenMojiCatalog.kt +0 -172
  201. package/android/src/main/java/com/photovideoeditor/stickers/RemoteImageLoader.kt +0 -110
  202. package/ios/Stickers/OpenMojiCatalog.swift +0 -188
  203. package/ios/Stickers/RemoteImageLoader.swift +0 -127
@@ -1,127 +0,0 @@
1
- import UIKit
2
-
3
- /// Small async image loader for the online-sticker sheet: in-memory + on-disk thumbnail cache,
4
- /// plus a full-res "download and hand me a local file" path for the sticker that actually gets
5
- /// inserted as a layer. Plain `URLSession`, no third-party dependency (matches the rest of the
6
- /// codebase's zero-networking-dependency policy).
7
- final class RemoteImageLoader {
8
- static let shared = RemoteImageLoader()
9
-
10
- private let memoryCache = NSCache<NSString, UIImage>()
11
- private let ioQueue = DispatchQueue(label: "com.photovideoeditor.remoteimageloader.io", qos: .userInitiated)
12
- private let session = URLSession.shared
13
-
14
- private init() {
15
- memoryCache.countLimit = 500
16
- }
17
-
18
- private var diskCacheDirectory: URL? {
19
- guard let base = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first else { return nil }
20
- let dir = base.appendingPathComponent("openmoji", isDirectory: true)
21
- if !FileManager.default.fileExists(atPath: dir.path) {
22
- try? FileManager.default.createDirectory(at: dir, withIntermediateDirectories: true)
23
- }
24
- return dir
25
- }
26
-
27
- private func diskCacheFile(forKey key: String) -> URL? {
28
- diskCacheDirectory?.appendingPathComponent(key)
29
- }
30
-
31
- // MARK: - Thumbnails (UICollectionViewCell-safe)
32
-
33
- /// Loads a thumbnail into `imageView`, guarding against cell reuse: the URL being loaded is
34
- /// stamped onto the image view via associated object, and the result is only applied if that
35
- /// stamp still matches once the load completes (standard fix for the "wrong image after scroll"
36
- /// bug with recycled `UICollectionViewCell`/`UITableViewCell` image views).
37
- func loadThumbnail(url: URL, into imageView: UIImageView) {
38
- Self.setLoadTag(url.absoluteString, on: imageView)
39
- imageView.image = nil
40
-
41
- let cacheKey = url.absoluteString as NSString
42
- if let cached = memoryCache.object(forKey: cacheKey) {
43
- imageView.image = cached
44
- return
45
- }
46
-
47
- let diskKey = "\(url.lastPathComponent)_thumb.png"
48
- ioQueue.async { [weak self] in
49
- guard let self else { return }
50
- if let diskURL = self.diskCacheFile(forKey: diskKey),
51
- let data = try? Data(contentsOf: diskURL),
52
- let image = UIImage(data: data) {
53
- self.memoryCache.setObject(image, forKey: cacheKey)
54
- DispatchQueue.main.async {
55
- guard Self.loadTag(on: imageView) == url.absoluteString else { return }
56
- imageView.image = image
57
- }
58
- return
59
- }
60
-
61
- self.session.dataTask(with: url) { data, response, _ in
62
- guard
63
- let data, let image = UIImage(data: data),
64
- let http = response as? HTTPURLResponse, (200..<300).contains(http.statusCode)
65
- else { return }
66
- self.memoryCache.setObject(image, forKey: cacheKey)
67
- if let diskURL = self.diskCacheFile(forKey: diskKey) {
68
- try? data.write(to: diskURL, options: .atomic)
69
- }
70
- DispatchQueue.main.async {
71
- guard Self.loadTag(on: imageView) == url.absoluteString else { return }
72
- imageView.image = image
73
- }
74
- }.resume()
75
- }
76
- }
77
-
78
- // MARK: - Full-res download
79
-
80
- /// Downloads (or returns the already-cached file for) the full-res sticker image. Completion
81
- /// always fires on the main thread.
82
- func downloadFull(url: URL, completion: @escaping (URL?, Error?) -> Void) {
83
- let diskKey = "\(url.lastPathComponent)_full.png"
84
- ioQueue.async { [weak self] in
85
- guard let self else { return }
86
- if let diskURL = self.diskCacheFile(forKey: diskKey), FileManager.default.fileExists(atPath: diskURL.path) {
87
- DispatchQueue.main.async { completion(diskURL, nil) }
88
- return
89
- }
90
- self.session.dataTask(with: url) { data, response, error in
91
- if let error {
92
- DispatchQueue.main.async { completion(nil, error) }
93
- return
94
- }
95
- guard
96
- let data,
97
- let http = response as? HTTPURLResponse, (200..<300).contains(http.statusCode)
98
- else {
99
- DispatchQueue.main.async { completion(nil, URLError(.badServerResponse)) }
100
- return
101
- }
102
- guard let diskURL = self.diskCacheFile(forKey: diskKey) else {
103
- DispatchQueue.main.async { completion(nil, URLError(.cannotCreateFile)) }
104
- return
105
- }
106
- do {
107
- try data.write(to: diskURL, options: .atomic)
108
- DispatchQueue.main.async { completion(diskURL, nil) }
109
- } catch {
110
- DispatchQueue.main.async { completion(nil, error) }
111
- }
112
- }.resume()
113
- }
114
- }
115
-
116
- // MARK: - Cell-reuse tagging
117
-
118
- private static var loadTagKey: UInt8 = 0
119
-
120
- private static func setLoadTag(_ tag: String, on imageView: UIImageView) {
121
- objc_setAssociatedObject(imageView, &loadTagKey, tag, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
122
- }
123
-
124
- private static func loadTag(on imageView: UIImageView) -> String? {
125
- objc_getAssociatedObject(imageView, &loadTagKey) as? String
126
- }
127
- }