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,249 @@
1
+ import {
2
+ type HybridView,
3
+ type HybridViewProps,
4
+ type HybridViewMethods,
5
+ } from 'react-native-nitro-modules';
6
+
7
+ // ── Locator ──────────────────────────────────────────────────────────────────
8
+
9
+ export interface LocatorLocations {
10
+ progression: number;
11
+ position?: number;
12
+ totalProgression?: number;
13
+ }
14
+
15
+ export interface LocatorText {
16
+ before?: string;
17
+ highlight?: string;
18
+ after?: string;
19
+ }
20
+
21
+ export interface Locator {
22
+ href: string;
23
+ type: string;
24
+ target?: number;
25
+ title?: string;
26
+ locations?: LocatorLocations;
27
+ text?: LocatorText;
28
+ }
29
+
30
+ // ── Link ─────────────────────────────────────────────────────────────────────
31
+
32
+ export interface Link {
33
+ href: string;
34
+ templated: boolean;
35
+ type?: string;
36
+ title?: string;
37
+ rels?: string[];
38
+ height?: number;
39
+ width?: number;
40
+ bitrate?: number;
41
+ duration?: number;
42
+ languages?: string[];
43
+ }
44
+
45
+ // ── Preferences ──────────────────────────────────────────────────────────────
46
+
47
+ export interface Preferences {
48
+ backgroundColor?: string;
49
+ columnCount?: string;
50
+ fontFamily?: string;
51
+ fontSize?: number;
52
+ fontWeight?: number;
53
+ hyphens?: boolean;
54
+ imageFilter?: string;
55
+ language?: string;
56
+ letterSpacing?: number;
57
+ ligatures?: boolean;
58
+ lineHeight?: number;
59
+ pageMargins?: number;
60
+ paragraphIndent?: number;
61
+ paragraphSpacing?: number;
62
+ publisherStyles?: boolean;
63
+ readingProgression?: string;
64
+ scroll?: boolean;
65
+ spread?: string;
66
+ textAlign?: string;
67
+ textColor?: string;
68
+ textNormalization?: boolean;
69
+ theme?: string;
70
+ typeScale?: number;
71
+ verticalText?: boolean;
72
+ wordSpacing?: number;
73
+ merging?: boolean;
74
+ }
75
+
76
+ // ── Decoration ───────────────────────────────────────────────────────────────
77
+
78
+ export interface DecorationStyle {
79
+ type: string;
80
+ tint?: string;
81
+ isActive?: boolean;
82
+ id?: string;
83
+ html?: string;
84
+ css?: string;
85
+ layout?: string;
86
+ width?: string;
87
+ }
88
+
89
+ export interface Decoration {
90
+ id: string;
91
+ locator: Locator;
92
+ style: DecorationStyle;
93
+ extras?: Record<string, string>;
94
+ }
95
+
96
+ export interface DecorationGroup {
97
+ name: string;
98
+ decorations: Decoration[];
99
+ }
100
+
101
+ // ── Rect / Point ─────────────────────────────────────────────────────────────
102
+
103
+ export interface Rect {
104
+ x: number;
105
+ y: number;
106
+ width: number;
107
+ height: number;
108
+ }
109
+
110
+ export interface Point {
111
+ x: number;
112
+ y: number;
113
+ }
114
+
115
+ // ── Selection ────────────────────────────────────────────────────────────────
116
+
117
+ export interface SelectionAction {
118
+ id: string;
119
+ label: string;
120
+ }
121
+
122
+ // ── Publication Metadata ─────────────────────────────────────────────────────
123
+
124
+ export interface Contributor {
125
+ name: string;
126
+ sortAs?: string;
127
+ identifier?: string;
128
+ role?: string;
129
+ position?: number;
130
+ }
131
+
132
+ export interface Subject {
133
+ name: string;
134
+ sortAs?: string;
135
+ code?: string;
136
+ scheme?: string;
137
+ }
138
+
139
+ export interface SeriesInfo {
140
+ name: string;
141
+ position?: number;
142
+ }
143
+
144
+ export interface BelongsTo {
145
+ series?: SeriesInfo[];
146
+ collection?: SeriesInfo[];
147
+ }
148
+
149
+ export interface AccessibilityCertification {
150
+ certifiedBy?: string;
151
+ credential?: string;
152
+ report?: string;
153
+ }
154
+
155
+ export interface Accessibility {
156
+ conformsTo?: string[];
157
+ certification?: AccessibilityCertification;
158
+ accessMode?: string[];
159
+ accessModeSufficient?: string[];
160
+ feature?: string[];
161
+ hazard?: string[];
162
+ summary?: string;
163
+ }
164
+
165
+ export interface PublicationMetadata {
166
+ title: string;
167
+ sortAs?: string;
168
+ subtitle?: string;
169
+ identifier?: string;
170
+ accessibility?: Accessibility;
171
+ modified?: string;
172
+ published?: string;
173
+ language?: string[];
174
+ author?: Contributor[];
175
+ translator?: Contributor[];
176
+ editor?: Contributor[];
177
+ artist?: Contributor[];
178
+ illustrator?: Contributor[];
179
+ letterer?: Contributor[];
180
+ penciler?: Contributor[];
181
+ colorist?: Contributor[];
182
+ inker?: Contributor[];
183
+ narrator?: Contributor[];
184
+ contributor?: Contributor[];
185
+ publisher?: Contributor[];
186
+ imprint?: Contributor[];
187
+ subject?: Subject[];
188
+ layout?: string;
189
+ readingProgression?: string;
190
+ description?: string;
191
+ duration?: number;
192
+ numberOfPages?: number;
193
+ belongsTo?: BelongsTo;
194
+ }
195
+
196
+ // ── Events ───────────────────────────────────────────────────────────────────
197
+
198
+ export interface PublicationReadyEvent {
199
+ tableOfContents: Link[];
200
+ positions: Locator[];
201
+ metadata: PublicationMetadata;
202
+ }
203
+
204
+ export interface DecorationActivatedEvent {
205
+ decoration: Decoration;
206
+ group: string;
207
+ rect?: Rect;
208
+ point?: Point;
209
+ }
210
+
211
+ export interface SelectionEvent {
212
+ locator?: Locator;
213
+ selectedText?: string;
214
+ }
215
+
216
+ export interface SelectionActionEvent {
217
+ locator: Locator;
218
+ selectedText: string;
219
+ actionId: string;
220
+ }
221
+
222
+ // ── File ─────────────────────────────────────────────────────────────────────
223
+
224
+ export interface ReadiumFile {
225
+ url: string;
226
+ initialLocation?: Locator;
227
+ }
228
+
229
+ // ── HybridView ───────────────────────────────────────────────────────────────
230
+
231
+ export interface ReadiumViewProps extends HybridViewProps {
232
+ file: ReadiumFile;
233
+ location?: Locator;
234
+ preferences?: Preferences;
235
+ decorations?: DecorationGroup[];
236
+ selectionActions?: SelectionAction[];
237
+ onLocationChange: (locator: Locator) => void;
238
+ onPublicationReady: (event: PublicationReadyEvent) => void;
239
+ onDecorationActivated: (event: DecorationActivatedEvent) => void;
240
+ onSelectionChange: (event: SelectionEvent) => void;
241
+ onSelectionAction: (event: SelectionActionEvent) => void;
242
+ }
243
+
244
+ export interface ReadiumViewMethods extends HybridViewMethods {
245
+ goForward(): void;
246
+ goBackward(): void;
247
+ }
248
+
249
+ export type ReadiumView = HybridView<ReadiumViewProps, ReadiumViewMethods>;
@@ -1,7 +1 @@
1
- export * from './clamp';
2
- export * from './COMPONENT_NAME';
3
- export * from './createFragment';
4
- export * from './getWidthOrHeightValue';
5
- export * from './indexOfObjectValue';
6
- export * from './LINKING_ERROR';
7
1
  export * from './RANGES';
