@lugg/maps 0.2.0-alpha.14 → 0.2.0-alpha.15

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.
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { forwardRef, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';
4
- import { View } from 'react-native';
4
+ import { View, StyleSheet } from 'react-native';
5
5
  import { Map, useMap } from '@vis.gl/react-google-maps';
6
6
  import { Marker } from "./components/Marker.web.js";
7
7
  import { MapIdContext } from "./MapProvider.web.js";
@@ -88,6 +88,8 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
88
88
  const id = useId();
89
89
  const map = useMap(id);
90
90
  const readyFired = useRef(false);
91
+ const isDragging = useRef(false);
92
+ const wasGesture = useRef(false);
91
93
  useImperativeHandle(ref, () => ({
92
94
  moveCamera(coordinate, options) {
93
95
  if (!map) return;
@@ -148,48 +150,43 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
148
150
  onReady?.();
149
151
  }
150
152
  }, [map, onReady]);
151
- useEffect(() => {
152
- if (!map) return;
153
- const createPayload = gesture => {
154
- const center = map.getCenter();
155
- return {
156
- coordinate: {
157
- latitude: center?.lat() ?? 0,
158
- longitude: center?.lng() ?? 0
159
- },
160
- zoom: map.getZoom() ?? 0,
161
- gesture
162
- };
153
+ const handleDragStart = () => {
154
+ isDragging.current = true;
155
+ wasGesture.current = true;
156
+ };
157
+ const handleDragEnd = () => {
158
+ isDragging.current = false;
159
+ };
160
+ const handleCameraChanged = event => {
161
+ const payload = {
162
+ coordinate: {
163
+ latitude: event.detail.center.lat,
164
+ longitude: event.detail.center.lng
165
+ },
166
+ zoom: event.detail.zoom,
167
+ gesture: isDragging.current
163
168
  };
164
- let isDragging = false;
165
- let wasGesture = false;
166
- const dragStartListener = map.addListener('dragstart', () => {
167
- isDragging = true;
168
- wasGesture = true;
169
- });
170
- const dragEndListener = map.addListener('dragend', () => {
171
- isDragging = false;
172
- });
173
- const centerListener = map.addListener('center_changed', () => {
174
- onCameraMove?.(createSyntheticEvent(createPayload(isDragging)));
175
- });
176
- const idleListener = map.addListener('idle', () => {
177
- onCameraIdle?.(createSyntheticEvent(createPayload(wasGesture)));
178
- wasGesture = false;
179
- });
180
- return () => {
181
- google.maps.event.removeListener(dragStartListener);
182
- google.maps.event.removeListener(dragEndListener);
183
- google.maps.event.removeListener(centerListener);
184
- google.maps.event.removeListener(idleListener);
169
+ onCameraMove?.(createSyntheticEvent(payload));
170
+ };
171
+ const handleIdle = event => {
172
+ const center = event.map.getCenter();
173
+ const payload = {
174
+ coordinate: {
175
+ latitude: center?.lat() ?? 0,
176
+ longitude: center?.lng() ?? 0
177
+ },
178
+ zoom: event.map.getZoom() ?? 0,
179
+ gesture: wasGesture.current
185
180
  };
186
- }, [map, onCameraMove, onCameraIdle]);
181
+ onCameraIdle?.(createSyntheticEvent(payload));
182
+ wasGesture.current = false;
183
+ };
187
184
  const gestureHandling = scrollEnabled === false && zoomEnabled === false ? 'none' : scrollEnabled === false ? 'cooperative' : 'auto';
188
185
  const defaultCenter = initialCoordinate ? {
189
186
  lat: initialCoordinate.latitude,
190
187
  lng: initialCoordinate.longitude
191
188
  } : undefined;
192
- const mapStyle = {
189
+ const paddingStyle = {
193
190
  paddingTop: padding?.top ?? 0,
194
191
  paddingLeft: padding?.left ?? 0,
195
192
  paddingRight: padding?.right ?? 0,
@@ -199,20 +196,27 @@ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
199
196
  value: id,
200
197
  children: /*#__PURE__*/_jsx(View, {
201
198
  style: style,
202
- children: /*#__PURE__*/_jsxs(Map, {
203
- id: id,
204
- mapId: mapId,
205
- defaultCenter: defaultCenter,
206
- defaultZoom: initialZoom,
207
- minZoom: minZoom,
208
- maxZoom: maxZoom,
209
- gestureHandling: gestureHandling,
210
- disableDefaultUI: true,
211
- tilt: pitchEnabled === false ? 0 : undefined,
212
- style: mapStyle,
213
- children: [/*#__PURE__*/_jsx(UserLocationMarker, {
214
- enabled: userLocationEnabled
215
- }), children]
199
+ children: /*#__PURE__*/_jsx(View, {
200
+ style: [StyleSheet.absoluteFill, paddingStyle],
201
+ children: /*#__PURE__*/_jsxs(Map, {
202
+ id: id,
203
+ mapId: mapId,
204
+ defaultCenter: defaultCenter,
205
+ defaultZoom: initialZoom,
206
+ minZoom: minZoom,
207
+ maxZoom: maxZoom,
208
+ gestureHandling: gestureHandling,
209
+ disableDefaultUI: true,
210
+ isFractionalZoomEnabled: true,
211
+ tilt: pitchEnabled === false ? 0 : undefined,
212
+ onDragstart: handleDragStart,
213
+ onDragend: handleDragEnd,
214
+ onCameraChanged: handleCameraChanged,
215
+ onIdle: handleIdle,
216
+ children: [/*#__PURE__*/_jsx(UserLocationMarker, {
217
+ enabled: userLocationEnabled
218
+ }), children]
219
+ })
216
220
  })
217
221
  })
218
222
  });
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","useEffect","useId","useImperativeHandle","useRef","useState","View","Map","useMap","Marker","MapIdContext","jsx","_jsx","jsxs","_jsxs","createSyntheticEvent","nativeEvent","currentTarget","target","bubbles","cancelable","defaultPrevented","eventPhase","isTrusted","preventDefault","stopPropagation","isDefaultPrevented","isPropagationStopped","persist","timeStamp","Date","now","type","userLocationDotStyle","width","height","backgroundColor","border","borderRadius","boxShadow","UserLocationMarker","enabled","coordinate","setCoordinate","watchId","updateLocation","position","latitude","coords","longitude","navigator","geolocation","getCurrentPosition","watchPosition","clearWatch","anchor","x","y","children","style","MapView","props","ref","mapId","google","maps","DEMO_MAP_ID","initialCoordinate","initialZoom","minZoom","maxZoom","zoomEnabled","scrollEnabled","pitchEnabled","padding","userLocationEnabled","onCameraMove","onCameraIdle","onReady","id","map","readyFired","moveCamera","options","zoom","duration","center","lat","lng","currentZoom","getZoom","zoomChanged","undefined","setZoom","panTo","fitCoordinates","coordinates","first","fitPadding","length","bounds","LatLngBounds","forEach","coord","extend","fitBounds","top","left","bottom","right","current","createPayload","gesture","getCenter","isDragging","wasGesture","dragStartListener","addListener","dragEndListener","centerListener","idleListener","event","removeListener","gestureHandling","defaultCenter","mapStyle","paddingTop","paddingLeft","paddingRight","paddingBottom","Provider","value","defaultZoom","disableDefaultUI","tilt"],"sourceRoot":"../../src","sources":["MapView.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","useEffect","useId","useImperativeHandle","useRef","useState","View","StyleSheet","Map","useMap","Marker","MapIdContext","jsx","_jsx","jsxs","_jsxs","createSyntheticEvent","nativeEvent","currentTarget","target","bubbles","cancelable","defaultPrevented","eventPhase","isTrusted","preventDefault","stopPropagation","isDefaultPrevented","isPropagationStopped","persist","timeStamp","Date","now","type","userLocationDotStyle","width","height","backgroundColor","border","borderRadius","boxShadow","UserLocationMarker","enabled","coordinate","setCoordinate","watchId","updateLocation","position","latitude","coords","longitude","navigator","geolocation","getCurrentPosition","watchPosition","clearWatch","anchor","x","y","children","style","MapView","props","ref","mapId","google","maps","DEMO_MAP_ID","initialCoordinate","initialZoom","minZoom","maxZoom","zoomEnabled","scrollEnabled","pitchEnabled","padding","userLocationEnabled","onCameraMove","onCameraIdle","onReady","id","map","readyFired","isDragging","wasGesture","moveCamera","options","zoom","duration","center","lat","lng","currentZoom","getZoom","zoomChanged","undefined","setZoom","panTo","fitCoordinates","coordinates","first","fitPadding","length","bounds","LatLngBounds","forEach","coord","extend","fitBounds","top","left","bottom","right","current","handleDragStart","handleDragEnd","handleCameraChanged","event","payload","detail","gesture","handleIdle","getCenter","gestureHandling","defaultCenter","paddingStyle","paddingTop","paddingLeft","paddingRight","paddingBottom","Provider","value","absoluteFill","defaultZoom","disableDefaultUI","isFractionalZoomEnabled","tilt","onDragstart","onDragend","onCameraChanged","onIdle"],"sourceRoot":"../../src","sources":["MapView.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MapView.web.d.ts","sourceRoot":"","sources":["../../../src/MapView.web.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAoEzB,eAAO,MAAM,OAAO,qGAwKlB,CAAC"}
1
+ {"version":3,"file":"MapView.web.d.ts","sourceRoot":"","sources":["../../../src/MapView.web.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAoEzB,eAAO,MAAM,OAAO,qGAuKlB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lugg/maps",
3
- "version": "0.2.0-alpha.14",
3
+ "version": "0.2.0-alpha.15",
4
4
  "description": "Universal maps for React Native.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -7,9 +7,14 @@ import {
7
7
  useState,
8
8
  type CSSProperties,
9
9
  } from 'react';
10
- import type { NativeSyntheticEvent } from 'react-native';
11
- import { View } from 'react-native';
12
- import { Map, useMap } from '@vis.gl/react-google-maps';
10
+ import type { NativeSyntheticEvent, ViewStyle } from 'react-native';
11
+ import { View, StyleSheet } from 'react-native';
12
+ import {
13
+ Map,
14
+ useMap,
15
+ type MapCameraChangedEvent,
16
+ type MapEvent,
17
+ } from '@vis.gl/react-google-maps';
13
18
  import { Marker } from './components/Marker.web';
14
19
  import { MapIdContext } from './MapProvider.web';
15
20
 
@@ -112,6 +117,8 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
112
117
  const id = useId();
113
118
  const map = useMap(id);
114
119
  const readyFired = useRef(false);
120
+ const isDragging = useRef(false);
121
+ const wasGesture = useRef(false);
115
122
 
116
123
  useImperativeHandle(
117
124
  ref,
@@ -172,49 +179,40 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
172
179
  }
173
180
  }, [map, onReady]);
174
181
 
175
- useEffect(() => {
176
- if (!map) return;
177
-
178
- const createPayload = (gesture: boolean): CameraEventPayload => {
179
- const center = map.getCenter();
180
- return {
181
- coordinate: {
182
- latitude: center?.lat() ?? 0,
183
- longitude: center?.lng() ?? 0,
184
- },
185
- zoom: map.getZoom() ?? 0,
186
- gesture,
187
- };
188
- };
189
-
190
- let isDragging = false;
191
- let wasGesture = false;
192
-
193
- const dragStartListener = map.addListener('dragstart', () => {
194
- isDragging = true;
195
- wasGesture = true;
196
- });
197
-
198
- const dragEndListener = map.addListener('dragend', () => {
199
- isDragging = false;
200
- });
182
+ const handleDragStart = () => {
183
+ isDragging.current = true;
184
+ wasGesture.current = true;
185
+ };
201
186
 
202
- const centerListener = map.addListener('center_changed', () => {
203
- onCameraMove?.(createSyntheticEvent(createPayload(isDragging)));
204
- });
187
+ const handleDragEnd = () => {
188
+ isDragging.current = false;
189
+ };
205
190
 
206
- const idleListener = map.addListener('idle', () => {
207
- onCameraIdle?.(createSyntheticEvent(createPayload(wasGesture)));
208
- wasGesture = false;
209
- });
191
+ const handleCameraChanged = (event: MapCameraChangedEvent) => {
192
+ const payload: CameraEventPayload = {
193
+ coordinate: {
194
+ latitude: event.detail.center.lat,
195
+ longitude: event.detail.center.lng,
196
+ },
197
+ zoom: event.detail.zoom,
198
+ gesture: isDragging.current,
199
+ };
200
+ onCameraMove?.(createSyntheticEvent(payload));
201
+ };
210
202
 
211
- return () => {
212
- google.maps.event.removeListener(dragStartListener);
213
- google.maps.event.removeListener(dragEndListener);
214
- google.maps.event.removeListener(centerListener);
215
- google.maps.event.removeListener(idleListener);
203
+ const handleIdle = (event: MapEvent) => {
204
+ const center = event.map.getCenter();
205
+ const payload: CameraEventPayload = {
206
+ coordinate: {
207
+ latitude: center?.lat() ?? 0,
208
+ longitude: center?.lng() ?? 0,
209
+ },
210
+ zoom: event.map.getZoom() ?? 0,
211
+ gesture: wasGesture.current,
216
212
  };
217
- }, [map, onCameraMove, onCameraIdle]);
213
+ onCameraIdle?.(createSyntheticEvent(payload));
214
+ wasGesture.current = false;
215
+ };
218
216
 
219
217
  const gestureHandling =
220
218
  scrollEnabled === false && zoomEnabled === false
@@ -227,7 +225,7 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
227
225
  ? { lat: initialCoordinate.latitude, lng: initialCoordinate.longitude }
228
226
  : undefined;
229
227
 
230
- const mapStyle: CSSProperties = {
228
+ const paddingStyle: ViewStyle = {
231
229
  paddingTop: padding?.top ?? 0,
232
230
  paddingLeft: padding?.left ?? 0,
233
231
  paddingRight: padding?.right ?? 0,
@@ -237,21 +235,27 @@ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
237
235
  return (
238
236
  <MapIdContext.Provider value={id}>
239
237
  <View style={style}>
240
- <Map
241
- id={id}
242
- mapId={mapId}
243
- defaultCenter={defaultCenter}
244
- defaultZoom={initialZoom}
245
- minZoom={minZoom}
246
- maxZoom={maxZoom}
247
- gestureHandling={gestureHandling}
248
- disableDefaultUI
249
- tilt={pitchEnabled === false ? 0 : undefined}
250
- style={mapStyle}
251
- >
252
- <UserLocationMarker enabled={userLocationEnabled} />
253
- {children}
254
- </Map>
238
+ <View style={[StyleSheet.absoluteFill, paddingStyle]}>
239
+ <Map
240
+ id={id}
241
+ mapId={mapId}
242
+ defaultCenter={defaultCenter}
243
+ defaultZoom={initialZoom}
244
+ minZoom={minZoom}
245
+ maxZoom={maxZoom}
246
+ gestureHandling={gestureHandling}
247
+ disableDefaultUI
248
+ isFractionalZoomEnabled
249
+ tilt={pitchEnabled === false ? 0 : undefined}
250
+ onDragstart={handleDragStart}
251
+ onDragend={handleDragEnd}
252
+ onCameraChanged={handleCameraChanged}
253
+ onIdle={handleIdle}
254
+ >
255
+ <UserLocationMarker enabled={userLocationEnabled} />
256
+ {children}
257
+ </Map>
258
+ </View>
255
259
  </View>
256
260
  </MapIdContext.Provider>
257
261
  );