@aguacerowx/react-native 0.0.4 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/README.md +51 -6
  2. package/android/build/.transforms/78b892a9dae44f36e51ff0649e9c6e36/transformed/classes/classes_dex/classes.dex +0 -0
  3. package/android/build/.transforms/f4de14556a82e99f0d27ddcab762b219/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/aguacerowx/reactnative/GridRenderLayer$VertexInfo.dex +0 -0
  4. package/android/build/.transforms/f4de14556a82e99f0d27ddcab762b219/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/aguacerowx/reactnative/GridRenderLayer.dex +0 -0
  5. package/android/build/.transforms/f4de14556a82e99f0d27ddcab762b219/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/aguacerowx/reactnative/GridRenderLayerView.dex +0 -0
  6. package/android/build/.transforms/f4de14556a82e99f0d27ddcab762b219/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/aguacerowx/reactnative/GridRenderManager.dex +0 -0
  7. package/android/build/.transforms/f4de14556a82e99f0d27ddcab762b219/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/aguacerowx/reactnative/WeatherFrameProcessorModule.dex +0 -0
  8. package/android/build/.transforms/f4de14556a82e99f0d27ddcab762b219/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  9. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  10. package/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/raw_fragment_shader.glsl.flat +0 -0
  11. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -1
  12. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderLayer$VertexInfo.class +0 -0
  13. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderLayer.class +0 -0
  14. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderLayerView.class +0 -0
  15. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderManager.class +0 -0
  16. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/WeatherFrameProcessorModule.class +0 -0
  17. package/android/build/intermediates/packaged_res/debug/packageDebugResources/raw/fragment_shader.glsl +13 -2
  18. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderLayer$VertexInfo.class +0 -0
  19. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderLayer.class +0 -0
  20. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderLayerView.class +0 -0
  21. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderManager.class +0 -0
  22. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/WeatherFrameProcessorModule.class +0 -0
  23. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  24. package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/AguaceroPackage.class.uniqueId1 +0 -0
  25. package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GridRenderLayerView.class.uniqueId2 +0 -0
  26. package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GridRenderManager.class.uniqueId3 +0 -0
  27. package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/InspectorModule.class.uniqueId0 +0 -0
  28. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  29. package/android/src/main/java/com/aguacerowx/reactnative/GridRenderLayer.java +21 -52
  30. package/android/src/main/java/com/aguacerowx/reactnative/GridRenderLayerView.java +13 -2
  31. package/android/src/main/java/com/aguacerowx/reactnative/GridRenderManager.java +21 -14
  32. package/android/src/main/java/com/aguacerowx/reactnative/WeatherFrameProcessorModule.java +15 -0
  33. package/android/src/main/res/raw/fragment_shader.glsl +13 -2
  34. package/ios/GridRenderLayer.swift +62 -0
  35. package/ios/GridRenderLayerManager.mm +140 -0
  36. package/ios/aguacerowx-react-native.podspec +29 -0
  37. package/lib/commonjs/README.md +61 -0
  38. package/lib/commonjs/android/build/generated/source/buildConfig/debug/com/aguacerowx/reactnative/BuildConfig.java +10 -0
  39. package/lib/commonjs/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +8 -0
  40. package/lib/commonjs/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  41. package/lib/commonjs/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  42. package/lib/commonjs/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  43. package/lib/commonjs/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  44. package/lib/commonjs/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  45. package/lib/commonjs/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +4 -0
  46. package/lib/commonjs/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/raw_debug_fragment_shader.glsl.flat +0 -0
  47. package/lib/commonjs/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/raw_debug_vertex_shader.glsl.flat +0 -0
  48. package/lib/commonjs/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/raw_fragment_shader.glsl.flat +0 -0
  49. package/lib/commonjs/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/raw_vertex_shader.glsl.flat +0 -0
  50. package/lib/commonjs/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +5 -0
  51. package/lib/commonjs/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  52. package/lib/commonjs/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +2 -0
  53. package/lib/commonjs/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  54. package/lib/commonjs/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  55. package/lib/commonjs/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/AguaceroPackage.class +0 -0
  56. package/lib/commonjs/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/BuildConfig.class +0 -0
  57. package/lib/commonjs/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderLayer$VertexInfo.class +0 -0
  58. package/lib/commonjs/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderLayer.class +0 -0
  59. package/lib/commonjs/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderLayerView.class +0 -0
  60. package/lib/commonjs/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderManager.class +0 -0
  61. package/lib/commonjs/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/InspectorModule.class +0 -0
  62. package/lib/commonjs/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/ShaderUtils.class +0 -0
  63. package/lib/commonjs/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/WeatherFrameProcessorModule.class +0 -0
  64. package/lib/commonjs/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +6 -0
  65. package/lib/commonjs/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +8 -0
  66. package/lib/commonjs/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +8 -0
  67. package/lib/commonjs/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  68. package/lib/commonjs/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  69. package/lib/commonjs/android/build/intermediates/packaged_res/debug/packageDebugResources/raw/debug_fragment_shader.glsl +13 -0
  70. package/lib/commonjs/android/build/intermediates/packaged_res/debug/packageDebugResources/raw/debug_vertex_shader.glsl +13 -0
  71. package/lib/commonjs/android/build/intermediates/packaged_res/debug/packageDebugResources/raw/fragment_shader.glsl +98 -0
  72. package/lib/commonjs/android/build/intermediates/packaged_res/debug/packageDebugResources/raw/vertex_shader.glsl +20 -0
  73. package/lib/commonjs/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/AguaceroPackage.class +0 -0
  74. package/lib/commonjs/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/BuildConfig.class +0 -0
  75. package/lib/commonjs/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderLayer$VertexInfo.class +0 -0
  76. package/lib/commonjs/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderLayer.class +0 -0
  77. package/lib/commonjs/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderLayerView.class +0 -0
  78. package/lib/commonjs/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderManager.class +0 -0
  79. package/lib/commonjs/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/InspectorModule.class +0 -0
  80. package/lib/commonjs/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/ShaderUtils.class +0 -0
  81. package/lib/commonjs/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/WeatherFrameProcessorModule.class +0 -0
  82. package/lib/commonjs/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  83. package/lib/commonjs/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +5 -0
  84. package/lib/commonjs/android/build/outputs/logs/manifest-merger-debug-report.txt +17 -0
  85. package/lib/commonjs/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/AguaceroPackage.class.uniqueId1 +0 -0
  86. package/lib/commonjs/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GridRenderLayerView.class.uniqueId2 +0 -0
  87. package/lib/commonjs/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GridRenderManager.class.uniqueId3 +0 -0
  88. package/lib/commonjs/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/InspectorModule.class.uniqueId0 +0 -0
  89. package/lib/commonjs/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  90. package/lib/commonjs/android/build.gradle +85 -0
  91. package/lib/commonjs/android/src/main/AndroidManifest.xml +7 -0
  92. package/lib/commonjs/android/src/main/java/com/aguacerowx/reactnative/AguaceroPackage.java +34 -0
  93. package/lib/commonjs/android/src/main/java/com/aguacerowx/reactnative/GridRenderLayer.java +608 -0
  94. package/lib/commonjs/android/src/main/java/com/aguacerowx/reactnative/GridRenderLayerView.java +298 -0
  95. package/lib/commonjs/android/src/main/java/com/aguacerowx/reactnative/GridRenderManager.java +118 -0
  96. package/lib/commonjs/android/src/main/java/com/aguacerowx/reactnative/InspectorModule.java +64 -0
  97. package/lib/commonjs/android/src/main/java/com/aguacerowx/reactnative/ShaderUtils.java +107 -0
  98. package/lib/commonjs/android/src/main/java/com/aguacerowx/reactnative/WeatherFrameProcessorModule.java +166 -0
  99. package/lib/commonjs/android/src/main/res/raw/debug_fragment_shader.glsl +13 -0
  100. package/lib/commonjs/android/src/main/res/raw/debug_vertex_shader.glsl +13 -0
  101. package/lib/commonjs/android/src/main/res/raw/fragment_shader.glsl +98 -0
  102. package/lib/commonjs/android/src/main/res/raw/vertex_shader.glsl +20 -0
  103. package/lib/commonjs/babel.config.js +7 -0
  104. package/lib/commonjs/babel.config.js.map +1 -0
  105. package/lib/commonjs/index.js +20 -0
  106. package/lib/commonjs/index.js.map +1 -0
  107. package/lib/commonjs/package.json +73 -0
  108. package/lib/commonjs/react-native-builder-bob.config.js +13 -0
  109. package/lib/commonjs/react-native-builder-bob.config.js.map +1 -0
  110. package/lib/commonjs/src/AguaceroContext.js +11 -0
  111. package/lib/commonjs/src/AguaceroContext.js.map +1 -0
  112. package/lib/commonjs/src/GridRenderLayer.js +132 -0
  113. package/lib/commonjs/src/GridRenderLayer.js.map +1 -0
  114. package/lib/commonjs/src/GridRenderLayerNativeComponent.js +11 -0
  115. package/lib/commonjs/src/GridRenderLayerNativeComponent.js.map +1 -0
  116. package/lib/commonjs/src/MapManager.js +164 -0
  117. package/lib/commonjs/src/MapManager.js.map +1 -0
  118. package/lib/commonjs/src/MapRegistry.js +36 -0
  119. package/lib/commonjs/src/MapRegistry.js.map +1 -0
  120. package/lib/commonjs/src/StyleApplicator.js +262 -0
  121. package/lib/commonjs/src/StyleApplicator.js.map +1 -0
  122. package/lib/commonjs/src/WeatherLayerManager.js +782 -0
  123. package/lib/commonjs/src/WeatherLayerManager.js.map +1 -0
  124. package/lib/commonjs/tsconfig.json +24 -0
  125. package/lib/module/README.md +61 -0
  126. package/lib/module/android/build/generated/source/buildConfig/debug/com/aguacerowx/reactnative/BuildConfig.java +10 -0
  127. package/lib/module/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +8 -0
  128. package/lib/module/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  129. package/lib/module/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  130. package/lib/module/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  131. package/lib/module/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  132. package/lib/module/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  133. package/lib/module/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +4 -0
  134. package/lib/module/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/raw_debug_fragment_shader.glsl.flat +0 -0
  135. package/lib/module/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/raw_debug_vertex_shader.glsl.flat +0 -0
  136. package/lib/module/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/raw_fragment_shader.glsl.flat +0 -0
  137. package/lib/module/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/raw_vertex_shader.glsl.flat +0 -0
  138. package/lib/module/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +5 -0
  139. package/lib/module/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  140. package/lib/module/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +2 -0
  141. package/lib/module/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  142. package/lib/module/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  143. package/lib/module/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/AguaceroPackage.class +0 -0
  144. package/lib/module/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/BuildConfig.class +0 -0
  145. package/lib/module/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderLayer$VertexInfo.class +0 -0
  146. package/lib/module/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderLayer.class +0 -0
  147. package/lib/module/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderLayerView.class +0 -0
  148. package/lib/module/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/GridRenderManager.class +0 -0
  149. package/lib/module/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/InspectorModule.class +0 -0
  150. package/lib/module/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/ShaderUtils.class +0 -0
  151. package/lib/module/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/aguacerowx/reactnative/WeatherFrameProcessorModule.class +0 -0
  152. package/lib/module/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +6 -0
  153. package/lib/module/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +8 -0
  154. package/lib/module/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +8 -0
  155. package/lib/module/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  156. package/lib/module/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  157. package/lib/module/android/build/intermediates/packaged_res/debug/packageDebugResources/raw/debug_fragment_shader.glsl +13 -0
  158. package/lib/module/android/build/intermediates/packaged_res/debug/packageDebugResources/raw/debug_vertex_shader.glsl +13 -0
  159. package/lib/module/android/build/intermediates/packaged_res/debug/packageDebugResources/raw/fragment_shader.glsl +98 -0
  160. package/lib/module/android/build/intermediates/packaged_res/debug/packageDebugResources/raw/vertex_shader.glsl +20 -0
  161. package/lib/module/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/AguaceroPackage.class +0 -0
  162. package/lib/module/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/BuildConfig.class +0 -0
  163. package/lib/module/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderLayer$VertexInfo.class +0 -0
  164. package/lib/module/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderLayer.class +0 -0
  165. package/lib/module/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderLayerView.class +0 -0
  166. package/lib/module/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/GridRenderManager.class +0 -0
  167. package/lib/module/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/InspectorModule.class +0 -0
  168. package/lib/module/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/ShaderUtils.class +0 -0
  169. package/lib/module/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/aguacerowx/reactnative/WeatherFrameProcessorModule.class +0 -0
  170. package/lib/module/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  171. package/lib/module/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +5 -0
  172. package/lib/module/android/build/outputs/logs/manifest-merger-debug-report.txt +17 -0
  173. package/lib/module/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/AguaceroPackage.class.uniqueId1 +0 -0
  174. package/lib/module/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GridRenderLayerView.class.uniqueId2 +0 -0
  175. package/lib/module/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/GridRenderManager.class.uniqueId3 +0 -0
  176. package/lib/module/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/InspectorModule.class.uniqueId0 +0 -0
  177. package/lib/module/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  178. package/lib/module/android/build.gradle +85 -0
  179. package/lib/module/android/src/main/AndroidManifest.xml +7 -0
  180. package/lib/module/android/src/main/java/com/aguacerowx/reactnative/AguaceroPackage.java +34 -0
  181. package/lib/module/android/src/main/java/com/aguacerowx/reactnative/GridRenderLayer.java +608 -0
  182. package/lib/module/android/src/main/java/com/aguacerowx/reactnative/GridRenderLayerView.java +298 -0
  183. package/lib/module/android/src/main/java/com/aguacerowx/reactnative/GridRenderManager.java +118 -0
  184. package/lib/module/android/src/main/java/com/aguacerowx/reactnative/InspectorModule.java +64 -0
  185. package/lib/module/android/src/main/java/com/aguacerowx/reactnative/ShaderUtils.java +107 -0
  186. package/lib/module/android/src/main/java/com/aguacerowx/reactnative/WeatherFrameProcessorModule.java +166 -0
  187. package/lib/module/android/src/main/res/raw/debug_fragment_shader.glsl +13 -0
  188. package/lib/module/android/src/main/res/raw/debug_vertex_shader.glsl +13 -0
  189. package/lib/module/android/src/main/res/raw/fragment_shader.glsl +98 -0
  190. package/lib/module/android/src/main/res/raw/vertex_shader.glsl +20 -0
  191. package/lib/module/babel.config.js +5 -0
  192. package/lib/module/babel.config.js.map +1 -0
  193. package/lib/module/index.js +3 -0
  194. package/lib/module/index.js.map +1 -0
  195. package/lib/module/lib/commonjs/README.md +61 -0
  196. package/lib/module/lib/commonjs/android/build.gradle +85 -0
  197. package/lib/module/lib/commonjs/android/src/main/AndroidManifest.xml +7 -0
  198. package/lib/module/lib/commonjs/babel.config.js +7 -0
  199. package/lib/module/lib/commonjs/babel.config.js.map +1 -0
  200. package/lib/module/lib/commonjs/index.js +20 -0
  201. package/lib/module/lib/commonjs/index.js.map +1 -0
  202. package/lib/module/lib/commonjs/package.json +73 -0
  203. package/lib/module/lib/commonjs/react-native-builder-bob.config.js +13 -0
  204. package/lib/module/lib/commonjs/react-native-builder-bob.config.js.map +1 -0
  205. package/lib/module/lib/commonjs/src/AguaceroContext.js +15 -0
  206. package/lib/module/lib/commonjs/src/AguaceroContext.js.map +1 -0
  207. package/lib/module/lib/commonjs/src/GridRenderLayer.js +155 -0
  208. package/lib/module/lib/commonjs/src/GridRenderLayer.js.map +1 -0
  209. package/lib/module/lib/commonjs/src/GridRenderLayerNativeComponent.js +15 -0
  210. package/lib/module/lib/commonjs/src/GridRenderLayerNativeComponent.js.map +1 -0
  211. package/lib/module/lib/commonjs/src/MapManager.js +187 -0
  212. package/lib/module/lib/commonjs/src/MapManager.js.map +1 -0
  213. package/lib/module/lib/commonjs/src/MapRegistry.js +36 -0
  214. package/lib/module/lib/commonjs/src/MapRegistry.js.map +1 -0
  215. package/lib/module/lib/commonjs/src/StyleApplicator.js +286 -0
  216. package/lib/module/lib/commonjs/src/StyleApplicator.js.map +1 -0
  217. package/lib/module/lib/commonjs/src/WeatherLayerManager.js +801 -0
  218. package/lib/module/lib/commonjs/src/WeatherLayerManager.js.map +1 -0
  219. package/lib/module/lib/commonjs/tsconfig.json +24 -0
  220. package/lib/module/package.json +73 -0
  221. package/lib/module/react-native-builder-bob.config.js +11 -0
  222. package/lib/module/react-native-builder-bob.config.js.map +1 -0
  223. package/lib/module/src/AguaceroContext.js +5 -0
  224. package/lib/module/src/AguaceroContext.js.map +1 -0
  225. package/lib/module/src/GridRenderLayer.js +125 -0
  226. package/lib/module/src/GridRenderLayer.js.map +1 -0
  227. package/lib/module/src/GridRenderLayerNativeComponent.js +5 -0
  228. package/lib/module/src/GridRenderLayerNativeComponent.js.map +1 -0
  229. package/lib/module/src/MapManager.js +155 -0
  230. package/lib/module/src/MapManager.js.map +1 -0
  231. package/lib/module/src/MapRegistry.js +30 -0
  232. package/lib/module/src/MapRegistry.js.map +1 -0
  233. package/lib/module/src/StyleApplicator.js +255 -0
  234. package/lib/module/src/StyleApplicator.js.map +1 -0
  235. package/lib/module/src/WeatherLayerManager.js +775 -0
  236. package/lib/module/src/WeatherLayerManager.js.map +1 -0
  237. package/lib/module/tsconfig.json +24 -0
  238. package/lib/typescript/babel.config.d.ts +3 -0
  239. package/lib/typescript/babel.config.d.ts.map +1 -0
  240. package/lib/typescript/index.d.ts +3 -0
  241. package/lib/typescript/index.d.ts.map +1 -0
  242. package/lib/typescript/react-native-builder-bob.config.d.ts +6 -0
  243. package/lib/typescript/react-native-builder-bob.config.d.ts.map +1 -0
  244. package/lib/typescript/src/AguaceroContext.d.ts +2 -0
  245. package/lib/typescript/src/AguaceroContext.d.ts.map +1 -0
  246. package/lib/typescript/src/GridRenderLayer.d.ts +2 -0
  247. package/lib/typescript/src/GridRenderLayer.d.ts.map +1 -0
  248. package/lib/typescript/src/GridRenderLayerNativeComponent.d.ts +12 -0
  249. package/lib/typescript/src/GridRenderLayerNativeComponent.d.ts.map +1 -0
  250. package/lib/typescript/src/MapManager.d.ts +8 -0
  251. package/lib/typescript/src/MapManager.d.ts.map +1 -0
  252. package/lib/typescript/src/MapRegistry.d.ts +12 -0
  253. package/lib/typescript/src/MapRegistry.d.ts.map +1 -0
  254. package/lib/typescript/src/StyleApplicator.d.ts +4 -0
  255. package/lib/typescript/src/StyleApplicator.d.ts.map +1 -0
  256. package/lib/typescript/src/WeatherLayerManager.d.ts +2 -0
  257. package/lib/typescript/src/WeatherLayerManager.d.ts.map +1 -0
  258. package/package.json +53 -15
  259. package/src/AguaceroContext.js +0 -4
  260. package/src/GridRenderLayer.js +0 -121
  261. package/src/MapManager.js +0 -158
  262. package/src/MapRegistry.js +0 -35
  263. package/src/StyleApplicator.js +0 -241
  264. package/src/WeatherLayerManager.js +0 -754
