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
@@ -1,12 +1,11 @@
1
1
  import Combine
2
2
  import SafariServices
3
3
  import UIKit
4
- import R2Navigator
5
- import R2Shared
4
+ import ReadiumNavigator
5
+ import ReadiumShared
6
6
  import SwiftSoup
7
7
  import WebKit
8
8
 
9
-
10
9
  /// This class is meant to be subclassed by each publication format view controller. It contains the shared behavior, eg. navigation bar toggling.
11
10
  class ReaderViewController: UIViewController, Loggable {
12
11
 
@@ -19,8 +18,12 @@ class ReaderViewController: UIViewController, Loggable {
19
18
  private(set) var stackView: UIStackView!
20
19
  private lazy var positionLabel = UILabel()
21
20
  private var subscriptions = Set<AnyCancellable>()
22
- private var subject = PassthroughSubject<Locator, Never>()
21
+ private var subject = PassthroughSubject<ReadiumShared.Locator, Never>()
23
22
  lazy var publisher = subject.eraseToAnyPublisher()
23
+ private var positionsCount: Int?
24
+ private var positionsLoadingTask: Task<Void, Never>?
25
+ private var lastKnownLocator: ReadiumShared.Locator?
26
+ private var navigatorInputObserverTokens = Set<InputObservableToken>()
24
27
 
25
28
  /// This regex matches any string with at least 2 consecutive letters (not limited to ASCII).
26
29
  /// It's used when evaluating whether to display the body of a noteref referrer as the note's title.
@@ -55,6 +58,8 @@ class ReaderViewController: UIViewController, Loggable {
55
58
 
56
59
  deinit {
57
60
  NotificationCenter.default.removeObserver(self)
61
+ positionsLoadingTask?.cancel()
62
+ removeNavigatorInputObservers()
58
63
  }
59
64
 
60
65
  override func viewDidLoad() {
@@ -93,6 +98,8 @@ class ReaderViewController: UIViewController, Loggable {
93
98
  positionLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor),
94
99
  positionLabel.bottomAnchor.constraint(equalTo: navigator.view.bottomAnchor, constant: -20)
95
100
  ])
101
+
102
+ configureNavigatorInteractions()
96
103
  }
97
104
 
98
105
  override func willMove(toParent parent: UIViewController?) {
@@ -129,34 +136,6 @@ class ReaderViewController: UIViewController, Loggable {
129
136
  }
130
137
 
131
138
 
132
- // MARK: - Locations
133
- /// FIXME: This should be implemented in a shared Navigator interface, using Locators.
134
-
135
- var currentBookmark: Bookmark? {
136
- fatalError("Not implemented")
137
- }
138
-
139
- // MARK: - Bookmarks
140
-
141
- @objc func bookmarkCurrentPosition() {
142
- // guard let bookmark = currentBookmark else {
143
- // return
144
- // }
145
-
146
- // TODO: this should call a react callback
147
- // bookmarks.add(bookmark)
148
- // .sink { completion in
149
- // switch completion {
150
- // case .finished:
151
- // toast(NSLocalizedString("reader_bookmark_success_message", comment: "Success message when adding a bookmark"), on: self.view, duration: 1)
152
- // case .failure(let error):
153
- // print(error)
154
- // toast(NSLocalizedString("reader_bookmark_failure_message", comment: "Error message when adding a new bookmark failed"), on: self.view, duration: 2)
155
- // }
156
- // } receiveValue: { _ in }
157
- // .store(in: &subscriptions)
158
- }
159
-
160
139
  // MARK: - Accessibility
161
140
 
162
141
  /// Constraint used to shift the content under the navigation bar, since it is always visible when VoiceOver is running.
@@ -205,28 +184,74 @@ class ReaderViewController: UIViewController, Loggable {
205
184
  updateNavigationBar()
206
185
  }
207
186
 
187
+ private func configureNavigatorInteractions() {
188
+ guard let visualNavigator = navigator as? VisualNavigator else {
189
+ return
190
+ }
191
+
192
+ guard navigatorInputObserverTokens.isEmpty else {
193
+ return
194
+ }
195
+
196
+ DirectionalNavigationAdapter(
197
+ pointerPolicy: .init(edges: .all),
198
+ animatedTransition: true
199
+ ).bind(to: visualNavigator)
200
+
201
+ let toggleToken = visualNavigator.addObserver(.tap { [weak self] event in
202
+ guard
203
+ let self,
204
+ event.phase != .cancel
205
+ else {
206
+ return false
207
+ }
208
+
209
+ self.toggleNavigationBar()
210
+ return true
211
+ })
212
+ toggleToken.store(in: &navigatorInputObserverTokens)
213
+ }
214
+
215
+ private func removeNavigatorInputObservers() {
216
+ guard
217
+ let visualNavigator = navigator as? VisualNavigator
218
+ else {
219
+ navigatorInputObserverTokens.removeAll()
220
+ return
221
+ }
222
+
223
+ navigatorInputObserverTokens.forEach { visualNavigator.removeObserver($0) }
224
+ navigatorInputObserverTokens.removeAll()
225
+ }
226
+
208
227
  @objc private func goBackward() {
209
- navigator.goBackward()
228
+ Task { [weak self] in
229
+ await self?.navigateBackwardAnimated()
230
+ }
210
231
  }
211
232
 
212
233
  @objc private func goForward() {
213
- navigator.goForward()
234
+ Task { [weak self] in
235
+ await self?.navigateForwardAnimated()
236
+ }
237
+ }
238
+
239
+ @MainActor
240
+ private func navigateBackwardAnimated() async {
241
+ _ = await navigator.goBackward(options: .animated)
242
+ }
243
+
244
+ @MainActor
245
+ private func navigateForwardAnimated() async {
246
+ _ = await navigator.goForward(options: .animated)
214
247
  }
215
248
 
216
249
  }
217
250
 
218
251
  extension ReaderViewController: NavigatorDelegate {
219
- func navigator(_ navigator: Navigator, locationDidChange locator: Locator) {
252
+ func navigator(_ navigator: Navigator, locationDidChange locator: ReadiumShared.Locator) {
220
253
  subject.send(locator)
221
- positionLabel.text = {
222
- if let position = locator.locations.position {
223
- return "\(position) / \(publication.positions.count)"
224
- } else if let progression = locator.locations.totalProgression {
225
- return "\(progression)%"
226
- } else {
227
- return nil
228
- }
229
- }()
254
+ updatePositionLabel(with: locator)
230
255
  }
231
256
 
232
257
  func navigator(_ navigator: Navigator, presentExternalURL url: URL) {
@@ -241,7 +266,7 @@ extension ReaderViewController: NavigatorDelegate {
241
266
  moduleDelegate?.presentError(error, from: self)
242
267
  }
243
268
 
244
- func navigator(_ navigator: Navigator, shouldNavigateToNoteAt link: Link, content: String, referrer: String?) -> Bool {
269
+ func navigator(_ navigator: Navigator, shouldNavigateToNoteAt link: ReadiumShared.Link, content: String, referrer: String?) -> Bool {
245
270
 
246
271
  var title = referrer
247
272
  if let t = title {
@@ -288,16 +313,59 @@ extension ReaderViewController: NavigatorDelegate {
288
313
 
289
314
  }
290
315
 
291
- extension ReaderViewController: VisualNavigatorDelegate {
316
+ extension ReaderViewController {
317
+ private func updatePositionLabel(with locator: ReadiumShared.Locator) {
318
+ lastKnownLocator = locator
319
+ positionLabel.text = positionLabelText(for: locator)
320
+ }
321
+
322
+ private func positionLabelText(for locator: ReadiumShared.Locator) -> String? {
323
+ if let position = locator.locations.position {
324
+ if let total = positionsCount {
325
+ return "\(position) / \(total)"
326
+ } else {
327
+ loadPositionsCountIfNeeded()
328
+ return "\(position)"
329
+ }
330
+ } else if let progression = locator.locations.totalProgression {
331
+ return "\(progression)%"
332
+ } else {
333
+ return nil
334
+ }
335
+ }
336
+
337
+ private func loadPositionsCountIfNeeded() {
338
+ guard positionsCount == nil else {
339
+ return
340
+ }
341
+ guard positionsLoadingTask == nil else {
342
+ return
343
+ }
344
+
345
+ positionsLoadingTask = Task { [weak self] in
346
+ guard let self else { return }
347
+ defer { self.positionsLoadingTask = nil }
292
348
 
293
- func navigator(_ navigator: VisualNavigator, didTapAt point: CGPoint) {
294
- let moved = DirectionalNavigationAdapter(navigator: navigator).didTap(at: point)
295
- if !moved {
296
- toggleNavigationBar()
349
+ let result = await self.publication.positions()
350
+ guard !Task.isCancelled else { return }
351
+
352
+ switch result {
353
+ case let .success(positions):
354
+ await MainActor.run {
355
+ self.positionsCount = positions.count
356
+ self.refreshPositionLabel()
297
357
  }
358
+ case let .failure(error):
359
+ self.log(.error, "Failed to load publication positions: \(error)")
360
+ }
298
361
  }
299
-
300
- func navigator(_ navigator: VisualNavigator, didPressKey event: KeyEvent) {
301
- DirectionalNavigationAdapter(navigator: navigator).didPressKey(event: event)
362
+ }
363
+
364
+ @MainActor
365
+ private func refreshPositionLabel() {
366
+ guard let locator = lastKnownLocator else {
367
+ return
302
368
  }
369
+ positionLabel.text = positionLabelText(for: locator)
370
+ }
303
371
  }
@@ -1,5 +1,5 @@
1
1
  import UIKit
2
- import R2Navigator
2
+ import ReadiumNavigator
3
3
 
4
4
  class AssociatedColors {
5
5
 
@@ -0,0 +1,13 @@
1
+ import Foundation
2
+ import ReadiumShared
3
+ import ReadiumAdapterGCDWebServer
4
+
5
+ /// Provides a shared HTTP server backed by GCDWebServer for EPUB resources.
6
+ enum EPUBHTTPServer {
7
+ /// Lazily instantiated HTTP server reused across EPUB reader sessions.
8
+ static let shared: GCDHTTPServer = {
9
+ let httpClient = DefaultHTTPClient()
10
+ let assetRetriever = AssetRetriever(httpClient: httpClient)
11
+ return GCDHTTPServer(assetRetriever: assetRetriever)
12
+ }()
13
+ }
@@ -1,7 +1,6 @@
1
1
  import Foundation
2
2
  import UIKit
3
- import R2Shared
4
-
3
+ import ReadiumShared
5
4
 
6
5
  final class EPUBModule: ReaderFormatModule {
7
6
 
@@ -18,8 +17,9 @@ final class EPUBModule: ReaderFormatModule {
18
17
 
19
18
  func makeReaderViewController(
20
19
  for publication: Publication,
21
- locator: Locator?,
22
- bookId: String
20
+ locator: ReadiumShared.Locator?,
21
+ bookId: String,
22
+ selectionActions: [SelectionActionData]?
23
23
  ) throws -> ReaderViewController {
24
24
  guard publication.metadata.identifier != nil else {
25
25
  throw ReaderError.epubNotValid
@@ -28,7 +28,8 @@ final class EPUBModule: ReaderFormatModule {
28
28
  let epubViewController = try EPUBViewController(
29
29
  publication: publication,
30
30
  locator: locator,
31
- bookId: bookId
31
+ bookId: bookId,
32
+ selectionActions: selectionActions
32
33
  )
33
34
  epubViewController.moduleDelegate = delegate
34
35
  return epubViewController
@@ -1,19 +1,57 @@
1
1
  import UIKit
2
- import R2Shared
3
- import R2Navigator
4
- import ReadiumAdapterGCDWebServer
2
+ import ReadiumShared
3
+ import ReadiumNavigator
5
4
 
6
- class EPUBViewController: ReaderViewController {
5
+ struct SelectionActionData: Codable {
6
+ let id: String
7
+ let label: String
8
+ }
9
+
10
+ protocol SelectionActionDelegate: AnyObject {
11
+ func onSelectionAction(actionId: String, locator: ReadiumShared.Locator, selectedText: String)
12
+ }
13
+
14
+ class EPUBViewController: ReaderViewController, SelectionActionHandlerDelegate {
15
+ private var selectionActionHandler: SelectionActionHandler?
16
+ weak var selectionActionDelegate: SelectionActionDelegate?
7
17
 
8
18
  init(
9
19
  publication: Publication,
10
- locator: Locator?,
11
- bookId: String
20
+ locator: ReadiumShared.Locator?,
21
+ bookId: String,
22
+ selectionActions: [SelectionActionData]? = nil
12
23
  ) throws {
24
+ // Convert typed selection actions directly to EditingActions (no JSON)
25
+ var editingActions: [EditingAction] = []
26
+ var actionIds: [String] = []
27
+
28
+ if let actions = selectionActions {
29
+ for action in actions {
30
+ actionIds.append(action.id)
31
+
32
+ let selectorName = "handleSelectionAction_\(action.id):"
33
+ let selector = NSSelectorFromString(selectorName)
34
+
35
+ editingActions.append(EditingAction(
36
+ title: action.label,
37
+ action: selector
38
+ ))
39
+ }
40
+ }
41
+
42
+ // Only use custom actions - don't add default iOS actions
43
+ // If no custom actions are provided, use defaults as fallback
44
+ if editingActions.isEmpty {
45
+ editingActions.append(contentsOf: EditingAction.defaultActions)
46
+ }
47
+
13
48
  let navigator = try EPUBNavigatorViewController(
14
49
  publication: publication,
15
50
  initialLocation: locator,
16
- httpServer: GCDHTTPServer.shared
51
+ config: EPUBNavigatorViewController.Configuration(
52
+ editingActions: editingActions
53
+ ),
54
+ httpServer: EPUBHTTPServer.shared
17
55
  )
18
56
 
19
57
  super.init(
@@ -22,6 +60,13 @@ class EPUBViewController: ReaderViewController {
22
60
  bookId: bookId
23
61
  )
24
62
 
63
+ // Set up the Objective-C handler for dynamic methods
64
+ if !actionIds.isEmpty {
65
+ let handler = SelectionActionHandler(actionIds: actionIds)
66
+ handler.delegate = self
67
+ selectionActionHandler = handler
68
+ }
69
+
25
70
  navigator.delegate = self
26
71
  }
27
72
 
@@ -29,6 +74,12 @@ class EPUBViewController: ReaderViewController {
29
74
  return navigator as! EPUBNavigatorViewController
30
75
  }
31
76
 
77
+ func updateSelectionActions(_ selectionActions: [SelectionActionData]?) {
78
+ // On iOS, selection actions must be set during navigator initialization
79
+ // Dynamic updates would require recreating the navigator, which we don't support yet
80
+ print("Warning: Updating selection actions after initialization is not supported on iOS")
81
+ }
82
+
32
83
  override func viewDidLoad() {
33
84
  super.viewDidLoad()
34
85
 
@@ -36,6 +87,36 @@ class EPUBViewController: ReaderViewController {
36
87
  setUIColor(for: epubNavigator.settings.theme)
37
88
  }
38
89
 
90
+ // Insert handler into the responder chain
91
+ override var next: UIResponder? {
92
+ if let handler = selectionActionHandler {
93
+ // Set the handler's next responder to continue the chain
94
+ handler.originalNextResponder = super.next
95
+ return handler
96
+ }
97
+ return super.next
98
+ }
99
+
100
+ // SelectionActionHandlerDelegate implementation
101
+ func handleSelectionAction(withId actionId: String) {
102
+ guard let navigator = navigator as? EPUBNavigatorViewController else {
103
+ return
104
+ }
105
+
106
+ guard let selection = navigator.currentSelection else {
107
+ return
108
+ }
109
+
110
+ selectionActionDelegate?.onSelectionAction(
111
+ actionId: actionId,
112
+ locator: selection.locator,
113
+ selectedText: selection.locator.text.highlight ?? ""
114
+ )
115
+
116
+ // Clear the selection
117
+ navigator.clearSelection()
118
+ }
119
+
39
120
  internal func setUIColor(for theme: Theme) {
40
121
  let colors = AssociatedColors.getColors(for: theme)
41
122
 
@@ -48,14 +129,6 @@ class EPUBViewController: ReaderViewController {
48
129
  navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: colors.textColor]
49
130
  }
50
131
 
51
- override var currentBookmark: Bookmark? {
52
- guard let locator = navigator.currentLocation else {
53
- return nil
54
- }
55
-
56
- return Bookmark(bookId: bookId, locator: locator)
57
- }
58
-
59
132
  }
60
133
 
61
134
  extension EPUBViewController: EPUBNavigatorDelegate {}
@@ -0,0 +1,25 @@
1
+ //
2
+ // SelectionActionHandler.h
3
+ // react-native-readium
4
+ //
5
+
6
+ #import <UIKit/UIKit.h>
7
+
8
+ NS_ASSUME_NONNULL_BEGIN
9
+
10
+ @protocol SelectionActionHandlerDelegate <NSObject>
11
+ - (void)handleSelectionActionWithId:(NSString *)actionId;
12
+ @end
13
+
14
+ /// Helper class to handle dynamic selection actions using Objective-C runtime
15
+ /// This needs to be a UIResponder to be part of the responder chain
16
+ @interface SelectionActionHandler : UIResponder
17
+
18
+ @property (nonatomic, weak) id<SelectionActionHandlerDelegate> delegate;
19
+ @property (nonatomic, strong, nullable) UIResponder *originalNextResponder;
20
+
21
+ - (instancetype)initWithActionIds:(NSArray<NSString *> *)actionIds;
22
+
23
+ @end
24
+
25
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,56 @@
1
+ //
2
+ // SelectionActionHandler.m
3
+ // react-native-readium
4
+ //
5
+
6
+ #import "SelectionActionHandler.h"
7
+ #import <objc/runtime.h>
8
+
9
+ @interface SelectionActionHandler ()
10
+ @property (nonatomic, strong) NSArray<NSString *> *actionIds;
11
+ @end
12
+
13
+ @implementation SelectionActionHandler
14
+
15
+ - (instancetype)initWithActionIds:(NSArray<NSString *> *)actionIds {
16
+ self = [super init];
17
+ if (self) {
18
+ _actionIds = actionIds;
19
+ [self setupDynamicMethods];
20
+ }
21
+ return self;
22
+ }
23
+
24
+ - (void)setupDynamicMethods {
25
+ Class class = [self class];
26
+
27
+ for (NSString *actionId in self.actionIds) {
28
+ NSString *selectorName = [NSString stringWithFormat:@"handleSelectionAction_%@:", actionId];
29
+ SEL selector = NSSelectorFromString(selectorName);
30
+
31
+ // Create the implementation
32
+ IMP implementation = imp_implementationWithBlock(^(id _self, id sender) {
33
+ SelectionActionHandler *handler = (SelectionActionHandler *)_self;
34
+ [handler.delegate handleSelectionActionWithId:actionId];
35
+ });
36
+
37
+ // Add the method to the class
38
+ // Method signature: void (id self, SEL _cmd, id sender)
39
+ class_addMethod(class, selector, implementation, "v@:@");
40
+ }
41
+ }
42
+
43
+ - (BOOL)respondsToSelector:(SEL)aSelector {
44
+ NSString *selectorString = NSStringFromSelector(aSelector);
45
+ if ([selectorString hasPrefix:@"handleSelectionAction_"]) {
46
+ return YES;
47
+ }
48
+ return [super respondsToSelector:aSelector];
49
+ }
50
+
51
+ - (UIResponder *)nextResponder {
52
+ // Return the original next responder to continue the chain
53
+ return self.originalNextResponder;
54
+ }
55
+
56
+ @end
@@ -1,7 +1,6 @@
1
1
  import Foundation
2
2
  import UIKit
3
- import R2Shared
4
-
3
+ import ReadiumShared
5
4
 
6
5
  /// A ReaderFormatModule is a sub-module of ReaderModule that handles publication of a given format (eg. EPUB, CBZ).
7
6
  protocol ReaderFormatModule {
@@ -14,8 +13,9 @@ protocol ReaderFormatModule {
14
13
  /// Creates the view controller to present the publication.
15
14
  func makeReaderViewController(
16
15
  for publication: Publication,
17
- locator: Locator?,
18
- bookId: String
16
+ locator: ReadiumShared.Locator?,
17
+ bookId: String,
18
+ selectionActions: [SelectionActionData]?
19
19
  ) throws -> ReaderViewController
20
20
 
21
21
  }
@@ -1,7 +1,6 @@
1
1
  import Foundation
2
2
  import UIKit
3
- import R2Shared
4
-
3
+ import ReadiumShared
5
4
 
6
5
  /// The ReaderModule handles the presentation of publications to be read by the user.
7
6
  /// It contains sub-modules implementing ReaderFormatModule to handle each format of publication (eg. CBZ, EPUB).
@@ -11,7 +10,8 @@ protocol ReaderModuleAPI {
11
10
  func getViewController(
12
11
  for publication: Publication,
13
12
  bookId: String,
14
- locator: Locator?
13
+ locator: ReadiumShared.Locator?,
14
+ selectionActions: [SelectionActionData]?
15
15
  ) -> ReaderViewController?
16
16
  }
17
17
 
@@ -43,7 +43,8 @@ final class ReaderModule: ReaderModuleAPI {
43
43
  func getViewController(
44
44
  for publication: Publication,
45
45
  bookId: String,
46
- locator: Locator?
46
+ locator: ReadiumShared.Locator?,
47
+ selectionActions: [SelectionActionData]?
47
48
  ) -> ReaderViewController? {
48
49
  guard let module = self.formatModules.first(
49
50
  where:{ $0.supports(publication) }
@@ -56,7 +57,8 @@ final class ReaderModule: ReaderModuleAPI {
56
57
  return try module.makeReaderViewController(
57
58
  for: publication,
58
59
  locator: locator,
59
- bookId: bookId
60
+ bookId: bookId,
61
+ selectionActions: selectionActions
60
62
  )
61
63
  } catch {
62
64
  print("An unexpected error occurred when attempting to build the reader view.")