react-native-ensys-camera-x 1.0.7

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 (506) hide show
  1. package/CustomCamera.podspec +20 -0
  2. package/LICENSE +20 -0
  3. package/README.md +833 -0
  4. package/android/build.gradle +135 -0
  5. package/android/consumer-rules.pro +47 -0
  6. package/android/src/main/AndroidManifest.xml +72 -0
  7. package/android/src/main/java/android/print/PdfPrint.java +51 -0
  8. package/android/src/main/java/com/customcamera/AnimatedImageViewManager.kt +199 -0
  9. package/android/src/main/java/com/customcamera/AudioPlayerView.kt +322 -0
  10. package/android/src/main/java/com/customcamera/AudioRecorder.kt +506 -0
  11. package/android/src/main/java/com/customcamera/BarcodeScannerActivity.kt +361 -0
  12. package/android/src/main/java/com/customcamera/BlurBackgroundView.kt +199 -0
  13. package/android/src/main/java/com/customcamera/CacheCleanupManager.kt +386 -0
  14. package/android/src/main/java/com/customcamera/CameraAspectRatioMode.kt +77 -0
  15. package/android/src/main/java/com/customcamera/CameraAsset.kt +211 -0
  16. package/android/src/main/java/com/customcamera/CameraTheme.kt +479 -0
  17. package/android/src/main/java/com/customcamera/CompressionCacheStore.kt +504 -0
  18. package/android/src/main/java/com/customcamera/CompressionFileNameUtils.kt +7 -0
  19. package/android/src/main/java/com/customcamera/CompressionProfile.kt +195 -0
  20. package/android/src/main/java/com/customcamera/CustomCameraActivity.kt +7291 -0
  21. package/android/src/main/java/com/customcamera/CustomCameraFileProvider.kt +9 -0
  22. package/android/src/main/java/com/customcamera/CustomCameraModule.kt +2479 -0
  23. package/android/src/main/java/com/customcamera/CustomCameraPackage.kt +53 -0
  24. package/android/src/main/java/com/customcamera/DisplayUtils.kt +9 -0
  25. package/android/src/main/java/com/customcamera/DocumentPreviewView.kt +846 -0
  26. package/android/src/main/java/com/customcamera/DrawingView.kt +214 -0
  27. package/android/src/main/java/com/customcamera/EmojiPickerData.kt +228 -0
  28. package/android/src/main/java/com/customcamera/FilterStripAdapter.kt +158 -0
  29. package/android/src/main/java/com/customcamera/GifSupport.kt +215 -0
  30. package/android/src/main/java/com/customcamera/GlobalAudioPlayer.kt +320 -0
  31. package/android/src/main/java/com/customcamera/ImageExporter.kt +1394 -0
  32. package/android/src/main/java/com/customcamera/ImageFormatSupport.kt +163 -0
  33. package/android/src/main/java/com/customcamera/Localization.kt +206 -0
  34. package/android/src/main/java/com/customcamera/MediaAdapters.kt +758 -0
  35. package/android/src/main/java/com/customcamera/MediaCacheManager.kt +782 -0
  36. package/android/src/main/java/com/customcamera/MediaExportFormats.kt +201 -0
  37. package/android/src/main/java/com/customcamera/MediaFileIo.kt +310 -0
  38. package/android/src/main/java/com/customcamera/MediaMetadataStore.kt +494 -0
  39. package/android/src/main/java/com/customcamera/MediaPreviewEditor.kt +14865 -0
  40. package/android/src/main/java/com/customcamera/MediaPublisher.kt +423 -0
  41. package/android/src/main/java/com/customcamera/MediaStorageWorkflow.kt +722 -0
  42. package/android/src/main/java/com/customcamera/MediaStoreRepository.kt +378 -0
  43. package/android/src/main/java/com/customcamera/MediaThumbnailView.kt +286 -0
  44. package/android/src/main/java/com/customcamera/MediaUtils.kt +37 -0
  45. package/android/src/main/java/com/customcamera/NativeVideoViewManager.kt +845 -0
  46. package/android/src/main/java/com/customcamera/OfficeDocumentConverter.kt +2791 -0
  47. package/android/src/main/java/com/customcamera/PendingCaptureCrops.kt +88 -0
  48. package/android/src/main/java/com/customcamera/PowerPointPreview.kt +4077 -0
  49. package/android/src/main/java/com/customcamera/RecentPickerStore.kt +74 -0
  50. package/android/src/main/java/com/customcamera/SecureFileEraser.kt +411 -0
  51. package/android/src/main/java/com/customcamera/SecureKeyModule.kt +88 -0
  52. package/android/src/main/java/com/customcamera/SecureMediaDeleter.kt +493 -0
  53. package/android/src/main/java/com/customcamera/StickerPickerData.kt +107 -0
  54. package/android/src/main/java/com/customcamera/SvgDrawable.kt +175 -0
  55. package/android/src/main/java/com/customcamera/SvgIconViewManager.kt +77 -0
  56. package/android/src/main/java/com/customcamera/TextEntryController.kt +553 -0
  57. package/android/src/main/java/com/customcamera/ThumbnailLoader.kt +455 -0
  58. package/android/src/main/java/com/customcamera/UploadService.kt +909 -0
  59. package/android/src/main/java/com/customcamera/VideoEditUtils.kt +210 -0
  60. package/android/src/main/java/com/customcamera/VideoRotationTranscoder.kt +1992 -0
  61. package/android/src/main/java/com/customcamera/gif/AnimatedGifEncoder.kt +473 -0
  62. package/android/src/main/java/com/customcamera/gif/GifDecoder.kt +690 -0
  63. package/android/src/main/java/com/customcamera/gif/GifFramesDrawable.kt +160 -0
  64. package/android/src/main/java/com/customcamera/gif/GifHttp.kt +112 -0
  65. package/android/src/main/java/com/customcamera/gif/GifImageLoader.kt +186 -0
  66. package/android/src/main/java/com/customcamera/gif/GifModels.kt +74 -0
  67. package/android/src/main/java/com/customcamera/gif/GifProvider.kt +49 -0
  68. package/android/src/main/java/com/customcamera/gif/GifProviders.kt +27 -0
  69. package/android/src/main/java/com/customcamera/gif/GifRepository.kt +124 -0
  70. package/android/src/main/java/com/customcamera/gif/GifSafety.kt +33 -0
  71. package/android/src/main/java/com/customcamera/gif/GiphyGifProvider.kt +146 -0
  72. package/android/src/main/java/com/customcamera/gif/LZWEncoder.kt +258 -0
  73. package/android/src/main/java/com/customcamera/gif/NeuQuant.kt +435 -0
  74. package/android/src/main/java/com/customcamera/gif/TenorGifProvider.kt +147 -0
  75. package/android/src/main/res/drawable/bg_brush_selected.xml +5 -0
  76. package/android/src/main/res/drawable/bg_color_swatch.xml +5 -0
  77. package/android/src/main/res/drawable/bg_editor_toolbar.xml +6 -0
  78. package/android/src/main/res/drawable/bg_icon_circle.xml +5 -0
  79. package/android/src/main/res/drawable/bg_icon_circle_light.xml +5 -0
  80. package/android/src/main/res/drawable/bg_mode_tab_active.xml +6 -0
  81. package/android/src/main/res/drawable/bg_pill.xml +6 -0
  82. package/android/src/main/res/drawable/bg_recording_dot.xml +6 -0
  83. package/android/src/main/res/drawable/bg_selection_badge.xml +8 -0
  84. package/android/src/main/res/drawable/bg_send_button.xml +5 -0
  85. package/android/src/main/res/drawable/bg_shutter_inner.xml +5 -0
  86. package/android/src/main/res/drawable/bg_shutter_recording.xml +6 -0
  87. package/android/src/main/res/drawable/bg_shutter_ring.xml +8 -0
  88. package/android/src/main/res/drawable/bg_shutter_video_idle.xml +5 -0
  89. package/android/src/main/res/drawable/bg_thumbnail.xml +9 -0
  90. package/android/src/main/res/drawable/ic_aspect_ratio.xml +17 -0
  91. package/android/src/main/res/drawable/ic_audio.xml +10 -0
  92. package/android/src/main/res/drawable/ic_back.xml +10 -0
  93. package/android/src/main/res/drawable/ic_brush_medium.xml +12 -0
  94. package/android/src/main/res/drawable/ic_brush_thick.xml +12 -0
  95. package/android/src/main/res/drawable/ic_brush_thin.xml +12 -0
  96. package/android/src/main/res/drawable/ic_check.xml +17 -0
  97. package/android/src/main/res/drawable/ic_chevron_down.xml +10 -0
  98. package/android/src/main/res/drawable/ic_chevron_up.xml +13 -0
  99. package/android/src/main/res/drawable/ic_clear_drawing.xml +10 -0
  100. package/android/src/main/res/drawable/ic_close.xml +10 -0
  101. package/android/src/main/res/drawable/ic_cover.xml +9 -0
  102. package/android/src/main/res/drawable/ic_crop.xml +10 -0
  103. package/android/src/main/res/drawable/ic_delete.xml +9 -0
  104. package/android/src/main/res/drawable/ic_document.xml +10 -0
  105. package/android/src/main/res/drawable/ic_done.xml +10 -0
  106. package/android/src/main/res/drawable/ic_download.xml +10 -0
  107. package/android/src/main/res/drawable/ic_emoji.xml +10 -0
  108. package/android/src/main/res/drawable/ic_filter.xml +10 -0
  109. package/android/src/main/res/drawable/ic_flash_auto.xml +7 -0
  110. package/android/src/main/res/drawable/ic_flash_off.xml +23 -0
  111. package/android/src/main/res/drawable/ic_flash_on.xml +16 -0
  112. package/android/src/main/res/drawable/ic_flip.xml +15 -0
  113. package/android/src/main/res/drawable/ic_gallery.xml +10 -0
  114. package/android/src/main/res/drawable/ic_gif.xml +24 -0
  115. package/android/src/main/res/drawable/ic_lock.xml +19 -0
  116. package/android/src/main/res/drawable/ic_lock_open.xml +22 -0
  117. package/android/src/main/res/drawable/ic_marker.xml +10 -0
  118. package/android/src/main/res/drawable/ic_more_vert.xml +18 -0
  119. package/android/src/main/res/drawable/ic_overlay_close.xml +19 -0
  120. package/android/src/main/res/drawable/ic_overlay_resize.xml +18 -0
  121. package/android/src/main/res/drawable/ic_pause.xml +10 -0
  122. package/android/src/main/res/drawable/ic_photo_mode.xml +10 -0
  123. package/android/src/main/res/drawable/ic_play.xml +10 -0
  124. package/android/src/main/res/drawable/ic_redo.xml +10 -0
  125. package/android/src/main/res/drawable/ic_rotate.xml +9 -0
  126. package/android/src/main/res/drawable/ic_send.xml +10 -0
  127. package/android/src/main/res/drawable/ic_share.xml +10 -0
  128. package/android/src/main/res/drawable/ic_stat_upload.xml +10 -0
  129. package/android/src/main/res/drawable/ic_sticker.xml +24 -0
  130. package/android/src/main/res/drawable/ic_text.xml +10 -0
  131. package/android/src/main/res/drawable/ic_text_align_center.xml +11 -0
  132. package/android/src/main/res/drawable/ic_text_align_left.xml +11 -0
  133. package/android/src/main/res/drawable/ic_text_align_right.xml +11 -0
  134. package/android/src/main/res/drawable/ic_text_bg.xml +11 -0
  135. package/android/src/main/res/drawable/ic_trim.xml +23 -0
  136. package/android/src/main/res/drawable/ic_undo.xml +10 -0
  137. package/android/src/main/res/drawable/ic_video_mode.xml +10 -0
  138. package/android/src/main/res/drawable/ic_video_note.xml +13 -0
  139. package/android/src/main/res/drawable/ic_volume_off.xml +9 -0
  140. package/android/src/main/res/drawable/ic_volume_on.xml +9 -0
  141. package/android/src/main/res/drawable/sticker_heart.xml +9 -0
  142. package/android/src/main/res/drawable/sticker_smile.xml +9 -0
  143. package/android/src/main/res/drawable/sticker_star.xml +9 -0
  144. package/android/src/main/res/drawable/sticker_thumbsup.xml +9 -0
  145. package/android/src/main/res/values/colors.xml +34 -0
  146. package/android/src/main/res/values/ids.xml +15 -0
  147. package/android/src/main/res/values/strings.xml +15 -0
  148. package/android/src/main/res/values/styles.xml +20 -0
  149. package/android/src/main/res/xml/file_paths.xml +34 -0
  150. package/ios/CustomCamera.h +5 -0
  151. package/ios/CustomCamera.mm +214 -0
  152. package/lib/module/AudioPlayerContext.js +233 -0
  153. package/lib/module/AudioPlayerContext.js.map +1 -0
  154. package/lib/module/CameraPreview.js +304 -0
  155. package/lib/module/CameraPreview.js.map +1 -0
  156. package/lib/module/NativeAnimatedImageView.js +41 -0
  157. package/lib/module/NativeAnimatedImageView.js.map +1 -0
  158. package/lib/module/NativeAudioPlayerView.js +33 -0
  159. package/lib/module/NativeAudioPlayerView.js.map +1 -0
  160. package/lib/module/NativeBlurView.js +35 -0
  161. package/lib/module/NativeBlurView.js.map +1 -0
  162. package/lib/module/NativeCustomCamera.js +128 -0
  163. package/lib/module/NativeCustomCamera.js.map +1 -0
  164. package/lib/module/NativeCustomCamera.web.js +143 -0
  165. package/lib/module/NativeCustomCamera.web.js.map +1 -0
  166. package/lib/module/NativeCustomVideoView.js +5 -0
  167. package/lib/module/NativeCustomVideoView.js.map +1 -0
  168. package/lib/module/NativeDocumentPreviewView.js +156 -0
  169. package/lib/module/NativeDocumentPreviewView.js.map +1 -0
  170. package/lib/module/NativeMediaThumbnailView.js +110 -0
  171. package/lib/module/NativeMediaThumbnailView.js.map +1 -0
  172. package/lib/module/NativeSvgIcon.js +32 -0
  173. package/lib/module/NativeSvgIcon.js.map +1 -0
  174. package/lib/module/ResponsivePreviewContainer.js +171 -0
  175. package/lib/module/ResponsivePreviewContainer.js.map +1 -0
  176. package/lib/module/accessibility.js +61 -0
  177. package/lib/module/accessibility.js.map +1 -0
  178. package/lib/module/config.js +352 -0
  179. package/lib/module/config.js.map +1 -0
  180. package/lib/module/cpuOptimization.js +296 -0
  181. package/lib/module/cpuOptimization.js.map +1 -0
  182. package/lib/module/db/DatabaseManager.js +191 -0
  183. package/lib/module/db/DatabaseManager.js.map +1 -0
  184. package/lib/module/db/MediaMapper.js +284 -0
  185. package/lib/module/db/MediaMapper.js.map +1 -0
  186. package/lib/module/db/MediaRepository.js +242 -0
  187. package/lib/module/db/MediaRepository.js.map +1 -0
  188. package/lib/module/db/index.js +41 -0
  189. package/lib/module/db/index.js.map +1 -0
  190. package/lib/module/db/migrations.js +180 -0
  191. package/lib/module/db/migrations.js.map +1 -0
  192. package/lib/module/db/react-native-sqlcipher.d.js +2 -0
  193. package/lib/module/db/react-native-sqlcipher.d.js.map +1 -0
  194. package/lib/module/db/secureKey.js +87 -0
  195. package/lib/module/db/secureKey.js.map +1 -0
  196. package/lib/module/db/types.js +57 -0
  197. package/lib/module/db/types.js.map +1 -0
  198. package/lib/module/db/useMediaDatabase.js +123 -0
  199. package/lib/module/db/useMediaDatabase.js.map +1 -0
  200. package/lib/module/defaultIcons.js +2259 -0
  201. package/lib/module/defaultIcons.js.map +1 -0
  202. package/lib/module/deviceCapabilities.js +408 -0
  203. package/lib/module/deviceCapabilities.js.map +1 -0
  204. package/lib/module/errors.js +267 -0
  205. package/lib/module/errors.js.map +1 -0
  206. package/lib/module/iconConfig.js +796 -0
  207. package/lib/module/iconConfig.js.map +1 -0
  208. package/lib/module/icons.js +514 -0
  209. package/lib/module/icons.js.map +1 -0
  210. package/lib/module/index.js +251 -0
  211. package/lib/module/index.js.map +1 -0
  212. package/lib/module/jest-globals.d.js +2 -0
  213. package/lib/module/jest-globals.d.js.map +1 -0
  214. package/lib/module/library/MediaLibrary.js +107 -0
  215. package/lib/module/library/MediaLibrary.js.map +1 -0
  216. package/lib/module/library/MediaLibraryScreen.js +2597 -0
  217. package/lib/module/library/MediaLibraryScreen.js.map +1 -0
  218. package/lib/module/library/components/AudioPreview.js +74 -0
  219. package/lib/module/library/components/AudioPreview.js.map +1 -0
  220. package/lib/module/library/components/DocumentPreview.js +331 -0
  221. package/lib/module/library/components/DocumentPreview.js.map +1 -0
  222. package/lib/module/library/components/ExpandableFab.js +343 -0
  223. package/lib/module/library/components/ExpandableFab.js.map +1 -0
  224. package/lib/module/library/components/FileTiles.js +251 -0
  225. package/lib/module/library/components/FileTiles.js.map +1 -0
  226. package/lib/module/library/components/ImagePreview.js +70 -0
  227. package/lib/module/library/components/ImagePreview.js.map +1 -0
  228. package/lib/module/library/components/MediaMetadataHeader.js +175 -0
  229. package/lib/module/library/components/MediaMetadataHeader.js.map +1 -0
  230. package/lib/module/library/components/RecordAudioScreen.js +816 -0
  231. package/lib/module/library/components/RecordAudioScreen.js.map +1 -0
  232. package/lib/module/library/components/VideoPreview.js +453 -0
  233. package/lib/module/library/components/VideoPreview.js.map +1 -0
  234. package/lib/module/library/components/ViewerCounter.js +55 -0
  235. package/lib/module/library/components/ViewerCounter.js.map +1 -0
  236. package/lib/module/library/compressionEstimate.js +507 -0
  237. package/lib/module/library/compressionEstimate.js.map +1 -0
  238. package/lib/module/library/fileMetadata.js +196 -0
  239. package/lib/module/library/fileMetadata.js.map +1 -0
  240. package/lib/module/library/index.js +42 -0
  241. package/lib/module/library/index.js.map +1 -0
  242. package/lib/module/library/libraryIconRegistry.js +69 -0
  243. package/lib/module/library/libraryIconRegistry.js.map +1 -0
  244. package/lib/module/library/libraryIcons.js +858 -0
  245. package/lib/module/library/libraryIcons.js.map +1 -0
  246. package/lib/module/library/localizedFormat.js +181 -0
  247. package/lib/module/library/localizedFormat.js.map +1 -0
  248. package/lib/module/library/palette.js +225 -0
  249. package/lib/module/library/palette.js.map +1 -0
  250. package/lib/module/library/responsive.js +53 -0
  251. package/lib/module/library/responsive.js.map +1 -0
  252. package/lib/module/locales.js +416 -0
  253. package/lib/module/locales.js.map +1 -0
  254. package/lib/module/localization.js +1064 -0
  255. package/lib/module/localization.js.map +1 -0
  256. package/lib/module/logger.js +20 -0
  257. package/lib/module/logger.js.map +1 -0
  258. package/lib/module/lowMemoryCache.js +206 -0
  259. package/lib/module/lowMemoryCache.js.map +1 -0
  260. package/lib/module/mediaHistory.js +33 -0
  261. package/lib/module/mediaHistory.js.map +1 -0
  262. package/lib/module/mediaStorageService.js +402 -0
  263. package/lib/module/mediaStorageService.js.map +1 -0
  264. package/lib/module/memory.js +79 -0
  265. package/lib/module/memory.js.map +1 -0
  266. package/lib/module/nativeActions.js +307 -0
  267. package/lib/module/nativeActions.js.map +1 -0
  268. package/lib/module/nativeComponentSupport.js +61 -0
  269. package/lib/module/nativeComponentSupport.js.map +1 -0
  270. package/lib/module/networkPerformance.js +24 -0
  271. package/lib/module/networkPerformance.js.map +1 -0
  272. package/lib/module/package.json +1 -0
  273. package/lib/module/performance.js +104 -0
  274. package/lib/module/performance.js.map +1 -0
  275. package/lib/module/performanceMonitor.js +155 -0
  276. package/lib/module/performanceMonitor.js.map +1 -0
  277. package/lib/module/permissions.js +370 -0
  278. package/lib/module/permissions.js.map +1 -0
  279. package/lib/module/rendering.js +40 -0
  280. package/lib/module/rendering.js.map +1 -0
  281. package/lib/module/security.js +18 -0
  282. package/lib/module/security.js.map +1 -0
  283. package/lib/module/state.js +266 -0
  284. package/lib/module/state.js.map +1 -0
  285. package/lib/module/storage.js +400 -0
  286. package/lib/module/storage.js.map +1 -0
  287. package/lib/module/theme.js +390 -0
  288. package/lib/module/theme.js.map +1 -0
  289. package/lib/module/types.js +4 -0
  290. package/lib/module/types.js.map +1 -0
  291. package/lib/module/utils.js +115 -0
  292. package/lib/module/utils.js.map +1 -0
  293. package/lib/module/validation.js +288 -0
  294. package/lib/module/validation.js.map +1 -0
  295. package/lib/typescript/package.json +1 -0
  296. package/lib/typescript/src/AudioPlayerContext.d.ts +27 -0
  297. package/lib/typescript/src/AudioPlayerContext.d.ts.map +1 -0
  298. package/lib/typescript/src/CameraPreview.d.ts +13 -0
  299. package/lib/typescript/src/CameraPreview.d.ts.map +1 -0
  300. package/lib/typescript/src/NativeAnimatedImageView.d.ts +33 -0
  301. package/lib/typescript/src/NativeAnimatedImageView.d.ts.map +1 -0
  302. package/lib/typescript/src/NativeAudioPlayerView.d.ts +12 -0
  303. package/lib/typescript/src/NativeAudioPlayerView.d.ts.map +1 -0
  304. package/lib/typescript/src/NativeBlurView.d.ts +12 -0
  305. package/lib/typescript/src/NativeBlurView.d.ts.map +1 -0
  306. package/lib/typescript/src/NativeCustomCamera.d.ts +167 -0
  307. package/lib/typescript/src/NativeCustomCamera.d.ts.map +1 -0
  308. package/lib/typescript/src/NativeCustomCamera.web.d.ts +47 -0
  309. package/lib/typescript/src/NativeCustomCamera.web.d.ts.map +1 -0
  310. package/lib/typescript/src/NativeCustomVideoView.d.ts +30 -0
  311. package/lib/typescript/src/NativeCustomVideoView.d.ts.map +1 -0
  312. package/lib/typescript/src/NativeDocumentPreviewView.d.ts +48 -0
  313. package/lib/typescript/src/NativeDocumentPreviewView.d.ts.map +1 -0
  314. package/lib/typescript/src/NativeMediaThumbnailView.d.ts +54 -0
  315. package/lib/typescript/src/NativeMediaThumbnailView.d.ts.map +1 -0
  316. package/lib/typescript/src/NativeSvgIcon.d.ts +25 -0
  317. package/lib/typescript/src/NativeSvgIcon.d.ts.map +1 -0
  318. package/lib/typescript/src/ResponsivePreviewContainer.d.ts +92 -0
  319. package/lib/typescript/src/ResponsivePreviewContainer.d.ts.map +1 -0
  320. package/lib/typescript/src/accessibility.d.ts +20 -0
  321. package/lib/typescript/src/accessibility.d.ts.map +1 -0
  322. package/lib/typescript/src/config.d.ts +145 -0
  323. package/lib/typescript/src/config.d.ts.map +1 -0
  324. package/lib/typescript/src/cpuOptimization.d.ts +63 -0
  325. package/lib/typescript/src/cpuOptimization.d.ts.map +1 -0
  326. package/lib/typescript/src/db/DatabaseManager.d.ts +48 -0
  327. package/lib/typescript/src/db/DatabaseManager.d.ts.map +1 -0
  328. package/lib/typescript/src/db/MediaMapper.d.ts +77 -0
  329. package/lib/typescript/src/db/MediaMapper.d.ts.map +1 -0
  330. package/lib/typescript/src/db/MediaRepository.d.ts +66 -0
  331. package/lib/typescript/src/db/MediaRepository.d.ts.map +1 -0
  332. package/lib/typescript/src/db/index.d.ts +23 -0
  333. package/lib/typescript/src/db/index.d.ts.map +1 -0
  334. package/lib/typescript/src/db/migrations.d.ts +31 -0
  335. package/lib/typescript/src/db/migrations.d.ts.map +1 -0
  336. package/lib/typescript/src/db/secureKey.d.ts +10 -0
  337. package/lib/typescript/src/db/secureKey.d.ts.map +1 -0
  338. package/lib/typescript/src/db/types.d.ts +115 -0
  339. package/lib/typescript/src/db/types.d.ts.map +1 -0
  340. package/lib/typescript/src/db/useMediaDatabase.d.ts +41 -0
  341. package/lib/typescript/src/db/useMediaDatabase.d.ts.map +1 -0
  342. package/lib/typescript/src/defaultIcons.d.ts +139 -0
  343. package/lib/typescript/src/defaultIcons.d.ts.map +1 -0
  344. package/lib/typescript/src/deviceCapabilities.d.ts +92 -0
  345. package/lib/typescript/src/deviceCapabilities.d.ts.map +1 -0
  346. package/lib/typescript/src/errors.d.ts +95 -0
  347. package/lib/typescript/src/errors.d.ts.map +1 -0
  348. package/lib/typescript/src/iconConfig.d.ts +176 -0
  349. package/lib/typescript/src/iconConfig.d.ts.map +1 -0
  350. package/lib/typescript/src/icons.d.ts +217 -0
  351. package/lib/typescript/src/icons.d.ts.map +1 -0
  352. package/lib/typescript/src/index.d.ts +104 -0
  353. package/lib/typescript/src/index.d.ts.map +1 -0
  354. package/lib/typescript/src/library/MediaLibrary.d.ts +57 -0
  355. package/lib/typescript/src/library/MediaLibrary.d.ts.map +1 -0
  356. package/lib/typescript/src/library/MediaLibraryScreen.d.ts +51 -0
  357. package/lib/typescript/src/library/MediaLibraryScreen.d.ts.map +1 -0
  358. package/lib/typescript/src/library/components/AudioPreview.d.ts +6 -0
  359. package/lib/typescript/src/library/components/AudioPreview.d.ts.map +1 -0
  360. package/lib/typescript/src/library/components/DocumentPreview.d.ts +10 -0
  361. package/lib/typescript/src/library/components/DocumentPreview.d.ts.map +1 -0
  362. package/lib/typescript/src/library/components/ExpandableFab.d.ts +39 -0
  363. package/lib/typescript/src/library/components/ExpandableFab.d.ts.map +1 -0
  364. package/lib/typescript/src/library/components/FileTiles.d.ts +8 -0
  365. package/lib/typescript/src/library/components/FileTiles.d.ts.map +1 -0
  366. package/lib/typescript/src/library/components/ImagePreview.d.ts +5 -0
  367. package/lib/typescript/src/library/components/ImagePreview.d.ts.map +1 -0
  368. package/lib/typescript/src/library/components/MediaMetadataHeader.d.ts +16 -0
  369. package/lib/typescript/src/library/components/MediaMetadataHeader.d.ts.map +1 -0
  370. package/lib/typescript/src/library/components/RecordAudioScreen.d.ts +8 -0
  371. package/lib/typescript/src/library/components/RecordAudioScreen.d.ts.map +1 -0
  372. package/lib/typescript/src/library/components/VideoPreview.d.ts +20 -0
  373. package/lib/typescript/src/library/components/VideoPreview.d.ts.map +1 -0
  374. package/lib/typescript/src/library/components/ViewerCounter.d.ts +13 -0
  375. package/lib/typescript/src/library/components/ViewerCounter.d.ts.map +1 -0
  376. package/lib/typescript/src/library/compressionEstimate.d.ts +313 -0
  377. package/lib/typescript/src/library/compressionEstimate.d.ts.map +1 -0
  378. package/lib/typescript/src/library/fileMetadata.d.ts +33 -0
  379. package/lib/typescript/src/library/fileMetadata.d.ts.map +1 -0
  380. package/lib/typescript/src/library/index.d.ts +40 -0
  381. package/lib/typescript/src/library/index.d.ts.map +1 -0
  382. package/lib/typescript/src/library/libraryIconRegistry.d.ts +35 -0
  383. package/lib/typescript/src/library/libraryIconRegistry.d.ts.map +1 -0
  384. package/lib/typescript/src/library/libraryIcons.d.ts +85 -0
  385. package/lib/typescript/src/library/libraryIcons.d.ts.map +1 -0
  386. package/lib/typescript/src/library/localizedFormat.d.ts +49 -0
  387. package/lib/typescript/src/library/localizedFormat.d.ts.map +1 -0
  388. package/lib/typescript/src/library/palette.d.ts +104 -0
  389. package/lib/typescript/src/library/palette.d.ts.map +1 -0
  390. package/lib/typescript/src/library/responsive.d.ts +15 -0
  391. package/lib/typescript/src/library/responsive.d.ts.map +1 -0
  392. package/lib/typescript/src/locales.d.ts +103 -0
  393. package/lib/typescript/src/locales.d.ts.map +1 -0
  394. package/lib/typescript/src/localization.d.ts +1051 -0
  395. package/lib/typescript/src/localization.d.ts.map +1 -0
  396. package/lib/typescript/src/logger.d.ts +4 -0
  397. package/lib/typescript/src/logger.d.ts.map +1 -0
  398. package/lib/typescript/src/lowMemoryCache.d.ts +64 -0
  399. package/lib/typescript/src/lowMemoryCache.d.ts.map +1 -0
  400. package/lib/typescript/src/mediaHistory.d.ts +3 -0
  401. package/lib/typescript/src/mediaHistory.d.ts.map +1 -0
  402. package/lib/typescript/src/mediaStorageService.d.ts +155 -0
  403. package/lib/typescript/src/mediaStorageService.d.ts.map +1 -0
  404. package/lib/typescript/src/memory.d.ts +21 -0
  405. package/lib/typescript/src/memory.d.ts.map +1 -0
  406. package/lib/typescript/src/nativeActions.d.ts +174 -0
  407. package/lib/typescript/src/nativeActions.d.ts.map +1 -0
  408. package/lib/typescript/src/nativeComponentSupport.d.ts +30 -0
  409. package/lib/typescript/src/nativeComponentSupport.d.ts.map +1 -0
  410. package/lib/typescript/src/networkPerformance.d.ts +12 -0
  411. package/lib/typescript/src/networkPerformance.d.ts.map +1 -0
  412. package/lib/typescript/src/performance.d.ts +32 -0
  413. package/lib/typescript/src/performance.d.ts.map +1 -0
  414. package/lib/typescript/src/performanceMonitor.d.ts +45 -0
  415. package/lib/typescript/src/performanceMonitor.d.ts.map +1 -0
  416. package/lib/typescript/src/permissions.d.ts +132 -0
  417. package/lib/typescript/src/permissions.d.ts.map +1 -0
  418. package/lib/typescript/src/rendering.d.ts +9 -0
  419. package/lib/typescript/src/rendering.d.ts.map +1 -0
  420. package/lib/typescript/src/security.d.ts +6 -0
  421. package/lib/typescript/src/security.d.ts.map +1 -0
  422. package/lib/typescript/src/state.d.ts +102 -0
  423. package/lib/typescript/src/state.d.ts.map +1 -0
  424. package/lib/typescript/src/storage.d.ts +117 -0
  425. package/lib/typescript/src/storage.d.ts.map +1 -0
  426. package/lib/typescript/src/theme.d.ts +15 -0
  427. package/lib/typescript/src/theme.d.ts.map +1 -0
  428. package/lib/typescript/src/types.d.ts +802 -0
  429. package/lib/typescript/src/types.d.ts.map +1 -0
  430. package/lib/typescript/src/utils.d.ts +50 -0
  431. package/lib/typescript/src/utils.d.ts.map +1 -0
  432. package/lib/typescript/src/validation.d.ts +52 -0
  433. package/lib/typescript/src/validation.d.ts.map +1 -0
  434. package/package.json +204 -0
  435. package/react-native.config.js +17 -0
  436. package/src/AudioPlayerContext.tsx +220 -0
  437. package/src/CameraPreview.tsx +352 -0
  438. package/src/NativeAnimatedImageView.tsx +71 -0
  439. package/src/NativeAudioPlayerView.tsx +39 -0
  440. package/src/NativeBlurView.tsx +40 -0
  441. package/src/NativeCustomCamera.ts +305 -0
  442. package/src/NativeCustomCamera.web.ts +192 -0
  443. package/src/NativeCustomVideoView.ts +30 -0
  444. package/src/NativeDocumentPreviewView.tsx +196 -0
  445. package/src/NativeMediaThumbnailView.tsx +167 -0
  446. package/src/NativeSvgIcon.tsx +46 -0
  447. package/src/ResponsivePreviewContainer.tsx +227 -0
  448. package/src/accessibility.ts +80 -0
  449. package/src/config.ts +406 -0
  450. package/src/cpuOptimization.ts +365 -0
  451. package/src/db/DatabaseManager.ts +212 -0
  452. package/src/db/MediaMapper.ts +377 -0
  453. package/src/db/MediaRepository.ts +313 -0
  454. package/src/db/index.ts +73 -0
  455. package/src/db/migrations.ts +222 -0
  456. package/src/db/react-native-sqlcipher.d.ts +76 -0
  457. package/src/db/secureKey.ts +100 -0
  458. package/src/db/types.ts +123 -0
  459. package/src/db/useMediaDatabase.ts +191 -0
  460. package/src/defaultIcons.tsx +2390 -0
  461. package/src/deviceCapabilities.ts +438 -0
  462. package/src/errors.ts +350 -0
  463. package/src/iconConfig.tsx +962 -0
  464. package/src/icons.tsx +788 -0
  465. package/src/index.tsx +763 -0
  466. package/src/jest-globals.d.ts +9 -0
  467. package/src/library/MediaLibrary.tsx +141 -0
  468. package/src/library/MediaLibraryScreen.tsx +3003 -0
  469. package/src/library/components/AudioPreview.tsx +73 -0
  470. package/src/library/components/DocumentPreview.tsx +361 -0
  471. package/src/library/components/ExpandableFab.tsx +342 -0
  472. package/src/library/components/FileTiles.tsx +252 -0
  473. package/src/library/components/ImagePreview.tsx +72 -0
  474. package/src/library/components/MediaMetadataHeader.tsx +208 -0
  475. package/src/library/components/RecordAudioScreen.tsx +845 -0
  476. package/src/library/components/VideoPreview.tsx +478 -0
  477. package/src/library/components/ViewerCounter.tsx +71 -0
  478. package/src/library/compressionEstimate.ts +662 -0
  479. package/src/library/fileMetadata.ts +212 -0
  480. package/src/library/index.ts +66 -0
  481. package/src/library/libraryIconRegistry.tsx +86 -0
  482. package/src/library/libraryIcons.tsx +928 -0
  483. package/src/library/localizedFormat.ts +207 -0
  484. package/src/library/palette.ts +281 -0
  485. package/src/library/responsive.ts +49 -0
  486. package/src/locales.ts +381 -0
  487. package/src/localization.ts +1947 -0
  488. package/src/logger.ts +20 -0
  489. package/src/lowMemoryCache.ts +218 -0
  490. package/src/mediaHistory.ts +42 -0
  491. package/src/mediaStorageService.ts +546 -0
  492. package/src/memory.ts +102 -0
  493. package/src/nativeActions.ts +422 -0
  494. package/src/nativeComponentSupport.ts +60 -0
  495. package/src/networkPerformance.ts +30 -0
  496. package/src/performance.ts +137 -0
  497. package/src/performanceMonitor.ts +219 -0
  498. package/src/permissions.ts +403 -0
  499. package/src/rendering.ts +47 -0
  500. package/src/security.ts +19 -0
  501. package/src/state.ts +333 -0
  502. package/src/storage.ts +453 -0
  503. package/src/theme.tsx +467 -0
  504. package/src/types.ts +946 -0
  505. package/src/utils.ts +177 -0
  506. package/src/validation.ts +372 -0
