react-native-readium 4.0.2 → 5.0.0-rc.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 (535) hide show
  1. package/README.md +227 -31
  2. package/android/.cxx/Debug/1o6u5d69/arm64-v8a/metadata_generation_command.txt +20 -0
  3. package/android/.cxx/Debug/1o6u5d69/arm64-v8a/prefab_config.json +9 -0
  4. package/android/.cxx/Debug/1o6u5d69/hash_key.txt +27 -0
  5. package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  6. package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  7. package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  8. package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/cache-v2-d1c3348b32c30ac6a032.json +1383 -0
  9. package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-556430fba24741f19697.json +207 -0
  10. package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-1ced52b45c1052bc37ec.json +60 -0
  11. package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
  12. package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/index-2026-02-11T21-48-38-0164.json +92 -0
  13. package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/target-NitroReadium-Debug-1a98e1c85aa4f0067ac7.json +310 -0
  14. package/android/.cxx/Debug/705z3vy2/arm64-v8a/.ninja_deps +0 -0
  15. package/android/.cxx/Debug/705z3vy2/arm64-v8a/.ninja_log +16 -0
  16. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeCache.txt +413 -0
  17. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
  18. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
  19. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
  20. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
  21. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
  22. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
  23. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
  24. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  25. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  26. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/CMakeOutput.log +262 -0
  27. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/NitroReadiumOnLoad.cpp.o +0 -0
  28. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/c++/JHybridReadiumViewSpec.cpp.o +0 -0
  29. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/c++/views/JHybridReadiumViewStateUpdater.cpp.o +0 -0
  30. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/shared/c++/HybridReadiumViewSpec.cpp.o +0 -0
  31. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/shared/c++/views/HybridReadiumViewComponent.cpp.o +0 -0
  32. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/NitroReadium.dir/src/main/cpp/cpp-adapter.cpp.o +0 -0
  33. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/TargetDirectories.txt +3 -0
  34. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/cmake.check_cache +1 -0
  35. package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/rules.ninja +64 -0
  36. package/android/.cxx/Debug/705z3vy2/arm64-v8a/additional_project_files.txt +0 -0
  37. package/android/.cxx/Debug/705z3vy2/arm64-v8a/android_gradle_build.json +48 -0
  38. package/android/.cxx/Debug/705z3vy2/arm64-v8a/android_gradle_build_mini.json +37 -0
  39. package/android/.cxx/Debug/705z3vy2/arm64-v8a/build.ninja +193 -0
  40. package/android/.cxx/Debug/705z3vy2/arm64-v8a/build_file_index.txt +6 -0
  41. package/android/.cxx/Debug/705z3vy2/arm64-v8a/cmake_install.cmake +54 -0
  42. package/android/.cxx/Debug/705z3vy2/arm64-v8a/compile_commands.json +32 -0
  43. package/android/.cxx/Debug/705z3vy2/arm64-v8a/compile_commands.json.bin +0 -0
  44. package/android/.cxx/Debug/705z3vy2/arm64-v8a/configure_fingerprint.bin +41 -0
  45. package/android/.cxx/Debug/705z3vy2/arm64-v8a/metadata_generation_command.txt +21 -0
  46. package/android/.cxx/Debug/705z3vy2/arm64-v8a/prefab_config.json +9 -0
  47. package/android/.cxx/Debug/705z3vy2/arm64-v8a/symbol_folder_index.txt +1 -0
  48. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  49. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  50. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  51. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/cache-v2-029ee0d18a16b9900504.json +1383 -0
  52. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-0ec9478532515d6deeb0.json +207 -0
  53. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-00f0c7708253709bbb50.json +60 -0
  54. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
  55. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/index-2026-02-11T21-48-44-0722.json +92 -0
  56. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/target-NitroReadium-Debug-a00931bf570afa83f011.json +310 -0
  57. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.ninja_deps +0 -0
  58. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.ninja_log +16 -0
  59. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeCache.txt +413 -0
  60. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
  61. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
  62. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
  63. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
  64. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
  65. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
  66. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
  67. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  68. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  69. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/CMakeOutput.log +266 -0
  70. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/NitroReadiumOnLoad.cpp.o +0 -0
  71. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/c++/JHybridReadiumViewSpec.cpp.o +0 -0
  72. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/c++/views/JHybridReadiumViewStateUpdater.cpp.o +0 -0
  73. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/shared/c++/HybridReadiumViewSpec.cpp.o +0 -0
  74. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/shared/c++/views/HybridReadiumViewComponent.cpp.o +0 -0
  75. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/NitroReadium.dir/src/main/cpp/cpp-adapter.cpp.o +0 -0
  76. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/TargetDirectories.txt +3 -0
  77. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/cmake.check_cache +1 -0
  78. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/rules.ninja +64 -0
  79. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/additional_project_files.txt +0 -0
  80. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/android_gradle_build.json +48 -0
  81. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/android_gradle_build_mini.json +37 -0
  82. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/build.ninja +193 -0
  83. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/build_file_index.txt +6 -0
  84. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/cmake_install.cmake +54 -0
  85. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/compile_commands.json +32 -0
  86. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/compile_commands.json.bin +0 -0
  87. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/configure_fingerprint.bin +41 -0
  88. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/metadata_generation_command.txt +21 -0
  89. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/prefab_config.json +9 -0
  90. package/android/.cxx/Debug/705z3vy2/armeabi-v7a/symbol_folder_index.txt +1 -0
  91. package/android/.cxx/Debug/705z3vy2/hash_key.txt +28 -0
  92. package/android/.cxx/Debug/705z3vy2/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/ReactAndroid/ReactAndroidConfig.cmake +27 -0
  93. package/android/.cxx/Debug/705z3vy2/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/ReactAndroid/ReactAndroidConfigVersion.cmake +9 -0
  94. package/android/.cxx/Debug/705z3vy2/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/fbjni/fbjniConfig.cmake +9 -0
  95. package/android/.cxx/Debug/705z3vy2/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/fbjni/fbjniConfigVersion.cmake +9 -0
  96. package/android/.cxx/Debug/705z3vy2/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/react-native-nitro-modules/react-native-nitro-modulesConfig.cmake +9 -0
  97. package/android/.cxx/Debug/705z3vy2/prefab/armeabi-v7a/prefab/lib/arm-linux-androideabi/cmake/ReactAndroid/ReactAndroidConfig.cmake +27 -0
  98. package/android/.cxx/Debug/705z3vy2/prefab/armeabi-v7a/prefab/lib/arm-linux-androideabi/cmake/ReactAndroid/ReactAndroidConfigVersion.cmake +9 -0
  99. package/android/.cxx/Debug/705z3vy2/prefab/armeabi-v7a/prefab/lib/arm-linux-androideabi/cmake/fbjni/fbjniConfig.cmake +9 -0
  100. package/android/.cxx/Debug/705z3vy2/prefab/armeabi-v7a/prefab/lib/arm-linux-androideabi/cmake/fbjni/fbjniConfigVersion.cmake +9 -0
  101. package/android/.cxx/Debug/705z3vy2/prefab/armeabi-v7a/prefab/lib/arm-linux-androideabi/cmake/react-native-nitro-modules/react-native-nitro-modulesConfig.cmake +9 -0
  102. package/android/.cxx/Debug/705z3vy2/prefab/x86/prefab/lib/i686-linux-android/cmake/ReactAndroid/ReactAndroidConfig.cmake +27 -0
  103. package/android/.cxx/Debug/705z3vy2/prefab/x86/prefab/lib/i686-linux-android/cmake/ReactAndroid/ReactAndroidConfigVersion.cmake +9 -0
  104. package/android/.cxx/Debug/705z3vy2/prefab/x86/prefab/lib/i686-linux-android/cmake/fbjni/fbjniConfig.cmake +9 -0
  105. package/android/.cxx/Debug/705z3vy2/prefab/x86/prefab/lib/i686-linux-android/cmake/fbjni/fbjniConfigVersion.cmake +9 -0
  106. package/android/.cxx/Debug/705z3vy2/prefab/x86/prefab/lib/i686-linux-android/cmake/react-native-nitro-modules/react-native-nitro-modulesConfig.cmake +9 -0
  107. package/android/.cxx/Debug/705z3vy2/prefab/x86_64/prefab/lib/x86_64-linux-android/cmake/ReactAndroid/ReactAndroidConfig.cmake +27 -0
  108. package/android/.cxx/Debug/705z3vy2/prefab/x86_64/prefab/lib/x86_64-linux-android/cmake/ReactAndroid/ReactAndroidConfigVersion.cmake +9 -0
  109. package/android/.cxx/Debug/705z3vy2/prefab/x86_64/prefab/lib/x86_64-linux-android/cmake/fbjni/fbjniConfig.cmake +9 -0
  110. package/android/.cxx/Debug/705z3vy2/prefab/x86_64/prefab/lib/x86_64-linux-android/cmake/fbjni/fbjniConfigVersion.cmake +9 -0
  111. package/android/.cxx/Debug/705z3vy2/prefab/x86_64/prefab/lib/x86_64-linux-android/cmake/react-native-nitro-modules/react-native-nitro-modulesConfig.cmake +9 -0
  112. package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  113. package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  114. package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  115. package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/cache-v2-a4f471a31e824ae32ba5.json +1383 -0
  116. package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/cmakeFiles-v1-f73d504308ce3a4e5765.json +207 -0
  117. package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/codemodel-v2-00f85d43d057b2ba79db.json +60 -0
  118. package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
  119. package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/index-2026-02-11T21-48-50-0628.json +92 -0
  120. package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/target-NitroReadium-Debug-98c8a7d46de91d0d2e7e.json +310 -0
  121. package/android/.cxx/Debug/705z3vy2/x86/.ninja_deps +0 -0
  122. package/android/.cxx/Debug/705z3vy2/x86/.ninja_log +16 -0
  123. package/android/.cxx/Debug/705z3vy2/x86/CMakeCache.txt +413 -0
  124. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
  125. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
  126. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
  127. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
  128. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
  129. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
  130. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
  131. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  132. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  133. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/CMakeOutput.log +256 -0
  134. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/NitroReadiumOnLoad.cpp.o +0 -0
  135. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/c++/JHybridReadiumViewSpec.cpp.o +0 -0
  136. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/c++/views/JHybridReadiumViewStateUpdater.cpp.o +0 -0
  137. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/shared/c++/HybridReadiumViewSpec.cpp.o +0 -0
  138. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/shared/c++/views/HybridReadiumViewComponent.cpp.o +0 -0
  139. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/NitroReadium.dir/src/main/cpp/cpp-adapter.cpp.o +0 -0
  140. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/TargetDirectories.txt +3 -0
  141. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/cmake.check_cache +1 -0
  142. package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/rules.ninja +64 -0
  143. package/android/.cxx/Debug/705z3vy2/x86/additional_project_files.txt +0 -0
  144. package/android/.cxx/Debug/705z3vy2/x86/android_gradle_build.json +48 -0
  145. package/android/.cxx/Debug/705z3vy2/x86/android_gradle_build_mini.json +37 -0
  146. package/android/.cxx/Debug/705z3vy2/x86/build.ninja +193 -0
  147. package/android/.cxx/Debug/705z3vy2/x86/build_file_index.txt +6 -0
  148. package/android/.cxx/Debug/705z3vy2/x86/cmake_install.cmake +54 -0
  149. package/android/.cxx/Debug/705z3vy2/x86/compile_commands.json +32 -0
  150. package/android/.cxx/Debug/705z3vy2/x86/compile_commands.json.bin +0 -0
  151. package/android/.cxx/Debug/705z3vy2/x86/configure_fingerprint.bin +41 -0
  152. package/android/.cxx/Debug/705z3vy2/x86/metadata_generation_command.txt +21 -0
  153. package/android/.cxx/Debug/705z3vy2/x86/prefab_config.json +9 -0
  154. package/android/.cxx/Debug/705z3vy2/x86/symbol_folder_index.txt +1 -0
  155. package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  156. package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  157. package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  158. package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/cache-v2-691c4c7ce8ee23d9eb36.json +1383 -0
  159. package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-5d2071095d60cec89732.json +207 -0
  160. package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/codemodel-v2-141850c8d8ba3993f9ba.json +60 -0
  161. package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
  162. package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/index-2026-02-11T21-48-56-0488.json +92 -0
  163. package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/target-NitroReadium-Debug-fc544bc0688ecafa85a0.json +310 -0
  164. package/android/.cxx/Debug/705z3vy2/x86_64/.ninja_deps +0 -0
  165. package/android/.cxx/Debug/705z3vy2/x86_64/.ninja_log +16 -0
  166. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeCache.txt +413 -0
  167. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
  168. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
  169. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
  170. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
  171. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
  172. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
  173. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
  174. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
  175. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  176. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/CMakeOutput.log +256 -0
  177. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/NitroReadiumOnLoad.cpp.o +0 -0
  178. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/c++/JHybridReadiumViewSpec.cpp.o +0 -0
  179. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/android/c++/views/JHybridReadiumViewStateUpdater.cpp.o +0 -0
  180. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/shared/c++/HybridReadiumViewSpec.cpp.o +0 -0
  181. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/NitroReadium.dir/Users/jspizziri/Documents/Projects/readium/react-native-readium/nitrogen/generated/shared/c++/views/HybridReadiumViewComponent.cpp.o +0 -0
  182. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/NitroReadium.dir/src/main/cpp/cpp-adapter.cpp.o +0 -0
  183. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/TargetDirectories.txt +3 -0
  184. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/cmake.check_cache +1 -0
  185. package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/rules.ninja +64 -0
  186. package/android/.cxx/Debug/705z3vy2/x86_64/additional_project_files.txt +0 -0
  187. package/android/.cxx/Debug/705z3vy2/x86_64/android_gradle_build.json +48 -0
  188. package/android/.cxx/Debug/705z3vy2/x86_64/android_gradle_build_mini.json +37 -0
  189. package/android/.cxx/Debug/705z3vy2/x86_64/build.ninja +193 -0
  190. package/android/.cxx/Debug/705z3vy2/x86_64/build_file_index.txt +6 -0
  191. package/android/.cxx/Debug/705z3vy2/x86_64/cmake_install.cmake +54 -0
  192. package/android/.cxx/Debug/705z3vy2/x86_64/compile_commands.json +32 -0
  193. package/android/.cxx/Debug/705z3vy2/x86_64/compile_commands.json.bin +0 -0
  194. package/android/.cxx/Debug/705z3vy2/x86_64/configure_fingerprint.bin +41 -0
  195. package/android/.cxx/Debug/705z3vy2/x86_64/metadata_generation_command.txt +21 -0
  196. package/android/.cxx/Debug/705z3vy2/x86_64/prefab_config.json +9 -0
  197. package/android/.cxx/Debug/705z3vy2/x86_64/symbol_folder_index.txt +1 -0
  198. package/android/.cxx/tools/debug/arm64-v8a/compile_commands.json +32 -0
  199. package/android/.cxx/tools/debug/armeabi-v7a/compile_commands.json +32 -0
  200. package/android/.cxx/tools/debug/x86/compile_commands.json +32 -0
  201. package/android/.cxx/tools/debug/x86_64/compile_commands.json +32 -0
  202. package/android/CMakeLists.txt +12 -0
  203. package/android/build.gradle +55 -30
  204. package/android/gradle.properties +3 -3
  205. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  206. package/android/src/main/java/com/reactnativereadium/HybridReadiumView.kt +593 -0
  207. package/android/src/main/java/com/reactnativereadium/ReadiumPackage.kt +9 -2
  208. package/android/src/main/java/com/reactnativereadium/reader/BaseReaderFragment.kt +214 -6
  209. package/android/src/main/java/com/reactnativereadium/reader/EpubReaderFragment.kt +143 -70
  210. package/android/src/main/java/com/reactnativereadium/reader/PositionLabelManager.kt +132 -0
  211. package/android/src/main/java/com/reactnativereadium/reader/ReaderService.kt +64 -65
  212. package/android/src/main/java/com/reactnativereadium/reader/ReaderViewModel.kt +23 -84
  213. package/android/src/main/java/com/reactnativereadium/reader/VisualReaderFragment.kt +32 -2
  214. package/android/src/main/java/com/reactnativereadium/utils/DecorationSerializer.kt +175 -0
  215. package/android/src/main/java/com/reactnativereadium/utils/EventChannel.kt +0 -9
  216. package/android/src/main/java/com/reactnativereadium/utils/FragmentFactory.kt +2 -3
  217. package/android/src/main/java/com/reactnativereadium/utils/JsonExtensions.kt +61 -0
  218. package/android/src/main/java/com/reactnativereadium/utils/LocationNormalizer.kt +47 -0
  219. package/android/src/main/java/com/reactnativereadium/utils/MetadataNormalizer.kt +183 -0
  220. package/android/src/main/java/com/reactnativereadium/utils/NormalizedMetadata.kt +179 -0
  221. package/android/src/main/java/com/reactnativereadium/utils/extensions/InputStream.kt +0 -9
  222. package/ios/App/AppModule.swift +3 -9
  223. package/ios/Common/Toolkit/Extensions/{Locator.swift → Locator+Codable.swift} +2 -2
  224. package/ios/DecorationData.swift +316 -0
  225. package/ios/HybridReadiumView.swift +498 -0
  226. package/ios/Reader/Common/ReaderViewController.swift +121 -53
  227. package/ios/Reader/EPUB/AssociatedColors.swift +1 -1
  228. package/ios/Reader/EPUB/EPUBHTTPServer.swift +13 -0
  229. package/ios/Reader/EPUB/EPUBModule.swift +6 -5
  230. package/ios/Reader/EPUB/EPUBViewController.swift +88 -15
  231. package/ios/Reader/EPUB/SelectionActionHandler.h +25 -0
  232. package/ios/Reader/EPUB/SelectionActionHandler.m +56 -0
  233. package/ios/Reader/ReaderFormatModule.swift +4 -4
  234. package/ios/Reader/ReaderModule.swift +7 -5
  235. package/ios/Reader/ReaderService.swift +75 -67
  236. package/lib/nitrogen/generated/shared/json/ReadiumViewConfig.json +19 -0
  237. package/lib/src/components/NitroReadiumView.d.ts +2 -0
  238. package/lib/src/components/NitroReadiumView.js +3 -0
  239. package/lib/src/components/ReadiumView.d.ts +3 -5
  240. package/lib/src/components/ReadiumView.js +15 -40
  241. package/lib/src/components/ReadiumView.types.d.ts +18 -0
  242. package/lib/src/components/ReadiumView.web.d.ts +12 -5
  243. package/lib/src/components/ReadiumView.web.js +112 -21
  244. package/lib/src/index.d.ts +0 -1
  245. package/lib/src/index.js +0 -1
  246. package/lib/src/interfaces/Decoration.d.ts +8 -0
  247. package/lib/src/interfaces/Decoration.js +1 -0
  248. package/lib/src/interfaces/File.d.ts +5 -12
  249. package/lib/src/interfaces/Link.d.ts +3 -13
  250. package/lib/src/interfaces/Locator.d.ts +1 -14
  251. package/lib/src/interfaces/Preferences.d.ts +5 -19
  252. package/lib/src/interfaces/PublicationMetadata.d.ts +13 -0
  253. package/lib/src/interfaces/PublicationMetadata.js +1 -0
  254. package/lib/src/interfaces/PublicationReady.d.ts +1 -0
  255. package/lib/src/interfaces/PublicationReady.js +1 -0
  256. package/lib/src/interfaces/Selection.d.ts +1 -0
  257. package/lib/src/interfaces/Selection.js +1 -0
  258. package/lib/src/interfaces/SelectionAction.d.ts +1 -0
  259. package/lib/src/interfaces/SelectionAction.js +1 -0
  260. package/lib/src/interfaces/index.d.ts +6 -1
  261. package/lib/src/interfaces/index.js +5 -1
  262. package/lib/src/specs/ReadiumView.nitro.d.ts +199 -0
  263. package/lib/src/specs/ReadiumView.nitro.js +1 -0
  264. package/lib/src/utils/index.d.ts +0 -6
  265. package/lib/src/utils/index.js +0 -6
  266. package/lib/web/hooks/index.d.ts +4 -2
  267. package/lib/web/hooks/index.js +4 -2
  268. package/lib/web/hooks/useDecorationsObserver.d.ts +6 -0
  269. package/lib/web/hooks/useDecorationsObserver.js +96 -0
  270. package/lib/web/hooks/useLocationObserver.d.ts +2 -1
  271. package/lib/web/hooks/useLocationObserver.js +18 -11
  272. package/lib/web/hooks/useNavigator.d.ts +12 -0
  273. package/lib/web/hooks/useNavigator.js +92 -0
  274. package/lib/web/hooks/usePositionLabel.d.ts +9 -0
  275. package/lib/web/hooks/usePositionLabel.js +33 -0
  276. package/lib/web/hooks/usePreferencesObserver.d.ts +2 -0
  277. package/lib/web/hooks/usePreferencesObserver.js +54 -0
  278. package/lib/web/utils/locationNormalizer.d.ts +28 -0
  279. package/lib/web/utils/locationNormalizer.js +49 -0
  280. package/lib/web/utils/manifestFetcher.d.ts +8 -0
  281. package/lib/web/utils/manifestFetcher.js +28 -0
  282. package/lib/web/utils/manifestNormalizer.d.ts +8 -0
  283. package/lib/web/utils/manifestNormalizer.js +70 -0
  284. package/lib/web/utils/metadataNormalizer.d.ts +53 -0
  285. package/lib/web/utils/metadataNormalizer.js +220 -0
  286. package/lib/web/utils/navigatorListeners.d.ts +6 -0
  287. package/lib/web/utils/navigatorListeners.js +50 -0
  288. package/lib/web/utils/publicationUtils.d.ts +15 -0
  289. package/lib/web/utils/publicationUtils.js +39 -0
  290. package/nitro.json +16 -0
  291. package/nitrogen/generated/.gitattributes +1 -0
  292. package/nitrogen/generated/android/NitroReadium+autolinking.cmake +83 -0
  293. package/nitrogen/generated/android/NitroReadium+autolinking.gradle +27 -0
  294. package/nitrogen/generated/android/NitroReadiumOnLoad.cpp +56 -0
  295. package/nitrogen/generated/android/NitroReadiumOnLoad.hpp +25 -0
  296. package/nitrogen/generated/android/c++/JAccessibility.hpp +175 -0
  297. package/nitrogen/generated/android/c++/JAccessibilityCertification.hpp +66 -0
  298. package/nitrogen/generated/android/c++/JBelongsTo.hpp +101 -0
  299. package/nitrogen/generated/android/c++/JContributor.hpp +74 -0
  300. package/nitrogen/generated/android/c++/JDecoration.hpp +92 -0
  301. package/nitrogen/generated/android/c++/JDecorationActivatedEvent.hpp +85 -0
  302. package/nitrogen/generated/android/c++/JDecorationGroup.hpp +92 -0
  303. package/nitrogen/generated/android/c++/JDecorationStyle.hpp +86 -0
  304. package/nitrogen/generated/android/c++/JFunc_void_DecorationActivatedEvent.hpp +94 -0
  305. package/nitrogen/generated/android/c++/JFunc_void_Locator.hpp +83 -0
  306. package/nitrogen/generated/android/c++/JFunc_void_PublicationReadyEvent.hpp +102 -0
  307. package/nitrogen/generated/android/c++/JFunc_void_SelectionActionEvent.hpp +85 -0
  308. package/nitrogen/generated/android/c++/JFunc_void_SelectionEvent.hpp +85 -0
  309. package/nitrogen/generated/android/c++/JHybridReadiumViewSpec.cpp +328 -0
  310. package/nitrogen/generated/android/c++/JHybridReadiumViewSpec.hpp +86 -0
  311. package/nitrogen/generated/android/c++/JLink.hpp +131 -0
  312. package/nitrogen/generated/android/c++/JLocator.hpp +82 -0
  313. package/nitrogen/generated/android/c++/JLocatorLocations.hpp +65 -0
  314. package/nitrogen/generated/android/c++/JLocatorText.hpp +66 -0
  315. package/nitrogen/generated/android/c++/JPoint.hpp +61 -0
  316. package/nitrogen/generated/android/c++/JPreferences.hpp +158 -0
  317. package/nitrogen/generated/android/c++/JPublicationMetadata.hpp +449 -0
  318. package/nitrogen/generated/android/c++/JPublicationReadyEvent.hpp +125 -0
  319. package/nitrogen/generated/android/c++/JReadiumFile.hpp +68 -0
  320. package/nitrogen/generated/android/c++/JRect.hpp +69 -0
  321. package/nitrogen/generated/android/c++/JSelectionAction.hpp +61 -0
  322. package/nitrogen/generated/android/c++/JSelectionActionEvent.hpp +72 -0
  323. package/nitrogen/generated/android/c++/JSelectionEvent.hpp +68 -0
  324. package/nitrogen/generated/android/c++/JSeriesInfo.hpp +62 -0
  325. package/nitrogen/generated/android/c++/JSubject.hpp +70 -0
  326. package/nitrogen/generated/android/c++/views/JHybridReadiumViewStateUpdater.cpp +93 -0
  327. package/nitrogen/generated/android/c++/views/JHybridReadiumViewStateUpdater.hpp +49 -0
  328. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Accessibility.kt +56 -0
  329. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/AccessibilityCertification.kt +44 -0
  330. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/BelongsTo.kt +41 -0
  331. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Contributor.kt +50 -0
  332. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Decoration.kt +47 -0
  333. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/DecorationActivatedEvent.kt +47 -0
  334. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/DecorationGroup.kt +41 -0
  335. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/DecorationStyle.kt +59 -0
  336. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Func_void_DecorationActivatedEvent.kt +80 -0
  337. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Func_void_Locator.kt +80 -0
  338. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Func_void_PublicationReadyEvent.kt +80 -0
  339. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Func_void_SelectionActionEvent.kt +80 -0
  340. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Func_void_SelectionEvent.kt +80 -0
  341. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/HybridReadiumViewSpec.kt +159 -0
  342. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Link.kt +65 -0
  343. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Locator.kt +53 -0
  344. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/LocatorLocations.kt +44 -0
  345. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/LocatorText.kt +44 -0
  346. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/NitroReadiumOnLoad.kt +35 -0
  347. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Point.kt +41 -0
  348. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Preferences.kt +113 -0
  349. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/PublicationMetadata.kt +119 -0
  350. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/PublicationReadyEvent.kt +44 -0
  351. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/ReadiumFile.kt +41 -0
  352. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Rect.kt +47 -0
  353. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/SelectionAction.kt +41 -0
  354. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/SelectionActionEvent.kt +44 -0
  355. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/SelectionEvent.kt +41 -0
  356. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/SeriesInfo.kt +41 -0
  357. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Subject.kt +47 -0
  358. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/views/HybridReadiumViewManager.kt +70 -0
  359. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/views/HybridReadiumViewStateUpdater.kt +23 -0
  360. package/nitrogen/generated/ios/NitroReadium+autolinking.rb +60 -0
  361. package/nitrogen/generated/ios/NitroReadium-Swift-Cxx-Bridge.cpp +73 -0
  362. package/nitrogen/generated/ios/NitroReadium-Swift-Cxx-Bridge.hpp +641 -0
  363. package/nitrogen/generated/ios/NitroReadium-Swift-Cxx-Umbrella.hpp +117 -0
  364. package/nitrogen/generated/ios/NitroReadiumAutolinking.mm +33 -0
  365. package/nitrogen/generated/ios/NitroReadiumAutolinking.swift +26 -0
  366. package/nitrogen/generated/ios/c++/HybridReadiumViewSpecSwift.cpp +11 -0
  367. package/nitrogen/generated/ios/c++/HybridReadiumViewSpecSwift.hpp +226 -0
  368. package/nitrogen/generated/ios/c++/views/HybridReadiumViewComponent.mm +152 -0
  369. package/nitrogen/generated/ios/swift/Accessibility.swift +173 -0
  370. package/nitrogen/generated/ios/swift/AccessibilityCertification.swift +78 -0
  371. package/nitrogen/generated/ios/swift/BelongsTo.swift +72 -0
  372. package/nitrogen/generated/ios/swift/Contributor.swift +94 -0
  373. package/nitrogen/generated/ios/swift/Decoration.swift +71 -0
  374. package/nitrogen/generated/ios/swift/DecorationActivatedEvent.swift +56 -0
  375. package/nitrogen/generated/ios/swift/DecorationGroup.swift +40 -0
  376. package/nitrogen/generated/ios/swift/DecorationStyle.swift +155 -0
  377. package/nitrogen/generated/ios/swift/Func_void_DecorationActivatedEvent.swift +46 -0
  378. package/nitrogen/generated/ios/swift/Func_void_Locator.swift +46 -0
  379. package/nitrogen/generated/ios/swift/Func_void_PublicationReadyEvent.swift +46 -0
  380. package/nitrogen/generated/ios/swift/Func_void_SelectionActionEvent.swift +46 -0
  381. package/nitrogen/generated/ios/swift/Func_void_SelectionEvent.swift +46 -0
  382. package/nitrogen/generated/ios/swift/HybridReadiumViewSpec.swift +65 -0
  383. package/nitrogen/generated/ios/swift/HybridReadiumViewSpec_cxx.swift +363 -0
  384. package/nitrogen/generated/ios/swift/Link.swift +162 -0
  385. package/nitrogen/generated/ios/swift/Locator.swift +85 -0
  386. package/nitrogen/generated/ios/swift/LocatorLocations.swift +51 -0
  387. package/nitrogen/generated/ios/swift/LocatorText.swift +78 -0
  388. package/nitrogen/generated/ios/swift/Point.swift +34 -0
  389. package/nitrogen/generated/ios/swift/Preferences.swift +429 -0
  390. package/nitrogen/generated/ios/swift/PublicationMetadata.swift +577 -0
  391. package/nitrogen/generated/ios/swift/PublicationReadyEvent.swift +51 -0
  392. package/nitrogen/generated/ios/swift/ReadiumFile.swift +40 -0
  393. package/nitrogen/generated/ios/swift/Rect.swift +44 -0
  394. package/nitrogen/generated/ios/swift/SelectionAction.swift +34 -0
  395. package/nitrogen/generated/ios/swift/SelectionActionEvent.swift +39 -0
  396. package/nitrogen/generated/ios/swift/SelectionEvent.swift +53 -0
  397. package/nitrogen/generated/ios/swift/SeriesInfo.swift +40 -0
  398. package/nitrogen/generated/ios/swift/Subject.swift +83 -0
  399. package/nitrogen/generated/shared/c++/Accessibility.hpp +111 -0
  400. package/nitrogen/generated/shared/c++/AccessibilityCertification.hpp +92 -0
  401. package/nitrogen/generated/shared/c++/BelongsTo.hpp +90 -0
  402. package/nitrogen/generated/shared/c++/Contributor.hpp +100 -0
  403. package/nitrogen/generated/shared/c++/Decoration.hpp +102 -0
  404. package/nitrogen/generated/shared/c++/DecorationActivatedEvent.hpp +104 -0
  405. package/nitrogen/generated/shared/c++/DecorationGroup.hpp +90 -0
  406. package/nitrogen/generated/shared/c++/DecorationStyle.hpp +112 -0
  407. package/nitrogen/generated/shared/c++/HybridReadiumViewSpec.cpp +42 -0
  408. package/nitrogen/generated/shared/c++/HybridReadiumViewSpec.hpp +110 -0
  409. package/nitrogen/generated/shared/c++/Link.hpp +121 -0
  410. package/nitrogen/generated/shared/c++/Locator.hpp +109 -0
  411. package/nitrogen/generated/shared/c++/LocatorLocations.hpp +91 -0
  412. package/nitrogen/generated/shared/c++/LocatorText.hpp +92 -0
  413. package/nitrogen/generated/shared/c++/Point.hpp +87 -0
  414. package/nitrogen/generated/shared/c++/Preferences.hpp +184 -0
  415. package/nitrogen/generated/shared/c++/PublicationMetadata.hpp +204 -0
  416. package/nitrogen/generated/shared/c++/PublicationReadyEvent.hpp +99 -0
  417. package/nitrogen/generated/shared/c++/ReadiumFile.hpp +90 -0
  418. package/nitrogen/generated/shared/c++/Rect.hpp +95 -0
  419. package/nitrogen/generated/shared/c++/SelectionAction.hpp +87 -0
  420. package/nitrogen/generated/shared/c++/SelectionActionEvent.hpp +93 -0
  421. package/nitrogen/generated/shared/c++/SelectionEvent.hpp +90 -0
  422. package/nitrogen/generated/shared/c++/SeriesInfo.hpp +88 -0
  423. package/nitrogen/generated/shared/c++/Subject.hpp +96 -0
  424. package/nitrogen/generated/shared/c++/views/HybridReadiumViewComponent.cpp +182 -0
  425. package/nitrogen/generated/shared/c++/views/HybridReadiumViewComponent.hpp +129 -0
  426. package/nitrogen/generated/shared/json/ReadiumViewConfig.json +19 -0
  427. package/package.json +48 -17
  428. package/react-native-readium.podspec +29 -8
  429. package/src/components/NitroReadiumView.tsx +9 -0
  430. package/src/components/ReadiumView.tsx +38 -68
  431. package/src/components/ReadiumView.types.ts +30 -0
  432. package/src/components/ReadiumView.web.tsx +149 -37
  433. package/src/index.tsx +0 -1
  434. package/src/interfaces/Decoration.ts +15 -0
  435. package/src/interfaces/File.ts +5 -13
  436. package/src/interfaces/Link.ts +4 -13
  437. package/src/interfaces/Locator.ts +5 -14
  438. package/src/interfaces/Preferences.ts +16 -19
  439. package/src/interfaces/PublicationMetadata.ts +23 -0
  440. package/src/interfaces/PublicationReady.ts +1 -0
  441. package/src/interfaces/Selection.ts +1 -0
  442. package/src/interfaces/SelectionAction.ts +4 -0
  443. package/src/interfaces/index.ts +6 -1
  444. package/src/specs/ReadiumView.nitro.ts +249 -0
  445. package/src/utils/index.ts +0 -6
  446. package/web/hooks/index.ts +4 -2
  447. package/web/hooks/useDecorationsObserver.ts +116 -0
  448. package/web/hooks/useLocationObserver.ts +24 -11
  449. package/web/hooks/useNavigator.ts +152 -0
  450. package/web/hooks/usePositionLabel.ts +51 -0
  451. package/web/hooks/usePreferencesObserver.ts +69 -0
  452. package/web/utils/locationNormalizer.ts +58 -0
  453. package/web/utils/manifestFetcher.ts +38 -0
  454. package/web/utils/manifestNormalizer.ts +74 -0
  455. package/web/utils/metadataNormalizer.ts +238 -0
  456. package/web/utils/navigatorListeners.ts +60 -0
  457. package/web/utils/publicationUtils.ts +47 -0
  458. package/android/src/main/java/com/reactnativereadium/ReadiumView.kt +0 -109
  459. package/android/src/main/java/com/reactnativereadium/ReadiumViewManager.kt +0 -149
  460. package/android/src/main/java/com/reactnativereadium/search/SearchFragment.kt +0 -100
  461. package/android/src/main/java/com/reactnativereadium/search/SearchPagingSource.kt +0 -44
  462. package/android/src/main/java/com/reactnativereadium/search/SearchResultAdapter.kt +0 -68
  463. package/android/src/main/java/com/reactnativereadium/utils/Dimensions.kt +0 -6
  464. package/android/src/main/java/com/reactnativereadium/utils/R2DispatcherActivity.kt +0 -45
  465. package/android/src/main/java/com/reactnativereadium/utils/SectionDecoration.kt +0 -98
  466. package/android/src/main/java/com/reactnativereadium/utils/SingleClickListener.kt +0 -32
  467. package/android/src/main/java/com/reactnativereadium/utils/extensions/Bitmap.kt +0 -23
  468. package/android/src/main/java/com/reactnativereadium/utils/extensions/Context.kt +0 -16
  469. package/android/src/main/java/com/reactnativereadium/utils/extensions/File.kt +0 -22
  470. package/android/src/main/java/com/reactnativereadium/utils/extensions/Link.kt +0 -6
  471. package/android/src/main/java/com/reactnativereadium/utils/extensions/Metadata.kt +0 -6
  472. package/android/src/main/java/com/reactnativereadium/utils/extensions/URL.kt +0 -29
  473. package/android/src/main/java/com/reactnativereadium/utils/extensions/Uri.kt +0 -17
  474. package/android/src/main/res/layout/fragment_search.xml +0 -39
  475. package/android/src/main/res/layout/item_recycle_search.xml +0 -14
  476. package/ios/Common/EPUBPreferences.swift +0 -8
  477. package/ios/Common/Paths.swift +0 -52
  478. package/ios/Common/Publication.swift +0 -15
  479. package/ios/Common/Toolkit/Extensions/HTTPClient.swift +0 -65
  480. package/ios/Common/Toolkit/Extensions/UIImage.swift +0 -12
  481. package/ios/Common/Toolkit/Extensions/UIViewController.swift +0 -19
  482. package/ios/Common/Toolkit/ScreenOrientation.swift +0 -13
  483. package/ios/Data/Bookmark.swift +0 -23
  484. package/ios/Readium-Bridging-Header.h +0 -2
  485. package/ios/ReadiumView.swift +0 -165
  486. package/ios/ReadiumViewManager.m +0 -11
  487. package/ios/ReadiumViewManager.swift +0 -9
  488. package/lib/src/components/BaseReadiumView.d.ts +0 -2
  489. package/lib/src/components/BaseReadiumView.js +0 -7
  490. package/lib/src/components/BaseReadiumView.web.d.ts +0 -1
  491. package/lib/src/components/BaseReadiumView.web.js +0 -1
  492. package/lib/src/enums/Appearance.d.ts +0 -11
  493. package/lib/src/enums/Appearance.js +0 -13
  494. package/lib/src/enums/ColumnCount.d.ts +0 -5
  495. package/lib/src/enums/ColumnCount.js +0 -7
  496. package/lib/src/enums/FontFamily.d.ts +0 -10
  497. package/lib/src/enums/FontFamily.js +0 -12
  498. package/lib/src/enums/TextAlignment.d.ts +0 -4
  499. package/lib/src/enums/TextAlignment.js +0 -6
  500. package/lib/src/enums/index.d.ts +0 -4
  501. package/lib/src/enums/index.js +0 -4
  502. package/lib/src/interfaces/BaseReadiumViewProps.d.ts +0 -15
  503. package/lib/src/utils/COMPONENT_NAME.d.ts +0 -1
  504. package/lib/src/utils/COMPONENT_NAME.js +0 -1
  505. package/lib/src/utils/LINKING_ERROR.d.ts +0 -1
  506. package/lib/src/utils/LINKING_ERROR.js +0 -5
  507. package/lib/src/utils/clamp.d.ts +0 -1
  508. package/lib/src/utils/clamp.js +0 -7
  509. package/lib/src/utils/createFragment.d.ts +0 -1
  510. package/lib/src/utils/createFragment.js +0 -10
  511. package/lib/src/utils/getWidthOrHeightValue.d.ts +0 -1
  512. package/lib/src/utils/getWidthOrHeightValue.js +0 -6
  513. package/lib/src/utils/indexOfObjectValue.d.ts +0 -1
  514. package/lib/src/utils/indexOfObjectValue.js +0 -3
  515. package/lib/web/hooks/useReaderRef.d.ts +0 -3
  516. package/lib/web/hooks/useReaderRef.js +0 -85
  517. package/lib/web/hooks/useSettingsObserver.d.ts +0 -2
  518. package/lib/web/hooks/useSettingsObserver.js +0 -44
  519. package/src/components/BaseReadiumView.tsx +0 -11
  520. package/src/components/BaseReadiumView.web.tsx +0 -1
  521. package/src/enums/Appearance.ts +0 -14
  522. package/src/enums/ColumnCount.ts +0 -6
  523. package/src/enums/FontFamily.ts +0 -11
  524. package/src/enums/TextAlignment.ts +0 -5
  525. package/src/enums/index.ts +0 -4
  526. package/src/interfaces/BaseReadiumViewProps.ts +0 -16
  527. package/src/utils/COMPONENT_NAME.ts +0 -1
  528. package/src/utils/LINKING_ERROR.ts +0 -7
  529. package/src/utils/clamp.ts +0 -5
  530. package/src/utils/createFragment.ts +0 -15
  531. package/src/utils/getWidthOrHeightValue.ts +0 -7
  532. package/src/utils/indexOfObjectValue.ts +0 -3
  533. package/web/hooks/useReaderRef.ts +0 -109
  534. package/web/hooks/useSettingsObserver.ts +0 -61
  535. /package/lib/src/{interfaces/BaseReadiumViewProps.js → components/ReadiumView.types.js} +0 -0
