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.
- package/README.md +227 -31
- package/android/.cxx/Debug/1o6u5d69/arm64-v8a/metadata_generation_command.txt +20 -0
- package/android/.cxx/Debug/1o6u5d69/arm64-v8a/prefab_config.json +9 -0
- package/android/.cxx/Debug/1o6u5d69/hash_key.txt +27 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/cache-v2-d1c3348b32c30ac6a032.json +1383 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-556430fba24741f19697.json +207 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-1ced52b45c1052bc37ec.json +60 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/index-2026-02-11T21-48-38-0164.json +92 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/.cmake/api/v1/reply/target-NitroReadium-Debug-1a98e1c85aa4f0067ac7.json +310 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/.ninja_deps +0 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/.ninja_log +16 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeCache.txt +413 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/CMakeOutput.log +262 -0
- 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
- 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
- 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
- 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
- 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
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/NitroReadium.dir/src/main/cpp/cpp-adapter.cpp.o +0 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/TargetDirectories.txt +3 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/CMakeFiles/rules.ninja +64 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/additional_project_files.txt +0 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/android_gradle_build.json +48 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/android_gradle_build_mini.json +37 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/build.ninja +193 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/build_file_index.txt +6 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/cmake_install.cmake +54 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/compile_commands.json +32 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/compile_commands.json.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/configure_fingerprint.bin +41 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/metadata_generation_command.txt +21 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/prefab_config.json +9 -0
- package/android/.cxx/Debug/705z3vy2/arm64-v8a/symbol_folder_index.txt +1 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/cache-v2-029ee0d18a16b9900504.json +1383 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-0ec9478532515d6deeb0.json +207 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-00f0c7708253709bbb50.json +60 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/index-2026-02-11T21-48-44-0722.json +92 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.cmake/api/v1/reply/target-NitroReadium-Debug-a00931bf570afa83f011.json +310 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.ninja_deps +0 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/.ninja_log +16 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeCache.txt +413 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/CMakeOutput.log +266 -0
- 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
- 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
- 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
- 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
- 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
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/NitroReadium.dir/src/main/cpp/cpp-adapter.cpp.o +0 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/TargetDirectories.txt +3 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/CMakeFiles/rules.ninja +64 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/additional_project_files.txt +0 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/android_gradle_build.json +48 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/android_gradle_build_mini.json +37 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/build.ninja +193 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/build_file_index.txt +6 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/cmake_install.cmake +54 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/compile_commands.json +32 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/compile_commands.json.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/configure_fingerprint.bin +41 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/metadata_generation_command.txt +21 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/prefab_config.json +9 -0
- package/android/.cxx/Debug/705z3vy2/armeabi-v7a/symbol_folder_index.txt +1 -0
- package/android/.cxx/Debug/705z3vy2/hash_key.txt +28 -0
- package/android/.cxx/Debug/705z3vy2/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/ReactAndroid/ReactAndroidConfig.cmake +27 -0
- package/android/.cxx/Debug/705z3vy2/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/ReactAndroid/ReactAndroidConfigVersion.cmake +9 -0
- package/android/.cxx/Debug/705z3vy2/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/fbjni/fbjniConfig.cmake +9 -0
- package/android/.cxx/Debug/705z3vy2/prefab/arm64-v8a/prefab/lib/aarch64-linux-android/cmake/fbjni/fbjniConfigVersion.cmake +9 -0
- 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
- package/android/.cxx/Debug/705z3vy2/prefab/armeabi-v7a/prefab/lib/arm-linux-androideabi/cmake/ReactAndroid/ReactAndroidConfig.cmake +27 -0
- package/android/.cxx/Debug/705z3vy2/prefab/armeabi-v7a/prefab/lib/arm-linux-androideabi/cmake/ReactAndroid/ReactAndroidConfigVersion.cmake +9 -0
- package/android/.cxx/Debug/705z3vy2/prefab/armeabi-v7a/prefab/lib/arm-linux-androideabi/cmake/fbjni/fbjniConfig.cmake +9 -0
- package/android/.cxx/Debug/705z3vy2/prefab/armeabi-v7a/prefab/lib/arm-linux-androideabi/cmake/fbjni/fbjniConfigVersion.cmake +9 -0
- 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
- package/android/.cxx/Debug/705z3vy2/prefab/x86/prefab/lib/i686-linux-android/cmake/ReactAndroid/ReactAndroidConfig.cmake +27 -0
- package/android/.cxx/Debug/705z3vy2/prefab/x86/prefab/lib/i686-linux-android/cmake/ReactAndroid/ReactAndroidConfigVersion.cmake +9 -0
- package/android/.cxx/Debug/705z3vy2/prefab/x86/prefab/lib/i686-linux-android/cmake/fbjni/fbjniConfig.cmake +9 -0
- package/android/.cxx/Debug/705z3vy2/prefab/x86/prefab/lib/i686-linux-android/cmake/fbjni/fbjniConfigVersion.cmake +9 -0
- package/android/.cxx/Debug/705z3vy2/prefab/x86/prefab/lib/i686-linux-android/cmake/react-native-nitro-modules/react-native-nitro-modulesConfig.cmake +9 -0
- package/android/.cxx/Debug/705z3vy2/prefab/x86_64/prefab/lib/x86_64-linux-android/cmake/ReactAndroid/ReactAndroidConfig.cmake +27 -0
- package/android/.cxx/Debug/705z3vy2/prefab/x86_64/prefab/lib/x86_64-linux-android/cmake/ReactAndroid/ReactAndroidConfigVersion.cmake +9 -0
- package/android/.cxx/Debug/705z3vy2/prefab/x86_64/prefab/lib/x86_64-linux-android/cmake/fbjni/fbjniConfig.cmake +9 -0
- package/android/.cxx/Debug/705z3vy2/prefab/x86_64/prefab/lib/x86_64-linux-android/cmake/fbjni/fbjniConfigVersion.cmake +9 -0
- 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
- package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/cache-v2-a4f471a31e824ae32ba5.json +1383 -0
- package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/cmakeFiles-v1-f73d504308ce3a4e5765.json +207 -0
- package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/codemodel-v2-00f85d43d057b2ba79db.json +60 -0
- package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
- package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/index-2026-02-11T21-48-50-0628.json +92 -0
- package/android/.cxx/Debug/705z3vy2/x86/.cmake/api/v1/reply/target-NitroReadium-Debug-98c8a7d46de91d0d2e7e.json +310 -0
- package/android/.cxx/Debug/705z3vy2/x86/.ninja_deps +0 -0
- package/android/.cxx/Debug/705z3vy2/x86/.ninja_log +16 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeCache.txt +413 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/CMakeOutput.log +256 -0
- 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
- 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
- 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
- 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
- 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
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/NitroReadium.dir/src/main/cpp/cpp-adapter.cpp.o +0 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/TargetDirectories.txt +3 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/Debug/705z3vy2/x86/CMakeFiles/rules.ninja +64 -0
- package/android/.cxx/Debug/705z3vy2/x86/additional_project_files.txt +0 -0
- package/android/.cxx/Debug/705z3vy2/x86/android_gradle_build.json +48 -0
- package/android/.cxx/Debug/705z3vy2/x86/android_gradle_build_mini.json +37 -0
- package/android/.cxx/Debug/705z3vy2/x86/build.ninja +193 -0
- package/android/.cxx/Debug/705z3vy2/x86/build_file_index.txt +6 -0
- package/android/.cxx/Debug/705z3vy2/x86/cmake_install.cmake +54 -0
- package/android/.cxx/Debug/705z3vy2/x86/compile_commands.json +32 -0
- package/android/.cxx/Debug/705z3vy2/x86/compile_commands.json.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/x86/configure_fingerprint.bin +41 -0
- package/android/.cxx/Debug/705z3vy2/x86/metadata_generation_command.txt +21 -0
- package/android/.cxx/Debug/705z3vy2/x86/prefab_config.json +9 -0
- package/android/.cxx/Debug/705z3vy2/x86/symbol_folder_index.txt +1 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/cache-v2-691c4c7ce8ee23d9eb36.json +1383 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-5d2071095d60cec89732.json +207 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/codemodel-v2-141850c8d8ba3993f9ba.json +60 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +14 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/index-2026-02-11T21-48-56-0488.json +92 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/.cmake/api/v1/reply/target-NitroReadium-Debug-fc544bc0688ecafa85a0.json +310 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/.ninja_deps +0 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/.ninja_log +16 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeCache.txt +413 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeCCompiler.cmake +72 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeCXXCompiler.cmake +83 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_C.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeDetermineCompilerABI_CXX.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CMakeSystem.cmake +15 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.c +803 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.cpp +791 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/3.22.1-g37088a8/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/CMakeOutput.log +256 -0
- 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
- 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
- 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
- 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
- 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
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/NitroReadium.dir/src/main/cpp/cpp-adapter.cpp.o +0 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/TargetDirectories.txt +3 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/cmake.check_cache +1 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/CMakeFiles/rules.ninja +64 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/additional_project_files.txt +0 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/android_gradle_build.json +48 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/android_gradle_build_mini.json +37 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/build.ninja +193 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/build_file_index.txt +6 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/cmake_install.cmake +54 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/compile_commands.json +32 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/compile_commands.json.bin +0 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/configure_fingerprint.bin +41 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/metadata_generation_command.txt +21 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/prefab_config.json +9 -0
- package/android/.cxx/Debug/705z3vy2/x86_64/symbol_folder_index.txt +1 -0
- package/android/.cxx/tools/debug/arm64-v8a/compile_commands.json +32 -0
- package/android/.cxx/tools/debug/armeabi-v7a/compile_commands.json +32 -0
- package/android/.cxx/tools/debug/x86/compile_commands.json +32 -0
- package/android/.cxx/tools/debug/x86_64/compile_commands.json +32 -0
- package/android/CMakeLists.txt +12 -0
- package/android/build.gradle +55 -30
- package/android/gradle.properties +3 -3
- package/android/src/main/cpp/cpp-adapter.cpp +6 -0
- package/android/src/main/java/com/reactnativereadium/HybridReadiumView.kt +593 -0
- package/android/src/main/java/com/reactnativereadium/ReadiumPackage.kt +9 -2
- package/android/src/main/java/com/reactnativereadium/reader/BaseReaderFragment.kt +214 -6
- package/android/src/main/java/com/reactnativereadium/reader/EpubReaderFragment.kt +143 -70
- package/android/src/main/java/com/reactnativereadium/reader/PositionLabelManager.kt +132 -0
- package/android/src/main/java/com/reactnativereadium/reader/ReaderService.kt +64 -65
- package/android/src/main/java/com/reactnativereadium/reader/ReaderViewModel.kt +23 -84
- package/android/src/main/java/com/reactnativereadium/reader/VisualReaderFragment.kt +32 -2
- package/android/src/main/java/com/reactnativereadium/utils/DecorationSerializer.kt +175 -0
- package/android/src/main/java/com/reactnativereadium/utils/EventChannel.kt +0 -9
- package/android/src/main/java/com/reactnativereadium/utils/FragmentFactory.kt +2 -3
- package/android/src/main/java/com/reactnativereadium/utils/JsonExtensions.kt +61 -0
- package/android/src/main/java/com/reactnativereadium/utils/LocationNormalizer.kt +47 -0
- package/android/src/main/java/com/reactnativereadium/utils/MetadataNormalizer.kt +183 -0
- package/android/src/main/java/com/reactnativereadium/utils/NormalizedMetadata.kt +179 -0
- package/android/src/main/java/com/reactnativereadium/utils/extensions/InputStream.kt +0 -9
- package/ios/App/AppModule.swift +3 -9
- package/ios/Common/Toolkit/Extensions/{Locator.swift → Locator+Codable.swift} +2 -2
- package/ios/DecorationData.swift +316 -0
- package/ios/HybridReadiumView.swift +498 -0
- package/ios/Reader/Common/ReaderViewController.swift +121 -53
- package/ios/Reader/EPUB/AssociatedColors.swift +1 -1
- package/ios/Reader/EPUB/EPUBHTTPServer.swift +13 -0
- package/ios/Reader/EPUB/EPUBModule.swift +6 -5
- package/ios/Reader/EPUB/EPUBViewController.swift +88 -15
- package/ios/Reader/EPUB/SelectionActionHandler.h +25 -0
- package/ios/Reader/EPUB/SelectionActionHandler.m +56 -0
- package/ios/Reader/ReaderFormatModule.swift +4 -4
- package/ios/Reader/ReaderModule.swift +7 -5
- package/ios/Reader/ReaderService.swift +75 -67
- package/lib/nitrogen/generated/shared/json/ReadiumViewConfig.json +19 -0
- package/lib/src/components/NitroReadiumView.d.ts +2 -0
- package/lib/src/components/NitroReadiumView.js +3 -0
- package/lib/src/components/ReadiumView.d.ts +3 -5
- package/lib/src/components/ReadiumView.js +15 -40
- package/lib/src/components/ReadiumView.types.d.ts +18 -0
- package/lib/src/components/ReadiumView.web.d.ts +12 -5
- package/lib/src/components/ReadiumView.web.js +112 -21
- package/lib/src/index.d.ts +0 -1
- package/lib/src/index.js +0 -1
- package/lib/src/interfaces/Decoration.d.ts +8 -0
- package/lib/src/interfaces/Decoration.js +1 -0
- package/lib/src/interfaces/File.d.ts +5 -12
- package/lib/src/interfaces/Link.d.ts +3 -13
- package/lib/src/interfaces/Locator.d.ts +1 -14
- package/lib/src/interfaces/Preferences.d.ts +5 -19
- package/lib/src/interfaces/PublicationMetadata.d.ts +13 -0
- package/lib/src/interfaces/PublicationMetadata.js +1 -0
- package/lib/src/interfaces/PublicationReady.d.ts +1 -0
- package/lib/src/interfaces/PublicationReady.js +1 -0
- package/lib/src/interfaces/Selection.d.ts +1 -0
- package/lib/src/interfaces/Selection.js +1 -0
- package/lib/src/interfaces/SelectionAction.d.ts +1 -0
- package/lib/src/interfaces/SelectionAction.js +1 -0
- package/lib/src/interfaces/index.d.ts +6 -1
- package/lib/src/interfaces/index.js +5 -1
- package/lib/src/specs/ReadiumView.nitro.d.ts +199 -0
- package/lib/src/specs/ReadiumView.nitro.js +1 -0
- package/lib/src/utils/index.d.ts +0 -6
- package/lib/src/utils/index.js +0 -6
- package/lib/web/hooks/index.d.ts +4 -2
- package/lib/web/hooks/index.js +4 -2
- package/lib/web/hooks/useDecorationsObserver.d.ts +6 -0
- package/lib/web/hooks/useDecorationsObserver.js +96 -0
- package/lib/web/hooks/useLocationObserver.d.ts +2 -1
- package/lib/web/hooks/useLocationObserver.js +18 -11
- package/lib/web/hooks/useNavigator.d.ts +12 -0
- package/lib/web/hooks/useNavigator.js +92 -0
- package/lib/web/hooks/usePositionLabel.d.ts +9 -0
- package/lib/web/hooks/usePositionLabel.js +33 -0
- package/lib/web/hooks/usePreferencesObserver.d.ts +2 -0
- package/lib/web/hooks/usePreferencesObserver.js +54 -0
- package/lib/web/utils/locationNormalizer.d.ts +28 -0
- package/lib/web/utils/locationNormalizer.js +49 -0
- package/lib/web/utils/manifestFetcher.d.ts +8 -0
- package/lib/web/utils/manifestFetcher.js +28 -0
- package/lib/web/utils/manifestNormalizer.d.ts +8 -0
- package/lib/web/utils/manifestNormalizer.js +70 -0
- package/lib/web/utils/metadataNormalizer.d.ts +53 -0
- package/lib/web/utils/metadataNormalizer.js +220 -0
- package/lib/web/utils/navigatorListeners.d.ts +6 -0
- package/lib/web/utils/navigatorListeners.js +50 -0
- package/lib/web/utils/publicationUtils.d.ts +15 -0
- package/lib/web/utils/publicationUtils.js +39 -0
- package/nitro.json +16 -0
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/android/NitroReadium+autolinking.cmake +83 -0
- package/nitrogen/generated/android/NitroReadium+autolinking.gradle +27 -0
- package/nitrogen/generated/android/NitroReadiumOnLoad.cpp +56 -0
- package/nitrogen/generated/android/NitroReadiumOnLoad.hpp +25 -0
- package/nitrogen/generated/android/c++/JAccessibility.hpp +175 -0
- package/nitrogen/generated/android/c++/JAccessibilityCertification.hpp +66 -0
- package/nitrogen/generated/android/c++/JBelongsTo.hpp +101 -0
- package/nitrogen/generated/android/c++/JContributor.hpp +74 -0
- package/nitrogen/generated/android/c++/JDecoration.hpp +92 -0
- package/nitrogen/generated/android/c++/JDecorationActivatedEvent.hpp +85 -0
- package/nitrogen/generated/android/c++/JDecorationGroup.hpp +92 -0
- package/nitrogen/generated/android/c++/JDecorationStyle.hpp +86 -0
- package/nitrogen/generated/android/c++/JFunc_void_DecorationActivatedEvent.hpp +94 -0
- package/nitrogen/generated/android/c++/JFunc_void_Locator.hpp +83 -0
- package/nitrogen/generated/android/c++/JFunc_void_PublicationReadyEvent.hpp +102 -0
- package/nitrogen/generated/android/c++/JFunc_void_SelectionActionEvent.hpp +85 -0
- package/nitrogen/generated/android/c++/JFunc_void_SelectionEvent.hpp +85 -0
- package/nitrogen/generated/android/c++/JHybridReadiumViewSpec.cpp +328 -0
- package/nitrogen/generated/android/c++/JHybridReadiumViewSpec.hpp +86 -0
- package/nitrogen/generated/android/c++/JLink.hpp +131 -0
- package/nitrogen/generated/android/c++/JLocator.hpp +82 -0
- package/nitrogen/generated/android/c++/JLocatorLocations.hpp +65 -0
- package/nitrogen/generated/android/c++/JLocatorText.hpp +66 -0
- package/nitrogen/generated/android/c++/JPoint.hpp +61 -0
- package/nitrogen/generated/android/c++/JPreferences.hpp +158 -0
- package/nitrogen/generated/android/c++/JPublicationMetadata.hpp +449 -0
- package/nitrogen/generated/android/c++/JPublicationReadyEvent.hpp +125 -0
- package/nitrogen/generated/android/c++/JReadiumFile.hpp +68 -0
- package/nitrogen/generated/android/c++/JRect.hpp +69 -0
- package/nitrogen/generated/android/c++/JSelectionAction.hpp +61 -0
- package/nitrogen/generated/android/c++/JSelectionActionEvent.hpp +72 -0
- package/nitrogen/generated/android/c++/JSelectionEvent.hpp +68 -0
- package/nitrogen/generated/android/c++/JSeriesInfo.hpp +62 -0
- package/nitrogen/generated/android/c++/JSubject.hpp +70 -0
- package/nitrogen/generated/android/c++/views/JHybridReadiumViewStateUpdater.cpp +93 -0
- package/nitrogen/generated/android/c++/views/JHybridReadiumViewStateUpdater.hpp +49 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Accessibility.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/AccessibilityCertification.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/BelongsTo.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Contributor.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Decoration.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/DecorationActivatedEvent.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/DecorationGroup.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/DecorationStyle.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Func_void_DecorationActivatedEvent.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Func_void_Locator.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Func_void_PublicationReadyEvent.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Func_void_SelectionActionEvent.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Func_void_SelectionEvent.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/HybridReadiumViewSpec.kt +159 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Link.kt +65 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Locator.kt +53 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/LocatorLocations.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/LocatorText.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/NitroReadiumOnLoad.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Point.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Preferences.kt +113 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/PublicationMetadata.kt +119 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/PublicationReadyEvent.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/ReadiumFile.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Rect.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/SelectionAction.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/SelectionActionEvent.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/SelectionEvent.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/SeriesInfo.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/Subject.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/views/HybridReadiumViewManager.kt +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativereadium/views/HybridReadiumViewStateUpdater.kt +23 -0
- package/nitrogen/generated/ios/NitroReadium+autolinking.rb +60 -0
- package/nitrogen/generated/ios/NitroReadium-Swift-Cxx-Bridge.cpp +73 -0
- package/nitrogen/generated/ios/NitroReadium-Swift-Cxx-Bridge.hpp +641 -0
- package/nitrogen/generated/ios/NitroReadium-Swift-Cxx-Umbrella.hpp +117 -0
- package/nitrogen/generated/ios/NitroReadiumAutolinking.mm +33 -0
- package/nitrogen/generated/ios/NitroReadiumAutolinking.swift +26 -0
- package/nitrogen/generated/ios/c++/HybridReadiumViewSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridReadiumViewSpecSwift.hpp +226 -0
- package/nitrogen/generated/ios/c++/views/HybridReadiumViewComponent.mm +152 -0
- package/nitrogen/generated/ios/swift/Accessibility.swift +173 -0
- package/nitrogen/generated/ios/swift/AccessibilityCertification.swift +78 -0
- package/nitrogen/generated/ios/swift/BelongsTo.swift +72 -0
- package/nitrogen/generated/ios/swift/Contributor.swift +94 -0
- package/nitrogen/generated/ios/swift/Decoration.swift +71 -0
- package/nitrogen/generated/ios/swift/DecorationActivatedEvent.swift +56 -0
- package/nitrogen/generated/ios/swift/DecorationGroup.swift +40 -0
- package/nitrogen/generated/ios/swift/DecorationStyle.swift +155 -0
- package/nitrogen/generated/ios/swift/Func_void_DecorationActivatedEvent.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_Locator.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_PublicationReadyEvent.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_SelectionActionEvent.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_SelectionEvent.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridReadiumViewSpec.swift +65 -0
- package/nitrogen/generated/ios/swift/HybridReadiumViewSpec_cxx.swift +363 -0
- package/nitrogen/generated/ios/swift/Link.swift +162 -0
- package/nitrogen/generated/ios/swift/Locator.swift +85 -0
- package/nitrogen/generated/ios/swift/LocatorLocations.swift +51 -0
- package/nitrogen/generated/ios/swift/LocatorText.swift +78 -0
- package/nitrogen/generated/ios/swift/Point.swift +34 -0
- package/nitrogen/generated/ios/swift/Preferences.swift +429 -0
- package/nitrogen/generated/ios/swift/PublicationMetadata.swift +577 -0
- package/nitrogen/generated/ios/swift/PublicationReadyEvent.swift +51 -0
- package/nitrogen/generated/ios/swift/ReadiumFile.swift +40 -0
- package/nitrogen/generated/ios/swift/Rect.swift +44 -0
- package/nitrogen/generated/ios/swift/SelectionAction.swift +34 -0
- package/nitrogen/generated/ios/swift/SelectionActionEvent.swift +39 -0
- package/nitrogen/generated/ios/swift/SelectionEvent.swift +53 -0
- package/nitrogen/generated/ios/swift/SeriesInfo.swift +40 -0
- package/nitrogen/generated/ios/swift/Subject.swift +83 -0
- package/nitrogen/generated/shared/c++/Accessibility.hpp +111 -0
- package/nitrogen/generated/shared/c++/AccessibilityCertification.hpp +92 -0
- package/nitrogen/generated/shared/c++/BelongsTo.hpp +90 -0
- package/nitrogen/generated/shared/c++/Contributor.hpp +100 -0
- package/nitrogen/generated/shared/c++/Decoration.hpp +102 -0
- package/nitrogen/generated/shared/c++/DecorationActivatedEvent.hpp +104 -0
- package/nitrogen/generated/shared/c++/DecorationGroup.hpp +90 -0
- package/nitrogen/generated/shared/c++/DecorationStyle.hpp +112 -0
- package/nitrogen/generated/shared/c++/HybridReadiumViewSpec.cpp +42 -0
- package/nitrogen/generated/shared/c++/HybridReadiumViewSpec.hpp +110 -0
- package/nitrogen/generated/shared/c++/Link.hpp +121 -0
- package/nitrogen/generated/shared/c++/Locator.hpp +109 -0
- package/nitrogen/generated/shared/c++/LocatorLocations.hpp +91 -0
- package/nitrogen/generated/shared/c++/LocatorText.hpp +92 -0
- package/nitrogen/generated/shared/c++/Point.hpp +87 -0
- package/nitrogen/generated/shared/c++/Preferences.hpp +184 -0
- package/nitrogen/generated/shared/c++/PublicationMetadata.hpp +204 -0
- package/nitrogen/generated/shared/c++/PublicationReadyEvent.hpp +99 -0
- package/nitrogen/generated/shared/c++/ReadiumFile.hpp +90 -0
- package/nitrogen/generated/shared/c++/Rect.hpp +95 -0
- package/nitrogen/generated/shared/c++/SelectionAction.hpp +87 -0
- package/nitrogen/generated/shared/c++/SelectionActionEvent.hpp +93 -0
- package/nitrogen/generated/shared/c++/SelectionEvent.hpp +90 -0
- package/nitrogen/generated/shared/c++/SeriesInfo.hpp +88 -0
- package/nitrogen/generated/shared/c++/Subject.hpp +96 -0
- package/nitrogen/generated/shared/c++/views/HybridReadiumViewComponent.cpp +182 -0
- package/nitrogen/generated/shared/c++/views/HybridReadiumViewComponent.hpp +129 -0
- package/nitrogen/generated/shared/json/ReadiumViewConfig.json +19 -0
- package/package.json +48 -17
- package/react-native-readium.podspec +29 -8
- package/src/components/NitroReadiumView.tsx +9 -0
- package/src/components/ReadiumView.tsx +38 -68
- package/src/components/ReadiumView.types.ts +30 -0
- package/src/components/ReadiumView.web.tsx +149 -37
- package/src/index.tsx +0 -1
- package/src/interfaces/Decoration.ts +15 -0
- package/src/interfaces/File.ts +5 -13
- package/src/interfaces/Link.ts +4 -13
- package/src/interfaces/Locator.ts +5 -14
- package/src/interfaces/Preferences.ts +16 -19
- package/src/interfaces/PublicationMetadata.ts +23 -0
- package/src/interfaces/PublicationReady.ts +1 -0
- package/src/interfaces/Selection.ts +1 -0
- package/src/interfaces/SelectionAction.ts +4 -0
- package/src/interfaces/index.ts +6 -1
- package/src/specs/ReadiumView.nitro.ts +249 -0
- package/src/utils/index.ts +0 -6
- package/web/hooks/index.ts +4 -2
- package/web/hooks/useDecorationsObserver.ts +116 -0
- package/web/hooks/useLocationObserver.ts +24 -11
- package/web/hooks/useNavigator.ts +152 -0
- package/web/hooks/usePositionLabel.ts +51 -0
- package/web/hooks/usePreferencesObserver.ts +69 -0
- package/web/utils/locationNormalizer.ts +58 -0
- package/web/utils/manifestFetcher.ts +38 -0
- package/web/utils/manifestNormalizer.ts +74 -0
- package/web/utils/metadataNormalizer.ts +238 -0
- package/web/utils/navigatorListeners.ts +60 -0
- package/web/utils/publicationUtils.ts +47 -0
- package/android/src/main/java/com/reactnativereadium/ReadiumView.kt +0 -109
- package/android/src/main/java/com/reactnativereadium/ReadiumViewManager.kt +0 -149
- package/android/src/main/java/com/reactnativereadium/search/SearchFragment.kt +0 -100
- package/android/src/main/java/com/reactnativereadium/search/SearchPagingSource.kt +0 -44
- package/android/src/main/java/com/reactnativereadium/search/SearchResultAdapter.kt +0 -68
- package/android/src/main/java/com/reactnativereadium/utils/Dimensions.kt +0 -6
- package/android/src/main/java/com/reactnativereadium/utils/R2DispatcherActivity.kt +0 -45
- package/android/src/main/java/com/reactnativereadium/utils/SectionDecoration.kt +0 -98
- package/android/src/main/java/com/reactnativereadium/utils/SingleClickListener.kt +0 -32
- package/android/src/main/java/com/reactnativereadium/utils/extensions/Bitmap.kt +0 -23
- package/android/src/main/java/com/reactnativereadium/utils/extensions/Context.kt +0 -16
- package/android/src/main/java/com/reactnativereadium/utils/extensions/File.kt +0 -22
- package/android/src/main/java/com/reactnativereadium/utils/extensions/Link.kt +0 -6
- package/android/src/main/java/com/reactnativereadium/utils/extensions/Metadata.kt +0 -6
- package/android/src/main/java/com/reactnativereadium/utils/extensions/URL.kt +0 -29
- package/android/src/main/java/com/reactnativereadium/utils/extensions/Uri.kt +0 -17
- package/android/src/main/res/layout/fragment_search.xml +0 -39
- package/android/src/main/res/layout/item_recycle_search.xml +0 -14
- package/ios/Common/EPUBPreferences.swift +0 -8
- package/ios/Common/Paths.swift +0 -52
- package/ios/Common/Publication.swift +0 -15
- package/ios/Common/Toolkit/Extensions/HTTPClient.swift +0 -65
- package/ios/Common/Toolkit/Extensions/UIImage.swift +0 -12
- package/ios/Common/Toolkit/Extensions/UIViewController.swift +0 -19
- package/ios/Common/Toolkit/ScreenOrientation.swift +0 -13
- package/ios/Data/Bookmark.swift +0 -23
- package/ios/Readium-Bridging-Header.h +0 -2
- package/ios/ReadiumView.swift +0 -165
- package/ios/ReadiumViewManager.m +0 -11
- package/ios/ReadiumViewManager.swift +0 -9
- package/lib/src/components/BaseReadiumView.d.ts +0 -2
- package/lib/src/components/BaseReadiumView.js +0 -7
- package/lib/src/components/BaseReadiumView.web.d.ts +0 -1
- package/lib/src/components/BaseReadiumView.web.js +0 -1
- package/lib/src/enums/Appearance.d.ts +0 -11
- package/lib/src/enums/Appearance.js +0 -13
- package/lib/src/enums/ColumnCount.d.ts +0 -5
- package/lib/src/enums/ColumnCount.js +0 -7
- package/lib/src/enums/FontFamily.d.ts +0 -10
- package/lib/src/enums/FontFamily.js +0 -12
- package/lib/src/enums/TextAlignment.d.ts +0 -4
- package/lib/src/enums/TextAlignment.js +0 -6
- package/lib/src/enums/index.d.ts +0 -4
- package/lib/src/enums/index.js +0 -4
- package/lib/src/interfaces/BaseReadiumViewProps.d.ts +0 -15
- package/lib/src/utils/COMPONENT_NAME.d.ts +0 -1
- package/lib/src/utils/COMPONENT_NAME.js +0 -1
- package/lib/src/utils/LINKING_ERROR.d.ts +0 -1
- package/lib/src/utils/LINKING_ERROR.js +0 -5
- package/lib/src/utils/clamp.d.ts +0 -1
- package/lib/src/utils/clamp.js +0 -7
- package/lib/src/utils/createFragment.d.ts +0 -1
- package/lib/src/utils/createFragment.js +0 -10
- package/lib/src/utils/getWidthOrHeightValue.d.ts +0 -1
- package/lib/src/utils/getWidthOrHeightValue.js +0 -6
- package/lib/src/utils/indexOfObjectValue.d.ts +0 -1
- package/lib/src/utils/indexOfObjectValue.js +0 -3
- package/lib/web/hooks/useReaderRef.d.ts +0 -3
- package/lib/web/hooks/useReaderRef.js +0 -85
- package/lib/web/hooks/useSettingsObserver.d.ts +0 -2
- package/lib/web/hooks/useSettingsObserver.js +0 -44
- package/src/components/BaseReadiumView.tsx +0 -11
- package/src/components/BaseReadiumView.web.tsx +0 -1
- package/src/enums/Appearance.ts +0 -14
- package/src/enums/ColumnCount.ts +0 -6
- package/src/enums/FontFamily.ts +0 -11
- package/src/enums/TextAlignment.ts +0 -5
- package/src/enums/index.ts +0 -4
- package/src/interfaces/BaseReadiumViewProps.ts +0 -16
- package/src/utils/COMPONENT_NAME.ts +0 -1
- package/src/utils/LINKING_ERROR.ts +0 -7
- package/src/utils/clamp.ts +0 -5
- package/src/utils/createFragment.ts +0 -15
- package/src/utils/getWidthOrHeightValue.ts +0 -7
- package/src/utils/indexOfObjectValue.ts +0 -3
- package/web/hooks/useReaderRef.ts +0 -109
- package/web/hooks/useSettingsObserver.ts +0 -61
- /package/lib/src/{interfaces/BaseReadiumViewProps.js → components/ReadiumView.types.js} +0 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
package com.reactnativereadium.reader
|
|
2
|
+
|
|
3
|
+
import android.graphics.Color
|
|
4
|
+
import android.view.Gravity
|
|
5
|
+
import android.widget.FrameLayout
|
|
6
|
+
import android.widget.TextView
|
|
7
|
+
import kotlinx.coroutines.CoroutineScope
|
|
8
|
+
import kotlinx.coroutines.Job
|
|
9
|
+
import kotlinx.coroutines.launch
|
|
10
|
+
import org.readium.r2.shared.publication.Publication
|
|
11
|
+
import org.readium.r2.shared.publication.services.positions
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Manages the position label display for the reader.
|
|
15
|
+
* Similar to iOS PositionLabelManager, this class handles the display of current position
|
|
16
|
+
* and total position count in a TextView overlay.
|
|
17
|
+
*/
|
|
18
|
+
class PositionLabelManager(
|
|
19
|
+
private val containerView: FrameLayout,
|
|
20
|
+
private val publication: Publication,
|
|
21
|
+
private val lifecycleScope: CoroutineScope
|
|
22
|
+
) {
|
|
23
|
+
private val label: TextView = TextView(containerView.context)
|
|
24
|
+
private var positionsCount: Int? = null
|
|
25
|
+
private var positionsLoadingJob: Job? = null
|
|
26
|
+
private var lastKnownPosition: Int? = null
|
|
27
|
+
private var lastKnownProgression: Double? = null
|
|
28
|
+
|
|
29
|
+
init {
|
|
30
|
+
setupLabel()
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
companion object {
|
|
34
|
+
private const val LABEL_TEXT_SIZE_SP = 12f
|
|
35
|
+
private const val LABEL_PADDING_HORIZONTAL_DP = 10
|
|
36
|
+
private const val LABEL_PADDING_VERTICAL_DP = 5
|
|
37
|
+
private const val LABEL_BOTTOM_MARGIN_DP = 20
|
|
38
|
+
private const val LABEL_ELEVATION_DP = 4f
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
private fun setupLabel() {
|
|
42
|
+
val density = containerView.resources.displayMetrics.density
|
|
43
|
+
|
|
44
|
+
label.apply {
|
|
45
|
+
textSize = LABEL_TEXT_SIZE_SP
|
|
46
|
+
setTextColor(Color.DKGRAY) // Default, will be updated based on theme
|
|
47
|
+
setBackgroundColor(Color.TRANSPARENT)
|
|
48
|
+
gravity = Gravity.CENTER
|
|
49
|
+
setPadding(
|
|
50
|
+
(LABEL_PADDING_HORIZONTAL_DP * density).toInt(),
|
|
51
|
+
(LABEL_PADDING_VERTICAL_DP * density).toInt(),
|
|
52
|
+
(LABEL_PADDING_HORIZONTAL_DP * density).toInt(),
|
|
53
|
+
(LABEL_PADDING_VERTICAL_DP * density).toInt()
|
|
54
|
+
)
|
|
55
|
+
elevation = LABEL_ELEVATION_DP * density
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
val params = FrameLayout.LayoutParams(
|
|
59
|
+
FrameLayout.LayoutParams.WRAP_CONTENT,
|
|
60
|
+
FrameLayout.LayoutParams.WRAP_CONTENT
|
|
61
|
+
).apply {
|
|
62
|
+
gravity = Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL
|
|
63
|
+
bottomMargin = (LABEL_BOTTOM_MARGIN_DP * density).toInt()
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
containerView.addView(label, params)
|
|
67
|
+
// Ensure label is above navigator fragment
|
|
68
|
+
label.bringToFront()
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Update the position label with current position and progression.
|
|
73
|
+
* Should be called on the main thread.
|
|
74
|
+
*/
|
|
75
|
+
fun update(position: Int?, totalProgression: Double?) {
|
|
76
|
+
lastKnownPosition = position
|
|
77
|
+
lastKnownProgression = totalProgression
|
|
78
|
+
label.text = positionLabelText(position, totalProgression)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
private fun positionLabelText(position: Int?, totalProgression: Double?): String? {
|
|
82
|
+
return when {
|
|
83
|
+
position != null -> {
|
|
84
|
+
val total = positionsCount
|
|
85
|
+
if (total != null) {
|
|
86
|
+
"$position / $total"
|
|
87
|
+
} else {
|
|
88
|
+
loadPositionsCountIfNeeded()
|
|
89
|
+
"$position"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
totalProgression != null -> {
|
|
93
|
+
"${(totalProgression * 100).toInt()}%"
|
|
94
|
+
}
|
|
95
|
+
else -> null
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
private fun loadPositionsCountIfNeeded() {
|
|
100
|
+
if (positionsCount != null) return
|
|
101
|
+
if (positionsLoadingJob?.isActive == true) return
|
|
102
|
+
|
|
103
|
+
positionsLoadingJob = lifecycleScope.launch {
|
|
104
|
+
try {
|
|
105
|
+
val positions = publication.positions()
|
|
106
|
+
positionsCount = positions.size
|
|
107
|
+
|
|
108
|
+
// Refresh label with the new count
|
|
109
|
+
label.text = positionLabelText(lastKnownPosition, lastKnownProgression)
|
|
110
|
+
} catch (e: Exception) {
|
|
111
|
+
// Failed to load positions, continue showing position without total
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Update the text color of the position label.
|
|
118
|
+
* Should be called on the main thread.
|
|
119
|
+
*/
|
|
120
|
+
fun setTextColor(color: Int) {
|
|
121
|
+
label.setTextColor(color)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Cancel any ongoing loading operations and remove the label from the view hierarchy.
|
|
126
|
+
*/
|
|
127
|
+
fun cleanup() {
|
|
128
|
+
positionsLoadingJob?.cancel()
|
|
129
|
+
positionsLoadingJob = null
|
|
130
|
+
containerView.removeView(label)
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -1,49 +1,37 @@
|
|
|
1
1
|
package com.reactnativereadium.reader
|
|
2
2
|
|
|
3
|
-
import android.annotation.SuppressLint
|
|
4
|
-
import androidx.lifecycle.ViewModelStore
|
|
5
3
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
4
|
import com.facebook.react.util.RNLog
|
|
7
5
|
import com.reactnativereadium.utils.LinkOrLocator
|
|
8
6
|
import java.io.File
|
|
9
|
-
import java.
|
|
10
|
-
import java.net.ServerSocket
|
|
11
|
-
import org.readium.r2.shared.extensions.mediaType
|
|
12
|
-
import org.readium.r2.shared.extensions.tryOrNull
|
|
7
|
+
import java.util.Locale
|
|
13
8
|
import org.readium.r2.shared.publication.Locator
|
|
14
|
-
import org.readium.r2.shared.publication.asset.FileAsset
|
|
15
9
|
import org.readium.r2.shared.publication.Publication
|
|
16
|
-
import org.readium.r2.
|
|
17
|
-
import org.readium.r2.
|
|
10
|
+
import org.readium.r2.shared.util.FileExtension
|
|
11
|
+
import org.readium.r2.shared.util.asset.AssetRetriever
|
|
12
|
+
import org.readium.r2.shared.util.format.FormatHints
|
|
13
|
+
import org.readium.r2.shared.util.http.DefaultHttpClient
|
|
14
|
+
import org.readium.r2.shared.util.toUrl
|
|
15
|
+
import org.readium.r2.streamer.PublicationOpener
|
|
16
|
+
import org.readium.r2.streamer.parser.DefaultPublicationParser
|
|
18
17
|
|
|
19
18
|
|
|
20
19
|
class ReaderService(
|
|
21
20
|
private val reactContext: ReactApplicationContext
|
|
22
21
|
) {
|
|
23
|
-
private
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
var isServerStarted = false
|
|
38
|
-
private set
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
init {
|
|
42
|
-
val s = ServerSocket(0)
|
|
43
|
-
s.close()
|
|
44
|
-
server = Server(s.localPort, reactContext)
|
|
45
|
-
this.startServer()
|
|
46
|
-
}
|
|
22
|
+
private val httpClient = DefaultHttpClient()
|
|
23
|
+
private val assetRetriever = AssetRetriever(
|
|
24
|
+
reactContext.contentResolver,
|
|
25
|
+
httpClient
|
|
26
|
+
)
|
|
27
|
+
private val publicationOpener = PublicationOpener(
|
|
28
|
+
publicationParser = DefaultPublicationParser(
|
|
29
|
+
context = reactContext,
|
|
30
|
+
assetRetriever = assetRetriever,
|
|
31
|
+
httpClient = httpClient,
|
|
32
|
+
pdfFactory = null,
|
|
33
|
+
)
|
|
34
|
+
)
|
|
47
35
|
|
|
48
36
|
fun locatorFromLinkOrLocator(
|
|
49
37
|
location: LinkOrLocator?,
|
|
@@ -69,44 +57,55 @@ class ReaderService(
|
|
|
69
57
|
initialLocation: LinkOrLocator?,
|
|
70
58
|
callback: suspend (fragment: BaseReaderFragment) -> Unit
|
|
71
59
|
) {
|
|
72
|
-
val
|
|
73
|
-
|
|
60
|
+
val publicationFile = File(fileName).absoluteFile
|
|
61
|
+
if (!publicationFile.exists()) {
|
|
62
|
+
RNLog.e(reactContext, "Failed to open publication: File does not exist: $fileName")
|
|
63
|
+
return
|
|
64
|
+
}
|
|
65
|
+
val publicationUrl = runCatching {
|
|
66
|
+
publicationFile.toUrl()
|
|
67
|
+
}
|
|
68
|
+
.onFailure {
|
|
69
|
+
RNLog.e(
|
|
70
|
+
reactContext,
|
|
71
|
+
"Invalid publication path: $fileName - ${it.message}"
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
.getOrNull()
|
|
75
|
+
?: return
|
|
74
76
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
allowUserInteraction = false,
|
|
78
|
-
sender = reactContext
|
|
79
|
-
)
|
|
80
|
-
.onSuccess {
|
|
81
|
-
val locator = locatorFromLinkOrLocator(initialLocation, it)
|
|
82
|
-
val readerFragment = EpubReaderFragment.newInstance()
|
|
83
|
-
readerFragment.initFactory(it, locator)
|
|
84
|
-
callback.invoke(readerFragment)
|
|
77
|
+
val fileExtension = publicationFile.extension
|
|
78
|
+
.takeIf { it.isNotEmpty() }?.lowercase(Locale.ROOT)
|
|
85
79
|
|
|
86
|
-
|
|
80
|
+
val asset = assetRetriever
|
|
81
|
+
.retrieve(
|
|
82
|
+
publicationUrl,
|
|
83
|
+
FormatHints(fileExtension = fileExtension?.let { FileExtension(it) })
|
|
84
|
+
)
|
|
87
85
|
.onFailure {
|
|
88
|
-
|
|
89
|
-
RNLog.w(reactContext, "Error executing ReaderService.openPublication")
|
|
90
|
-
// TODO: implement failure event
|
|
86
|
+
RNLog.w(reactContext, "Unable to retrieve publication asset: ${it.message}")
|
|
91
87
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
88
|
+
.getOrNull()
|
|
89
|
+
?: return
|
|
90
|
+
|
|
91
|
+
publicationOpener
|
|
92
|
+
.open(
|
|
93
|
+
asset = asset,
|
|
94
|
+
allowUserInteraction = false
|
|
95
|
+
)
|
|
96
|
+
.onSuccess {
|
|
97
|
+
val locator = locatorFromLinkOrLocator(initialLocation, it)
|
|
98
|
+
val readerFragment = EpubReaderFragment.newInstance()
|
|
99
|
+
readerFragment.initFactory(it, locator)
|
|
100
|
+
callback.invoke(readerFragment)
|
|
100
101
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
isServerStarted = true
|
|
102
|
+
.onFailure {
|
|
103
|
+
RNLog.w(
|
|
104
|
+
reactContext,
|
|
105
|
+
"Error executing ReaderService.openPublication: ${it.message}"
|
|
106
|
+
)
|
|
107
|
+
// TODO: implement failure event
|
|
108
108
|
}
|
|
109
|
-
}
|
|
110
109
|
}
|
|
111
110
|
|
|
112
111
|
sealed class Event {
|
|
@@ -1,95 +1,24 @@
|
|
|
1
1
|
package com.reactnativereadium.reader
|
|
2
2
|
|
|
3
|
-
import android.graphics.
|
|
3
|
+
import android.graphics.PointF
|
|
4
|
+
import android.graphics.RectF
|
|
4
5
|
import androidx.lifecycle.ViewModel
|
|
5
6
|
import androidx.lifecycle.ViewModelProvider
|
|
6
7
|
import androidx.lifecycle.viewModelScope
|
|
7
|
-
import androidx.paging.*
|
|
8
|
-
import com.reactnativereadium.search.SearchPagingSource
|
|
9
8
|
import com.reactnativereadium.utils.EventChannel
|
|
10
9
|
import kotlinx.coroutines.channels.Channel
|
|
11
|
-
import kotlinx.coroutines.flow.*
|
|
12
|
-
import kotlinx.coroutines.launch
|
|
13
10
|
import org.readium.r2.navigator.Decoration
|
|
14
|
-
import org.readium.r2.navigator.ExperimentalDecorator
|
|
15
11
|
import org.readium.r2.shared.publication.Locator
|
|
16
|
-
import org.readium.r2.shared.publication.LocatorCollection
|
|
17
12
|
import org.readium.r2.shared.publication.Publication
|
|
18
|
-
import org.readium.r2.shared.publication.services.search.search
|
|
19
|
-
import org.readium.r2.shared.publication.services.search.SearchIterator
|
|
20
|
-
import org.readium.r2.shared.publication.services.search.SearchTry
|
|
21
|
-
import org.readium.r2.shared.Search
|
|
22
|
-
import org.readium.r2.shared.UserException
|
|
23
13
|
import org.readium.r2.shared.publication.Link
|
|
24
|
-
import org.readium.r2.shared.
|
|
14
|
+
import org.readium.r2.shared.publication.Metadata
|
|
25
15
|
|
|
26
|
-
@OptIn(Search::class, ExperimentalDecorator::class)
|
|
27
16
|
class ReaderViewModel(
|
|
28
17
|
val publication: Publication,
|
|
29
18
|
val initialLocation: Locator?
|
|
30
19
|
) : ViewModel() {
|
|
31
20
|
val channel = EventChannel(Channel<Event>(Channel.BUFFERED), viewModelScope)
|
|
32
21
|
|
|
33
|
-
fun search(query: String) = viewModelScope.launch {
|
|
34
|
-
if (query == lastSearchQuery) return@launch
|
|
35
|
-
lastSearchQuery = query
|
|
36
|
-
_searchLocators.value = emptyList()
|
|
37
|
-
searchIterator = publication.search(query)
|
|
38
|
-
.onFailure { channel.send(Event.Failure(it)) }
|
|
39
|
-
.getOrNull()
|
|
40
|
-
pagingSourceFactory.invalidate()
|
|
41
|
-
channel.send(Event.StartNewSearch)
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
fun cancelSearch() = viewModelScope.launch {
|
|
45
|
-
_searchLocators.value = emptyList()
|
|
46
|
-
searchIterator?.close()
|
|
47
|
-
searchIterator = null
|
|
48
|
-
pagingSourceFactory.invalidate()
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
val searchLocators: StateFlow<List<Locator>> get() = _searchLocators
|
|
52
|
-
private var _searchLocators = MutableStateFlow<List<Locator>>(emptyList())
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Maps the current list of search result locators into a list of [Decoration] objects to
|
|
56
|
-
* underline the results in the navigator.
|
|
57
|
-
*/
|
|
58
|
-
val searchDecorations: Flow<List<Decoration>> by lazy {
|
|
59
|
-
searchLocators.map {
|
|
60
|
-
it.mapIndexed { index, locator ->
|
|
61
|
-
Decoration(
|
|
62
|
-
// The index in the search result list is a suitable Decoration ID, as long as
|
|
63
|
-
// we clear the search decorations between two searches.
|
|
64
|
-
id = index.toString(),
|
|
65
|
-
locator = locator,
|
|
66
|
-
style = Decoration.Style.Underline(tint = Color.RED)
|
|
67
|
-
)
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
private var lastSearchQuery: String? = null
|
|
73
|
-
|
|
74
|
-
private var searchIterator: SearchIterator? = null
|
|
75
|
-
|
|
76
|
-
private val pagingSourceFactory = InvalidatingPagingSourceFactory {
|
|
77
|
-
SearchPagingSource(listener = PagingSourceListener())
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
inner class PagingSourceListener : SearchPagingSource.Listener {
|
|
81
|
-
override suspend fun next(): SearchTry<LocatorCollection?> {
|
|
82
|
-
val iterator = searchIterator ?: return Try.success(null)
|
|
83
|
-
return iterator.next().onSuccess {
|
|
84
|
-
_searchLocators.value += (it?.locators ?: emptyList())
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
val searchResult: Flow<PagingData<Locator>> =
|
|
90
|
-
Pager(PagingConfig(pageSize = 20), pagingSourceFactory = pagingSourceFactory)
|
|
91
|
-
.flow.cachedIn(viewModelScope)
|
|
92
|
-
|
|
93
22
|
class Factory(
|
|
94
23
|
private val publication: Publication,
|
|
95
24
|
private val initialLocation: Locator?
|
|
@@ -107,16 +36,26 @@ class ReaderViewModel(
|
|
|
107
36
|
}
|
|
108
37
|
|
|
109
38
|
sealed class Event {
|
|
110
|
-
object OpenOutlineRequested : Event()
|
|
111
|
-
object OpenDrmManagementRequested : Event()
|
|
112
|
-
object StartNewSearch : Event()
|
|
113
|
-
class Failure(val error: UserException) : Event()
|
|
114
39
|
class LocatorUpdate(val locator: Locator) : Event()
|
|
115
|
-
class
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
40
|
+
class PublicationReady(
|
|
41
|
+
val tableOfContents: List<Link>,
|
|
42
|
+
val positions: List<Locator>,
|
|
43
|
+
val metadata: Metadata
|
|
44
|
+
) : Event()
|
|
45
|
+
class DecorationActivated(
|
|
46
|
+
val decoration: Decoration,
|
|
47
|
+
val group: String,
|
|
48
|
+
val rect: RectF?,
|
|
49
|
+
val point: PointF?
|
|
50
|
+
) : Event()
|
|
51
|
+
class SelectionChanged(
|
|
52
|
+
val locator: Locator?,
|
|
53
|
+
val selectedText: String?
|
|
54
|
+
) : Event()
|
|
55
|
+
class SelectionAction(
|
|
56
|
+
val actionId: String,
|
|
57
|
+
val locator: Locator,
|
|
58
|
+
val selectedText: String
|
|
59
|
+
) : Event()
|
|
121
60
|
}
|
|
122
61
|
}
|
|
@@ -13,14 +13,15 @@ import android.view.ViewGroup
|
|
|
13
13
|
import android.view.WindowInsets
|
|
14
14
|
import android.widget.FrameLayout
|
|
15
15
|
import androidx.fragment.app.Fragment
|
|
16
|
-
import
|
|
17
|
-
import org.readium.r2.navigator.ExperimentalDecorator
|
|
16
|
+
import androidx.lifecycle.lifecycleScope
|
|
18
17
|
import com.reactnativereadium.R
|
|
19
18
|
import com.reactnativereadium.databinding.FragmentReaderBinding
|
|
20
19
|
import com.reactnativereadium.utils.clearPadding
|
|
21
20
|
import com.reactnativereadium.utils.hideSystemUi
|
|
22
21
|
import com.reactnativereadium.utils.padSystemUi
|
|
23
22
|
import com.reactnativereadium.utils.showSystemUi
|
|
23
|
+
import kotlinx.coroutines.flow.launchIn
|
|
24
|
+
import kotlinx.coroutines.flow.onEach
|
|
24
25
|
|
|
25
26
|
/*
|
|
26
27
|
* Adds fullscreen support to the BaseReaderFragment
|
|
@@ -32,6 +33,8 @@ abstract class VisualReaderFragment : BaseReaderFragment() {
|
|
|
32
33
|
private var _binding: FragmentReaderBinding? = null
|
|
33
34
|
val binding get() = _binding!!
|
|
34
35
|
|
|
36
|
+
private var positionLabelManager: PositionLabelManager? = null
|
|
37
|
+
|
|
35
38
|
override fun onCreateView(
|
|
36
39
|
inflater: LayoutInflater,
|
|
37
40
|
container: ViewGroup?,
|
|
@@ -45,6 +48,23 @@ abstract class VisualReaderFragment : BaseReaderFragment() {
|
|
|
45
48
|
super.onViewCreated(view, savedInstanceState)
|
|
46
49
|
navigatorFragment = navigator as Fragment
|
|
47
50
|
|
|
51
|
+
// Initialize position label manager - simple overlay, matching iOS approach
|
|
52
|
+
positionLabelManager = PositionLabelManager(
|
|
53
|
+
containerView = binding.fragmentReaderContainer,
|
|
54
|
+
publication = model.publication,
|
|
55
|
+
lifecycleScope = viewLifecycleOwner.lifecycleScope
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
// Update position label when navigator location changes
|
|
59
|
+
navigator.currentLocator
|
|
60
|
+
.onEach { locator ->
|
|
61
|
+
positionLabelManager?.update(
|
|
62
|
+
position = locator.locations.position,
|
|
63
|
+
totalProgression = locator.locations.totalProgression
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
.launchIn(viewLifecycleOwner.lifecycleScope)
|
|
67
|
+
|
|
48
68
|
childFragmentManager.addOnBackStackChangedListener {
|
|
49
69
|
updateSystemUiVisibility()
|
|
50
70
|
}
|
|
@@ -55,10 +75,20 @@ abstract class VisualReaderFragment : BaseReaderFragment() {
|
|
|
55
75
|
}
|
|
56
76
|
|
|
57
77
|
override fun onDestroyView() {
|
|
78
|
+
positionLabelManager?.cleanup()
|
|
79
|
+
positionLabelManager = null
|
|
58
80
|
_binding = null
|
|
59
81
|
super.onDestroyView()
|
|
60
82
|
}
|
|
61
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Update the text color of the position label.
|
|
86
|
+
* @param color Android color integer
|
|
87
|
+
*/
|
|
88
|
+
fun setPositionLabelColor(color: Int) {
|
|
89
|
+
positionLabelManager?.setTextColor(color)
|
|
90
|
+
}
|
|
91
|
+
|
|
62
92
|
fun updateSystemUiVisibility() {
|
|
63
93
|
if (navigatorFragment.isHidden)
|
|
64
94
|
requireActivity().showSystemUi()
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
package com.reactnativereadium.utils
|
|
2
|
+
|
|
3
|
+
import android.graphics.Color
|
|
4
|
+
import com.facebook.react.bridge.Arguments
|
|
5
|
+
import com.facebook.react.bridge.WritableMap
|
|
6
|
+
import org.json.JSONObject
|
|
7
|
+
import org.readium.r2.navigator.Decoration
|
|
8
|
+
import org.readium.r2.shared.publication.Locator
|
|
9
|
+
import java.util.UUID
|
|
10
|
+
|
|
11
|
+
object DecorationSerializer {
|
|
12
|
+
/**
|
|
13
|
+
* Deserialize JSON string to a map of decoration groups
|
|
14
|
+
*/
|
|
15
|
+
fun deserialize(json: String?): Map<String, List<Decoration>> {
|
|
16
|
+
if (json == null) return emptyMap()
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
val jsonObject = JSONObject(json)
|
|
20
|
+
val groups = mutableMapOf<String, List<Decoration>>()
|
|
21
|
+
|
|
22
|
+
jsonObject.keys().forEach { groupName ->
|
|
23
|
+
val decorationsArray = jsonObject.getJSONArray(groupName)
|
|
24
|
+
val decorations = mutableListOf<Decoration>()
|
|
25
|
+
|
|
26
|
+
for (i in 0 until decorationsArray.length()) {
|
|
27
|
+
val decorationJson = decorationsArray.getJSONObject(i)
|
|
28
|
+
deserializeDecoration(decorationJson)?.let { decorations.add(it) }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
groups[groupName] = decorations
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return groups
|
|
35
|
+
} catch (e: Exception) {
|
|
36
|
+
android.util.Log.e("DecorationSerializer", "Failed to deserialize decorations: ${e.message}", e)
|
|
37
|
+
return emptyMap()
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Deserialize a single decoration from JSON
|
|
43
|
+
*/
|
|
44
|
+
private fun deserializeDecoration(json: JSONObject): Decoration? {
|
|
45
|
+
try {
|
|
46
|
+
val id = json.getString("id")
|
|
47
|
+
val locatorJson = json.getJSONObject("locator")
|
|
48
|
+
val styleJson = json.getJSONObject("style")
|
|
49
|
+
val extrasJson = if (json.has("extras")) json.getJSONObject("extras") else null
|
|
50
|
+
val locator = Locator.fromJSON(locatorJson) ?: return null
|
|
51
|
+
val style = deserializeStyle(styleJson) ?: return null
|
|
52
|
+
|
|
53
|
+
val extras = mutableMapOf<String, Any>()
|
|
54
|
+
extrasJson?.keys()?.forEach { key ->
|
|
55
|
+
extras[key] = extrasJson.get(key)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return Decoration(
|
|
59
|
+
id = id,
|
|
60
|
+
locator = locator,
|
|
61
|
+
style = style,
|
|
62
|
+
extras = extras
|
|
63
|
+
)
|
|
64
|
+
} catch (e: Exception) {
|
|
65
|
+
android.util.Log.e("DecorationSerializer", "Failed to deserialize decoration: ${e.message}", e)
|
|
66
|
+
return null
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Deserialize a decoration style from JSON
|
|
72
|
+
*/
|
|
73
|
+
private fun deserializeStyle(json: JSONObject): Decoration.Style? {
|
|
74
|
+
return when (json.getString("type")) {
|
|
75
|
+
"highlight" -> {
|
|
76
|
+
val tint = parseColor(json.getString("tint"))
|
|
77
|
+
val isActive = json.optBoolean("isActive", false)
|
|
78
|
+
Decoration.Style.Highlight(tint = tint, isActive = isActive)
|
|
79
|
+
}
|
|
80
|
+
"underline" -> {
|
|
81
|
+
val tint = parseColor(json.getString("tint"))
|
|
82
|
+
val isActive = json.optBoolean("isActive", false)
|
|
83
|
+
Decoration.Style.Underline(tint = tint, isActive = isActive)
|
|
84
|
+
}
|
|
85
|
+
// TODO: Add support for custom styles
|
|
86
|
+
else -> null
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Parse a CSS color string to Android Color int
|
|
92
|
+
* Supports: hex (#RRGGBB, #AARRGGBB), rgb(r,g,b), rgba(r,g,b,a), named colors
|
|
93
|
+
*/
|
|
94
|
+
private fun parseColor(colorString: String): Int {
|
|
95
|
+
return try {
|
|
96
|
+
when {
|
|
97
|
+
colorString.startsWith("#") -> Color.parseColor(colorString)
|
|
98
|
+
colorString.startsWith("rgb(") -> {
|
|
99
|
+
val values = colorString.substringAfter("(").substringBefore(")").split(",")
|
|
100
|
+
val r = values[0].trim().toInt()
|
|
101
|
+
val g = values[1].trim().toInt()
|
|
102
|
+
val b = values[2].trim().toInt()
|
|
103
|
+
Color.rgb(r, g, b)
|
|
104
|
+
}
|
|
105
|
+
colorString.startsWith("rgba(") -> {
|
|
106
|
+
val values = colorString.substringAfter("(").substringBefore(")").split(",")
|
|
107
|
+
val r = values[0].trim().toInt()
|
|
108
|
+
val g = values[1].trim().toInt()
|
|
109
|
+
val b = values[2].trim().toInt()
|
|
110
|
+
val a = (values[3].trim().toFloat() * 255).toInt()
|
|
111
|
+
Color.argb(a, r, g, b)
|
|
112
|
+
}
|
|
113
|
+
else -> Color.parseColor(colorString) // Try named color
|
|
114
|
+
}
|
|
115
|
+
} catch (e: Exception) {
|
|
116
|
+
android.util.Log.w("DecorationSerializer", "Failed to parse color '$colorString', using default", e)
|
|
117
|
+
Color.YELLOW // Default color
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Extension function to convert Decoration to WritableMap for React Native
|
|
124
|
+
*/
|
|
125
|
+
fun Decoration.toWritableMap(): WritableMap {
|
|
126
|
+
return Arguments.createMap().apply {
|
|
127
|
+
putString("id", this@toWritableMap.id)
|
|
128
|
+
putMap("locator", this@toWritableMap.locator.toWritableMap())
|
|
129
|
+
putMap("style", styleToWritableMap(this@toWritableMap.style))
|
|
130
|
+
|
|
131
|
+
if (this@toWritableMap.extras.isNotEmpty()) {
|
|
132
|
+
val extrasMap = Arguments.createMap()
|
|
133
|
+
this@toWritableMap.extras.forEach { (key, value) ->
|
|
134
|
+
when (value) {
|
|
135
|
+
is String -> extrasMap.putString(key, value)
|
|
136
|
+
is Int -> extrasMap.putInt(key, value)
|
|
137
|
+
is Double -> extrasMap.putDouble(key, value)
|
|
138
|
+
is Boolean -> extrasMap.putBoolean(key, value)
|
|
139
|
+
else -> extrasMap.putString(key, value.toString())
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
putMap("extras", extrasMap)
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Convert Decoration.Style to WritableMap
|
|
149
|
+
*/
|
|
150
|
+
private fun styleToWritableMap(style: Decoration.Style): WritableMap {
|
|
151
|
+
return Arguments.createMap().apply {
|
|
152
|
+
when (style) {
|
|
153
|
+
is Decoration.Style.Highlight -> {
|
|
154
|
+
putString("type", "highlight")
|
|
155
|
+
putString("tint", colorToHex(style.tint))
|
|
156
|
+
putBoolean("isActive", style.isActive)
|
|
157
|
+
}
|
|
158
|
+
is Decoration.Style.Underline -> {
|
|
159
|
+
putString("type", "underline")
|
|
160
|
+
putString("tint", colorToHex(style.tint))
|
|
161
|
+
putBoolean("isActive", style.isActive)
|
|
162
|
+
}
|
|
163
|
+
else -> {
|
|
164
|
+
putString("type", "custom")
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Convert Android Color int to hex string
|
|
172
|
+
*/
|
|
173
|
+
private fun colorToHex(color: Int): String {
|
|
174
|
+
return String.format("#%08X", color)
|
|
175
|
+
}
|
|
@@ -50,12 +50,3 @@ class FlowObserver<T> (
|
|
|
50
50
|
job = null
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
inline fun <reified T> Flow<T>.observeWhenStarted(
|
|
56
|
-
lifecycleOwner: LifecycleOwner,
|
|
57
|
-
noinline collector: suspend (T) -> Unit
|
|
58
|
-
) {
|
|
59
|
-
val observer = FlowObserver(lifecycleOwner, this, collector)
|
|
60
|
-
lifecycleOwner.lifecycle.addObserver(observer)
|
|
61
|
-
}
|