@@ -1,3 +1,5 @@
1
- export * from './useReaderRef';
2
- export * from './useSettingsObserver';
1
+ export * from './useNavigator';
2
+ export * from './usePreferencesObserver';
3
3
  export * from './useLocationObserver';
4
+ export * from './usePositionLabel';
5
+ export * from './useDecorationsObserver';
@@ -0,0 +1,116 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import type { EpubNavigator } from '@readium/navigator';
3
+ import type {
4
+ DecorationGroups,
5
+ DecorationActivatedEvent,
6
+ } from '../../src/interfaces';
7
+ import { useDeepCompareEffect } from 'use-deep-compare';
8
+
9
+ /**
10
+ * Hook to observe and apply decorations to the navigator
11
+ */
12
+ export const useDecorationsObserver = (
13
+ navigator: EpubNavigator | null,
14
+ decorations: DecorationGroups | undefined,
15
+ onDecorationActivated?: (event: DecorationActivatedEvent) => void
16
+ ) => {
17
+ // Track which groups have had listeners attached
18
+ const activeGroupsRef = useRef<Set<string>>(new Set());
19
+
20
+ useDeepCompareEffect(() => {
21
+ if (!navigator || !decorations) {
22
+ return;
23
+ }
24
+
25
+ // Check if navigator supports decorations
26
+ // The web navigator (ts-toolkit) doesn't have decoration support yet
27
+ if (typeof (navigator as any).applyDecorations !== 'function') {
28
+ console.warn(
29
+ 'Web navigator does not support decorations API yet. Decorations will not be rendered.'
30
+ );
31
+ return;
32
+ }
33
+
34
+ // Apply decorations for each group
35
+ Object.entries(decorations).forEach(([group, decorationList]) => {
36
+ // Convert decoration data to navigator format
37
+ const navigatorDecorations = decorationList.map((decoration) => ({
38
+ id: decoration.id,
39
+ locator: decoration.locator,
40
+ style: convertStyle(decoration.style),
41
+ extras: decoration.extras,
42
+ }));
43
+
44
+ // Apply decorations to the group
45
+ (navigator as any).applyDecorations(navigatorDecorations, group);
46
+
47
+ // Set up listener for this group if not already active
48
+ if (!activeGroupsRef.current.has(group)) {
49
+ activeGroupsRef.current.add(group);
50
+
51
+ if (typeof (navigator as any).addDecorationListener === 'function') {
52
+ (navigator as any).addDecorationListener(group, (event: any) => {
53
+ if (onDecorationActivated) {
54
+ onDecorationActivated({
55
+ decoration: {
56
+ id: event.decoration.id,
57
+ locator: event.decoration.locator,
58
+ style: event.decoration.style,
59
+ extras: event.decoration.extras,
60
+ },
61
+ group: group,
62
+ rect: event.rect,
63
+ point: event.point,
64
+ });
65
+ }
66
+ });
67
+ }
68
+ }
69
+ });
70
+ }, [navigator, decorations, onDecorationActivated]);
71
+
72
+ // Clean up listeners when component unmounts
73
+ useEffect(() => {
74
+ return () => {
75
+ if (navigator) {
76
+ activeGroupsRef.current.forEach((group) => {
77
+ // Remove decoration listener for each group
78
+ // Note: This depends on navigator API having a removeDecorationListener method
79
+ // If not available, listeners will be cleaned up when navigator is destroyed
80
+ });
81
+ activeGroupsRef.current.clear();
82
+ }
83
+ };
84
+ }, [navigator]);
85
+ };
86
+
87
+ /**
88
+ * Convert decoration style from TypeScript interface to navigator format
89
+ */
90
+ function convertStyle(style: any): any {
91
+ switch (style.type) {
92
+ case 'highlight':
93
+ return {
94
+ type: 'highlight',
95
+ tint: style.tint,
96
+ isActive: style.isActive ?? false,
97
+ };
98
+ case 'underline':
99
+ return {
100
+ type: 'underline',
101
+ tint: style.tint,
102
+ isActive: style.isActive ?? false,
103
+ };
104
+ case 'custom':
105
+ return {
106
+ type: 'custom',
107
+ id: style.id,
108
+ html: style.html,
109
+ css: style.css,
110
+ layout: style.layout ?? 'bounds',
111
+ width: style.width ?? 'wrap',
112
+ };
113
+ default:
114
+ return style;
115
+ }
116
+ }
@@ -1,21 +1,34 @@
1
+ import { useRef } from 'react';
1
2
  import { useDeepCompareEffect } from 'use-deep-compare';
