@maydon_tech/react-native-nitro-maps 0.1.3 → 0.2.0

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 (218) hide show
  1. package/LICENSE +1 -1
  2. package/NitroMap.podspec +1 -1
  3. package/README.md +82 -9
  4. package/android/CMakeLists.txt +4 -1
  5. package/android/gradle.properties +4 -4
  6. package/android/src/main/cpp/ClusterEngineJNI.cpp +198 -0
  7. package/android/src/main/kotlin/com/margelo/nitro/nitromap/NitroMap.kt +397 -0
  8. package/android/src/main/kotlin/com/margelo/nitro/nitromap/NitroMapConfig.kt +53 -0
  9. package/android/src/main/{java → kotlin}/com/margelo/nitro/nitromap/NitroMapPackage.kt +4 -4
  10. package/android/src/main/kotlin/com/margelo/nitro/nitromap/NitroMapView.kt +73 -0
  11. package/android/src/main/kotlin/com/margelo/nitro/nitromap/UserLocationManager.kt +295 -0
  12. package/android/src/main/kotlin/com/margelo/nitro/nitromap/clustering/ClusterIconRenderer.kt +111 -0
  13. package/android/src/main/kotlin/com/margelo/nitro/nitromap/clustering/ClusteringManager.kt +104 -0
  14. package/android/src/main/kotlin/com/margelo/nitro/nitromap/clustering/NitroClusterEngine.kt +166 -0
  15. package/android/src/main/kotlin/com/margelo/nitro/nitromap/markers/MarkerIconFactory.kt +303 -0
  16. package/android/src/main/kotlin/com/margelo/nitro/nitromap/markers/MarkerSelectionHandler.kt +72 -0
  17. package/android/src/main/kotlin/com/margelo/nitro/nitromap/markers/PriceMarkerRenderer.kt +159 -0
  18. package/android/src/main/kotlin/com/margelo/nitro/nitromap/providers/MapProviderFactory.kt +24 -0
  19. package/android/src/main/kotlin/com/margelo/nitro/nitromap/providers/MapProviderInterface.kt +128 -0
  20. package/android/src/main/kotlin/com/margelo/nitro/nitromap/providers/google/GoogleMapDelegate.kt +317 -0
  21. package/android/src/main/kotlin/com/margelo/nitro/nitromap/providers/google/GoogleMapProvider+Clustering.kt +524 -0
  22. package/android/src/main/kotlin/com/margelo/nitro/nitromap/providers/google/GoogleMapProvider+Markers.kt +358 -0
  23. package/android/src/main/kotlin/com/margelo/nitro/nitromap/providers/google/GoogleMapProvider+Overlays.kt +272 -0
  24. package/android/src/main/kotlin/com/margelo/nitro/nitromap/providers/google/GoogleMapProvider+UserLocation.kt +296 -0
  25. package/android/src/main/kotlin/com/margelo/nitro/nitromap/providers/google/GoogleMapProvider.kt +815 -0
  26. package/android/src/main/kotlin/com/margelo/nitro/nitromap/providers/google/MarkerTagData.kt +19 -0
  27. package/ios/Clustering/ClusterIconRenderer.swift +3 -3
  28. package/ios/Location/NitroLocationManager.swift +116 -0
  29. package/ios/MarkerRenderer/MarkerIconFactory.swift +1 -3
  30. package/ios/MarkerRenderer/PriceMarkerRenderer.swift +10 -6
  31. package/ios/NitroMap.swift +279 -13
  32. package/ios/NitroMapConfig/NitroMapConfig.swift +45 -0
  33. package/ios/Providers/{GoogleMapDelegate.swift → Google/GoogleMapDelegate.swift} +48 -23
  34. package/ios/Providers/Google/GoogleMapProvider+Camera.swift +180 -0
  35. package/ios/Providers/Google/GoogleMapProvider+Clustering.swift +541 -0
  36. package/ios/Providers/Google/GoogleMapProvider+Markers.swift +270 -0
  37. package/ios/Providers/Google/GoogleMapProvider+Overlays.swift +245 -0
  38. package/ios/Providers/Google/GoogleMapProvider+UserLocation.swift +180 -0
  39. package/ios/Providers/Google/GoogleMapProvider.swift +342 -0
  40. package/ios/Providers/MapProviderFactory.swift +17 -0
  41. package/ios/Providers/MapProviderProtocol.swift +48 -1
  42. package/ios/Shared/ClusterConfig+Factory.swift +2 -2
  43. package/ios/Shared/MapStyleProvider.swift +6 -4
  44. package/ios/Shared/MarkerSelectionHandler.swift +4 -1
  45. package/ios/Utils/ColorValueExtension.swift +46 -67
  46. package/lib/module/components/ImageMarker.js +39 -29
  47. package/lib/module/components/ImageMarker.js.map +1 -1
  48. package/lib/module/components/Marker.js +118 -0
  49. package/lib/module/components/Marker.js.map +1 -0
  50. package/lib/module/components/NitroCircle.js +92 -0
  51. package/lib/module/components/NitroCircle.js.map +1 -0
  52. package/lib/module/components/NitroMap.js +216 -76
  53. package/lib/module/components/NitroMap.js.map +1 -1
  54. package/lib/module/components/NitroPolygon.js +135 -0
  55. package/lib/module/components/NitroPolygon.js.map +1 -0
  56. package/lib/module/components/NitroPolyline.js +115 -0
  57. package/lib/module/components/NitroPolyline.js.map +1 -0
  58. package/lib/module/components/PriceMarker.js +16 -29
  59. package/lib/module/components/PriceMarker.js.map +1 -1
  60. package/lib/module/context/NitroMapContext.js.map +1 -1
  61. package/lib/module/hooks/useNitroCircle.js +18 -0
  62. package/lib/module/hooks/useNitroCircle.js.map +1 -0
  63. package/lib/module/hooks/useNitroMarker.js +26 -9
  64. package/lib/module/hooks/useNitroMarker.js.map +1 -1
  65. package/lib/module/hooks/useNitroOverlay.js +59 -0
  66. package/lib/module/hooks/useNitroOverlay.js.map +1 -0
  67. package/lib/module/hooks/useNitroPolygon.js +18 -0
  68. package/lib/module/hooks/useNitroPolygon.js.map +1 -0
  69. package/lib/module/hooks/useNitroPolyline.js +18 -0
  70. package/lib/module/hooks/useNitroPolyline.js.map +1 -0
  71. package/lib/module/index.js +5 -0
  72. package/lib/module/index.js.map +1 -1
  73. package/lib/module/types/overlay.js +4 -0
  74. package/lib/module/types/overlay.js.map +1 -0
  75. package/lib/module/types/theme.js +4 -0
  76. package/lib/module/types/theme.js.map +1 -0
  77. package/lib/module/utils/colors.js +41 -13
  78. package/lib/module/utils/colors.js.map +1 -1
  79. package/lib/module/utils/validation.js +45 -0
  80. package/lib/module/utils/validation.js.map +1 -0
  81. package/lib/typescript/src/components/ImageMarker.d.ts.map +1 -1
  82. package/lib/typescript/src/components/Marker.d.ts +34 -0
  83. package/lib/typescript/src/components/Marker.d.ts.map +1 -0
  84. package/lib/typescript/src/components/NitroCircle.d.ts +70 -0
  85. package/lib/typescript/src/components/NitroCircle.d.ts.map +1 -0
  86. package/lib/typescript/src/components/NitroMap.d.ts +60 -3
  87. package/lib/typescript/src/components/NitroMap.d.ts.map +1 -1
  88. package/lib/typescript/src/components/NitroPolygon.d.ts +86 -0
  89. package/lib/typescript/src/components/NitroPolygon.d.ts.map +1 -0
  90. package/lib/typescript/src/components/NitroPolyline.d.ts +84 -0
  91. package/lib/typescript/src/components/NitroPolyline.d.ts.map +1 -0
  92. package/lib/typescript/src/components/PriceMarker.d.ts +0 -5
  93. package/lib/typescript/src/components/PriceMarker.d.ts.map +1 -1
  94. package/lib/typescript/src/context/NitroMapContext.d.ts +2 -0
  95. package/lib/typescript/src/context/NitroMapContext.d.ts.map +1 -1
  96. package/lib/typescript/src/hooks/useNitroCircle.d.ts +7 -0
  97. package/lib/typescript/src/hooks/useNitroCircle.d.ts.map +1 -0
  98. package/lib/typescript/src/hooks/useNitroMarker.d.ts +20 -0
  99. package/lib/typescript/src/hooks/useNitroMarker.d.ts.map +1 -1
  100. package/lib/typescript/src/hooks/useNitroOverlay.d.ts +26 -0
  101. package/lib/typescript/src/hooks/useNitroOverlay.d.ts.map +1 -0
  102. package/lib/typescript/src/hooks/useNitroPolygon.d.ts +7 -0
  103. package/lib/typescript/src/hooks/useNitroPolygon.d.ts.map +1 -0
  104. package/lib/typescript/src/hooks/useNitroPolyline.d.ts +7 -0
  105. package/lib/typescript/src/hooks/useNitroPolyline.d.ts.map +1 -0
  106. package/lib/typescript/src/index.d.ts +15 -2
  107. package/lib/typescript/src/index.d.ts.map +1 -1
  108. package/lib/typescript/src/specs/NitroMap.nitro.d.ts +248 -6
  109. package/lib/typescript/src/specs/NitroMap.nitro.d.ts.map +1 -1
  110. package/lib/typescript/src/types/map.d.ts +34 -4
  111. package/lib/typescript/src/types/map.d.ts.map +1 -1
  112. package/lib/typescript/src/types/marker.d.ts +24 -36
  113. package/lib/typescript/src/types/marker.d.ts.map +1 -1
  114. package/lib/typescript/src/types/overlay.d.ts +75 -0
  115. package/lib/typescript/src/types/overlay.d.ts.map +1 -0
  116. package/lib/typescript/src/types/theme.d.ts +93 -0
  117. package/lib/typescript/src/types/theme.d.ts.map +1 -0
  118. package/lib/typescript/src/utils/colors.d.ts +6 -8
  119. package/lib/typescript/src/utils/colors.d.ts.map +1 -1
  120. package/lib/typescript/src/utils/validation.d.ts +12 -0
  121. package/lib/typescript/src/utils/validation.d.ts.map +1 -0
  122. package/nitrogen/generated/android/c++/JCircleData.hpp +94 -0
  123. package/nitrogen/generated/android/c++/JClusterConfig.hpp +5 -7
  124. package/nitrogen/generated/android/c++/JFunc_void_UserLocationChangeEvent.hpp +79 -0
  125. package/nitrogen/generated/android/c++/JFunc_void_UserTrackingMode.hpp +77 -0
  126. package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
  127. package/nitrogen/generated/android/c++/JHybridNitroMapSpec.cpp +328 -21
  128. package/nitrogen/generated/android/c++/JHybridNitroMapSpec.hpp +53 -2
  129. package/nitrogen/generated/android/c++/JMarkerAnimation.hpp +3 -6
  130. package/nitrogen/generated/android/c++/JMarkerData.hpp +15 -3
  131. package/nitrogen/generated/android/c++/JPolygonData.hpp +149 -0
  132. package/nitrogen/generated/android/c++/JPolylineData.hpp +113 -0
  133. package/nitrogen/generated/android/c++/JUserLocationChangeEvent.hpp +70 -0
  134. package/nitrogen/generated/android/c++/JUserTrackingMode.hpp +62 -0
  135. package/nitrogen/generated/android/c++/views/JHybridNitroMapStateUpdater.cpp +72 -4
  136. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/CircleData.kt +62 -0
  137. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/ClusterConfig.kt +4 -4
  138. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/Func_void_UserLocationChangeEvent.kt +80 -0
  139. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/Func_void_UserTrackingMode.kt +80 -0
  140. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/Func_void_std__string.kt +80 -0
  141. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/HybridNitroMapSpec.kt +228 -2
  142. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/MarkerAnimation.kt +1 -2
  143. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/MarkerData.kt +12 -3
  144. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/PolygonData.kt +62 -0
  145. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/PolylineData.kt +62 -0
  146. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/UserLocationChangeEvent.kt +47 -0
  147. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromap/{ClusterAnimationStyle.kt → UserTrackingMode.kt} +6 -8
  148. package/nitrogen/generated/android/nitromapOnLoad.cpp +6 -0
  149. package/nitrogen/generated/ios/NitroMap-Swift-Cxx-Bridge.cpp +24 -0
  150. package/nitrogen/generated/ios/NitroMap-Swift-Cxx-Bridge.hpp +175 -17
  151. package/nitrogen/generated/ios/NitroMap-Swift-Cxx-Umbrella.hpp +15 -3
  152. package/nitrogen/generated/ios/c++/HybridNitroMapSpecSwift.hpp +249 -16
  153. package/nitrogen/generated/ios/c++/views/HybridNitroMapComponent.mm +90 -5
  154. package/nitrogen/generated/ios/swift/CircleData.swift +143 -0
  155. package/nitrogen/generated/ios/swift/ClusterConfig.swift +22 -15
  156. package/nitrogen/generated/ios/swift/Func_void_UserLocationChangeEvent.swift +47 -0
  157. package/nitrogen/generated/ios/swift/Func_void_UserTrackingMode.swift +47 -0
  158. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
  159. package/nitrogen/generated/ios/swift/HybridNitroMapSpec.swift +35 -1
  160. package/nitrogen/generated/ios/swift/HybridNitroMapSpec_cxx.swift +582 -8
  161. package/nitrogen/generated/ios/swift/MarkerAnimation.swift +4 -8
  162. package/nitrogen/generated/ios/swift/MarkerData.swift +54 -2
  163. package/nitrogen/generated/ios/swift/PolygonData.swift +179 -0
  164. package/nitrogen/generated/ios/swift/PolylineData.swift +155 -0
  165. package/nitrogen/generated/ios/swift/UserLocationChangeEvent.swift +69 -0
  166. package/nitrogen/generated/ios/swift/UserTrackingMode.swift +44 -0
  167. package/nitrogen/generated/shared/c++/CircleData.hpp +113 -0
  168. package/nitrogen/generated/shared/c++/ClusterConfig.hpp +5 -8
  169. package/nitrogen/generated/shared/c++/HybridNitroMapSpec.cpp +53 -2
  170. package/nitrogen/generated/shared/c++/HybridNitroMapSpec.hpp +75 -6
  171. package/nitrogen/generated/shared/c++/MarkerAnimation.hpp +4 -8
  172. package/nitrogen/generated/shared/c++/MarkerData.hpp +14 -2
  173. package/nitrogen/generated/shared/c++/PolygonData.hpp +114 -0
  174. package/nitrogen/generated/shared/c++/PolylineData.hpp +114 -0
  175. package/nitrogen/generated/shared/c++/UserLocationChangeEvent.hpp +88 -0
  176. package/nitrogen/generated/shared/c++/UserTrackingMode.hpp +80 -0
  177. package/nitrogen/generated/shared/c++/views/HybridNitroMapComponent.cpp +216 -12
  178. package/nitrogen/generated/shared/c++/views/HybridNitroMapComponent.hpp +23 -1
  179. package/nitrogen/generated/shared/json/NitroMapConfig.json +18 -1
  180. package/package.json +36 -5
  181. package/src/components/ImageMarker.tsx +58 -42
  182. package/src/components/Marker.tsx +161 -0
  183. package/src/components/NitroCircle.tsx +183 -0
  184. package/src/components/NitroMap.tsx +328 -78
  185. package/src/components/NitroPolygon.tsx +229 -0
  186. package/src/components/NitroPolyline.tsx +208 -0
  187. package/src/components/PriceMarker.tsx +23 -48
  188. package/src/context/NitroMapContext.tsx +4 -0
  189. package/src/hooks/useNitroCircle.ts +25 -0
  190. package/src/hooks/useNitroMarker.ts +49 -10
  191. package/src/hooks/useNitroOverlay.ts +68 -0
  192. package/src/hooks/useNitroPolygon.ts +25 -0
  193. package/src/hooks/useNitroPolyline.ts +25 -0
  194. package/src/index.tsx +23 -2
  195. package/src/specs/NitroMap.nitro.ts +294 -5
  196. package/src/types/map.ts +36 -4
  197. package/src/types/marker.ts +24 -44
  198. package/src/types/overlay.ts +77 -0
  199. package/src/types/theme.ts +101 -0
  200. package/src/utils/colors.ts +48 -16
  201. package/src/utils/validation.ts +69 -0
  202. package/android/src/main/java/com/margelo/nitro/nitromap/ClusterIconGenerator.kt +0 -108
  203. package/android/src/main/java/com/margelo/nitro/nitromap/ColorUtils.kt +0 -63
  204. package/android/src/main/java/com/margelo/nitro/nitromap/HybridNitroMap.kt +0 -408
  205. package/android/src/main/java/com/margelo/nitro/nitromap/HybridNitroMapConfig.kt +0 -68
  206. package/android/src/main/java/com/margelo/nitro/nitromap/MarkerIconCache.kt +0 -176
  207. package/android/src/main/java/com/margelo/nitro/nitromap/MarkerIconFactory.kt +0 -252
  208. package/android/src/main/java/com/margelo/nitro/nitromap/clustering/NitroClusterEngine.kt +0 -252
  209. package/android/src/main/java/com/margelo/nitro/nitromap/clustering/QuadTree.kt +0 -195
  210. package/android/src/main/java/com/margelo/nitro/nitromap/providers/GoogleMapProvider.kt +0 -912
  211. package/android/src/main/java/com/margelo/nitro/nitromap/providers/MapProviderInterface.kt +0 -70
  212. package/cpp/QuadTree.hpp +0 -246
  213. package/ios/NitroMapConfig/HybridNitroMapConfig.swift +0 -33
  214. package/ios/Providers/GoogleMapProvider+Camera.swift +0 -164
  215. package/ios/Providers/GoogleMapProvider.swift +0 -924
  216. package/nitrogen/generated/android/c++/JClusterAnimationStyle.hpp +0 -68
  217. package/nitrogen/generated/ios/swift/ClusterAnimationStyle.swift +0 -52
  218. package/nitrogen/generated/shared/c++/ClusterAnimationStyle.hpp +0 -88