@@ -0,0 +1,132 @@
1
+ package com.reactnativereadium.reader
2
+
3
+ import android.graphics.Color
4
+ import android.view.Gravity
5
+ import android.widget.FrameLayout
6
+ import android.widget.TextView
7
+ import kotlinx.coroutines.CoroutineScope
8
+ import kotlinx.coroutines.Job
9
+ import kotlinx.coroutines.launch
10
+ import org.readium.r2.shared.publication.Publication
11
+ import org.readium.r2.shared.publication.services.positions
12
+
13
+ /**
14
+ * Manages the position label display for the reader.
15
+ * Similar to iOS PositionLabelManager, this class handles the display of current position
16
+ * and total position count in a TextView overlay.
17
+ */
18
+ class PositionLabelManager(
19
+ private val containerView: FrameLayout,
20
+ private val publication: Publication,
21
+ private val lifecycleScope: CoroutineScope
22
+ ) {
23
+ private val label: TextView = TextView(containerView.context)
24
+ private var positionsCount: Int? = null
25
+ private var positionsLoadingJob: Job? = null
26
+ private var lastKnownPosition: Int? = null
27
+ private var lastKnownProgression: Double? = null
28
+
29
+ init {
30
+ setupLabel()
31
+ }
32
+
33
+ companion object {
34
+ private const val LABEL_TEXT_SIZE_SP = 12f
35
+ private const val LABEL_PADDING_HORIZONTAL_DP = 10
36
+ private const val LABEL_PADDING_VERTICAL_DP = 5
37
+ private const val LABEL_BOTTOM_MARGIN_DP = 20
38
+ private const val LABEL_ELEVATION_DP = 4f
39
+ }
40
+
41
+ private fun setupLabel() {
42
+ val density = containerView.resources.displayMetrics.density
43
+
44
+ label.apply {
45
+ textSize = LABEL_TEXT_SIZE_SP
46
+ setTextColor(Color.DKGRAY) // Default, will be updated based on theme
47
+ setBackgroundColor(Color.TRANSPARENT)
48
+ gravity = Gravity.CENTER
49
+ setPadding(
50
+ (LABEL_PADDING_HORIZONTAL_DP * density).toInt(),
51
+ (LABEL_PADDING_VERTICAL_DP * density).toInt(),
52
+ (LABEL_PADDING_HORIZONTAL_DP * density).toInt(),
53
+ (LABEL_PADDING_VERTICAL_DP * density).toInt()
54
+ )
55
+ elevation = LABEL_ELEVATION_DP * density
56
+ }
57
+
58
+ val params = FrameLayout.LayoutParams(
59
+ FrameLayout.LayoutParams.WRAP_CONTENT,
60
+ FrameLayout.LayoutParams.WRAP_CONTENT
61
+ ).apply {
62
+ gravity = Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL
63
+ bottomMargin = (LABEL_BOTTOM_MARGIN_DP * density).toInt()
64
+ }
65
+
66
+ containerView.addView(label, params)
67
+ // Ensure label is above navigator fragment
68
+ label.bringToFront()
69
+ }
70
+
71
+ /**
72
+ * Update the position label with current position and progression.
73
+ * Should be called on the main thread.
74
+ */
75
+ fun update(position: Int?, totalProgression: Double?) {
76
+ lastKnownPosition = position
77
+ lastKnownProgression = totalProgression
78
+ label.text = positionLabelText(position, totalProgression)
79
+ }
80
+
81
+ private fun positionLabelText(position: Int?, totalProgression: Double?): String? {
82
+ return when {
83
+ position != null -> {
84
+ val total = positionsCount
85
+ if (total != null) {
86
+ "$position / $total"
87
+ } else {
88
+ loadPositionsCountIfNeeded()
89
+ "$position"
90
+ }
91
+ }
92
+ totalProgression != null -> {
93
+ "${(totalProgression * 100).toInt()}%"
94
+ }
95
+ else -> null
96
+ }
97
+ }
98
+
99
+ private fun loadPositionsCountIfNeeded() {
100
+ if (positionsCount != null) return
101
+ if (positionsLoadingJob?.isActive == true) return
102
+
103
+ positionsLoadingJob = lifecycleScope.launch {
104
+ try {
105
+ val positions = publication.positions()
106
+ positionsCount = positions.size
107
+
108
+ // Refresh label with the new count
109
+ label.text = positionLabelText(lastKnownPosition, lastKnownProgression)
110
+ } catch (e: Exception) {
111
+ // Failed to load positions, continue showing position without total
112
+ }
113
+ }
114
+ }
115
+
116
+ /**
117
+ * Update the text color of the position label.
118
+ * Should be called on the main thread.
119
+ */
120
+ fun setTextColor(color: Int) {
121
+ label.setTextColor(color)
122
+ }
123
+
124
+ /**
125
+ * Cancel any ongoing loading operations and remove the label from the view hierarchy.
126
+ */
127
+ fun cleanup() {
128
+ positionsLoadingJob?.cancel()
129
+ positionsLoadingJob = null
130
+ containerView.removeView(label)
131
+ }
132
+ }
@@ -1,49 +1,37 @@
1
1
  package com.reactnativereadium.reader