3
+ import { EpubNavigator } from '@readium/navigator';
2
4
 
3
5
  import type { Link, Locator } from '../../src/interfaces';
4
6
 
5
7
  export const useLocationObserver = (
6
- reader?: D2Reader | null,
8
+ navigator?: EpubNavigator | null,
7
9
  location?: Link | Locator | null
8
10
  ) => {
11
+ const lastHrefRef = useRef<string | null>(null);
12
+
9
13
  useDeepCompareEffect(() => {
10
- if (reader && location) {
11
- // NOTE: technically this is a Link | Locator. However, under the hood the
12
- // R2D2BC is converting Links to locators, so just force the type here.
13
- reader.goTo(location as R2Locator);
14
+ // Only navigate if we have a navigator, a location, and the href has changed.
15
+ // Skip navigation if location.locations exists with progression and totalProgression
16
+ // (it's from the navigator's positionChanged callback)
17
+ const hasFullLocationData =
18
+ 'locations' in (location ?? {}) &&
19
+ (location as Locator).locations?.progression !== undefined &&
20
+ (location as Locator).locations?.totalProgression !== undefined;
21
+
22
+ if (
23
+ navigator &&
24
+ location &&
25
+ location.href !== lastHrefRef.current &&
26
+ !hasFullLocationData
27
+ ) {
28
+ lastHrefRef.current = location.href;
29
+ // For Link objects (from TOC), we can pass them directly
30
+ // @ts-ignore
31
+ navigator.go(location, true, () => {});
14
32
  }
15
- }, [
16
- location?.href,
17
- //@ts-ignore
18
- location?.locations,
19
- !!reader,
20
- ]);
33
+ }, [location?.href, !!navigator]);
21
34
  };