@@ -5,8 +5,8 @@ import React, { forwardRef, useImperativeHandle, useCallback, useEffect, useRef,
5
5
  import { StyleSheet } from 'react-native';
6
6
  import { getHostComponent, callback } from 'react-native-nitro-modules';
7
7
  import { NitroMapContext } from "../context/NitroMapContext.js";
8
- import { getDefaultProvider } from "../modules/index.js";
9
- import { parseColor, Colors } from "../utils/colors.js";
8
+ import { IsNitroMapInitialized } from "../modules/index.js";
9
+ import { parseColor, areColorsEqual, Colors } from "../utils/colors.js";
10
10
 
11
11
  // Re-export all types
12
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -20,18 +20,58 @@ const NitroMapConfig = require('@maydon_tech/react-native-nitro-maps/nitrogen/ge
20
20
  // Get native component
21
21
  const NitroMapHostComponent = getHostComponent('NitroMap', () => NitroMapConfig);
22
22
 
23
- // Extended props with style and children
23
+ // Sentinel region meaning "not set / cleared".
24
+ // Fabric sends `null` when a previously-set optional prop is removed from JSX,
25
+ // and the Nitro SDK's JSIConverter only handles `undefined`, not `null` — crash.
26
+ // React also strips `undefined` prop values (treats them as absent).
27
+ // Workaround: always pass region/initialRegion and use a sentinel with negative
28
+ // deltas that the native side recognizes as "no-op".
29
+ const REGION_UNSET = {
30
+ latitude: 0,
31
+ longitude: 0,
32
+ latitudeDelta: -1,
33
+ longitudeDelta: -1
34
+ };
35
+
36
+ // Default "disabled" cluster config — always passed to native so the prop is
37
+ // never removed (same Fabric null workaround as REGION_UNSET).
38
+ const CLUSTER_CONFIG_DISABLED = {
39
+ enabled: false,
40
+ strategy: 'supercluster',
41
+ radius: 80,
42
+ minimumClusterSize: 2,
43
+ maxZoom: 20,
44
+ backgroundColor: Colors.blue,
45
+ textColor: Colors.white,
46
+ borderWidth: 2,
47
+ borderColor: Colors.white,
48
+ animatesClusters: true,
49
+ animateOnReappear: true,
50
+ animationDuration: 0.3,
51
+ realtimeClustering: false,
52
+ renderBuffer: 0,
53
+ throttleInterval: 150
54
+ };
55
+
56
+ // Extended props with style and children.
57
+ // minZoom, maxZoom, mapPadding are non-optional in the Nitro spec (ADR-009)
58
+ // but optional for consumers — we apply defaults in the component.
59
+ //
60
+ // Generic parameter P narrows the `theme` prop to the correct type for
61
+ // the chosen provider. Defaults to 'google' when provider is omitted.
24
62
 
25
63
  // Ref type
26
64
 
27
65
  /**
28
- * NitroMap - High-performance Google Maps component with native markers
66
+ * NitroMap - High-performance map component with native markers.
67
+ * Supports multiple providers (Google, Apple, Yandex) with type-safe theming.
29
68
  */
30
69
  const NitroMapInner = /*#__PURE__*/forwardRef(({
31
70
  style,
32
71
  children,
33
72
  provider,
34
73
  initialRegion,
74
+ region,
35
75
  showsUserLocation = false,
36
76
  zoomEnabled = true,
37
77
  scrollEnabled = true,
@@ -39,8 +79,13 @@ const NitroMapInner = /*#__PURE__*/forwardRef(({
39
79
  pitchEnabled = true,
40
80
  darkMode = false,
41
81
  mapType = 'standard',
42
- showsMyLocationButton = false,
43
82
  clusterConfig,
83
+ mapPadding,
84
+ showsTraffic = false,
85
+ showsBuildings = true,
86
+ showsCompass = true,
87
+ minZoom,
88
+ maxZoom,
44
89
  onPress,
45
90
  onLongPress,
46
91
  onMapReady,
@@ -51,75 +96,88 @@ const NitroMapInner = /*#__PURE__*/forwardRef(({
51
96
  onMarkerDrag,
52
97
  onMarkerDragEnd,
53
98
  onClusterPress,
99
+ onPolylinePress,
100
+ onPolygonPress,
101
+ onCirclePress,
102
+ onUserLocationChange,
103
+ onUserTrackingModeChange,
104
+ onUserLocationError,
105
+ onMapIdle,
54
106
  onError,
107
+ userTrackingMode = 'none',
108
+ userLocationImage = '',
109
+ userLocationSize = 40,
110
+ userLocationAnchor = {
111
+ x: 0.5,
112
+ y: 0.5
113
+ },
114
+ theme,
115
+ customMapStyle,
55
116
  ...rest
56
117
  }, ref) => {
118
+ // Dev-mode warning for unimplemented providers
119
+ if (__DEV__ && provider && provider !== 'google') {
120
+ console.warn(`[NitroMap] Provider "${provider}" is not yet implemented. ` + 'Falling back to Google Maps. See ROADMAP for provider status.');
121
+ }
122
+
123
+ // Dev-mode deprecation warning for customMapStyle
124
+ if (__DEV__ && customMapStyle && !theme) {
125
+ console.warn('[NitroMap] `customMapStyle` is deprecated. Use `theme` instead.');
126
+ }
127
+
128
+ // Resolve theme → native bridge prop.
129
+ // `theme` takes precedence over deprecated `customMapStyle`.
130
+ // Currently only Google is implemented — theme is passed as customMapStyle.
131
+ // When Apple/Yandex are added, this will route to the correct native prop.
132
+ const resolvedMapStyle = useMemo(() => {
133
+ if (theme) {
134
+ // Google provider: theme is already MapStyleElement[] (GoogleMapTheme)
135
+ // Apple/Yandex: will be handled by their respective native props
136
+ const resolvedProvider = provider ?? 'google';
137
+ if (resolvedProvider === 'google') {
138
+ return theme;
139
+ }
140
+ // Future providers: return undefined here, pass theme via separate native prop
141
+ return undefined;
142
+ }
143
+ return customMapStyle;
144
+ }, [theme, customMapStyle, provider]);
145
+
57
146
  // Native ref
58
147
  const nativeRef = useRef(null);
59
148
 
60
149
  // Marker handlers registry
61
150
  const markerHandlersRef = useRef(new Map());
62
151
 
152
+ // Active marker ID tracking for duplicate detection (__DEV__ only)
153
+ const activeMarkerIdsRef = useRef(new Set());
154
+
63
155
  // Track if map is ready
64
156
  const [isReady, setIsReady] = useState(false);
65
157
 
66
- // Expose methods via ref
67
- useImperativeHandle(ref, () => ({
68
- animateToRegion: (region, duration) => {
69
- nativeRef.current?.animateToRegion(region, duration);
70
- },
71
- fitToCoordinates: (coordinates, edgePadding, animated) => {
72
- nativeRef.current?.fitToCoordinates(coordinates, edgePadding, animated);
73
- },
74
- animateCamera: (camera, duration) => {
75
- nativeRef.current?.animateCamera(camera, duration);
76
- },
77
- getCamera: () => {
78
- if (!nativeRef.current) {
79
- return Promise.reject(new Error('Map not ready'));
80
- }
81
- return nativeRef.current.getCamera();
82
- },
83
- setCamera: camera => {
84
- nativeRef.current?.setCamera(camera);
85
- },
86
- getMapBoundaries: () => {
87
- if (!nativeRef.current) {
88
- return Promise.reject(new Error('Map not ready'));
158
+ // Expose all NitroMapMethods via ref by forwarding calls to the native ref.
159
+ // Uses a Proxy to avoid maintaining a 1:1 list of ~25 wrapper methods.
160
+ useImperativeHandle(ref, () => {
161
+ const handler = {
162
+ get(_target, prop) {
163
+ return (...args) => {
164
+ const native = nativeRef.current;
165
+ if (!native) {
166
+ // Methods that return Promises should reject; void methods silently no-op.
167
+ if (prop === 'getCamera' || prop === 'getMapBoundaries') {
168
+ return Promise.reject(new Error('Map not ready'));
169
+ }
170
+ if (prop === 'pointForCoordinate' || prop === 'coordinateForPoint') {
171
+ throw new Error('Map not ready');
172
+ }
173
+ return undefined;
174
+ }
175
+ return native[prop]?.(...args);
176
+ };
89
177
  }
90
- return nativeRef.current.getMapBoundaries();
91
- },
92
- addMarker: marker => {
93
- nativeRef.current?.addMarker(marker);
94
- },
95
- addMarkers: markers => {
96
- nativeRef.current?.addMarkers(markers);
97
- },
98
- updateMarker: marker => {
99
- nativeRef.current?.updateMarker(marker);
100
- },
101
- removeMarker: id => {
102
- nativeRef.current?.removeMarker(id);
103
- },
104
- clearMarkers: () => {
105
- nativeRef.current?.clearMarkers();
106
- },
107
- setClusteringEnabled: enabled => {
108
- nativeRef.current?.setClusteringEnabled(enabled);
109
- },
110
- refreshClusters: () => {
111
- nativeRef.current?.refreshClusters();
112
- },
113
- selectMarker: id => {
114
- nativeRef.current?.selectMarker(id);
115
- },
116
- setMapStyle: mapStyle => {
117
- nativeRef.current?.setMapStyle(mapStyle);
118
- },
119
- setIsDarkMode: enabled => {
120
- nativeRef.current?.setIsDarkMode(enabled);
121
- }
122
- }));
178
+ };
179
+ return new Proxy({}, handler);
180
+ });
123
181
 
124
182
  // Handle hybridRef callback
125
183
 
@@ -129,17 +187,23 @@ const NitroMapInner = /*#__PURE__*/forwardRef(({
129
187
  onMapReady?.();
130
188
  }, [onMapReady]);
131
189
 
190
+ // Cleanup marker handlers on unmount to prevent memory leaks
191
+ useEffect(() => {
192
+ const handlers = markerHandlersRef.current;
193
+ return () => {
194
+ handlers.clear();
195
+ };
196
+ }, []);
197
+
132
198
  // Safety guard: warn if NitroMapInitialize() was not called before rendering
133
199
  useEffect(() => {
134
- const {
135
- IsNitroMapInitialized
136
- } = require('../modules');
137
200
  if (!IsNitroMapInitialized()) {
138
201
  onError?.({
139
202
  code: 'NOT_INITIALIZED',
140
203
  message: 'NitroMapInitialize() must be called before rendering <NitroMap>. ' + 'Call it in your app entry point or a useEffect before the map mounts.'
141
204
  });
142
205
  }
206
+ // onError is excluded — we only check initialization once on mount.
143
207
  // eslint-disable-next-line react-hooks/exhaustive-deps
144
208
  }, []);
145
209
 
@@ -176,7 +240,9 @@ const NitroMapInner = /*#__PURE__*/forwardRef(({
176
240
  onClusterPress?.(event);
177
241
  }, [onClusterPress]);
178
242
 
179
- // Context value - memoized to prevent unnecessary re-renders
243
+ // Context value uses useRef to create a stable reference that won't
244
+ // trigger re-renders on children. mapRef is mutated in the hybridRef
245
+ // callback, but consumers access it lazily (in effects, not during render).
180
246
  const contextValue = useRef({
181
247
  mapRef: null,
182
248
  registerMarkerHandler: (id, handlers) => {
@@ -187,6 +253,15 @@ const NitroMapInner = /*#__PURE__*/forwardRef(({
187
253
  },
188
254
  getMarkerHandler: id => {
189
255
  return markerHandlersRef.current.get(id);
256
+ },
257
+ trackMarkerId: id => {
258
+ if (__DEV__ && activeMarkerIdsRef.current.has(id)) {
259
+ console.warn(`[NitroMap] Duplicate marker ID "${id}" detected. ` + 'Each marker must have a unique ID. The previous marker with this ID will be replaced.');
260
+ }
261
+ activeMarkerIdsRef.current.add(id);
262
+ },
263
+ untrackMarkerId: id => {
264
+ activeMarkerIdsRef.current.delete(id);
190
265
  }
191
266
  }).current;
192
267
 
@@ -211,8 +286,8 @@ const NitroMapInner = /*#__PURE__*/forwardRef(({
211
286
  borderWidth: clusterConfig.borderWidth ?? 2,
212
287
  borderColor: parseColor(clusterConfig.borderColor) ?? defaultBorderColor,
213
288
  animatesClusters: clusterConfig.animatesClusters ?? true,
289
+ animateOnReappear: clusterConfig.animateOnReappear ?? true,
214
290
  animationDuration: clusterConfig.animationDuration ?? 0.3,
215
- animationStyle: clusterConfig.animationStyle ?? 'default',
216
291
  realtimeClustering: clusterConfig.realtimeClustering ?? false,
217
292
  renderBuffer: clusterConfig.renderBuffer ?? 0,
218
293
  throttleInterval: clusterConfig.throttleInterval ?? 150
@@ -237,15 +312,23 @@ const NitroMapInner = /*#__PURE__*/forwardRef(({
237
312
  onMarkerDrag: callback(handleMarkerDrag),
238
313
  onMarkerDragEnd: callback(handleMarkerDragEnd),
239
314
  onClusterPress: callback(handleClusterPress),
315
+ onPolylinePress: callback(onPolylinePress),
316
+ onPolygonPress: callback(onPolygonPress),
317
+ onCirclePress: callback(onCirclePress),
318
+ onUserLocationChange: callback(onUserLocationChange),
319
+ onUserTrackingModeChange: callback(onUserTrackingModeChange),
320
+ onUserLocationError: callback(onUserLocationError),
321
+ onMapIdle: callback(onMapIdle),
240
322
  onError: callback(onError)
241
- }), [onPress, onLongPress, handleMapReady, onRegionChange, onRegionChangeComplete, handleMarkerPress, handleMarkerDragStart, handleMarkerDrag, handleMarkerDragEnd, handleClusterPress, onError]);
323
+ }), [onPress, onLongPress, handleMapReady, onRegionChange, onRegionChangeComplete, handleMarkerPress, handleMarkerDragStart, handleMarkerDrag, handleMarkerDragEnd, handleClusterPress, onPolylinePress, onPolygonPress, onCirclePress, onUserLocationChange, onUserTrackingModeChange, onUserLocationError, onMapIdle, onError]);
242
324
  return /*#__PURE__*/_jsxs(NitroMapContext.Provider, {
243
325
  value: contextValue,
244
326
  children: [/*#__PURE__*/_jsx(NitroMapHostComponent, {
245
327
  style: combinedStyle,
246
328
  hybridRef: hybridRefCallback,
247
- provider: provider ?? getDefaultProvider(),
248
- initialRegion: initialRegion,
329
+ provider: provider ?? 'google',
330
+ initialRegion: initialRegion ?? REGION_UNSET,
331
+ region: region ?? REGION_UNSET,
249
332
  showsUserLocation: showsUserLocation,
250
333
  zoomEnabled: zoomEnabled,
251
334
  scrollEnabled: scrollEnabled,
@@ -253,8 +336,28 @@ const NitroMapInner = /*#__PURE__*/forwardRef(({
253
336
  pitchEnabled: pitchEnabled,
254
337
  mapType: mapType,
255
338
  darkMode: darkMode,
256
- showsMyLocationButton: showsMyLocationButton,
257
- clusterConfig: parsedClusterConfig,
339
+ clusterConfig: parsedClusterConfig ?? CLUSTER_CONFIG_DISABLED,
340
+ mapPadding: typeof mapPadding === 'number' ? {
341
+ top: mapPadding,
342
+ right: mapPadding,
343
+ bottom: mapPadding,
344
+ left: mapPadding
345
+ } : mapPadding ?? {
346
+ top: 0,
347
+ right: 0,
348
+ bottom: 0,
349
+ left: 0
350
+ },
351
+ showsCompass: showsCompass,
352
+ showsTraffic: showsTraffic,
353
+ showsBuildings: showsBuildings,
354
+ minZoom: minZoom ?? 1,
355
+ maxZoom: maxZoom ?? 22,
356
+ userTrackingMode: userTrackingMode,
357
+ userLocationImage: userLocationImage,
358
+ userLocationSize: userLocationSize,
359
+ userLocationAnchor: userLocationAnchor,
360
+ customMapStyle: resolvedMapStyle ?? [],
258
361
  onPress: memoizedCallbacks.onPress,
259
362
  onLongPress: memoizedCallbacks.onLongPress,
260
363
  onMapReady: memoizedCallbacks.onMapReady,
@@ -265,18 +368,41 @@ const NitroMapInner = /*#__PURE__*/forwardRef(({
265
368
  onMarkerDrag: memoizedCallbacks.onMarkerDrag,
266
369
  onMarkerDragEnd: memoizedCallbacks.onMarkerDragEnd,
267
370
  onClusterPress: memoizedCallbacks.onClusterPress,
371
+ onPolylinePress: memoizedCallbacks.onPolylinePress,
372
+ onPolygonPress: memoizedCallbacks.onPolygonPress,
373
+ onCirclePress: memoizedCallbacks.onCirclePress,
374
+ onUserLocationChange: memoizedCallbacks.onUserLocationChange,
375
+ onUserTrackingModeChange: memoizedCallbacks.onUserTrackingModeChange,
376
+ onUserLocationError: memoizedCallbacks.onUserLocationError,
377
+ onMapIdle: memoizedCallbacks.onMapIdle,
268
378
  onError: memoizedCallbacks.onError,
269
379
  ...rest
270
380
  }), isReady && children]
271
381
  });
272
382
  });
273
- NitroMapInner.displayName = 'NitroMap';
383
+ NitroMapInner.displayName = 'NitroMapInner';
274
384
 
275
385
  // ============ Custom Props Comparison ============
276
386
  // Deep compare map props to prevent unnecessary re-renders
277
387
  const areMapPropsEqual = (prevProps, nextProps) => {
278
388
  // Compare primitive props
279
- if (prevProps.provider !== nextProps.provider || prevProps.showsUserLocation !== nextProps.showsUserLocation || prevProps.zoomEnabled !== nextProps.zoomEnabled || prevProps.scrollEnabled !== nextProps.scrollEnabled || prevProps.rotateEnabled !== nextProps.rotateEnabled || prevProps.pitchEnabled !== nextProps.pitchEnabled || prevProps.darkMode !== nextProps.darkMode || prevProps.mapType !== nextProps.mapType || prevProps.showsMyLocationButton !== nextProps.showsMyLocationButton) {
389
+ if (prevProps.provider !== nextProps.provider || prevProps.showsUserLocation !== nextProps.showsUserLocation || prevProps.userTrackingMode !== nextProps.userTrackingMode || prevProps.userLocationImage !== nextProps.userLocationImage || prevProps.userLocationSize !== nextProps.userLocationSize || prevProps.userLocationAnchor?.x !== nextProps.userLocationAnchor?.x || prevProps.userLocationAnchor?.y !== nextProps.userLocationAnchor?.y || prevProps.zoomEnabled !== nextProps.zoomEnabled || prevProps.scrollEnabled !== nextProps.scrollEnabled || prevProps.rotateEnabled !== nextProps.rotateEnabled || prevProps.pitchEnabled !== nextProps.pitchEnabled || prevProps.darkMode !== nextProps.darkMode || prevProps.mapType !== nextProps.mapType || prevProps.showsTraffic !== nextProps.showsTraffic || prevProps.showsBuildings !== nextProps.showsBuildings || prevProps.showsCompass !== nextProps.showsCompass || prevProps.minZoom !== nextProps.minZoom || prevProps.maxZoom !== nextProps.maxZoom || prevProps.theme !== nextProps.theme || prevProps.customMapStyle !== nextProps.customMapStyle) {
390
+ return false;
391
+ }
392
+
393
+ // Compare mapPadding (handles number | EdgePadding union)
394
+ const prevPadding = prevProps.mapPadding;
395
+ const nextPadding = nextProps.mapPadding;
396
+ if (typeof prevPadding !== typeof nextPadding) {
397
+ return false;
398
+ }
399
+ if (typeof prevPadding === 'number') {
400
+ if (prevPadding !== nextPadding) return false;
401
+ } else if (prevPadding && nextPadding && typeof nextPadding === 'object') {
402
+ if (prevPadding.top !== nextPadding.top || prevPadding.right !== nextPadding.right || prevPadding.bottom !== nextPadding.bottom || prevPadding.left !== nextPadding.left) {
403
+ return false;
404
+ }
405
+ } else if (prevPadding !== nextPadding) {
280
406
  return false;
281
407
  }
282
408
 
@@ -295,7 +421,7 @@ const areMapPropsEqual = (prevProps, nextProps) => {
295
421
  const prevCluster = prevProps.clusterConfig;
296
422
  const nextCluster = nextProps.clusterConfig;
297
423
  if (prevCluster && nextCluster) {
298
- if (prevCluster.enabled !== nextCluster.enabled || prevCluster.strategy !== nextCluster.strategy || prevCluster.radius !== nextCluster.radius || prevCluster.minimumClusterSize !== nextCluster.minimumClusterSize || prevCluster.maxZoom !== nextCluster.maxZoom || prevCluster.animatesClusters !== nextCluster.animatesClusters || prevCluster.animationDuration !== nextCluster.animationDuration || prevCluster.animationStyle !== nextCluster.animationStyle || prevCluster.realtimeClustering !== nextCluster.realtimeClustering || prevCluster.renderBuffer !== nextCluster.renderBuffer || prevCluster.throttleInterval !== nextCluster.throttleInterval) {
424
+ if (prevCluster.enabled !== nextCluster.enabled || prevCluster.strategy !== nextCluster.strategy || prevCluster.radius !== nextCluster.radius || prevCluster.minimumClusterSize !== nextCluster.minimumClusterSize || prevCluster.maxZoom !== nextCluster.maxZoom || prevCluster.animatesClusters !== nextCluster.animatesClusters || prevCluster.animateOnReappear !== nextCluster.animateOnReappear || prevCluster.animationDuration !== nextCluster.animationDuration || prevCluster.borderWidth !== nextCluster.borderWidth || prevCluster.realtimeClustering !== nextCluster.realtimeClustering || prevCluster.renderBuffer !== nextCluster.renderBuffer || prevCluster.throttleInterval !== nextCluster.throttleInterval || !areColorsEqual(prevCluster.backgroundColor, nextCluster.backgroundColor) || !areColorsEqual(prevCluster.textColor, nextCluster.textColor) || !areColorsEqual(prevCluster.borderColor, nextCluster.borderColor)) {
299
425
  return false;
300
426
  }
301
427
  } else if (prevCluster !== nextCluster) {
@@ -320,13 +446,27 @@ const areMapPropsEqual = (prevProps, nextProps) => {
320
446
  return true;
321
447
  };
322
448
 
449
+ // ============ Generic Component Type ============
450
+ // React's forwardRef + memo erase generics, so we define a generic
451
+ // function signature and cast the memoized component to it.
452
+ // This lets consumers write <NitroMap provider="apple" theme={...} />
453
+ // and get proper type narrowing on the `theme` prop.
454
+
455
+ /**
456
+ * Generic NitroMap component type that preserves provider-aware theme typing.
457
+ */
458
+
323
459
  // Memoized NitroMap to prevent unnecessary re-renders
324
- const NitroMap = /*#__PURE__*/memo(NitroMapInner, areMapPropsEqual);
460
+ const NitroMapMemoized = /*#__PURE__*/memo(NitroMapInner, areMapPropsEqual);
461
+
462
+ // Cast to generic component type so consumers get provider-aware theme narrowing
463
+ const NitroMap = NitroMapMemoized;
464
+ NitroMap.displayName = 'NitroMap';
325
465
  const styles = StyleSheet.create({
326
466
  default: {
327
467
  flex: 1
328
468
  }
329
469
  });
330
- export { NitroMap };
470
+ export { NitroMap, areMapPropsEqual };
331
471
  export default NitroMap;
332
472
  //# sourceMappingURL=NitroMap.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","forwardRef","useImperativeHandle","useCallback","useEffect","useRef","useState","useMemo","memo","StyleSheet","getHostComponent","callback","NitroMapContext","getDefaultProvider","parseColor","Colors","jsx","_jsx","jsxs","_jsxs","NitroMapConfig","require","NitroMapHostComponent","NitroMapInner","style","children","provider","initialRegion","showsUserLocation","zoomEnabled","scrollEnabled","rotateEnabled","pitchEnabled","darkMode","mapType","showsMyLocationButton","clusterConfig","onPress","onLongPress","onMapReady","onRegionChange","onRegionChangeComplete","onMarkerPress","onMarkerDragStart","onMarkerDrag","onMarkerDragEnd","onClusterPress","onError","rest","ref","nativeRef","markerHandlersRef","Map","isReady","setIsReady","animateToRegion","region","duration","current","fitToCoordinates","coordinates","edgePadding","animated","animateCamera","camera","getCamera","Promise","reject","Error","setCamera","getMapBoundaries","addMarker","marker","addMarkers","markers","updateMarker","removeMarker","id","clearMarkers","setClusteringEnabled","enabled","refreshClusters","selectMarker","setMapStyle","mapStyle","setIsDarkMode","handleMapReady","IsNitroMapInitialized","code","message","handleMarkerPress","event","handlers","get","handleMarkerDragStart","onDragStart","coordinate","handleMarkerDrag","onDrag","handleMarkerDragEnd","onDragEnd","handleClusterPress","contextValue","mapRef","registerMarkerHandler","set","unregisterMarkerHandler","delete","getMarkerHandler","combinedStyle","styles","default","parsedClusterConfig","undefined","defaultColor","blue","defaultTextColor","white","defaultBorderColor","strategy","radius","minimumClusterSize","maxZoom","backgroundColor","textColor","borderWidth","borderColor","animatesClusters","animationDuration","animationStyle","realtimeClustering","renderBuffer","throttleInterval","hybridRefCallback","native","memoizedCallbacks","Provider","value","hybridRef","displayName","areMapPropsEqual","prevProps","nextProps","prevRegion","nextRegion","latitude","longitude","latitudeDelta","longitudeDelta","prevCluster","nextCluster","NitroMap","create","flex"],"sourceRoot":"../../../src","sources":["components/NitroMap.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","forwardRef","useImperativeHandle","useCallback","useEffect","useRef","useState","useMemo","memo","StyleSheet","getHostComponent","callback","NitroMapContext","IsNitroMapInitialized","parseColor","areColorsEqual","Colors","jsx","_jsx","jsxs","_jsxs","NitroMapConfig","require","NitroMapHostComponent","REGION_UNSET","latitude","longitude","latitudeDelta","longitudeDelta","CLUSTER_CONFIG_DISABLED","enabled","strategy","radius","minimumClusterSize","maxZoom","backgroundColor","blue","textColor","white","borderWidth","borderColor","animatesClusters","animateOnReappear","animationDuration","realtimeClustering","renderBuffer","throttleInterval","NitroMapInner","style","children","provider","initialRegion","region","showsUserLocation","zoomEnabled","scrollEnabled","rotateEnabled","pitchEnabled","darkMode","mapType","clusterConfig","mapPadding","showsTraffic","showsBuildings","showsCompass","minZoom","onPress","onLongPress","onMapReady","onRegionChange","onRegionChangeComplete","onMarkerPress","onMarkerDragStart","onMarkerDrag","onMarkerDragEnd","onClusterPress","onPolylinePress","onPolygonPress","onCirclePress","onUserLocationChange","onUserTrackingModeChange","onUserLocationError","onMapIdle","onError","userTrackingMode","userLocationImage","userLocationSize","userLocationAnchor","x","y","theme","customMapStyle","rest","ref","__DEV__","console","warn","resolvedMapStyle","resolvedProvider","undefined","nativeRef","markerHandlersRef","Map","activeMarkerIdsRef","Set","isReady","setIsReady","handler","get","_target","prop","args","native","current","Promise","reject","Error","Proxy","handleMapReady","handlers","clear","code","message","handleMarkerPress","event","id","handleMarkerDragStart","onDragStart","coordinate","handleMarkerDrag","onDrag","handleMarkerDragEnd","onDragEnd","handleClusterPress","contextValue","mapRef","registerMarkerHandler","set","unregisterMarkerHandler","delete","getMarkerHandler","trackMarkerId","has","add","untrackMarkerId","combinedStyle","styles","default","parsedClusterConfig","defaultColor","defaultTextColor","defaultBorderColor","hybridRefCallback","memoizedCallbacks","Provider","value","hybridRef","top","right","bottom","left","displayName","areMapPropsEqual","prevProps","nextProps","prevPadding","nextPadding","prevRegion","nextRegion","prevCluster","nextCluster","NitroMapMemoized","NitroMap","create","flex"],"sourceRoot":"../../../src","sources":["components/NitroMap.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ // src/components/NitroPolygon.tsx
4
+ import { memo, useCallback, useEffect, useRef } from 'react';
5
+ import { useNitroPolygon } from "../hooks/useNitroPolygon.js";
6
+ import { parseColor, areColorsEqual, Colors } from "../utils/colors.js";
7
+ import { validateCoordinates } from "../utils/validation.js";
8
+
9
+ /**
10
+ * Props for the NitroPolygon component
11
+ */
12
+
13
+ // ID generator — monotonic counter, unique within a JS runtime session
14
+ let polygonIdCounter = 0;
15
+ const generatePolygonId = () => `polygon_${++polygonIdCounter}`;
16
+
17
+ // Default colors
18
+ const defaultFillColor = {
19
+ r: 0,
20
+ g: 0,
21
+ b: 0,
22
+ a: 77
23
+ }; // ~30% opacity black
24
+ const defaultStrokeColor = Colors.black;
25
+
26
+ // ============ Custom Memo Comparison ============
27
+ const arePropsEqual = (prev, next) => {
28
+ // Compare primitives
29
+ if (prev.id !== next.id || prev.strokeWidth !== next.strokeWidth || prev.zIndex !== next.zIndex || prev.tappable !== next.tappable || prev.accessibilityLabel !== next.accessibilityLabel) {
30
+ return false;
31
+ }
32
+ if (!areColorsEqual(prev.fillColor, next.fillColor)) return false;
33
+ if (!areColorsEqual(prev.strokeColor, next.strokeColor)) return false;
34
+
35
+ // Compare coordinates array (deep)
36
+ const prevCoords = prev.coordinates;
37
+ const nextCoords = next.coordinates;
38
+ if (prevCoords.length !== nextCoords.length) return false;
39
+ for (let i = 0; i < prevCoords.length; i++) {
40
+ if (prevCoords[i].latitude !== nextCoords[i].latitude || prevCoords[i].longitude !== nextCoords[i].longitude) {
41
+ return false;
42
+ }
43
+ }
44
+
45
+ // Compare holes
46
+ const prevHoles = prev.holes ?? [];
47
+ const nextHoles = next.holes ?? [];
48
+ if (prevHoles.length !== nextHoles.length) return false;
49
+ for (let i = 0; i < prevHoles.length; i++) {
50
+ const ph = prevHoles[i];
51
+ const nh = nextHoles[i];
52
+ if (ph.length !== nh.length) return false;
53
+ for (let j = 0; j < ph.length; j++) {
54
+ if (ph[j].latitude !== nh[j].latitude || ph[j].longitude !== nh[j].longitude) {
55
+ return false;
56
+ }
57
+ }
58
+ }
59
+ return true;
60
+ };
61
+
62
+ /**
63
+ * NitroPolygon - Draw a closed polygon shape on the map
64
+ *
65
+ * @example Basic polygon
66
+ * ```tsx
67
+ * <NitroPolygon
68
+ * coordinates={[
69
+ * { latitude: 41.29, longitude: 69.24 },
70
+ * { latitude: 41.31, longitude: 69.28 },
71
+ * { latitude: 41.33, longitude: 69.26 },
72
+ * ]}
73
+ * fillColor="#4285F440"
74
+ * strokeColor="#4285F4"
75
+ * strokeWidth={2}
76
+ * />
77
+ * ```
78
+ *
79
+ * @example Polygon with a hole
80
+ * ```tsx
81
+ * <NitroPolygon
82
+ * coordinates={outerBoundary}
83
+ * holes={[innerHole]}
84
+ * fillColor="#FF000040"
85
+ * strokeColor="#FF0000"
86
+ * />
87
+ * ```
88
+ */
89
+ export const NitroPolygon = /*#__PURE__*/memo(function NitroPolygon({
90
+ id,
91
+ coordinates,
92
+ holes = [],
93
+ fillColor,
94
+ strokeColor,
95
+ strokeWidth = 1,
96
+ zIndex = 0,
97
+ tappable = false,
98
+ accessibilityLabel
99
+ }) {
100
+ useEffect(() => {
101
+ if (__DEV__) {
102
+ if (coordinates.length < 3) {
103
+ console.warn('NitroPolygon: at least 3 coordinates are required to render a visible polygon. ' + `Received ${coordinates.length}.`);
104
+ }
105
+ validateCoordinates(coordinates, 'NitroPolygon');
106
+ holes.forEach((hole, i) => validateCoordinates(hole, `NitroPolygon hole[${i}]`));
107
+ }
108
+ // eslint-disable-next-line react-hooks/exhaustive-deps
109
+ }, []);
110
+
111
+ // Generate stable ID
112
+ const polygonId = useRef(id || generatePolygonId()).current;
113
+
114
+ // Build polygon data
115
+ const buildPolygonData = useCallback(() => ({
116
+ id: polygonId,
117
+ coordinates,
118
+ holes,
119
+ fillColor: parseColor(fillColor) ?? defaultFillColor,
120
+ strokeColor: parseColor(strokeColor) ?? defaultStrokeColor,
121
+ strokeWidth,
122
+ zIndex,
123
+ tappable,
124
+ accessibilityLabel
125
+ }), [polygonId, coordinates, holes, fillColor, strokeColor, strokeWidth, zIndex, tappable, accessibilityLabel]);
126
+
127
+ // Use polygon lifecycle hook
128
+ useNitroPolygon(buildPolygonData);
129
+
130
+ // Render nothing — polygon is rendered natively
131
+ return null;
132
+ }, arePropsEqual);
133
+ export { arePropsEqual as arePolygonPropsEqual };
134
+ export default NitroPolygon;
135
+ //# sourceMappingURL=NitroPolygon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memo","useCallback","useEffect","useRef","useNitroPolygon","parseColor","areColorsEqual","Colors","validateCoordinates","polygonIdCounter","generatePolygonId","defaultFillColor","r","g","b","a","defaultStrokeColor","black","arePropsEqual","prev","next","id","strokeWidth","zIndex","tappable","accessibilityLabel","fillColor","strokeColor","prevCoords","coordinates","nextCoords","length","i","latitude","longitude","prevHoles","holes","nextHoles","ph","nh","j","NitroPolygon","__DEV__","console","warn","forEach","hole","polygonId","current","buildPolygonData","arePolygonPropsEqual"],"sourceRoot":"../../../src","sources":["components/NitroPolygon.tsx"],"mappings":";;AAAA;AACA,SAASA,IAAI,EAAEC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAC5D,SAASC,eAAe,QAAQ,6BAA0B;AAG1D,SACEC,UAAU,EACVC,cAAc,EAEdC,MAAM,QACD,oBAAiB;AACxB,SAASC,mBAAmB,QAAQ,wBAAqB;;AAGzD;AACA;AACA;;AA2DA;AACA,IAAIC,gBAAgB,GAAG,CAAC;AACxB,MAAMC,iBAAiB,GAAGA,CAAA,KAAc,WAAW,EAAED,gBAAgB,EAAE;;AAEvE;AACA,MAAME,gBAA6B,GAAG;EAAEC,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE,CAAC;EAAEC,CAAC,EAAE;AAAG,CAAC,CAAC,CAAC;AACnE,MAAMC,kBAA+B,GAAGT,MAAM,CAACU,KAAK;;AAEpD;AACA,MAAMC,aAAa,GAAGA,CACpBC,IAAuB,EACvBC,IAAuB,KACX;EACZ;EACA,IACED,IAAI,CAACE,EAAE,KAAKD,IAAI,CAACC,EAAE,IACnBF,IAAI,CAACG,WAAW,KAAKF,IAAI,CAACE,WAAW,IACrCH,IAAI,CAACI,MAAM,KAAKH,IAAI,CAACG,MAAM,IAC3BJ,IAAI,CAACK,QAAQ,KAAKJ,IAAI,CAACI,QAAQ,IAC/BL,IAAI,CAACM,kBAAkB,KAAKL,IAAI,CAACK,kBAAkB,EACnD;IACA,OAAO,KAAK;EACd;EAEA,IAAI,CAACnB,cAAc,CAACa,IAAI,CAACO,SAAS,EAAEN,IAAI,CAACM,SAAS,CAAC,EAAE,OAAO,KAAK;EACjE,IAAI,CAACpB,cAAc,CAACa,IAAI,CAACQ,WAAW,EAAEP,IAAI,CAACO,WAAW,CAAC,EAAE,OAAO,KAAK;;EAErE;EACA,MAAMC,UAAU,GAAGT,IAAI,CAACU,WAAW;EACnC,MAAMC,UAAU,GAAGV,IAAI,CAACS,WAAW;EACnC,IAAID,UAAU,CAACG,MAAM,KAAKD,UAAU,CAACC,MAAM,EAAE,OAAO,KAAK;EACzD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,UAAU,CAACG,MAAM,EAAEC,CAAC,EAAE,EAAE;IAC1C,IACEJ,UAAU,CAACI,CAAC,CAAC,CAAEC,QAAQ,KAAKH,UAAU,CAACE,CAAC,CAAC,CAAEC,QAAQ,IACnDL,UAAU,CAACI,CAAC,CAAC,CAAEE,SAAS,KAAKJ,UAAU,CAACE,CAAC,CAAC,CAAEE,SAAS,EACrD;MACA,OAAO,KAAK;IACd;EACF;;EAEA;EACA,MAAMC,SAAS,GAAGhB,IAAI,CAACiB,KAAK,IAAI,EAAE;EAClC,MAAMC,SAAS,GAAGjB,IAAI,CAACgB,KAAK,IAAI,EAAE;EAClC,IAAID,SAAS,CAACJ,MAAM,KAAKM,SAAS,CAACN,MAAM,EAAE,OAAO,KAAK;EACvD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGG,SAAS,CAACJ,MAAM,EAAEC,CAAC,EAAE,EAAE;IACzC,MAAMM,EAAE,GAAGH,SAAS,CAACH,CAAC,CAAE;IACxB,MAAMO,EAAE,GAAGF,SAAS,CAACL,CAAC,CAAE;IACxB,IAAIM,EAAE,CAACP,MAAM,KAAKQ,EAAE,CAACR,MAAM,EAAE,OAAO,KAAK;IACzC,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,EAAE,CAACP,MAAM,EAAES,CAAC,EAAE,EAAE;MAClC,IACEF,EAAE,CAACE,CAAC,CAAC,CAAEP,QAAQ,KAAKM,EAAE,CAACC,CAAC,CAAC,CAAEP,QAAQ,IACnCK,EAAE,CAACE,CAAC,CAAC,CAAEN,SAAS,KAAKK,EAAE,CAACC,CAAC,CAAC,CAAEN,SAAS,EACrC;QACA,OAAO,KAAK;MACd;IACF;EACF;EAEA,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMO,YAAY,gBAAGzC,IAAI,CAAC,SAASyC,YAAYA,CAAC;EACrDpB,EAAE;EACFQ,WAAW;EACXO,KAAK,GAAG,EAAE;EACVV,SAAS;EACTC,WAAW;EACXL,WAAW,GAAG,CAAC;EACfC,MAAM,GAAG,CAAC;EACVC,QAAQ,GAAG,KAAK;EAChBC;AACiB,CAAC,EAAE;EACpBvB,SAAS,CAAC,MAAM;IACd,IAAIwC,OAAO,EAAE;MACX,IAAIb,WAAW,CAACE,MAAM,GAAG,CAAC,EAAE;QAC1BY,OAAO,CAACC,IAAI,CACV,iFAAiF,GAC/E,YAAYf,WAAW,CAACE,MAAM,GAClC,CAAC;MACH;MACAvB,mBAAmB,CAACqB,WAAW,EAAE,cAAc,CAAC;MAChDO,KAAK,CAACS,OAAO,CAAC,CAACC,IAAI,EAAEd,CAAC,KACpBxB,mBAAmB,CAACsC,IAAI,EAAE,qBAAqBd,CAAC,GAAG,CACrD,CAAC;IACH;IACA;EACF,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMe,SAAS,GAAG5C,MAAM,CAACkB,EAAE,IAAIX,iBAAiB,CAAC,CAAC,CAAC,CAACsC,OAAO;;EAE3D;EACA,MAAMC,gBAAgB,GAAGhD,WAAW,CAClC,OAAoB;IAClBoB,EAAE,EAAE0B,SAAS;IACblB,WAAW;IACXO,KAAK;IACLV,SAAS,EAAErB,UAAU,CAACqB,SAAS,CAAC,IAAIf,gBAAgB;IACpDgB,WAAW,EAAEtB,UAAU,CAACsB,WAAW,CAAC,IAAIX,kBAAkB;IAC1DM,WAAW;IACXC,MAAM;IACNC,QAAQ;IACRC;EACF,CAAC,CAAC,EACF,CACEsB,SAAS,EACTlB,WAAW,EACXO,KAAK,EACLV,SAAS,EACTC,WAAW,EACXL,WAAW,EACXC,MAAM,EACNC,QAAQ,EACRC,kBAAkB,CAEtB,CAAC;;EAED;EACArB,eAAe,CAAC6C,gBAAgB,CAAC;;EAEjC;EACA,OAAO,IAAI;AACb,CAAC,EACD/B,aAAa,CAAC;AAEd,SAASA,aAAa,IAAIgC,oBAAoB;AAC9C,eAAeT,YAAY","ignoreList":[]}