2
2
 
3
- import android.annotation.SuppressLint
4
- import androidx.lifecycle.ViewModelStore
5
3
  import com.facebook.react.bridge.ReactApplicationContext
6
4
  import com.facebook.react.util.RNLog
7
5
  import com.reactnativereadium.utils.LinkOrLocator
8
6
  import java.io.File
9
- import java.io.IOException
10
- import java.net.ServerSocket
11
- import org.readium.r2.shared.extensions.mediaType
12
- import org.readium.r2.shared.extensions.tryOrNull
7
+ import java.util.Locale
13
8
  import org.readium.r2.shared.publication.Locator
14
- import org.readium.r2.shared.publication.asset.FileAsset
15
9
  import org.readium.r2.shared.publication.Publication
16
- import org.readium.r2.streamer.server.Server
17
- import org.readium.r2.streamer.Streamer
10
+ import org.readium.r2.shared.util.FileExtension
11
+ import org.readium.r2.shared.util.asset.AssetRetriever
12
+ import org.readium.r2.shared.util.format.FormatHints
13
+ import org.readium.r2.shared.util.http.DefaultHttpClient
14
+ import org.readium.r2.shared.util.toUrl
15
+ import org.readium.r2.streamer.PublicationOpener
16
+ import org.readium.r2.streamer.parser.DefaultPublicationParser
18
17
 