@@ -0,0 +1,152 @@
1
+ import { useCallback, useEffect, useRef, useState } from 'react';
2
+
3
+ import { EpubNavigator } from '@readium/navigator';
4
+ import { Locator, Publication } from '@readium/shared';
5
+
6
+ import type { ReadiumProps } from '../../src/components/ReadiumView';
7
+ import { normalizeMetadata } from '../utils/metadataNormalizer';
8
+ import { fetchManifest } from '../utils/manifestFetcher';
9
+ import { createNavigatorListeners } from '../utils/navigatorListeners';
10
+ import {
11
+ normalizePublicationURL,
12
+ createPositions,
13
+ extractTableOfContents,
14
+ } from '../utils/publicationUtils';
15
+ import { convertToNavigatorLocator } from '../utils/locationNormalizer';
16
+
17
+ interface RefProps
18
+ extends Pick<
19
+ ReadiumProps,
20
+ 'file' | 'onLocationChange' | 'onPublicationReady'
21
+ > {
22
+ container: HTMLElement | null;
23
+ onPositionChange?: (position: number | null) => void;
24
+ }
25
+
26
+ export const useNavigator = ({
27
+ file,
28
+ onLocationChange,
29
+ onPublicationReady,
30
+ container,
31
+ onPositionChange,
32
+ }: RefProps) => {
33
+ const [navigator, setNavigator] = useState<EpubNavigator | null>(null);
34
+ const [positions, setPositions] = useState<Locator[]>([]);
35
+ const readingOrder = useRef<Locator[]>([]);
36
+
37
+ const onLocationChangeWithTotalProgression = useCallback(
38
+ (newLocation: Locator) => {
39
+ if (
40
+ !onLocationChange ||
41
+ !readingOrder.current ||
42
+ !newLocation.locations
43
+ ) {
44
+ return;
45
+ }
46
+
47
+ let totalProgression = newLocation.locations.totalProgression;
48
+
49
+ if (!totalProgression) {
50
+ const newLocationIndex = readingOrder.current.findIndex(
51
+ (entry) => entry.href === newLocation.href
52
+ );
53
+ if (newLocationIndex < 0 || !readingOrder.current[newLocationIndex]) {
54
+ return;
55
+ }
56
+ const readingOrderCount = readingOrder.current.length;
57
+ const chapterTotalProgression =
58
+ readingOrder.current[newLocationIndex].locations?.totalProgression ||
59
+ 0;
60
+
61
+ const newLocationProgression = newLocation.locations.progression || 0;
62
+ const intraChapterTotalProgression =
63
+ newLocationProgression / readingOrderCount;
64
+ totalProgression =
65
+ chapterTotalProgression + intraChapterTotalProgression;
66
+ }
67
+
68
+ // Create a new location object with the calculated totalProgression
69
+ const updatedLocation = {
70
+ ...newLocation,
71
+ locations: {
72
+ ...newLocation.locations,
73
+ progression: newLocation.locations.progression || 0,
74
+ totalProgression,
75
+ },
76
+ };
77
+
78
+ // @ts-ignore - Type compatibility between Readium Locator and our Locator interface
79
+ onLocationChange(updatedLocation);
80
+ },
81
+ [onLocationChange]
82
+ );
83
+
84
+ useEffect(() => {
85
+ async function initializeNavigator() {
86
+ if (!container) return;
87
+
88
+ // 1. Normalize the publication URL
89
+ const publicationURL = normalizePublicationURL(file.url);
90
+
91
+ // 2. Fetch and deserialize the manifest
92
+ const { manifest, fetcher } = await fetchManifest(publicationURL);
93
+
94
+ // 3. Create the publication
95
+ const publication = new Publication({ manifest, fetcher });
96
+
97
+ // 4. Create positions array for navigation
98
+ const positionsArray = createPositions(publication);
99
+ readingOrder.current = positionsArray;
100
+ setPositions(positionsArray);
101
+
102
+ // 5. Create navigator listeners
103
+ const listeners = createNavigatorListeners(
104
+ onLocationChangeWithTotalProgression,
105
+ onPositionChange
106
+ );
107
+
108
+ // 6. Process initial location
109
+ const initialPosition = file.initialLocation
110
+ ? convertToNavigatorLocator(file.initialLocation)
111
+ : undefined;
112
+
113
+ // 7. Initialize and load the navigator
114
+ const configuration = {
115
+ preferences: { scroll: false },
116
+ defaults: {},
117
+ };
118
+
119
+ const nav = new EpubNavigator(
120
+ container,
121
+ publication,
122
+ listeners,
123
+ positionsArray,
124
+ initialPosition, // Pass the initial position
125
+ configuration as any
126
+ );
127
+ await nav.load();
128
+
129
+ // 8. Emit onPublicationReady event
130
+ if (onPublicationReady) {
131
+ const tocItems = extractTableOfContents(manifest);
132
+ const metadata = normalizeMetadata(manifest.metadata);
133
+
134
+ // @ts-ignore - Type compatibility between Readium types and our interfaces
135
+ onPublicationReady({
136
+ // @ts-ignore
137
+ tableOfContents: tocItems,
138
+ // @ts-ignore
139
+ positions: positionsArray,
140
+ metadata: metadata,
141
+ });
142
+ }
143
+
144
+ setNavigator(nav);
145
+ }
146
+
147
+ initializeNavigator();
148
+ // eslint-disable-next-line react-hooks/exhaustive-deps
149
+ }, [file.url, container]);
150
+
151
+ return { navigator, positions };
152
+ };
@@ -0,0 +1,51 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { EpubNavigator } from '@readium/navigator';
3
+ import type { Locator } from '../../src/interfaces';
4
+
5
+ interface PositionLabelData {
6
+ currentPosition: number | null;
7
+ totalPositions: number;
8
+ label: string | null;
9
+ }
10
+
11
+ export const usePositionLabel = (
12
+ navigator: EpubNavigator | null,
13
+ positionsArray: Locator[]
14
+ ): PositionLabelData => {
15
+ const [currentPosition, setCurrentPosition] = useState<number | null>(null);
16
+ const [totalPositions, setTotalPositions] = useState<number>(0);
17
+
18
+ // Update total positions when positions array changes
19
+ useEffect(() => {
20
+ if (positionsArray && positionsArray.length > 0) {
21
+ setTotalPositions(positionsArray.length);
22
+ }
23
+ }, [positionsArray]);
24
+
25
+ // Listen to navigator position changes
26
+ useEffect(() => {
27
+ if (!navigator) return;
28
+
29
+ // Get initial position if available
30
+ const initialPosition = (navigator as any).currentLocation?.locations
31
+ ?.position;
32
+ if (initialPosition) {
33
+ setCurrentPosition(initialPosition);
34
+ }
35
+
36
+ // Note: The positionChanged listener is already set up in useNavigator
37
+ // We'll need to expose position updates through a callback
38
+ }, [navigator]);
39
+
40
+ // Generate label text
41
+ const label =
42
+ currentPosition && totalPositions > 0
43
+ ? `${currentPosition} / ${totalPositions}`
44
+ : null;
45
+
46
+ return {
47
+ currentPosition,
48
+ totalPositions,
49
+ label,
50
+ };
51
+ };
@@ -0,0 +1,69 @@
1
+ import { useDeepCompareEffect } from 'use-deep-compare';
2
+
3
+ import { EpubNavigator, EpubPreferences } from '@readium/navigator';
4
+
5
+ /**
6
+ * Theme color mappings
7
+ */
8
+ const THEME_COLORS = {
9
+ light: {
10
+ backgroundColor: '#ffffff',
11
+ textColor: '#000000',
12
+ },
13
+ dark: {
14
+ backgroundColor: '#000000',
15
+ textColor: '#ffffff',
16
+ },
17
+ sepia: {
18
+ backgroundColor: '#f4ecd8',
19
+ textColor: '#5f4b32',
20
+ },
21
+ };
22
+
23
+ // Base value for scaling pageMargins multiplier to pixels
24
+ // Matches Readium's default pageGutter of 20px
25
+ const PAGE_GUTTER_BASE = 20;
26
+
27
+ /**
28
+ * Maps our app's preferences to the navigator's expected format
29
+ */
30
+ function mapPreferencesToNavigator(preferences: any): EpubPreferences {
31
+ const mapped: any = { ...preferences };
32
+
33
+ // Map pageMargins to pageGutter (the navigator uses pageGutter, not pageMargins)
34
+ // Our app uses a multiplier (0.5-4.0), but Readium expects pixel values
35
+ // Scale the multiplier to pixels: multiplier * base (e.g., 1.0 * 20 = 20px)
36
+ if (preferences.pageMargins !== undefined) {
37
+ mapped.pageGutter = preferences.pageMargins * PAGE_GUTTER_BASE;
38
+ delete mapped.pageMargins;
39
+ }
40
+
41
+ // Convert theme to backgroundColor and textColor
42
+ // Only apply if backgroundColor/textColor aren't explicitly set
43
+ if (
44
+ preferences.theme &&
45
+ !preferences.backgroundColor &&
46
+ !preferences.textColor
47
+ ) {
48
+ const themeColors =
49
+ THEME_COLORS[preferences.theme as keyof typeof THEME_COLORS];
50
+ if (themeColors) {
51
+ mapped.backgroundColor = themeColors.backgroundColor;
52
+ mapped.textColor = themeColors.textColor;
53
+ }
54
+ }
55
+
56
+ return mapped as EpubPreferences;
57
+ }
58
+
59
+ export const usePreferencesObserver = (
60
+ navigator?: EpubNavigator | null,
61
+ preferences?: any
62
+ ) => {
63
+ useDeepCompareEffect(() => {
64
+ if (navigator && preferences) {
65
+ const mappedPreferences = mapPreferencesToNavigator(preferences);
66
+ navigator?.submitPreferences(mappedPreferences);
67
+ }
68
+ }, [preferences, !!navigator]);
69
+ };