@@ -0,0 +1,801 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.WeatherLayerManager = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _javascriptSdk = require("@aguacerowx/javascript-sdk");
9
+ var _AguaceroContext = require("./AguaceroContext");
10
+ var _GridRenderLayer = require("./GridRenderLayer");
11
+ var _base64Js = require("base64-js");
12
+ var _reactNative = require("react-native");
13
+ var _MapRegistry = require("./MapRegistry");
14
+ function _interopRequireWildcard(e, t) {
15
+ if ("function" == typeof WeakMap) var r = new WeakMap(),
16
+ n = new WeakMap();
17
+ return (_interopRequireWildcard = function (e, t) {
18
+ if (!t && e && e.__esModule) return e;
19
+ var o,
20
+ i,
21
+ f = {
22
+ __proto__: null,
23
+ default: e
24
+ };
25
+ if (null === e || "object" != typeof e && "function" != typeof e) return f;
26
+ if (o = t ? n : r) {
27
+ if (o.has(e)) return o.get(e);
28
+ o.set(e, f);
29
+ }
30
+ for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
31
+ return f;
32
+ })(e, t);
33
+ }
34
+ // packages/react-native/src/WeatherLayerManager.js
35
+
36
+ const {
37
+ WeatherFrameProcessorModule,
38
+ InspectorModule
39
+ } = _reactNative.NativeModules;
40
+
41
+ /**
42
+ * A helper function to generate the raw RGBA byte buffer for the colormap texture.
43
+ */
44
+ const _generateColormapBytes = colormap => {
45
+ const width = 256;
46
+ const data = new Uint8Array(width * 4);
47
+ const stops = colormap.reduce((acc, _, i) => i % 2 === 0 ? [...acc, {
48
+ value: colormap[i],
49
+ color: colormap[i + 1]
50
+ }] : acc, []);
51
+ if (stops.length === 0) return data;
52
+ const minVal = stops[0].value;
53
+ const maxVal = stops[stops.length - 1].value;
54
+ const hexToRgb = hex => {
55
+ const r = parseInt(hex.slice(1, 3), 16);
56
+ const g = parseInt(hex.slice(3, 5), 16);
57
+ const b = parseInt(hex.slice(5, 7), 16);
58
+ return [r, g, b];
59
+ };
60
+ for (let i = 0; i < width; i++) {
61
+ const val = minVal + i / (width - 1) * (maxVal - minVal);
62
+ let lower = stops[0];
63
+ let upper = stops[stops.length - 1];
64
+ for (let j = 0; j < stops.length - 1; j++) {
65
+ if (val >= stops[j].value && val <= stops[j + 1].value) {
66
+ lower = stops[j];
67
+ upper = stops[j + 1];
68
+ break;
69
+ }
70
+ }
71
+ const t = (val - lower.value) / (upper.value - lower.value || 1);
72
+ const lowerRgb = hexToRgb(lower.color);
73
+ const upperRgb = hexToRgb(upper.color);
74
+ const rgb = lowerRgb.map((c, idx) => c * (1 - t) + upperRgb[idx] * t);
75
+ const offset = i * 4;
76
+ data[offset + 0] = Math.round(rgb[0]);
77
+ data[offset + 1] = Math.round(rgb[1]);
78
+ data[offset + 2] = Math.round(rgb[2]);
79
+ data[offset + 3] = 255;
80
+ }
81
+ return data;
82
+ };
83
+ _javascriptSdk.AguaceroCore.prototype.setMapCenter = function (center) {
84
+ this.emit('map:move', center);
85
+ };
86
+ const WeatherLayerManager = exports.WeatherLayerManager = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
87
+ const {
88
+ inspectorEnabled,
89
+ onInspect,
90
+ apiKey,
91
+ customColormaps,
92
+ ...restProps
93
+ } = props;
94
+ const context = (0, _react.useContext)(_AguaceroContext.AguaceroContext);
95
+
96
+ // Create the core here instead of getting it from context
97
+ const core = (0, _react.useMemo)(() => new _javascriptSdk.AguaceroCore({
98
+ apiKey: apiKey,
99
+ customColormaps: customColormaps
100
+ }), [apiKey]);
101
+ const gridLayerRef = (0, _react.useRef)(null);
102
+ const currentGridDataRef = (0, _react.useRef)(null);
103
+
104
+ // Cache for preloaded grid data - stores the processed data ready for GPU upload
105
+ const preloadedDataCache = (0, _react.useRef)(new Map());
106
+
107
+ // Track what we're currently preloading to avoid duplicates
108
+ const preloadingSet = (0, _react.useRef)(new Set());
109
+
110
+ // Store geometry and colormap that don't change with forecast hour
111
+ const cachedGeometry = (0, _react.useRef)(null);
112
+ const cachedColormap = (0, _react.useRef)(null);
113
+ const cachedDataRange = (0, _react.useRef)([0, 1]);
114
+
115
+ // Track if we've done the initial load
116
+ const hasInitialLoad = (0, _react.useRef)(false);
117
+
118
+ // Track the last state we processed to avoid redundant updates
119
+ const lastProcessedState = (0, _react.useRef)(null);
120
+ const previousStateRef = (0, _react.useRef)(null);
121
+ const [renderProps, setRenderProps] = (0, _react.useState)({
122
+ opacity: 1,
123
+ dataRange: [0, 1]
124
+ });
125
+ (0, _react.useImperativeHandle)(ref, () => {
126
+ return {
127
+ play: () => {
128
+ core.play();
129
+ },
130
+ pause: () => {
131
+ core.pause();
132
+ },
133
+ togglePlay: () => {
134
+ core.togglePlay();
135
+ },
136
+ step: direction => {
137
+ core.step(direction);
138
+ },
139
+ setPlaybackSpeed: speed => core.setPlaybackSpeed(speed),
140
+ setOpacity: opacity => core.setOpacity(opacity),
141
+ setUnits: units => core.setUnits(units),
142
+ switchMode: options => core.switchMode(options),
143
+ getAvailableVariables: model => core.getAvailableVariables(model),
144
+ getVariableDisplayName: code => core.getVariableDisplayName(code),
145
+ setRun: runString => core.setState({
146
+ run: runString.split(':')[1]
147
+ }),
148
+ setState: newState => core.setState(newState),
149
+ setMRMSTimestamp: timestamp => core.setMRMSTimestamp(timestamp),
150
+ setSmoothing: enabled => {
151
+ if (gridLayerRef.current) {
152
+ gridLayerRef.current.setSmoothing(enabled);
153
+ }
154
+ }
155
+ };
156
+ }, [core]);
157
+ const preloadAllFramesToDisk = state => {
158
+ const {
159
+ isMRMS,
160
+ model,
161
+ date,
162
+ run,
163
+ variable,
164
+ units,
165
+ availableHours,
166
+ availableTimestamps
167
+ } = state;
168
+ const allFrames = isMRMS ? availableTimestamps : availableHours;
169
+ if (!allFrames || allFrames.length === 0) {
170
+ console.warn('🟡 [preloadAllFramesToDisk] No frames available to download.');
171
+ return;
172
+ }
173
+ const {
174
+ corners,
175
+ gridDef
176
+ } = core._getGridCornersAndDef(isMRMS ? 'mrms' : model);
177
+ const {
178
+ nx,
179
+ ny
180
+ } = gridDef.grid_params;
181
+ let preloadedCount = 0;
182
+ let skippedCount = 0;
183
+ let errorCount = 0;
184
+ for (const frame of allFrames) {
185
+ const cacheKey = isMRMS ? `mrms-${frame}-${variable}-${units}` : `${model}-${date}-${run}-${frame}-${variable}-${units}`;
186
+ if (preloadedDataCache.current.has(cacheKey)) {
187
+ skippedCount++;
188
+ continue;
189
+ }
190
+ let resourcePath;
191
+ if (isMRMS) {
192
+ const frameDate = new Date(frame * 1000);
193
+ const y = frameDate.getUTCFullYear();
194
+ const m = (frameDate.getUTCMonth() + 1).toString().padStart(2, '0');
195
+ const d = frameDate.getUTCDate().toString().padStart(2, '0');
196
+ resourcePath = `/grids/mrms/${y}${m}${d}/${frame}/0/${variable}/0`;
197
+ } else {
198
+ resourcePath = `/grids/${model}/${date}/${run}/${frame}/${variable}/0`;
199
+ }
200
+ const url = `${core.baseGridUrl}${resourcePath}?apiKey=${core.apiKey}`;
201
+ const options = {
202
+ url,
203
+ apiKey: core.apiKey,
204
+ bundleId: core.bundleId
205
+ };
206
+ WeatherFrameProcessorModule.processFrame(options, (error, result) => {
207
+ if (error || !result || !result.filePath) {
208
+ errorCount++;
209
+ console.warn(`⚠️ [preloadAllFramesToDisk] Failed frame ${frame}:`, error || "No filePath");
210
+ return;
211
+ }
212
+ preloadedCount++;
213
+ preloadedDataCache.current.set(cacheKey, {
214
+ filePath: result.filePath,
215
+ nx,
216
+ ny,
217
+ scale: result.scale,
218
+ offset: result.offset,
219
+ missing: result.missing,
220
+ corners,
221
+ gridDef,
222
+ scaleType: result.scaleType,
223
+ originalScale: result.scale,
224
+ // ADD THIS
225
+ originalOffset: result.offset // ADD THIS
226
+ });
227
+
228
+ // ADD THIS: If this frame matches the current state, update GPU immediately
229
+ if (isMRMS && frame === state.mrmsTimestamp || !isMRMS && frame === state.forecastHour) {
230
+ console.log(`🎯 [preloadAllFramesToDisk] Current frame loaded, updating GPU`);
231
+ updateGPUWithCachedData(state);
232
+ }
233
+ });
234
+ }
235
+ };
236
+
237
+ // In WeatherLayerManager.js - Add extensive logging throughout
238
+
239
+ const updateGPUWithCachedData = state => {
240
+ const {
241
+ model,
242
+ date,
243
+ run,
244
+ forecastHour,
245
+ variable,
246
+ units,
247
+ isMRMS,
248
+ mrmsTimestamp
249
+ } = state;
250
+ const cacheKey = isMRMS ? `mrms-${mrmsTimestamp}-${variable}-${units}` : `${model}-${date}-${run}-${forecastHour}-${variable}-${units}`;
251
+ const cachedData = preloadedDataCache.current.get(cacheKey);
252
+ if (!cachedData) {
253
+ const timeKey = isMRMS ? `timestamp ${mrmsTimestamp}` : `hour +${forecastHour}`;
254
+ console.error(`❌ [updateGPUWithCachedData] No cached data for ${timeKey}. Key not found: ${cacheKey}`);
255
+ console.error('❌ [updateGPUWithCachedData] Available keys:', Array.from(preloadedDataCache.current.keys()));
256
+ return false;
257
+ }
258
+ if (!gridLayerRef.current) {
259
+ console.error(`❌ [updateGPUWithCachedData] GridLayer ref not available`);
260
+ return false;
261
+ }
262
+ if (!cachedGeometry.current || cachedGeometry.current.model !== (isMRMS ? 'mrms' : model) || cachedGeometry.current.variable !== variable) {
263
+ gridLayerRef.current.updateGeometry(cachedData.corners, cachedData.gridDef);
264
+ cachedGeometry.current = {
265
+ model: isMRMS ? 'mrms' : model,
266
+ variable
267
+ };
268
+ }
269
+ const colormapKey = `${variable}-${units}`;
270
+ if (!cachedColormap.current || cachedColormap.current.key !== colormapKey) {
271
+ const {
272
+ colormap,
273
+ baseUnit
274
+ } = core._getColormapForVariable(variable);
275
+ const toUnit = core._getTargetUnit(baseUnit, units);
276
+ const finalColormap = core._convertColormapUnits(colormap, baseUnit, toUnit);
277
+ const dataRange = [finalColormap[0], finalColormap[finalColormap.length - 2]];
278
+ const colormapBytes = _generateColormapBytes(finalColormap);
279
+ const colormapAsBase64 = (0, _base64Js.fromByteArray)(colormapBytes);
280
+ gridLayerRef.current.updateColormapTexture(colormapAsBase64);
281
+ cachedColormap.current = {
282
+ key: colormapKey
283
+ };
284
+ cachedDataRange.current = dataRange;
285
+ setRenderProps(prev => ({
286
+ ...prev,
287
+ dataRange
288
+ }));
289
+ }
290
+ if (cachedData.filePath) {
291
+ gridLayerRef.current.updateDataTextureFromFile(cachedData.filePath, cachedData.nx, cachedData.ny, cachedData.scale, cachedData.offset, cachedData.missing, cachedData.scaleType);
292
+
293
+ // ADD THIS: Update inspector cache for file-based data too
294
+ currentGridDataRef.current = {
295
+ nx: cachedData.nx,
296
+ ny: cachedData.ny,
297
+ scale: cachedData.scale,
298
+ offset: cachedData.offset,
299
+ missing: cachedData.missing,
300
+ gridDef: cachedData.gridDef,
301
+ variable: variable,
302
+ units: units
303
+ };
304
+ } else if (cachedData.dataAsBase64) {
305
+ gridLayerRef.current.updateDataTexture(cachedData.dataAsBase64, cachedData.nx, cachedData.ny, cachedData.scale, cachedData.offset, cachedData.missing, cachedData.scaleType);
306
+
307
+ // Update the inspector cache when using dataAsBase64
308
+ const binaryString = atob(cachedData.dataAsBase64);
309
+ const uint8Array = new Uint8Array(binaryString.length);
310
+ for (let i = 0; i < binaryString.length; i++) {
311
+ uint8Array[i] = binaryString.charCodeAt(i);
312
+ }
313
+ currentGridDataRef.current = {
314
+ data: uint8Array,
315
+ nx: cachedData.nx,
316
+ ny: cachedData.ny,
317
+ scale: cachedData.scale,
318
+ offset: cachedData.offset,
319
+ missing: cachedData.missing,
320
+ gridDef: cachedData.gridDef,
321
+ variable: variable,
322
+ units: units
323
+ };
324
+ } else {
325
+ console.error(`❌ [updateGPUWithCachedData] Cached data has no filePath or dataAsBase64!`);
326
+ console.error('❌ [updateGPUWithCachedData] Cached data keys:', Object.keys(cachedData));
327
+ return false;
328
+ }
329
+
330
+ // Update inspector parameters for file-based data too
331
+ if (gridLayerRef.current && gridLayerRef.current.updateDataParameters) {
332
+ gridLayerRef.current.updateDataParameters(cachedData.scale, cachedData.offset, cachedData.missing);
333
+ }
334
+ return true;
335
+ };
336
+ const handleStateChangeRef = (0, _react.useRef)(null);
337
+ const debounceTimeoutRef = (0, _react.useRef)(null);
338
+ (0, _react.useEffect)(() => {
339
+ if (core && props.customColormaps) {
340
+ core.customColormaps = props.customColormaps;
341
+ // Trigger a re-render if we already have data loaded
342
+ if (hasInitialLoad.current) {
343
+ core._emitStateChange();
344
+ }
345
+ }
346
+ }, [core, props.customColormaps]);
347
+ const getValueAtPoint = async (lng, lat) => {
348
+ if (!core) {
349
+ console.warn('🔍 [Inspector] Core not available');
350
+ return null;
351
+ }
352
+
353
+ // ADD THIS: Check if we have valid data before attempting inspection
354
+ if (!currentGridDataRef.current) {
355
+ console.log('🔍 [Inspector] No grid data available');
356
+ return null;
357
+ }
358
+ try {
359
+ const gridIndices = core._getGridIndexFromLngLat(lng, lat);
360
+ if (!gridIndices) return null;
361
+ const {
362
+ i,
363
+ j
364
+ } = gridIndices;
365
+
366
+ // The native module uses the cached scale/offset which we update via updateDataParameters
367
+ const value = await InspectorModule.getValueAtGridIndex(i, j);
368
+ if (value === null) {
369
+ return null;
370
+ }
371
+ const {
372
+ colormap,
373
+ baseUnit
374
+ } = core._getColormapForVariable(core.state.variable);
375
+ const displayUnit = core._getTargetUnit(baseUnit, core.state.units);
376
+
377
+ // Get the converted colormap to check min threshold
378
+ const finalColormap = core._convertColormapUnits(colormap, baseUnit, displayUnit);
379
+ const minThreshold = finalColormap[0]; // First value in colormap is the minimum
380
+
381
+ // Filter out values below the minimum threshold (matching shader behavior)
382
+ if (value < minThreshold) {
383
+ return null;
384
+ }
385
+
386
+ // Also check if value is NaN or effectively missing
387
+ if (!isFinite(value)) {
388
+ return null;
389
+ }
390
+ return {
391
+ value: value,
392
+ unit: displayUnit,
393
+ variable: {
394
+ code: core.state.variable,
395
+ name: core.getVariableDisplayName(core.state.variable)
396
+ },
397
+ lngLat: {
398
+ lng,
399
+ lat
400
+ }
401
+ };
402
+ } catch (error) {
403
+ console.error('🔍 [Inspector] Error:', error);
404
+ return null;
405
+ }
406
+ };
407
+ (0, _react.useEffect)(() => {
408
+ if (!core) {
409
+ console.warn('⚠️ [useEffect] Core is not available yet');
410
+ return;
411
+ }
412
+ const handleStateChange = async newState => {
413
+ if (!previousStateRef.current) {
414
+ previousStateRef.current = core.state;
415
+ }
416
+ const stateKey = `${newState.model}-${newState.variable}-${newState.date}-${newState.run}-${newState.forecastHour}-${newState.units}-${newState.mrmsTimestamp}`;
417
+ const isOpacityOnlyChange = hasInitialLoad.current && newState.opacity !== renderProps.opacity && newState.variable === previousStateRef.current?.variable && newState.forecastHour === previousStateRef.current?.forecastHour && newState.mrmsTimestamp === previousStateRef.current?.mrmsTimestamp && newState.model === previousStateRef.current?.model && newState.units === previousStateRef.current?.units;
418
+ if (!isOpacityOnlyChange && lastProcessedState.current === stateKey) {
419
+ return;
420
+ }
421
+ if (!isOpacityOnlyChange) {
422
+ lastProcessedState.current = stateKey;
423
+ }
424
+ props.onStateChange?.(newState);
425
+ if (isOpacityOnlyChange) {
426
+ setRenderProps(prev => ({
427
+ ...prev,
428
+ opacity: newState.opacity
429
+ }));
430
+ previousStateRef.current = newState;
431
+ return;
432
+ }
433
+
434
+ // Check if only units changed
435
+ const isUnitsOnlyChange = hasInitialLoad.current && newState.model === previousStateRef.current.model && newState.isMRMS === previousStateRef.current.isMRMS && newState.variable === previousStateRef.current.variable && newState.date === previousStateRef.current.date && newState.run === previousStateRef.current.run && newState.forecastHour === previousStateRef.current.forecastHour && newState.mrmsTimestamp === previousStateRef.current.mrmsTimestamp && newState.units !== previousStateRef.current.units;
436
+ if (isUnitsOnlyChange) {
437
+ const {
438
+ variable,
439
+ units,
440
+ isMRMS,
441
+ mrmsTimestamp,
442
+ model,
443
+ date,
444
+ run,
445
+ forecastHour
446
+ } = newState;
447
+ const oldCacheKey = isMRMS ? `mrms-${mrmsTimestamp}-${variable}-${previousStateRef.current.units}` : `${model}-${date}-${run}-${forecastHour}-${variable}-${previousStateRef.current.units}`;
448
+ const cachedData = preloadedDataCache.current.get(oldCacheKey);
449
+ if (cachedData && cachedData.originalScale !== undefined && cachedData.originalOffset !== undefined) {
450
+ const {
451
+ baseUnit
452
+ } = core._getColormapForVariable(variable);
453
+ const toUnit = core._getTargetUnit(baseUnit, units);
454
+ let dataScale = cachedData.originalScale;
455
+ let dataOffset = cachedData.originalOffset;
456
+ if (baseUnit !== toUnit) {
457
+ const conversionFunc = (0, _javascriptSdk.getUnitConversionFunction)(baseUnit, toUnit); // ✅ Use SDK function
458
+ if (conversionFunc) {
459
+ const convertedOffset = conversionFunc(dataOffset);
460
+ const convertedOffsetPlusScale = conversionFunc(dataOffset + dataScale);
461
+ dataScale = convertedOffsetPlusScale - convertedOffset;
462
+ dataOffset = convertedOffset;
463
+ }
464
+ }
465
+
466
+ // ONLY update the inspector cache parameters - don't touch GPU or colormap!
467
+ if (gridLayerRef.current && gridLayerRef.current.updateDataParameters) {
468
+ gridLayerRef.current.updateDataParameters(dataScale, dataOffset, cachedData.missing);
469
+ }
470
+
471
+ // Create new cache entry with new units
472
+ const newCacheKey = isMRMS ? `mrms-${mrmsTimestamp}-${variable}-${units}` : `${model}-${date}-${run}-${forecastHour}-${variable}-${units}`;
473
+ preloadedDataCache.current.set(newCacheKey, {
474
+ ...cachedData,
475
+ scale: dataScale,
476
+ offset: dataOffset
477
+ });
478
+ }
479
+ previousStateRef.current = newState;
480
+ if (newState.opacity !== renderProps.opacity) {
481
+ setRenderProps(prev => ({
482
+ ...prev,
483
+ opacity: newState.opacity
484
+ }));
485
+ }
486
+ return;
487
+ }
488
+ const needsFullLoad = !hasInitialLoad.current || newState.model !== previousStateRef.current.model || newState.isMRMS !== previousStateRef.current.isMRMS || newState.variable !== previousStateRef.current.variable || newState.date !== previousStateRef.current.date || newState.run !== previousStateRef.current.run;
489
+ if (needsFullLoad) {
490
+ if (gridLayerRef.current) {
491
+ gridLayerRef.current.clear();
492
+ }
493
+ preloadedDataCache.current.clear();
494
+ cachedGeometry.current = null;
495
+ cachedColormap.current = null;
496
+
497
+ // ADD THIS: Clear the inspector cache too
498
+ currentGridDataRef.current = null;
499
+ WeatherFrameProcessorModule.cancelAllFrames();
500
+ if (!newState.variable) {
501
+ previousStateRef.current = newState;
502
+ return;
503
+ }
504
+ try {
505
+ const {
506
+ model,
507
+ date,
508
+ run,
509
+ forecastHour,
510
+ variable,
511
+ units,
512
+ isMRMS,
513
+ mrmsTimestamp
514
+ } = newState;
515
+ const gridModel = isMRMS ? 'mrms' : model;
516
+ const {
517
+ corners,
518
+ gridDef
519
+ } = core._getGridCornersAndDef(gridModel);
520
+ const {
521
+ nx,
522
+ ny
523
+ } = gridDef.grid_params;
524
+ let resourcePath;
525
+ if (isMRMS) {
526
+ if (!mrmsTimestamp) {
527
+ previousStateRef.current = newState;
528
+ return;
529
+ }
530
+ const mrmsDate = new Date(mrmsTimestamp * 1000);
531
+ const y = mrmsDate.getUTCFullYear();
532
+ const m = (mrmsDate.getUTCMonth() + 1).toString().padStart(2, '0');
533
+ const d = mrmsDate.getUTCDate().toString().padStart(2, '0');
534
+ resourcePath = `/grids/mrms/${y}${m}${d}/${mrmsTimestamp}/0/${variable}/0`;
535
+ } else {
536
+ resourcePath = `/grids/${model}/${date}/${run}/${forecastHour}/${variable}/0`;
537
+ }
538
+ const url = `${core.baseGridUrl}${resourcePath}?apiKey=${core.apiKey}`;
539
+ const options = {
540
+ url,
541
+ apiKey: core.apiKey,
542
+ bundleId: core.bundleId
543
+ };
544
+ const result = await new Promise((resolve, reject) => {
545
+ WeatherFrameProcessorModule.processFrame(options, (error, res) => {
546
+ if (error) {
547
+ resolve(null);
548
+ } else {
549
+ resolve(res);
550
+ }
551
+ });
552
+ });
553
+ if (!result) {
554
+ hasInitialLoad.current = true;
555
+ previousStateRef.current = newState;
556
+ preloadAllFramesToDisk(newState);
557
+ return;
558
+ }
559
+ if (result && gridLayerRef.current) {
560
+ gridLayerRef.current.updateGeometry(corners, gridDef);
561
+ cachedGeometry.current = {
562
+ model: gridModel,
563
+ variable
564
+ };
565
+ const {
566
+ colormap,
567
+ baseUnit
568
+ } = core._getColormapForVariable(variable);
569
+ const toUnit = core._getTargetUnit(baseUnit, units);
570
+ let dataScale = result.scale;
571
+ let dataOffset = result.offset;
572
+
573
+ // Store original scale/offset for unit conversion later
574
+ const originalScale = result.scale;
575
+ const originalOffset = result.offset;
576
+ if (baseUnit !== toUnit) {
577
+ const conversionFunc = (0, _javascriptSdk.getUnitConversionFunction)(baseUnit, toUnit);
578
+ if (conversionFunc) {
579
+ const convertedOffset = conversionFunc(dataOffset);
580
+ const convertedOffsetPlusScale = conversionFunc(dataOffset + dataScale);
581
+ dataScale = convertedOffsetPlusScale - convertedOffset;
582
+ dataOffset = convertedOffset;
583
+ }
584
+ }
585
+ if (result.dataAsBase64) {
586
+ const binaryString = atob(result.dataAsBase64);
587
+ const uint8Array = new Uint8Array(binaryString.length);
588
+ for (let i = 0; i < binaryString.length; i++) {
589
+ uint8Array[i] = binaryString.charCodeAt(i);
590
+ }
591
+ currentGridDataRef.current = {
592
+ data: uint8Array,
593
+ nx,
594
+ ny,
595
+ scale: dataScale,
596
+ offset: dataOffset,
597
+ missing: result.missing,
598
+ gridDef: gridDef,
599
+ variable: variable,
600
+ units: units
601
+ };
602
+ }
603
+
604
+ // Now upload to GPU
605
+ if (result.filePath) {
606
+ gridLayerRef.current.updateDataTextureFromFile(result.filePath, nx, ny, dataScale, dataOffset, result.missing, result.scaleType);
607
+ } else if (result.dataAsBase64) {
608
+ gridLayerRef.current.updateDataTexture(result.dataAsBase64, nx, ny, dataScale, dataOffset, result.missing, result.scaleType);
609
+ }
610
+ const finalColormap = core._convertColormapUnits(colormap, baseUnit, toUnit);
611
+ const dataRange = [finalColormap[0], finalColormap[finalColormap.length - 2]];
612
+ const colormapBytes = _generateColormapBytes(finalColormap);
613
+ const colormapAsBase64 = (0, _base64Js.fromByteArray)(colormapBytes);
614
+ gridLayerRef.current.updateColormapTexture(colormapAsBase64);
615
+ cachedColormap.current = {
616
+ key: `${variable}-${units}`
617
+ };
618
+ cachedDataRange.current = dataRange;
619
+ setRenderProps({
620
+ opacity: newState.opacity,
621
+ dataRange: dataRange
622
+ });
623
+ hasInitialLoad.current = true;
624
+ const cacheKey = isMRMS ? `mrms-${mrmsTimestamp}-${variable}-${units}` : `${model}-${date}-${run}-${forecastHour}-${variable}-${units}`;
625
+ const dataToCache = {
626
+ nx,
627
+ ny,
628
+ scale: dataScale,
629
+ offset: dataOffset,
630
+ originalScale: originalScale,
631
+ // Store original for unit conversion
632
+ originalOffset: originalOffset,
633
+ // Store original for unit conversion
634
+ missing: result.missing,
635
+ corners,
636
+ gridDef
637
+ };
638
+ if (result.filePath) dataToCache.filePath = result.filePath;
639
+ if (result.dataAsBase64) dataToCache.dataAsBase64 = result.dataAsBase64;
640
+ if (result.scaleType) dataToCache.scaleType = result.scaleType;
641
+ preloadedDataCache.current.set(cacheKey, dataToCache);
642
+ preloadAllFramesToDisk(newState);
643
+ }
644
+ } catch (error) {
645
+ console.error("❌❌❌ [handleStateChange] CRITICAL ERROR:", error);
646
+ console.error("❌ [handleStateChange] Stack:", error.stack);
647
+ }
648
+ } else if (newState.forecastHour !== previousStateRef.current.forecastHour || newState.isMRMS && newState.mrmsTimestamp !== previousStateRef.current.mrmsTimestamp) {
649
+ const success = updateGPUWithCachedData(newState);
650
+ if (!success) {
651
+ console.error('❌ [handleStateChange] GPU update failed - data not in cache yet');
652
+ // Don't try on-demand fetch - just wait for preload to complete
653
+ // Clear the layer since we don't have data yet
654
+ if (gridLayerRef.current) {
655
+ gridLayerRef.current.clear();
656
+ }
657
+ currentGridDataRef.current = null; // ADD THIS LINE - Clear inspector cache when no data
658
+ }
659
+ if (newState.opacity !== renderProps.opacity) {
660
+ setRenderProps(prev => ({
661
+ ...prev,
662
+ opacity: newState.opacity
663
+ }));
664
+ }
665
+ }
666
+ previousStateRef.current = newState;
667
+ };
668
+ handleStateChangeRef.current = handleStateChange;
669
+ const stableHandler = newState => {
670
+ const isOpacityOnlyChange = previousStateRef.current && newState.opacity !== previousStateRef.current.opacity && newState.variable === previousStateRef.current.variable && newState.forecastHour === previousStateRef.current.forecastHour && newState.mrmsTimestamp === previousStateRef.current.mrmsTimestamp && newState.model === previousStateRef.current.model && newState.units === previousStateRef.current.units && newState.date === previousStateRef.current.date && newState.run === previousStateRef.current.run;
671
+ if (isOpacityOnlyChange) {
672
+ if (handleStateChangeRef.current) {
673
+ handleStateChangeRef.current(newState);
674
+ }
675
+ return;
676
+ }
677
+ if (debounceTimeoutRef.current) {
678
+ clearTimeout(debounceTimeoutRef.current);
679
+ }
680
+ debounceTimeoutRef.current = setTimeout(() => {
681
+ if (handleStateChangeRef.current) {
682
+ handleStateChangeRef.current(newState);
683
+ }
684
+ debounceTimeoutRef.current = null;
685
+ }, 50);
686
+ };
687
+ core.on('state:change', stableHandler);
688
+ return () => {
689
+ core.off('state:change', stableHandler);
690
+ if (debounceTimeoutRef.current) {
691
+ clearTimeout(debounceTimeoutRef.current);
692
+ }
693
+ };
694
+ }, [core]);
695
+ (0, _react.useEffect)(() => {
696
+ return () => {
697
+ preloadedDataCache.current.clear();
698
+ hasInitialLoad.current = false;
699
+ lastProcessedState.current = null;
700
+ };
701
+ }, []);
702
+ const lastInspectorUpdateRef = (0, _react.useRef)(0);
703
+ const INSPECTOR_THROTTLE_MS = 50;
704
+ (0, _react.useEffect)(() => {
705
+ if (!core || !inspectorEnabled) {
706
+ return;
707
+ }
708
+ const handleMapMove = async center => {
709
+ if (!center || !Array.isArray(center) || center.length !== 2) {
710
+ return;
711
+ }
712
+
713
+ // Throttle updates
714
+ const now = Date.now();
715
+ if (now - lastInspectorUpdateRef.current < INSPECTOR_THROTTLE_MS) {
716
+ return;
717
+ }
718
+ lastInspectorUpdateRef.current = now;
719
+ const [longitude, latitude] = center;
720
+ const payload = await getValueAtPoint(longitude, latitude);
721
+ onInspect?.(payload);
722
+ };
723
+ core.on('map:move', handleMapMove);
724
+ if (context && context.getCenter) {
725
+ const center = context.getCenter();
726
+ if (center) {
727
+ handleMapMove(center);
728
+ }
729
+ }
730
+ return () => {
731
+ core.off('map:move', handleMapMove);
732
+ };
733
+ }, [inspectorEnabled, onInspect, core, context]);
734
+
735
+ // Add this new useEffect after the existing inspector useEffect
736
+ (0, _react.useEffect)(() => {
737
+ // Trigger re-inspection when state changes (variable, model, forecast hour, etc.)
738
+ if (!core || !inspectorEnabled) {
739
+ return;
740
+ }
741
+ const triggerReinspection = () => {
742
+ const mapRef = _MapRegistry.mapRegistry.getMap();
743
+ const center = mapRef?._currentCenter;
744
+ if (center && Array.isArray(center) && center.length === 2) {
745
+ const [longitude, latitude] = center;
746
+ getValueAtPoint(longitude, latitude).then(payload => {
747
+ onInspect?.(payload);
748
+ });
749
+ }
750
+ };
751
+
752
+ // Small delay to ensure data is loaded before re-inspecting
753
+ const timer = setTimeout(triggerReinspection, 100);
754
+ return () => clearTimeout(timer);
755
+ }, [core?.state?.variable, core?.state?.model, core?.state?.forecastHour, core?.state?.mrmsTimestamp, core?.state?.units, inspectorEnabled, onInspect]);
756
+ (0, _react.useEffect)(() => {
757
+ if (!core) {
758
+ return;
759
+ }
760
+ const handleCameraChange = center => {
761
+ if (core && center) {
762
+ core.setMapCenter(center);
763
+ }
764
+ };
765
+
766
+ // Register with the global registry
767
+ _MapRegistry.mapRegistry.addCameraListener(handleCameraChange);
768
+
769
+ // Try to get initial center
770
+ const mapRef = _MapRegistry.mapRegistry.getMap();
771
+ if (mapRef?._currentCenter) {
772
+ handleCameraChange(mapRef._currentCenter);
773
+ }
774
+ return () => {
775
+ _MapRegistry.mapRegistry.removeCameraListener(handleCameraChange);
776
+ };
777
+ }, [core]);
778
+ (0, _react.useEffect)(() => {
779
+ core.initialize();
780
+ return () => {
781
+ core.destroy();
782
+ };
783
+ }, [core]);
784
+ return /*#__PURE__*/_react.default.createElement(_GridRenderLayer.GridRenderLayer, {
785
+ ref: gridLayerRef,
786
+ opacity: renderProps.opacity,
787
+ dataRange: renderProps.dataRange,
788
+ belowID: "AML_-_terrain"
789
+ });
790
+ });
791
+ WeatherLayerManager.getAvailableVariables = options => {
792
+ if (!options || !options.apiKey) {
793
+ console.error("API key must be provided to get available variables.");
794
+ return [];
795
+ }
796
+ const core = new _javascriptSdk.AguaceroCore({
797
+ apiKey: options.apiKey
798
+ });
799
+ return core.getAvailableVariables('mrms');
800
+ };
801
+ //# sourceMappingURL=WeatherLayerManager.js.map