19
18
 
20
19
  class ReaderService(
21
20
  private val reactContext: ReactApplicationContext
22
21
  ) {
23
- private var streamer = Streamer(reactContext)
24
- // see R2App.onCreate
25
- private var server: Server
26
- // val channel = EventChannel(Channel<Event>(Channel.BUFFERED), viewModelScope)
27
- private var store = ViewModelStore()
28
-
29
- companion object {
30
- @SuppressLint("StaticFieldLeak")
31
- lateinit var server: Server
32
- private set
33
-
34
- lateinit var R2DIRECTORY: String
35
- private set
36
-
37
- var isServerStarted = false
38
- private set
39
- }
40
-
41
- init {
42
- val s = ServerSocket(0)
43
- s.close()
44
- server = Server(s.localPort, reactContext)
45
- this.startServer()
46
- }
22
+ private val httpClient = DefaultHttpClient()
23
+ private val assetRetriever = AssetRetriever(
24
+ reactContext.contentResolver,
25
+ httpClient
26
+ )
27
+ private val publicationOpener = PublicationOpener(
28
+ publicationParser = DefaultPublicationParser(
29
+ context = reactContext,
30
+ assetRetriever = assetRetriever,
31
+ httpClient = httpClient,
32
+ pdfFactory = null,
33
+ )
34
+ )
47
35
 
48
36
  fun locatorFromLinkOrLocator(
49
37
  location: LinkOrLocator?,
@@ -69,44 +57,55 @@ class ReaderService(
69
57
  initialLocation: LinkOrLocator?,
70
58
  callback: suspend (fragment: BaseReaderFragment) -> Unit
71
59
  ) {
72
- val file = File(fileName)
73
- val asset = FileAsset(file, file.mediaType())
60
+ val publicationFile = File(fileName).absoluteFile
61
+ if (!publicationFile.exists()) {
62
+ RNLog.e(reactContext, "Failed to open publication: File does not exist: $fileName")
63
+ return
64
+ }
65
+ val publicationUrl = runCatching {
66
+ publicationFile.toUrl()
67
+ }
68
+ .onFailure {
69
+ RNLog.e(
70
+ reactContext,
71
+ "Invalid publication path: $fileName - ${it.message}"
72
+ )
73
+ }
74
+ .getOrNull()
75
+ ?: return
74
76
 
75
- streamer.open(
76
- asset,
77
- allowUserInteraction = false,
78
- sender = reactContext
79
- )
80
- .onSuccess {
81
- val locator = locatorFromLinkOrLocator(initialLocation, it)
82
- val readerFragment = EpubReaderFragment.newInstance()
83
- readerFragment.initFactory(it, locator)
84
- callback.invoke(readerFragment)
77
+ val fileExtension = publicationFile.extension
78
+ .takeIf { it.isNotEmpty() }?.lowercase(Locale.ROOT)
85
79
 
86
- }
80
+ val asset = assetRetriever
81
+ .retrieve(
82
+ publicationUrl,
83
+ FormatHints(fileExtension = fileExtension?.let { FileExtension(it) })
84
+ )
87
85
  .onFailure {
88
- tryOrNull { asset.file.delete() }
89
- RNLog.w(reactContext, "Error executing ReaderService.openPublication")
90
- // TODO: implement failure event
86
+ RNLog.w(reactContext, "Unable to retrieve publication asset: ${it.message}")
91
87
  }
92
- }
93
-
94
- private fun startServer() {
95
- if (!server.isAlive) {
96
- try {
97
- server.start()
98
- } catch (e: IOException) {
99
- RNLog.e(reactContext, "Unable to start the Readium server.")
88
+ .getOrNull()
89
+ ?: return
90
+
91
+ publicationOpener
92
+ .open(
93
+ asset = asset,
94
+ allowUserInteraction = false
95
+ )
96
+ .onSuccess {
97
+ val locator = locatorFromLinkOrLocator(initialLocation, it)
98
+ val readerFragment = EpubReaderFragment.newInstance()
99
+ readerFragment.initFactory(it, locator)
100
+ callback.invoke(readerFragment)
100
101
  }
101
- if (server.isAlive) {
102
- // // Add your own resources here
103
- // server.loadCustomResource(assets.open("scripts/test.js"), "test.js")
104
- // server.loadCustomResource(assets.open("styles/test.css"), "test.css")
105
- // server.loadCustomFont(assets.open("fonts/test.otf"), applicationContext, "test.otf")
106
-
107
- isServerStarted = true
102
+ .onFailure {
103
+ RNLog.w(
104
+ reactContext,
105
+ "Error executing ReaderService.openPublication: ${it.message}"
106
+ )
107
+ // TODO: implement failure event
108
108
  }
109
- }
110
109
  }
111
110
 
112
111
  sealed class Event {
@@ -1,95 +1,24 @@
1
1
  package com.reactnativereadium.reader
2
2
 
3
- import android.graphics.Color
3
+ import android.graphics.PointF
4
+ import android.graphics.RectF
4
5
  import androidx.lifecycle.ViewModel
5
6
  import androidx.lifecycle.ViewModelProvider
6
7
  import androidx.lifecycle.viewModelScope
7
- import androidx.paging.*
8
- import com.reactnativereadium.search.SearchPagingSource
9
8
  import com.reactnativereadium.utils.EventChannel
10
9
  import kotlinx.coroutines.channels.Channel
11
- import kotlinx.coroutines.flow.*
12
- import kotlinx.coroutines.launch
13
10
  import org.readium.r2.navigator.Decoration
14
- import org.readium.r2.navigator.ExperimentalDecorator
15
11
  import org.readium.r2.shared.publication.Locator
16
- import org.readium.r2.shared.publication.LocatorCollection
17
12
  import org.readium.r2.shared.publication.Publication
18
- import org.readium.r2.shared.publication.services.search.search
19
- import org.readium.r2.shared.publication.services.search.SearchIterator
20
- import org.readium.r2.shared.publication.services.search.SearchTry
21
- import org.readium.r2.shared.Search
22
- import org.readium.r2.shared.UserException
23
13
  import org.readium.r2.shared.publication.Link
24
- import org.readium.r2.shared.util.Try
14
+ import org.readium.r2.shared.publication.Metadata
25
15
 
26
- @OptIn(Search::class, ExperimentalDecorator::class)
27
16
  class ReaderViewModel(
28
17
  val publication: Publication,
29
18
  val initialLocation: Locator?
30
19
  ) : ViewModel() {
31
20
  val channel = EventChannel(Channel<Event>(Channel.BUFFERED), viewModelScope)
32
21
 
33
- fun search(query: String) = viewModelScope.launch {
34
- if (query == lastSearchQuery) return@launch
35
- lastSearchQuery = query
36
- _searchLocators.value = emptyList()
37
- searchIterator = publication.search(query)
38
- .onFailure { channel.send(Event.Failure(it)) }
39
- .getOrNull()
40
- pagingSourceFactory.invalidate()
41
- channel.send(Event.StartNewSearch)
42
- }
43
-
44
- fun cancelSearch() = viewModelScope.launch {
45
- _searchLocators.value = emptyList()
46
- searchIterator?.close()
47
- searchIterator = null
48
- pagingSourceFactory.invalidate()
49
- }
50
-
51
- val searchLocators: StateFlow<List<Locator>> get() = _searchLocators
52
- private var _searchLocators = MutableStateFlow<List<Locator>>(emptyList())
53
-
54
- /**
55
- * Maps the current list of search result locators into a list of [Decoration] objects to
56
- * underline the results in the navigator.
57
- */
58
- val searchDecorations: Flow<List<Decoration>> by lazy {
59
- searchLocators.map {
60
- it.mapIndexed { index, locator ->
61
- Decoration(
62
- // The index in the search result list is a suitable Decoration ID, as long as
63
- // we clear the search decorations between two searches.
64
- id = index.toString(),
65
- locator = locator,
66
- style = Decoration.Style.Underline(tint = Color.RED)
67
- )
68
- }
69
- }
70
- }
71
-
72
- private var lastSearchQuery: String? = null
73
-
74
- private var searchIterator: SearchIterator? = null
75
-
76
- private val pagingSourceFactory = InvalidatingPagingSourceFactory {
77
- SearchPagingSource(listener = PagingSourceListener())
78
- }
79
-
80
- inner class PagingSourceListener : SearchPagingSource.Listener {
81
- override suspend fun next(): SearchTry<LocatorCollection?> {
82
- val iterator = searchIterator ?: return Try.success(null)
83
- return iterator.next().onSuccess {
84
- _searchLocators.value += (it?.locators ?: emptyList())
85
- }
86
- }
87
- }
88
-
89
- val searchResult: Flow<PagingData<Locator>> =
90
- Pager(PagingConfig(pageSize = 20), pagingSourceFactory = pagingSourceFactory)
91
- .flow.cachedIn(viewModelScope)
92
-
93
22
  class Factory(
94
23
  private val publication: Publication,
95
24
  private val initialLocation: Locator?
@@ -107,16 +36,26 @@ class ReaderViewModel(
107
36
  }
108
37
 
109
38
  sealed class Event {
110
- object OpenOutlineRequested : Event()
111
- object OpenDrmManagementRequested : Event()
112
- object StartNewSearch : Event()
113
- class Failure(val error: UserException) : Event()
114
39
  class LocatorUpdate(val locator: Locator) : Event()
115
- class TableOfContentsLoaded(val toc: List<Link>) : Event()
116
- }
117
-
118
- sealed class FeedbackEvent {
119
- object BookmarkSuccessfullyAdded : FeedbackEvent()
120
- object BookmarkFailed : FeedbackEvent()
40
+ class PublicationReady(
41
+ val tableOfContents: List<Link>,
42
+ val positions: List<Locator>,
43
+ val metadata: Metadata
44
+ ) : Event()
45
+ class DecorationActivated(
46
+ val decoration: Decoration,
47
+ val group: String,
48
+ val rect: RectF?,
49
+ val point: PointF?
50
+ ) : Event()
51
+ class SelectionChanged(
52
+ val locator: Locator?,
53
+ val selectedText: String?
54
+ ) : Event()
55
+ class SelectionAction(
56
+ val actionId: String,
57
+ val locator: Locator,
58
+ val selectedText: String
59
+ ) : Event()
121
60
  }
122
61
  }
@@ -13,14 +13,15 @@ import android.view.ViewGroup
13
13
  import android.view.WindowInsets
14
14
  import android.widget.FrameLayout
15
15
  import androidx.fragment.app.Fragment
16
- import org.readium.r2.navigator.DecorableNavigator
17
- import org.readium.r2.navigator.ExperimentalDecorator
16
+ import androidx.lifecycle.lifecycleScope
18
17
  import com.reactnativereadium.R
19
18
  import com.reactnativereadium.databinding.FragmentReaderBinding
20
19
  import com.reactnativereadium.utils.clearPadding
21
20
  import com.reactnativereadium.utils.hideSystemUi
22
21
  import com.reactnativereadium.utils.padSystemUi
23
22
  import com.reactnativereadium.utils.showSystemUi
23
+ import kotlinx.coroutines.flow.launchIn
24
+ import kotlinx.coroutines.flow.onEach
24
25
 
25
26
  /*
26
27
  * Adds fullscreen support to the BaseReaderFragment
@@ -32,6 +33,8 @@ abstract class VisualReaderFragment : BaseReaderFragment() {
32
33
  private var _binding: FragmentReaderBinding? = null
33
34
  val binding get() = _binding!!
34
35
 
36
+ private var positionLabelManager: PositionLabelManager? = null
37
+
35
38
  override fun onCreateView(
36
39
  inflater: LayoutInflater,
37
40
  container: ViewGroup?,
@@ -45,6 +48,23 @@ abstract class VisualReaderFragment : BaseReaderFragment() {
45
48
  super.onViewCreated(view, savedInstanceState)
46
49
  navigatorFragment = navigator as Fragment
47
50
 
51
+ // Initialize position label manager - simple overlay, matching iOS approach
52
+ positionLabelManager = PositionLabelManager(
53
+ containerView = binding.fragmentReaderContainer,
54
+ publication = model.publication,
55
+ lifecycleScope = viewLifecycleOwner.lifecycleScope
56
+ )
57
+
58
+ // Update position label when navigator location changes
59
+ navigator.currentLocator
60
+ .onEach { locator ->
61
+ positionLabelManager?.update(
62
+ position = locator.locations.position,
63
+ totalProgression = locator.locations.totalProgression
64
+ )
65
+ }
66
+ .launchIn(viewLifecycleOwner.lifecycleScope)
67
+
48
68
  childFragmentManager.addOnBackStackChangedListener {
49
69
  updateSystemUiVisibility()
50
70
  }
@@ -55,10 +75,20 @@ abstract class VisualReaderFragment : BaseReaderFragment() {
55
75
  }
56
76
 
57
77
  override fun onDestroyView() {
78
+ positionLabelManager?.cleanup()
79
+ positionLabelManager = null
58
80
  _binding = null
59
81
  super.onDestroyView()
60
82
  }
61
83
 
84
+ /**
85
+ * Update the text color of the position label.
86
+ * @param color Android color integer
87
+ */
88
+ fun setPositionLabelColor(color: Int) {
89
+ positionLabelManager?.setTextColor(color)
90
+ }
91
+
62
92
  fun updateSystemUiVisibility() {
63
93
  if (navigatorFragment.isHidden)
64
94
  requireActivity().showSystemUi()
@@ -0,0 +1,175 @@
1
+ package com.reactnativereadium.utils
2
+
3
+ import android.graphics.Color
4
+ import com.facebook.react.bridge.Arguments
5
+ import com.facebook.react.bridge.WritableMap
6
+ import org.json.JSONObject
7
+ import org.readium.r2.navigator.Decoration
8
+ import org.readium.r2.shared.publication.Locator
9
+ import java.util.UUID
10
+
11
+ object DecorationSerializer {
12
+ /**
13
+ * Deserialize JSON string to a map of decoration groups
14
+ */
15
+ fun deserialize(json: String?): Map<String, List<Decoration>> {
16
+ if (json == null) return emptyMap()
17
+
18
+ try {
19
+ val jsonObject = JSONObject(json)
20
+ val groups = mutableMapOf<String, List<Decoration>>()
21
+
22
+ jsonObject.keys().forEach { groupName ->
23
+ val decorationsArray = jsonObject.getJSONArray(groupName)
24
+ val decorations = mutableListOf<Decoration>()
25
+
26
+ for (i in 0 until decorationsArray.length()) {
27
+ val decorationJson = decorationsArray.getJSONObject(i)
28
+ deserializeDecoration(decorationJson)?.let { decorations.add(it) }
29
+ }
30
+
31
+ groups[groupName] = decorations
32
+ }
33
+
34
+ return groups
35
+ } catch (e: Exception) {
36
+ android.util.Log.e("DecorationSerializer", "Failed to deserialize decorations: ${e.message}", e)
37
+ return emptyMap()
38
+ }
39
+ }
40
+
41
+ /**
42
+ * Deserialize a single decoration from JSON
43
+ */
44
+ private fun deserializeDecoration(json: JSONObject): Decoration? {
45
+ try {
46
+ val id = json.getString("id")
47
+ val locatorJson = json.getJSONObject("locator")
48
+ val styleJson = json.getJSONObject("style")
49
+ val extrasJson = if (json.has("extras")) json.getJSONObject("extras") else null
50
+ val locator = Locator.fromJSON(locatorJson) ?: return null
51
+ val style = deserializeStyle(styleJson) ?: return null
52
+
53
+ val extras = mutableMapOf<String, Any>()
54
+ extrasJson?.keys()?.forEach { key ->
55
+ extras[key] = extrasJson.get(key)
56
+ }
57
+
58
+ return Decoration(
59
+ id = id,
60
+ locator = locator,
61
+ style = style,
62
+ extras = extras
63
+ )
64
+ } catch (e: Exception) {
65
+ android.util.Log.e("DecorationSerializer", "Failed to deserialize decoration: ${e.message}", e)
66
+ return null
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Deserialize a decoration style from JSON
72
+ */
73
+ private fun deserializeStyle(json: JSONObject): Decoration.Style? {
74
+ return when (json.getString("type")) {
75
+ "highlight" -> {
76
+ val tint = parseColor(json.getString("tint"))
77
+ val isActive = json.optBoolean("isActive", false)
78
+ Decoration.Style.Highlight(tint = tint, isActive = isActive)
79
+ }
80
+ "underline" -> {
81
+ val tint = parseColor(json.getString("tint"))
82
+ val isActive = json.optBoolean("isActive", false)
83
+ Decoration.Style.Underline(tint = tint, isActive = isActive)
84
+ }
85
+ // TODO: Add support for custom styles
86
+ else -> null
87
+ }
88
+ }
89
+
90
+ /**
91
+ * Parse a CSS color string to Android Color int
92
+ * Supports: hex (#RRGGBB, #AARRGGBB), rgb(r,g,b), rgba(r,g,b,a), named colors
93
+ */
94
+ private fun parseColor(colorString: String): Int {
95
+ return try {
96
+ when {
97
+ colorString.startsWith("#") -> Color.parseColor(colorString)
98
+ colorString.startsWith("rgb(") -> {
99
+ val values = colorString.substringAfter("(").substringBefore(")").split(",")
100
+ val r = values[0].trim().toInt()
101
+ val g = values[1].trim().toInt()
102
+ val b = values[2].trim().toInt()
103
+ Color.rgb(r, g, b)
104
+ }
105
+ colorString.startsWith("rgba(") -> {
106
+ val values = colorString.substringAfter("(").substringBefore(")").split(",")
107
+ val r = values[0].trim().toInt()
108
+ val g = values[1].trim().toInt()
109
+ val b = values[2].trim().toInt()
110
+ val a = (values[3].trim().toFloat() * 255).toInt()
111
+ Color.argb(a, r, g, b)
112
+ }
113
+ else -> Color.parseColor(colorString) // Try named color
114
+ }
115
+ } catch (e: Exception) {
116
+ android.util.Log.w("DecorationSerializer", "Failed to parse color '$colorString', using default", e)
117
+ Color.YELLOW // Default color
118
+ }
119
+ }
120
+ }
121
+
122
+ /**
123
+ * Extension function to convert Decoration to WritableMap for React Native
124
+ */
125
+ fun Decoration.toWritableMap(): WritableMap {
126
+ return Arguments.createMap().apply {
127
+ putString("id", this@toWritableMap.id)
128
+ putMap("locator", this@toWritableMap.locator.toWritableMap())
129
+ putMap("style", styleToWritableMap(this@toWritableMap.style))
130
+
131
+ if (this@toWritableMap.extras.isNotEmpty()) {
132
+ val extrasMap = Arguments.createMap()
133
+ this@toWritableMap.extras.forEach { (key, value) ->
134
+ when (value) {
135
+ is String -> extrasMap.putString(key, value)
136
+ is Int -> extrasMap.putInt(key, value)
137
+ is Double -> extrasMap.putDouble(key, value)
138
+ is Boolean -> extrasMap.putBoolean(key, value)
139
+ else -> extrasMap.putString(key, value.toString())
140
+ }
141
+ }
142
+ putMap("extras", extrasMap)
143
+ }
144
+ }
145
+ }
146
+
147
+ /**
148
+ * Convert Decoration.Style to WritableMap
149
+ */
150
+ private fun styleToWritableMap(style: Decoration.Style): WritableMap {
151
+ return Arguments.createMap().apply {
152
+ when (style) {
153
+ is Decoration.Style.Highlight -> {
154
+ putString("type", "highlight")
155
+ putString("tint", colorToHex(style.tint))
156
+ putBoolean("isActive", style.isActive)
157
+ }
158
+ is Decoration.Style.Underline -> {
159
+ putString("type", "underline")
160
+ putString("tint", colorToHex(style.tint))
161
+ putBoolean("isActive", style.isActive)
162
+ }
163
+ else -> {
164
+ putString("type", "custom")
165
+ }
166
+ }
167
+ }
168
+ }
169
+
170
+ /**
171
+ * Convert Android Color int to hex string
172
+ */
173
+ private fun colorToHex(color: Int): String {
174
+ return String.format("#%08X", color)
175
+ }
@@ -50,12 +50,3 @@ class FlowObserver<T> (
50
50
  job = null
51
51
  }
52
52
  }
53
-
54
-
55
- inline fun <reified T> Flow<T>.observeWhenStarted(
56
- lifecycleOwner: LifecycleOwner,
57
- noinline collector: suspend (T) -> Unit
58
- ) {
59
- val observer = FlowObserver(lifecycleOwner, this, collector)
60
- lifecycleOwner.lifecycle.addObserver(observer)
61
- }