react-native-attachment-kit 1.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 (166) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +327 -0
  3. package/android/CMakeLists.txt +31 -0
  4. package/android/build.gradle +121 -0
  5. package/android/src/main/AndroidManifest.xml +2 -0
  6. package/android/src/main/libs/rnattachmentkit-release.aar +0 -0
  7. package/android/src/newarch/java/com/rnattachmentkit/RNAttachmentKitModule.kt +1159 -0
  8. package/android/src/newarch/java/com/rnattachmentkit/RNAttachmentKitPackage.kt +37 -0
  9. package/android/src/oldarch/java/com/rnattachmentkit/NativeRNAttachmentKitSpec.kt +19 -0
  10. package/android/src/oldarch/java/com/rnattachmentkit/RNAttachmentKitModule.kt +1142 -0
  11. package/android/src/oldarch/java/com/rnattachmentkit/RNAttachmentKitPackage.kt +19 -0
  12. package/ios/README.md +213 -0
  13. package/ios/RNAttachmentKit.m +132 -0
  14. package/ios/RNAttachmentKit.swift +1787 -0
  15. package/ios/RNAttachmentKit.xcframework/Info.plist +44 -0
  16. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Assets.car +0 -0
  17. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib +0 -0
  18. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Base.lproj/LaunchScreen.storyboardc/Info.plist +0 -0
  19. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib +0 -0
  20. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Headers/RNAttachmentKit-Swift.h +581 -0
  21. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Info.plist +0 -0
  22. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios.abi.json +34376 -0
  23. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios.private.swiftinterface +517 -0
  24. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  25. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios.swiftinterface +517 -0
  26. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Modules/module.modulemap +3 -0
  27. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/Pretendard-SemiBold.otf +0 -0
  28. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/RNAttachmentKit +0 -0
  29. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_crop_reflect~dark.webp +0 -0
  30. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_crop_reflect~light.webp +0 -0
  31. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_crop_rotate~dark.webp +0 -0
  32. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_crop_rotate~light.webp +0 -0
  33. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_delete~dark.webp +0 -0
  34. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_delete~light.webp +0 -0
  35. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_forward~dark.webp +0 -0
  36. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_forward~light.webp +0 -0
  37. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_reward~dark.webp +0 -0
  38. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_reward~light.webp +0 -0
  39. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_crop~dark.webp +0 -0
  40. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_crop~light.webp +0 -0
  41. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_drawing~dark.webp +0 -0
  42. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_drawing~light.webp +0 -0
  43. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_effect~dark.webp +0 -0
  44. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_effect~light.webp +0 -0
  45. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_emoji~dark.webp +0 -0
  46. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_emoji~light.webp +0 -0
  47. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_eraser~dark.webp +0 -0
  48. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_eraser~light.webp +0 -0
  49. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_mosaic~dark.webp +0 -0
  50. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_mosaic~light.webp +0 -0
  51. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_text~dark.webp +0 -0
  52. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/ToolbarIcons/ic_editor_text~light.webp +0 -0
  53. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/_CodeSignature/CodeDirectory +0 -0
  54. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/_CodeSignature/CodeRequirements +0 -0
  55. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/_CodeSignature/CodeResources +498 -0
  56. package/ios/RNAttachmentKit.xcframework/ios-arm64/RNAttachmentKit.framework/_CodeSignature/CodeSignature +0 -0
  57. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Assets.car +0 -0
  58. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Base.lproj/LaunchScreen.storyboardc/01J-lp-oVM-view-Ze5-6b-2t3.nib +0 -0
  59. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Base.lproj/LaunchScreen.storyboardc/Info.plist +0 -0
  60. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Base.lproj/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.nib +0 -0
  61. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Headers/RNAttachmentKit-Swift.h +1158 -0
  62. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Info.plist +0 -0
  63. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios-simulator.abi.json +34376 -0
  64. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +517 -0
  65. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  66. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface +517 -0
  67. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/x86_64-apple-ios-simulator.abi.json +34376 -0
  68. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +517 -0
  69. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  70. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/RNAttachmentKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +517 -0
  71. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Modules/module.modulemap +3 -0
  72. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/Pretendard-SemiBold.otf +0 -0
  73. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/RNAttachmentKit +0 -0
  74. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_crop_reflect~dark.webp +0 -0
  75. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_crop_reflect~light.webp +0 -0
  76. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_crop_rotate~dark.webp +0 -0
  77. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_crop_rotate~light.webp +0 -0
  78. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_delete~dark.webp +0 -0
  79. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_delete~light.webp +0 -0
  80. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_forward~dark.webp +0 -0
  81. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_forward~light.webp +0 -0
  82. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_reward~dark.webp +0 -0
  83. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_drawing_reward~light.webp +0 -0
  84. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_crop~dark.webp +0 -0
  85. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_crop~light.webp +0 -0
  86. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_drawing~dark.webp +0 -0
  87. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_drawing~light.webp +0 -0
  88. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_effect~dark.webp +0 -0
  89. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_effect~light.webp +0 -0
  90. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_emoji~dark.webp +0 -0
  91. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_emoji~light.webp +0 -0
  92. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_eraser~dark.webp +0 -0
  93. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_eraser~light.webp +0 -0
  94. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_mosaic~dark.webp +0 -0
  95. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_mosaic~light.webp +0 -0
  96. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_text~dark.webp +0 -0
  97. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/ToolbarIcons/ic_editor_text~light.webp +0 -0
  98. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/_CodeSignature/CodeDirectory +0 -0
  99. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/_CodeSignature/CodeRequirements +0 -0
  100. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/_CodeSignature/CodeResources +553 -0
  101. package/ios/RNAttachmentKit.xcframework/ios-arm64_x86_64-simulator/RNAttachmentKit.framework/_CodeSignature/CodeSignature +0 -0
  102. package/ios/RNAttachmentKitAssets/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  103. package/ios/RNAttachmentKitAssets/Assets.xcassets/AppIcon.appiconset/Contents.json +13 -0
  104. package/ios/RNAttachmentKitAssets/Assets.xcassets/Contents.json +6 -0
  105. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_back.imageset/Contents.json +24 -0
  106. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_back.imageset/ic_back_dark.png +0 -0
  107. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_back.imageset/ic_back_normal.png +0 -0
  108. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_drawing_delete.imageset/Contents.json +56 -0
  109. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_drawing_delete.imageset/delete_dark.webp +0 -0
  110. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_drawing_delete.imageset/delete_normal.webp +0 -0
  111. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_drawing_forward.imageset/Contents.json +56 -0
  112. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_drawing_forward.imageset/forward_dark.webp +0 -0
  113. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_drawing_forward.imageset/forward_normal.webp +0 -0
  114. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_drawing_reward.imageset/Contents.json +56 -0
  115. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_drawing_reward.imageset/reward_dark.webp +0 -0
  116. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_drawing_reward.imageset/reward_normal.webp +0 -0
  117. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_crop.imageset/Contents.json +52 -0
  118. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_crop.imageset/crop_dark.webp +0 -0
  119. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_crop.imageset/crop_normal.webp +0 -0
  120. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_drawing.imageset/Contents.json +52 -0
  121. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_drawing.imageset/drawing_dark.webp +0 -0
  122. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_drawing.imageset/drawing_normal.webp +0 -0
  123. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_effect.imageset/Contents.json +52 -0
  124. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_effect.imageset/effect_dark.webp +0 -0
  125. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_effect.imageset/effect_normal.webp +0 -0
  126. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_emoji.imageset/Contents.json +52 -0
  127. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_emoji.imageset/emoji_dark.webp +0 -0
  128. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_emoji.imageset/emoji_normal.webp +0 -0
  129. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_text.imageset/Contents.json +52 -0
  130. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_text.imageset/text_dark.webp +0 -0
  131. package/ios/RNAttachmentKitAssets/Assets.xcassets/ic_editor_text.imageset/text_norml.webp +0 -0
  132. package/ios/RNAttachmentKitAssets/Assets.xcassets/rotate_icon.imageset/Contents.json +32 -0
  133. package/ios/RNAttachmentKitAssets/Assets.xcassets/rotate_icon.imageset/rotate_dark.png +0 -0
  134. package/ios/RNAttachmentKitAssets/Assets.xcassets/rotate_icon.imageset/rotate_normal.png +0 -0
  135. package/ios/RNAttachmentKitAssets/Fonts/Pretendard-SemiBold.otf +0 -0
  136. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_crop_reflect~dark.webp +0 -0
  137. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_crop_reflect~light.webp +0 -0
  138. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_crop_rotate~dark.webp +0 -0
  139. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_crop_rotate~light.webp +0 -0
  140. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_drawing_delete~dark.webp +0 -0
  141. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_drawing_delete~light.webp +0 -0
  142. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_drawing_forward~dark.webp +0 -0
  143. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_drawing_forward~light.webp +0 -0
  144. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_drawing_reward~dark.webp +0 -0
  145. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_drawing_reward~light.webp +0 -0
  146. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_crop~dark.webp +0 -0
  147. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_crop~light.webp +0 -0
  148. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_drawing~dark.webp +0 -0
  149. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_drawing~light.webp +0 -0
  150. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_effect~dark.webp +0 -0
  151. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_effect~light.webp +0 -0
  152. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_emoji~dark.webp +0 -0
  153. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_emoji~light.webp +0 -0
  154. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_eraser~dark.webp +0 -0
  155. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_eraser~light.webp +0 -0
  156. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_mosaic~dark.webp +0 -0
  157. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_mosaic~light.webp +0 -0
  158. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_text~dark.webp +0 -0
  159. package/ios/RNAttachmentKitAssets/ToolbarIcons/ic_editor_text~light.webp +0 -0
  160. package/package.json +68 -0
  161. package/react-native-attachment-kit.podspec +51 -0
  162. package/react-native.config.js +14 -0
  163. package/src/NativeAttachmentKit.ts +26 -0
  164. package/src/index.d.ts +56 -0
  165. package/src/index.ts +359 -0
  166. package/src/types.ts +317 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,19 @@