@@ -0,0 +1,416 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * locales.ts — the plugin's locale engine.
5
+ *
6
+ * This file is the ONLY place that knows how to interpret a language identifier.
7
+ * It is deliberately data-driven rather than language-driven: there is no list of
8
+ * "supported languages" anywhere in the plugin and no `switch (language)` branch.
9
+ * Anything that is a well-formed BCP-47 tag works, including every language the
10
+ * host app happens to support today and every one it adds later.
11
+ *
12
+ * What that means in practice:
13
+ *
14
+ * - Right-to-left is derived from the tag's *script*, either written explicitly
15
+ * (`ku-Arab`) or implied by the language subtag (`ar`, `fa`, `he`, `ur`, …).
16
+ * Adding Hebrew or Urdu to the host app needs no plugin change.
17
+ * - Region and script are peeled off one at a time to build a fallback chain,
18
+ * so `zh-Hans-CN` finds a `zh-Hans` bundle, and `pt-BR` finds a `pt` bundle.
19
+ * - Legacy and macro tags are folded onto their modern equivalents, because
20
+ * host i18n libraries disagree about them (`zh-CN` vs `zh-Hans`, `iw` vs `he`).
21
+ *
22
+ * The engine is pure and side-effect free. `localization.ts` owns the state.
23
+ */
24
+
25
+ /** Canonical shape of a parsed language identifier. */
26
+
27
+ /** The locale used whenever the host has not told us anything else. */
28
+ export const DEFAULT_LOCALE = 'en';
29
+
30
+ /**
31
+ * ISO-15924 scripts written right-to-left.
32
+ *
33
+ * This is the primary RTL signal. A tag that names its script (`ku-Arab`,
34
+ * `pa-Arab`, `sr-Hebr`) is classified from this set alone, which is why the
35
+ * plugin needs no per-language RTL table for scripts it has never seen.
36
+ */
37
+ export const RTL_SCRIPTS = new Set(['Adlm',
38
+ // Adlam
39
+ 'Arab',
40
+ // Arabic
41
+ 'Aran',
42
+ // Nastaliq variant of Arabic
43
+ 'Armi',
44
+ // Imperial Aramaic
45
+ 'Avst',
46
+ // Avestan
47
+ 'Cprt',
48
+ // Cypriot
49
+ 'Egyp',
50
+ // Egyptian hieroglyphs
51
+ 'Hatr',
52
+ // Hatran
53
+ 'Hebr',
54
+ // Hebrew
55
+ 'Hung',
56
+ // Old Hungarian
57
+ 'Khar',
58
+ // Kharoshthi
59
+ 'Lydi',
60
+ // Lydian
61
+ 'Mand',
62
+ // Mandaic
63
+ 'Mani',
64
+ // Manichaean
65
+ 'Mend',
66
+ // Mende Kikakui
67
+ 'Merc',
68
+ // Meroitic cursive
69
+ 'Mero',
70
+ // Meroitic hieroglyphs
71
+ 'Narb',
72
+ // Old North Arabian
73
+ 'Nbat',
74
+ // Nabataean
75
+ 'Nkoo',
76
+ // N'Ko
77
+ 'Orkh',
78
+ // Old Turkic
79
+ 'Palm',
80
+ // Palmyrene
81
+ 'Phli',
82
+ // Inscriptional Pahlavi
83
+ 'Phlp',
84
+ // Psalter Pahlavi
85
+ 'Phnx',
86
+ // Phoenician
87
+ 'Prti',
88
+ // Inscriptional Parthian
89
+ 'Rohg',
90
+ // Hanifi Rohingya
91
+ 'Samr',
92
+ // Samaritan
93
+ 'Sarb',
94
+ // Old South Arabian
95
+ 'Sogd',
96
+ // Sogdian
97
+ 'Sogo',
98
+ // Old Sogdian
99
+ 'Syrc',
100
+ // Syriac
101
+ 'Thaa',
102
+ // Thaana
103
+ 'Yezi' // Yezidi
104
+ ]);
105
+
106
+ /**
107
+ * Languages whose default script is right-to-left.
108
+ *
109
+ * Used only when the tag does not name a script — `fa` has to resolve to RTL
110
+ * without the host having to write `fa-Arab`. Each entry is the *language*
111
+ * subtag; regions never change direction, so `ar-EG` and `ar` behave the same.
112
+ *
113
+ * Of the languages a typical host app ships, Arabic (`ar`) and Persian/Farsi
114
+ * (`fa`) are the RTL ones. The rest of this set costs nothing and means Hebrew,
115
+ * Urdu, Kurdish and friends work the day the host adds them.
116
+ */
117
+ export const RTL_LANGUAGES = new Set(['ar',
118
+ // Arabic
119
+ 'arc',
120
+ // Aramaic
121
+ 'ary',
122
+ // Moroccan Arabic
123
+ 'arz',
124
+ // Egyptian Arabic
125
+ 'ckb',
126
+ // Central Kurdish / Sorani
127
+ 'dv',
128
+ // Divehi
129
+ 'fa',
130
+ // Persian / Farsi
131
+ 'he',
132
+ // Hebrew
133
+ 'iw',
134
+ // Hebrew (deprecated code, still emitted by older libraries)
135
+ 'ji',
136
+ // Yiddish (deprecated code)
137
+ 'kmr',
138
+ // Northern Kurdish
139
+ 'ks',
140
+ // Kashmiri
141
+ 'ku',
142
+ // Kurdish
143
+ 'mzn',
144
+ // Mazanderani
145
+ 'nqo',
146
+ // N'Ko
147
+ 'pnb',
148
+ // Western Punjabi
149
+ 'prs',
150
+ // Dari
151
+ 'ps',
152
+ // Pashto
153
+ 'sd',
154
+ // Sindhi
155
+ 'skr',
156
+ // Saraiki
157
+ 'syr',
158
+ // Syriac
159
+ 'ug',
160
+ // Uyghur
161
+ 'ur',
162
+ // Urdu
163
+ 'yi' // Yiddish
164
+ ]);
165
+
166
+ /**
167
+ * Tags that host i18n libraries spell differently from the modern canonical form.
168
+ *
169
+ * The left side is a lowercased tag as it might arrive; the right side is what
170
+ * the plugin resolves it to. This exists because a host that says `zh-CN` and a
171
+ * host that says `zh-Hans` mean the same language, and bundles should not have
172
+ * to be registered twice.
173
+ */
174
+ const LOCALE_ALIASES = {
175
+ // Chinese: region-style tags are by far the most common way hosts spell
176
+ // Simplified and Traditional, but the script is what actually selects the text.
177
+ 'zh-cn': 'zh-Hans-CN',
178
+ 'zh-sg': 'zh-Hans-SG',
179
+ 'zh-my': 'zh-Hans-MY',
180
+ 'zh-tw': 'zh-Hant-TW',
181
+ 'zh-hk': 'zh-Hant-HK',
182
+ 'zh-mo': 'zh-Hant-MO',
183
+ 'zh-chs': 'zh-Hans',
184
+ 'zh-cht': 'zh-Hant',
185
+ 'zh-simplified': 'zh-Hans',
186
+ 'zh-traditional': 'zh-Hant',
187
+ // Deprecated ISO-639 codes still emitted by older i18n stacks.
188
+ 'iw': 'he',
189
+ 'ji': 'yi',
190
+ 'in': 'id',
191
+ 'mo': 'ro',
192
+ 'tl': 'fil',
193
+ // Persian and Dari.
194
+ 'per': 'fa',
195
+ 'fas': 'fa',
196
+ 'prs': 'fa-AF',
197
+ // Other three-letter forms that occasionally show up.
198
+ 'ara': 'ar',
199
+ 'ben': 'bn',
200
+ 'zho': 'zh',
201
+ 'chi': 'zh',
202
+ 'dan': 'da',
203
+ 'deu': 'de',
204
+ 'ger': 'de',
205
+ 'fra': 'fr',
206
+ 'fre': 'fr',
207
+ 'hin': 'hi',
208
+ 'ita': 'it',
209
+ 'jpn': 'ja',
210
+ 'kor': 'ko',
211
+ 'pol': 'pl',
212
+ 'por': 'pt',
213
+ 'ron': 'ro',
214
+ 'rum': 'ro',
215
+ 'rus': 'ru',
216
+ 'spa': 'es',
217
+ 'swe': 'sv',
218
+ 'tur': 'tr',
219
+ 'ukr': 'uk',
220
+ 'vie': 'vi',
221
+ 'eng': 'en'
222
+ };
223
+
224
+ /** Splits on the separators host apps actually use: `-`, `_` and `.` */
225
+ const SEPARATORS = /[-_.]+/;
226
+ function titleCaseScript(value) {
227
+ const head = value.charAt(0).toUpperCase();
228
+ return head + value.slice(1).toLowerCase();
229
+ }
230
+
231
+ /**
232
+ * Reduces any language identifier to a canonical BCP-47-ish tag.
233
+ *
234
+ * Accepts what hosts really pass: `en`, `en-US`, `en_us`, `EN-us`, `zh_CN`,
235
+ * `pt-BR.UTF-8`, `fa-IR`, and returns `en`, `en-US`, `en-US`, `en-US`,
236
+ * `zh-Hans-CN`, `pt-BR`, `fa-IR`. Returns an empty string for junk so callers
237
+ * can fall back rather than guess.
238
+ */
239
+ export function normalizeLocale(input) {
240
+ if (typeof input !== 'string') return '';
241
+ const trimmed = input.trim();
242
+ if (trimmed.length === 0) return '';
243
+
244
+ // Strip POSIX charset/modifier suffixes: `ar_EG.UTF-8@calendar=islamic`.
245
+ const withoutModifier = trimmed.split('@')[0] ?? '';
246
+ const cleaned = withoutModifier.replace(/\.(utf-?8|iso[\w-]*)$/i, '');
247
+ const direct = LOCALE_ALIASES[cleaned.toLowerCase()];
248
+ if (direct) return direct;
249
+ const parts = cleaned.split(SEPARATORS).filter(part => part.length > 0);
250
+ const rawLanguage = parts.shift();
251
+ if (!rawLanguage) return '';
252
+ const language = rawLanguage.toLowerCase();
253
+ if (!/^[a-z]{2,8}$/.test(language)) return '';
254
+ let script = '';
255
+ let region = '';
256
+ for (const part of parts) {
257
+ if (!script && /^[a-z]{4}$/i.test(part)) {
258
+ script = titleCaseScript(part);
259
+ } else if (!region && /^([a-z]{2}|\d{3})$/i.test(part)) {
260
+ region = part.toUpperCase();
261
+ }
262
+ // Variants, extensions and private-use subtags are dropped: they never
263
+ // affect which translation bundle or text direction the plugin should use.
264
+ }
265
+ const rebuilt = [language, script, region].filter(Boolean).join('-');
266
+
267
+ // Re-check aliases now that the shape is canonical, so `ZH_cn` also folds.
268
+ const aliased = LOCALE_ALIASES[rebuilt.toLowerCase()];
269
+ return aliased ?? rebuilt;
270
+ }
271
+
272
+ /** Breaks a language identifier into its language / script / region parts. */
273
+ export function parseLocale(input) {
274
+ const tag = normalizeLocale(input);
275
+ if (tag.length === 0) {
276
+ return {
277
+ language: '',
278
+ script: '',
279
+ region: '',
280
+ tag: ''
281
+ };
282
+ }
283
+ const parts = tag.split('-');
284
+ const language = (parts[0] ?? '').toLowerCase();
285
+ let script = '';
286
+ let region = '';
287
+ for (const part of parts.slice(1)) {
288
+ if (part.length === 4) script = titleCaseScript(part);else region = part.toUpperCase();
289
+ }
290
+ return {
291
+ language,
292
+ script,
293
+ region,
294
+ tag
295
+ };
296
+ }
297
+
298
+ /**
299
+ * True when text in this locale reads right-to-left.
300
+ *
301
+ * Script wins when present (`ku-Arab` is RTL even though bare `ku` may be
302
+ * written either way in practice); otherwise the language's default script
303
+ * decides. An unrecognised or empty tag is left-to-right, matching the
304
+ * English fallback.
305
+ */
306
+ export function isRtlLocale(input) {
307
+ const {
308
+ language,
309
+ script
310
+ } = parseLocale(input);
311
+ if (language.length === 0) return false;
312
+
313
+ // An explicit script is authoritative: `ku-Arab` is RTL, `ku-Latn` is not,
314
+ // and a script the plugin has never seen still resolves correctly.
315
+ if (script.length > 0) return RTL_SCRIPTS.has(script);
316
+ return RTL_LANGUAGES.has(language);
317
+ }
318
+
319
+ /**
320
+ * Ordered list of tags to try for a locale, most specific first.
321
+ *
322
+ * `zh-Hans-CN` → `['zh-Hans-CN', 'zh-Hans', 'zh-CN', 'zh', 'en']`
323
+ * `pt-BR` → `['pt-BR', 'pt', 'en']`
324
+ * `fa` → `['fa', 'en']`
325
+ *
326
+ * The fallback locale is appended last and deduplicated, so a bundle registered
327
+ * under any of these spellings is found. English stays the final fallback.
328
+ */
329
+ export function localeFallbackChain(input, fallbackLocale = DEFAULT_LOCALE) {
330
+ const {
331
+ language,
332
+ script,
333
+ region,
334
+ tag
335
+ } = parseLocale(input);
336
+ const chain = [];
337
+ const push = candidate => {
338
+ if (candidate.length > 0 && !chain.includes(candidate)) {
339
+ chain.push(candidate);
340
+ }
341
+ };
342
+
343
+ // Script outranks region: a `zh-Hans` bundle is a far better match for
344
+ // `zh-Hans-CN` than a `zh-CN` one, even though both drop a single subtag.
345
+ push(tag);
346
+ if (script.length > 0) push(`${language}-${script}`);
347
+ if (region.length > 0) push(`${language}-${region}`);
348
+ push(language);
349
+ const fallback = normalizeLocale(fallbackLocale);
350
+ if (fallback.length > 0) {
351
+ const parsedFallback = parseLocale(fallback);
352
+ push(parsedFallback.tag);
353
+ push(parsedFallback.language);
354
+ }
355
+ push(DEFAULT_LOCALE);
356
+ return chain;
357
+ }
358
+
359
+ /**
360
+ * Picks the best matching key out of a locale-keyed record.
361
+ *
362
+ * Lookups are case-insensitive and separator-insensitive, so a bundle
363
+ * registered as `zh_TW`, `zh-tw` or `zh-Hant-TW` is all found by the same
364
+ * request. Returns `undefined` when nothing in the chain matches.
365
+ */
366
+ export function matchLocaleKey(locale, entries, fallbackLocale = DEFAULT_LOCALE) {
367
+ if (!entries) return undefined;
368
+
369
+ // Index the record by normalized tag once, so host spelling never matters.
370
+ const index = new Map();
371
+ for (const key of Object.keys(entries)) {
372
+ const normalized = normalizeLocale(key).toLowerCase();
373
+ if (normalized.length > 0 && !index.has(normalized)) {
374
+ index.set(normalized, key);
375
+ }
376
+ }
377
+ for (const candidate of localeFallbackChain(locale, fallbackLocale)) {
378
+ const hit = index.get(candidate.toLowerCase());
379
+ if (hit !== undefined) return hit;
380
+ }
381
+ return undefined;
382
+ }
383
+
384
+ /**
385
+ * Merges every bundle along the fallback chain into one map.
386
+ *
387
+ * Least specific wins first and is then overwritten by more specific entries,
388
+ * so a `zh` bundle can carry the shared strings while `zh-Hant` overrides only
389
+ * the handful that differ. Missing keys simply stay missing here — the caller
390
+ * layers this on top of the shipped English defaults.
391
+ */
392
+ export function resolveLocaleTranslations(locale, bundles, fallbackLocale = DEFAULT_LOCALE) {
393
+ if (!bundles) return {};
394
+ const index = new Map();
395
+ for (const [key, value] of Object.entries(bundles)) {
396
+ const normalized = normalizeLocale(key).toLowerCase();
397
+ if (normalized.length > 0 && !index.has(normalized)) {
398
+ index.set(normalized, value);
399
+ }
400
+ }
401
+ const chain = localeFallbackChain(locale, fallbackLocale);
402
+ let merged = {};
403
+
404
+ // Walk the chain backwards: broadest first, most specific applied last.
405
+ for (let i = chain.length - 1; i >= 0; i -= 1) {
406
+ const candidate = chain[i];
407
+ if (candidate === undefined) continue;
408
+ const bundle = index.get(candidate.toLowerCase());
409
+ if (bundle) merged = {
410
+ ...merged,
411
+ ...bundle
412
+ };
413
+ }
414
+ return merged;
415
+ }
416
+ //# sourceMappingURL=locales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_LOCALE","RTL_SCRIPTS","Set","RTL_LANGUAGES","LOCALE_ALIASES","SEPARATORS","titleCaseScript","value","head","charAt","toUpperCase","slice","toLowerCase","normalizeLocale","input","trimmed","trim","length","withoutModifier","split","cleaned","replace","direct","parts","filter","part","rawLanguage","shift","language","test","script","region","rebuilt","Boolean","join","aliased","parseLocale","tag","isRtlLocale","has","localeFallbackChain","fallbackLocale","chain","push","candidate","includes","fallback","parsedFallback","matchLocaleKey","locale","entries","undefined","index","Map","key","Object","keys","normalized","set","hit","get","resolveLocaleTranslations","bundles","merged","i","bundle"],"sourceRoot":"..\\..\\src","sources":["locales.ts"],"mappings":"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","ignoreList":[]}