1
+ # Changelog
2
+
3
+ ## 1.0.0 — 2026-10-02
4
+
5
+ Renamed from `react-native-turbo-image-picker` 2.0.8 (source 1.2.43 + the 2026-10-02 grid-menu and Android expand-position fixes) to `react-native-attachment-kit`. **JS API, options, event names and type names are unchanged** — apps only change the import path.
6
+
7
+ Renamed (externally visible):
8
+ - npm `react-native-attachment-kit`; default export `AttachmentKit` (interface `RNAttachmentKit`); linking error message
9
+ - Native module name `RNAttachmentKit`, codegen `RNAttachmentKitSpec` (`src/NativeAttachmentKit.ts`), Java package `com.rnattachmentkit`
10
+ - iOS: `RNAttachmentKit.xcframework` / Swift module `RNAttachmentKit`, bridge `@objc(RNAttachmentKit)`, resource bundle `RNAttachmentKitAssets`, podspecs `RNAttachmentKit.podspec` (dev) and `react-native-attachment-kit.podspec` (dist)
11
+ - Android: module `android/rnattachmentkit`, package `com.rnattachmentkit(.glide/.rn)`, `RNAttachmentKitModule` / `RNAttachmentKitPackage` / `NativeRNAttachmentKitSpec`, `AttachmentKitGlideModule`, AAR `rnattachmentkit-release.aar`
12
+
13
+ Changed so the package does not collide with the original when installed side by side (side-by-side use is still unsupported — see docs):
14
+ - FileProvider authority `${applicationId}.attachmentkit.fileprovider`, paths file `res/xml/attachment_kit_file_paths.xml`
15
+ - Grid-size storage keys: iOS `UserDefaults` `RNAttachmentKit.mediaGallery.gridColumns`, Android `SharedPreferences` `RNAttachmentKit.mediaGallery` (previously saved grid size is not migrated)
16
+ - iOS cache folder `Caches/RNAttachmentKit`, `NSError` domain `RNAttachmentKit`
17
+ - License notice text now says `react-native-attachment-kit`; license keys are unchanged and keep working
18
+
19
+ Unchanged on purpose: internal class/resource names (`TurboImageCache`, `TurboImagePickerConfig`, `turbo_*` strings, layouts/styles), i18n strings, the editor watermark text.
package/README.md ADDED
@@ -0,0 +1,327 @@
1
+ # React Native Attachment Kit 🚀
2
+
3
+ A highly customizable, high-performance, and purely native image picker and editor for React Native.
4
+
5
+ ## ✨ Features
6
+ - **Pure Native UI**: Built with native iOS and Android for the fastest and smoothest performance.
7
+ - **Built-in Editor & Viewer**: Includes an integrated image editor (cropping, filtering) and a highly optimized image viewer.
8
+ - **Smooth Animations**: Carefully crafted interactions for a premium user experience (e.g., iOS-like smooth thumbnail centering).
9
+ - **Sticky Image Viewer**: The viewer "sticks" to the source image thumbnail with a border-radius animation, creating a seamless shared-element transition on both iOS and Android.
10
+ - **Native Mask View**: A native mask view hides the source thumbnail while the viewer is open, preventing visual duplication — no extra JS-side opacity manipulation required.
11
+ - **Android Overlay Viewer**: Option to render the viewer directly inside the host Activity's Window (no separate Activity or DialogFragment), eliminating AppState blips and enabling real-time background layout updates.
12
+ - **Customizable**: Easily configure theme colors, maximum selection limits, and more.
13
+ - **New Architecture Ready**: Fully supports React Native's New Architecture (Turbo Modules).
14
+
15
+ ---
16
+
17
+ ## 🎥 Demo
18
+
19
+ ### Android
20
+
21
+ | Editor | Mosaic | Multi-Select |
22
+ |:---:|:---:|:---:|
23
+ | ![Android Editor](docs/aos_edit.gif) | ![Android Mosaic](docs/aos_mozaic.gif) | ![Android Multi](docs/aos_multi.gif) |
24
+
25
+ ### iOS
26
+
27
+ | Editor | Mosaic | Multi-Select |
28
+ |:---:|:---:|:---:|
29
+ | ![iOS Editor](docs/ios_edit.gif) | ![iOS Mosaic](docs/ios_mozaic.gif) | ![iOS Multi](docs/ios_multi.gif) |
30
+
31
+ ---
32
+
33
+ ## 📦 Installation
34
+
35
+ ```bash
36
+ # using yarn
37
+ yarn add react-native-attachment-kit
38
+
39
+ # or using npm
40
+ npm install react-native-attachment-kit
41
+ ```
42
+
43
+ If you are using iOS, run pod install:
44
+
45
+ ```bash
46
+ cd ios && pod install
47
+ ```
48
+
49
+ ### iOS Permissions (Info.plist)
50
+ You must add the following permissions to your `ios/YourAppName/Info.plist` file, otherwise your app will crash when trying to access the camera or photo library.
51
+
52
+ ```xml
53
+ <key>NSCameraUsageDescription</key>
54
+ <string>We need access to your camera to take photos and videos.</string>
55
+ <key>NSPhotoLibraryUsageDescription</key>
56
+ <string>We need access to your photo library to select images.</string>
57
+ <key>NSPhotoLibraryAddUsageDescription</key>
58
+ <string>We need access to save edited photos to your library.</string>
59
+ ```
60
+
61
+ ---
62
+
63
+ ## 🛠 Usage Example
64
+
65
+ ```javascript
66
+ import AttachmentKit from 'react-native-attachment-kit';
67
+
68
+ // Step 1: Initialize the module (usually in App.tsx or index.js)
69
+ // Pass your license key (if you have one to remove the watermark) and default configurations
70
+ AttachmentKit.init("", {
71
+ languageCode: 'en',
72
+ themeColor: '#ff0000'
73
+ }).catch(console.error);
74
+
75
+ // Step 2: Open Image Picker
76
+ const handleOpenPicker = async () => {
77
+ try {
78
+ const result = await AttachmentKit.openGallery({
79
+ maxSelection: 10,
80
+ themeColor: '#FF6B35',
81
+ enableEditor: true,
82
+ profileMode: false,
83
+ });
84
+ console.log('Selected Images:', result);
85
+ } catch (error) {
86
+ console.error(error);
87
+ }
88
+ };
89
+ ```
90
+
91
+ ### Image Viewer with Sticky Transition (Recommended)
92
+
93
+ ```javascript
94
+ import AttachmentKit from 'react-native-attachment-kit';
95
+
96
+ // Get the on-screen position of the thumbnail to enable the sticky viewer transition
97
+ const imageRef = useRef(null);
98
+
99
+ const openViewer = () => {
100
+ imageRef.current?.measure((x, y, width, height, pageX, pageY) => {
101
+ AttachmentKit.openViewer({
102
+ images: ['https://example.com/photo1.jpg', 'https://example.com/photo2.jpg'],
103
+ initialIndex: 0,
104
+ themeColor: '#FF6B35',
105
+ // Sticky transition: pass the thumbnail's screen coordinates
106
+ sourceRect: { x: pageX, y: pageY, width, height },
107
+ sourceBorderRadius: 12,
108
+ sourceBorderCorners: ['topLeft', 'topRight', 'bottomLeft', 'bottomRight'],
109
+ // Android: use overlay viewer to avoid AppState blips
110
+ useOverlayViewer: true,
111
+ onPageSelected: (index) => {
112
+ console.log('Viewing image at index:', index);
113
+ },
114
+ onViewerOpened: () => {
115
+ // Android only: called when the open animation finishes.
116
+ // Safe place to run background scroll corrections.
117
+ console.log('Viewer fully open');
118
+ },
119
+ onViewerWillClose: () => {
120
+ console.log('Viewer is closing');
121
+ },
122
+ });
123
+ });
124
+ };
125
+ ```
126
+
127
+ ---
128
+
129
+ ## 📖 API Reference
130
+
131
+ ### `AttachmentKit.init(licenseKey, options?): Promise<boolean>`
132
+
133
+ Initializes the module with a license key and global defaults.
134
+
135
+ | Option | Type | Description |
136
+ |---|---|---|
137
+ | `licenseKey` | `string` | Your license key. Pass `""` for evaluation (watermark shown). |
138
+ | `options.themeColor` | `string` | Global default theme color (hex). |
139
+ | `options.languageCode` | `string` | Global default language code. |
140
+
141
+ ---
142
+
143
+ ### `AttachmentKit.openGallery(options?): Promise<ImageResult[]>`
144
+
145
+ Opens the native image gallery for selecting photos and videos.
146
+
147
+ | Option | Type | Default | Description |
148
+ |---|---|---|---|
149
+ | `maxSelection` | `number` | `1` | Maximum number of images a user can select. |
150
+ | `maxWidth` / `maxHeight` | `number` | — | Maximum dimensions to scale the output image. |
151
+ | `mediaType` | `"photo" \| "video" \| "all"` | `"photo"` | Type of media to show. |
152
+ | `quality` | `number` | `0.8` | Compression quality (0 to 1). |
153
+ | `enableEditor` | `boolean` | `false` | Opens the image editor after a single image selection. |
154
+ | `profileMode` | `boolean` | `false` | Enables 1:1 circular crop mode for profile pictures. |
155
+ | `themeColor` | `string` | — | Primary hex color for the UI (e.g., `"#FFEB3B"`). |
156
+ | `autoCloseOnSelect` | `boolean` | `false` | Close picker automatically on single selection. |
157
+ | `asyncProcessing` | `boolean` | `false` | When `true`, image processing runs in the background and results are delivered via `onImageProcessed`. |
158
+ | `onSelectionChange` | `(event) => void` | — | Callback fired each time the selection count changes. |
159
+ | `onImageProcessed` | `(event) => void` | — | Callback fired per image when `asyncProcessing` is `true`. |
160
+ | `openDuration` / `closeDuration` | `number` | — | Override the open/close animation duration (ms). |
161
+ | `languageCode` | `string` | — | Language for the UI. Supported: `en`, `ko`, `ja`, `zh`, `fr`, `de`, `es`, `pt`, `ru`, `it`, `nl`, `pl`, `tr`, `vi`, `th`, `id`, `ms`, `hi`, `da`. |
162
+ | `doneButtonText` / `allItemsText` / `selectedItemsText` / `recentsAlbumText` | `string` | — | Text overrides for specific UI labels. |
163
+
164
+ ---
165
+
166
+ ### `AttachmentKit.openEditor(options): Promise<ImageResult>`
167
+
168
+ Directly opens the built-in image editor for a specific image.
169
+
170
+ | Option | Type | Description |
171
+ |---|---|---|
172
+ | `uri` | `string` | The URI of the image to edit (`originalUri` from a picker result). |
173
+ | `editedFileUri` | `string` | (Optional) Path to a previously edited version to resume editing from. |
174
+ | `themeColor` | `string` | UI theme color. |
175
+ | `maxWidth` / `maxHeight` | `number` | Maximum bounds for the edited image output. |
176
+ | `openDuration` / `closeDuration` | `number` | Override the open/close animation duration (ms). |
177
+
178
+ ---
179
+
180
+ ### `AttachmentKit.openViewer(options): Promise<void>`
181
+
182
+ Opens a high-performance, full-screen image viewer with smooth swiping, thumbnail navigation, and pinch-to-zoom capabilities.
183
+
184
+ #### Basic Options
185
+
186
+ | Option | Type | Default | Description |
187
+ |---|---|---|---|
188
+ | `images` | `string[]` | **required** | Array of image URIs to display. |
189
+ | `placeholderImages` | `string[]` | — | Low-resolution placeholder URIs shown while the full image loads. |
190
+ | `initialIndex` | `number` | `0` | The index of the image to show first. |
191
+ | `themeColor` | `string` | — | UI theme color (counter badge, thumbnails). |
192
+ | `title` | `string` | — | Title text shown in the viewer toolbar. |
193
+ | `openDuration` / `closeDuration` | `number` | — | Override the open/close animation duration (ms). |
194
+
195
+ #### Sticky Viewer / Shared-Element Transition Options
196
+
197
+ These options enable a smooth "shared-element"-style transition where the viewer zooms out from (and back into) the source thumbnail.
198
+
199
+ | Option | Type | Description |
200
+ |---|---|---|
201
+ | `sourceRect` | `SourceRect` | Screen coordinates (`x`, `y`, `width`, `height`) of the source thumbnail. Obtain via `ref.measure(...)`. Enables the zoom-from-thumbnail open animation. |
202
+ | `sourceBorderRadius` | `number` | Border radius of the source thumbnail. The viewer animates from this radius to 0 (and back on close), creating a seamless shape transition. |
203
+ | `sourceBorderCorners` | `('topLeft' \| 'topRight' \| 'bottomLeft' \| 'bottomRight')[]` | Specifies which corners of the source thumbnail have the border radius. Useful for images with a radius only on specific corners (e.g., chat bubbles). |
204
+ | `sourceBackgroundColor` | `string` | Background color behind the source thumbnail (used to match the background during the open animation). |
205
+ | `hideSourceImage` | `boolean` | When `true`, the native mask view hides the source thumbnail while the viewer is open, preventing visual duplication. The mask is automatically removed when the viewer closes. |
206
+
207
+ #### Callbacks / Event Options
208
+
209
+ | Option | Type | Platform | Description |
210
+ |---|---|---|---|
211
+ | `onPageSelected` | `(index: number) => void` | Both | Called whenever the user swipes to a different image. |
212
+ | `onViewerWillClose` | `() => void` | Both | Called just before the viewer begins its close animation. |
213
+ | `onViewerOpened` | `() => void` | Android | Called once when the open animation finishes. Ideal for triggering background scroll corrections, since the viewer fully covers the screen at this point — no race conditions. |
214
+
215
+ #### Android Viewer Mode Options
216
+
217
+ On Android, the viewer can be opened in three different modes. Choose based on your app's requirements:
218
+
219
+ | Option | Type | Default | Description |
220
+ |---|---|---|---|
221
+ | `useDialogViewer` | `boolean` | `false` | Opens the viewer as a **DialogFragment** (full-screen dialog) instead of a separate Activity. Prevents the RN host Activity from pausing (`onPause`), which otherwise causes `AppState` to briefly report `"background"` and temporarily freezes RN UI interaction. **Limitation:** The DialogFragment still uses a separate Android Window, so background RN view updates (e.g., list scroll corrections) may not render to screen until the viewer closes. |
222
+ | `useOverlayViewer` | `boolean` | `false` | ⭐ **Recommended for Android.** Opens the viewer as a `View` added directly on top of the host Activity's existing Window — no separate Activity or Dialog Window. **Benefits:** AppState never flickers, background RN layout changes (e.g., scroll corrections for the sticky viewer) are reflected in real time (same render tree, same frame). **Note:** When both `useDialogViewer` and `useOverlayViewer` are `true`, `useOverlayViewer` takes priority. |
223
+
224
+ > **Android Viewer Mode Summary:**
225
+ > - Default (no flag): Separate Activity — `AppState` blips, but most stable.
226
+ > - `useDialogViewer: true`: DialogFragment — no `AppState` blip, but background layout updates may be deferred.
227
+ > - `useOverlayViewer: true`: Overlay View — no `AppState` blip, background layout updates work in real time. ✅
228
+
229
+ ---
230
+
231
+ ### `AttachmentKit.updateSourceRect(rect): Promise<void>`
232
+
233
+ Updates the source thumbnail coordinates while the viewer is open. Call this inside `onPageSelected` after measuring the newly selected thumbnail's position, so the close animation correctly animates back to the right thumbnail.
234
+
235
+ ```typescript
236
+ onPageSelected: async (index) => {
237
+ const rect = await measureThumbnail(index); // your measurement logic
238
+ if (rect) {
239
+ AttachmentKit.updateSourceRect(rect);
240
+ }
241
+ }
242
+ ```
243
+
244
+ ---
245
+
246
+ ### `AttachmentKit.closeGallery(): Promise<boolean>`
247
+
248
+ Programmatically closes the gallery picker. Returns `true` if it was open and is now closed.
249
+
250
+ ---
251
+
252
+ ### `AttachmentKit.addSelectionChangeListener(listener): () => void`
253
+
254
+ Subscribes to selection change events outside of `openGallery`. Returns an unsubscribe function.
255
+
256
+ ```typescript
257
+ const unsubscribe = AttachmentKit.addSelectionChangeListener((event) => {
258
+ console.log(`${event.selectedCount} / ${event.maxSelection} selected`);
259
+ });
260
+
261
+ // Later, when done:
262
+ unsubscribe();
263
+ ```
264
+
265
+ ---
266
+
267
+ ### `AttachmentKit.getDefaultAnimationConfig(): Promise<AnimationConfig>`
268
+
269
+ Returns the native default animation durations (in ms) for all transitions. Useful for synchronizing JS animations.
270
+
271
+ ```typescript
272
+ const config = await AttachmentKit.getDefaultAnimationConfig();
273
+ // { galleryOpen, galleryClose, editorOpen, editorClose, viewerOpen, viewerClose }
274
+ ```
275
+
276
+ ---
277
+
278
+ ### `AttachmentKit.injectImageCache(url, localPath): Promise<boolean>`
279
+
280
+ Pre-populates the native image cache (SDWebImage on iOS, Glide on Android) with a local file for a given remote URL. This lets the viewer display the image instantly from disk without a network request.
281
+
282
+ ```typescript
283
+ await AttachmentKit.injectImageCache(
284
+ 'https://example.com/photo.jpg',
285
+ '/path/to/cached/photo.jpg'
286
+ );
287
+ ```
288
+
289
+ ---
290
+
291
+ ### `ImageResult` (Returned Object)
292
+
293
+ When an image is selected or edited, the promise resolves to an array of `ImageResult` objects:
294
+
295
+ | Field | Type | Description |
296
+ |---|---|---|
297
+ | `originalUri` | `string` | URI of the original asset (`ph://` or `file://`). |
298
+ | `originalFileUri` | `string` | File URI of the original-resolution image (`file://`). |
299
+ | `originalWidth` / `originalHeight` | `number` | Dimensions of the original asset. |
300
+ | `uri` | `string` | URI of the resized/edited output image (`file://`). |
301
+ | `width` / `height` | `number` | Dimensions of the output image. |
302
+ | `type` | `string` | MIME type (e.g., `"image/jpeg"`). |
303
+ | `caption` | `string` | Caption text entered in the editor (if any). |
304
+ | `fileName` | `string` | File name of the output image. |
305
+ | `fileExtension` | `string` | File extension (e.g., `"jpg"`). |
306
+ | `fileSize` | `number` | File size in bytes. |
307
+
308
+ ---
309
+
310
+ ### `SourceRect`
311
+
312
+ ```typescript
313
+ interface SourceRect {
314
+ x: number; // Screen X coordinate of the thumbnail
315
+ y: number; // Screen Y coordinate of the thumbnail
316
+ width: number; // Thumbnail width
317
+ height: number; // Thumbnail height
318
+ }
319
+ ```
320
+
321
+ ---
322
+
323
+ ## 📜 License & Contact
324
+
325
+ This `react-native-attachment-kit` library is released under the **MIT License**.
326
+
327
+ 📧 **Contact**: [contact@usomnia.co.kr](mailto:contact@usomnia.co.kr)
@@ -0,0 +1,31 @@
1
+ cmake_minimum_required(VERSION 3.13.4 FATAL_ERROR)
2
+ set(CMAKE_VERBOSE_MAKEFILE ON)
3
+
4
+ project(react_codegen_RNAttachmentKitSpec)
5
+
6
+ set(GENERATED_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/build/generated/source/codegen/jni")
7
+
8
+ if(NOT COMMAND target_compile_reactnative_options)
9
+ macro(target_compile_reactnative_options target scope)
10
+ # Standalone build fail 방지용 더미 (RN 전역 룰이 없을 땐 무시)
11
+ endmacro()
12
+ endif()
13
+ if(EXISTS "${GENERATED_SRC_DIR}/CMakeLists.txt")
14
+ message(STATUS "RNAttachmentKit: Found codegen CMakeLists.txt at ${GENERATED_SRC_DIR}")
15
+ add_subdirectory("${GENERATED_SRC_DIR}" "codegen_RNAttachmentKitSpec")
16
+
17
+ # React Native 0.74 Codegen 버그(타겟명이 AppSpecs로 고정되는 문제) 우회
18
+ if(TARGET react_codegen_AppSpecs AND NOT TARGET react_codegen_RNAttachmentKitSpec)
19
+ message(STATUS "RNAttachmentKit: Bridging react_codegen_AppSpecs -> react_codegen_RNAttachmentKitSpec")
20
+ add_library(react_codegen_RNAttachmentKitSpec INTERFACE)
21
+ target_link_libraries(react_codegen_RNAttachmentKitSpec INTERFACE react_codegen_AppSpecs)
22
+ endif()
23
+ else()
24
+ message(WARNING "RNAttachmentKit: Codegen CMakeLists.txt NOT FOUND! Dummy library will be used to prevent crash.")
25
+ # 앱의 링킹 오류를 방지하기 위해 더미 타겟 생성
26
+ add_library(react_codegen_RNAttachmentKitSpec SHARED)
27
+
28
+ # 더미 소스 생성
29
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp" "void dummy_RNAttachmentKitSpec() {}")
30
+ target_sources(react_codegen_RNAttachmentKitSpec PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp")
31
+ endif()
@@ -0,0 +1,121 @@
1
+ buildscript {
2
+ if (project == rootProject) {
3
+ repositories {
4
+ google()
5
+ mavenCentral()
6
+ }
7
+ dependencies {
8
+ classpath("com.android.tools.build:gradle:8.1.4")
9
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0")
10
+ }
11
+ }
12
+ }
13
+
14
+ def moduleLibsDir = file("$projectDir/src/main/libs")
15
+ rootProject.allprojects {
16
+ repositories {
17
+ flatDir {
18
+ dirs moduleLibsDir
19
+ }
20
+ }
21
+ }
22
+
23
+ if (project == rootProject) {
24
+ allprojects {
25
+ repositories {
26
+ google()
27
+ mavenCentral()
28
+ maven { url 'https://www.jitpack.io' }
29
+ }
30
+ }
31
+ }
32
+
33
+ // Only apply library and React Native plugins if this script is NOT running as the root project.
34
+ // This prevents conflicts when running ./gradlew installDebug for the standalone test app!
35
+ if (project != rootProject) {
36
+ apply plugin: 'com.android.library'
37
+ apply plugin: 'org.jetbrains.kotlin.android'
38
+ apply plugin: 'com.facebook.react'
39
+
40
+ react {
41
+ libraryName = "RNAttachmentKitSpec"
42
+ root = file("../../")
43
+ jsRootDir = file("../../src")
44
+ }
45
+
46
+ android {
47
+ namespace "com.rnattachmentkit.react"
48
+ compileSdkVersion 34
49
+
50
+ defaultConfig {
51
+ minSdkVersion 24
52
+ targetSdkVersion 34
53
+ }
54
+ compileOptions {
55
+ sourceCompatibility JavaVersion.VERSION_17
56
+ targetCompatibility JavaVersion.VERSION_17
57
+ }
58
+ kotlinOptions {
59
+ jvmTarget = "17"
60
+ }
61
+
62
+ buildFeatures {
63
+ buildConfig false
64
+ }
65
+
66
+ externalNativeBuild {
67
+ cmake {
68
+ path "CMakeLists.txt"
69
+ }
70
+ }
71
+
72
+ sourceSets {
73
+ main {
74
+ java {
75
+ def newArchEnabled = project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
76
+ if (newArchEnabled) {
77
+ srcDirs = [
78
+ "src/newarch/java",
79
+ ]
80
+ } else {
81
+ srcDirs = [
82
+ "src/oldarch/java",
83
+ ]
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+
90
+ dependencies {
91
+ implementation files('src/main/libs/rnattachmentkit-release.aar')
92
+ compileOnly "com.facebook.react:react-android:+"
93
+
94
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
95
+ implementation "androidx.core:core-ktx:1.12.0"
96
+ implementation "androidx.appcompat:appcompat:1.6.1"
97
+ implementation "androidx.activity:activity-ktx:1.8.2"
98
+ implementation "androidx.fragment:fragment-ktx:1.6.2"
99
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"
100
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3"
101
+ implementation "com.google.android.material:material:1.11.0"
102
+ implementation "androidx.recyclerview:recyclerview:1.3.2"
103
+ implementation "androidx.cardview:cardview:1.0.0"
104
+ implementation "androidx.coordinatorlayout:coordinatorlayout:1.2.0"
105
+ implementation "com.github.bumptech.glide:glide:4.16.0"
106
+ // ⚠️ 필수: AAR(files(...))로 배포되는 구조라 AAR 내부의 implementation 의존성은
107
+ // 소비 앱(ZemTalk 등)으로 전달되지 않습니다. AttachmentKitGlideModule이
108
+ // OkHttpUrlLoader를 사용하므로 여기에도 반드시 선언해야 합니다. 빠지면 런타임에
109
+ // NoClassDefFoundError로 Glide 초기화가 실패해 피커/뷰어 이미지가 전부 안 뜹니다.
110
+ implementation "com.github.bumptech.glide:okhttp3-integration:4.16.0"
111
+ implementation "androidx.exifinterface:exifinterface:1.3.7"
112
+
113
+ // CameraX dependencies
114
+ def camerax_version = "1.3.1"
115
+ implementation "androidx.camera:camera-core:${camerax_version}"
116
+ implementation "androidx.camera:camera-camera2:${camerax_version}"
117
+ implementation "androidx.camera:camera-lifecycle:${camerax_version}"
118
+ implementation "androidx.camera:camera-view:${camerax_version}"
119
+ implementation "androidx.camera:camera-extensions:${camerax_version}"
120
+ }
121
+ }
@@ -0,0 +1,2 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+ </manifest>