@lugg/maps 0.2.0-alpha.10 → 0.2.0-alpha.11

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,12 +1,11 @@
1
1
  "use strict";
2
2
 
3
- import { Children, Component, isValidElement, useEffect, useRef, useState } from 'react';
3
+ import { Children, forwardRef, isValidElement, useEffect, useImperativeHandle, useRef, useState } from 'react';
4
4
  import { View } 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 { Polyline } from "./components/Polyline.web.js";
8
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
- // Map-specific component types that render inside the Google Map
10
9
  const MAP_COMPONENT_TYPES = new Set([Marker, Polyline]);
11
10
  const isMapComponent = child => MAP_COMPONENT_TYPES.has(child.type);
12
11
  const createSyntheticEvent = nativeEvent => ({
@@ -70,22 +69,86 @@ function UserLocationMarker({
70
69
  })
71
70
  });
72
71
  }
73
- function MapController({
74
- onMapReady,
75
- onCameraMove,
76
- onCameraIdle,
77
- onReady
78
- }) {
72
+ export const MapView = /*#__PURE__*/forwardRef(function MapView(props, ref) {
73
+ const {
74
+ mapId = 'DEMO_MAP_ID',
75
+ initialCoordinate,
76
+ initialZoom = 10,
77
+ minZoom,
78
+ maxZoom,
79
+ zoomEnabled = true,
80
+ scrollEnabled = true,
81
+ pitchEnabled = true,
82
+ padding,
83
+ userLocationEnabled,
84
+ onCameraMove,
85
+ onCameraIdle,
86
+ onReady,
87
+ children,
88
+ style
89
+ } = props;
79
90
  const map = useMap();
80
91
  const readyFired = useRef(false);
92
+ useImperativeHandle(ref, () => ({
93
+ moveCamera(coordinate, options) {
94
+ if (!map) return;
95
+ const {
96
+ zoom,
97
+ duration = -1
98
+ } = options;
99
+ const center = {
100
+ lat: coordinate.latitude,
101
+ lng: coordinate.longitude
102
+ };
103
+ if (duration === 0) {
104
+ map.moveCamera({
105
+ center,
106
+ zoom
107
+ });
108
+ } else {
109
+ const currentZoom = map.getZoom();
110
+ const zoomChanged = zoom !== undefined && zoom !== currentZoom;
111
+ if (zoomChanged) {
112
+ map.setZoom(zoom);
113
+ }
114
+ map.panTo(center);
115
+ }
116
+ },
117
+ fitCoordinates(coordinates, options) {
118
+ const first = coordinates[0];
119
+ if (!map || !first) return;
120
+ const {
121
+ padding: fitPadding,
122
+ duration = -1
123
+ } = options ?? {};
124
+ if (coordinates.length === 1) {
125
+ this.moveCamera(first, {
126
+ zoom: initialZoom,
127
+ duration
128
+ });
129
+ return;
130
+ }
131
+ const bounds = new google.maps.LatLngBounds();
132
+ coordinates.forEach(coord => {
133
+ bounds.extend({
134
+ lat: coord.latitude,
135
+ lng: coord.longitude
136
+ });
137
+ });
138
+ map.fitBounds(bounds, {
139
+ top: fitPadding?.top ?? 0,
140
+ left: fitPadding?.left ?? 0,
141
+ bottom: fitPadding?.bottom ?? 0,
142
+ right: fitPadding?.right ?? 0
143
+ });
144
+ }
145
+ }), [map, initialZoom]);
81
146
  useEffect(() => {
82
- if (!map) return;
83
- onMapReady(map);
84
- if (!readyFired.current) {
147
+ if (map && !readyFired.current) {
85
148
  readyFired.current = true;
86
149
  onReady?.();
87
150
  }
88
- }, [map, onMapReady, onReady]);
151
+ }, [map, onReady]);
89
152
  useEffect(() => {
90
153
  if (!map) return;
91
154
  const createPayload = gesture => {
@@ -100,8 +163,10 @@ function MapController({
100
163
  };
101
164
  };
102
165
  let isDragging = false;
166
+ let wasGesture = false;
103
167
  const dragStartListener = map.addListener('dragstart', () => {
104
168
  isDragging = true;
169
+ wasGesture = true;
105
170
  });
106
171
  const dragEndListener = map.addListener('dragend', () => {
107
172
  isDragging = false;
@@ -110,7 +175,8 @@ function MapController({
110
175
  onCameraMove?.(createSyntheticEvent(createPayload(isDragging)));
111
176
  });
112
177
  const idleListener = map.addListener('idle', () => {
113
- onCameraIdle?.(createSyntheticEvent(createPayload(false)));
178
+ onCameraIdle?.(createSyntheticEvent(createPayload(wasGesture)));
179
+ wasGesture = false;
114
180
  });
115
181
  return () => {
116
182
  google.maps.event.removeListener(dragStartListener);
@@ -119,148 +185,51 @@ function MapController({
119
185
  google.maps.event.removeListener(idleListener);
120
186
  };
121
187
  }, [map, onCameraMove, onCameraIdle]);
122
- return null;
123
- }
124
- export class MapView extends Component {
125
- static defaultProps = {
126
- provider: 'google',
127
- mapId: 'DEMO_MAP_ID',
128
- initialZoom: 10,
129
- zoomEnabled: true,
130
- scrollEnabled: true,
131
- rotateEnabled: true,
132
- pitchEnabled: true
133
- };
134
- mapInstance = null;
135
- handleMapReady = map => {
136
- this.mapInstance = map;
137
- };
138
- moveCamera(coordinate, options) {
139
- const map = this.mapInstance;
140
- if (!map) return;
141
- const {
142
- zoom,
143
- duration = -1
144
- } = options;
145
- const center = {
146
- lat: coordinate.latitude,
147
- lng: coordinate.longitude
148
- };
149
- if (duration === 0) {
150
- map.moveCamera({
151
- center,
152
- zoom
153
- });
188
+ const gestureHandling = scrollEnabled === false && zoomEnabled === false ? 'none' : scrollEnabled === false ? 'none' : 'auto';
189
+ const defaultCenter = initialCoordinate ? {
190
+ lat: initialCoordinate.latitude,
191
+ lng: initialCoordinate.longitude
192
+ } : undefined;
193
+ const mapChildren = [];
194
+ const overlayChildren = [];
195
+ Children.forEach(children, child => {
196
+ if (! /*#__PURE__*/isValidElement(child)) return;
197
+ if (isMapComponent(child)) {
198
+ mapChildren.push(child);
154
199
  } else {
155
- const currentZoom = map.getZoom();
156
- const zoomChanged = zoom !== undefined && zoom !== currentZoom;
157
- if (zoomChanged) {
158
- map.setZoom(zoom);
159
- }
160
- map.panTo(center);
161
- }
162
- }
163
- fitCoordinates(coordinates, options) {
164
- const map = this.mapInstance;
165
- const first = coordinates[0];
166
- if (!map || !first) return;
167
- const {
168
- padding,
169
- duration = -1
170
- } = options ?? {};
171
- if (coordinates.length === 1) {
172
- const zoom = this.props.initialZoom ?? 10;
173
- this.moveCamera(first, {
174
- zoom,
175
- duration
176
- });
177
- return;
200
+ overlayChildren.push(child);
178
201
  }
179
- const bounds = new google.maps.LatLngBounds();
180
- coordinates.forEach(coord => {
181
- bounds.extend({
182
- lat: coord.latitude,
183
- lng: coord.longitude
184
- });
185
- });
186
- map.fitBounds(bounds, {
187
- top: padding?.top ?? 0,
188
- left: padding?.left ?? 0,
189
- bottom: padding?.bottom ?? 0,
190
- right: padding?.right ?? 0
191
- });
192
- }
193
- render() {
194
- const {
195
- mapId,
196
- initialCoordinate,
197
- initialZoom,
198
- minZoom,
199
- maxZoom,
200
- zoomEnabled,
201
- scrollEnabled,
202
- pitchEnabled,
203
- padding,
204
- userLocationEnabled,
205
- onCameraMove,
206
- onCameraIdle,
207
- onReady,
208
- children,
209
- style
210
- } = this.props;
211
- const gestureHandling = scrollEnabled === false && zoomEnabled === false ? 'none' : scrollEnabled === false ? 'none' : 'auto';
212
- const defaultCenter = initialCoordinate ? {
213
- lat: initialCoordinate.latitude,
214
- lng: initialCoordinate.longitude
215
- } : undefined;
216
-
217
- // Separate map children (Marker, Polyline) from overlay children (regular Views)
218
- const mapChildren = [];
219
- const overlayChildren = [];
220
- Children.forEach(children, child => {
221
- if (! /*#__PURE__*/isValidElement(child)) return;
222
- if (isMapComponent(child)) {
223
- mapChildren.push(child);
224
- } else {
225
- overlayChildren.push(child);
226
- }
227
- });
228
- const mapContainerStyle = {
229
- position: 'absolute',
230
- top: padding?.top ?? 0,
231
- left: padding?.left ?? 0,
232
- right: padding?.right ?? 0,
233
- bottom: padding?.bottom ?? 0
234
- };
235
- const mapStyle = {
236
- width: '100%',
237
- height: '100%'
238
- };
239
- return /*#__PURE__*/_jsxs(View, {
240
- style: style,
241
- children: [/*#__PURE__*/_jsx(View, {
242
- style: mapContainerStyle,
243
- children: /*#__PURE__*/_jsxs(Map, {
244
- mapId: mapId,
245
- defaultCenter: defaultCenter,
246
- defaultZoom: initialZoom,
247
- minZoom: minZoom,
248
- maxZoom: maxZoom,
249
- gestureHandling: gestureHandling,
250
- disableDefaultUI: true,
251
- tilt: pitchEnabled === false ? 0 : undefined,
252
- style: mapStyle,
253
- children: [/*#__PURE__*/_jsx(MapController, {
254
- onMapReady: this.handleMapReady,
255
- onCameraMove: onCameraMove,
256
- onCameraIdle: onCameraIdle,
257
- onReady: onReady
258
- }), /*#__PURE__*/_jsx(UserLocationMarker, {
259
- enabled: userLocationEnabled
260
- }), mapChildren]
261
- })
262
- }), overlayChildren]
263
- });
264
- }
265
- }
202
+ });
203
+ const mapContainerStyle = {
204
+ position: 'absolute',
205
+ top: padding?.top ?? 0,
206
+ left: padding?.left ?? 0,
207
+ right: padding?.right ?? 0,
208
+ bottom: padding?.bottom ?? 0
209
+ };
210
+ const mapStyle = {
211
+ width: '100%',
212
+ height: '100%'
213
+ };
214
+ return /*#__PURE__*/_jsxs(View, {
215
+ style: style,
216
+ children: [/*#__PURE__*/_jsx(View, {
217
+ style: mapContainerStyle,
218
+ children: /*#__PURE__*/_jsxs(Map, {
219
+ mapId: mapId,
220
+ defaultCenter: defaultCenter,
221
+ defaultZoom: initialZoom,
222
+ minZoom: minZoom,
223
+ maxZoom: maxZoom,
224
+ gestureHandling: gestureHandling,
225
+ disableDefaultUI: true,
226
+ tilt: pitchEnabled === false ? 0 : undefined,
227
+ style: mapStyle,
228
+ children: [/*#__PURE__*/_jsx(UserLocationMarker, {
229
+ enabled: userLocationEnabled
230
+ }), mapChildren]
231
+ })
232
+ }), overlayChildren]
233
+ });
234
+ });
266
235
  //# sourceMappingURL=MapView.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Children","Component","isValidElement","useEffect","useRef","useState","View","Map","useMap","Marker","Polyline","jsx","_jsx","jsxs","_jsxs","MAP_COMPONENT_TYPES","Set","isMapComponent","child","has","type","createSyntheticEvent","nativeEvent","currentTarget","target","bubbles","cancelable","defaultPrevented","eventPhase","isTrusted","preventDefault","stopPropagation","isDefaultPrevented","isPropagationStopped","persist","timeStamp","Date","now","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","MapController","onMapReady","onCameraMove","onCameraIdle","onReady","map","readyFired","current","createPayload","gesture","center","getCenter","lat","lng","zoom","getZoom","isDragging","dragStartListener","addListener","dragEndListener","centerListener","idleListener","google","maps","event","removeListener","MapView","defaultProps","provider","mapId","initialZoom","zoomEnabled","scrollEnabled","rotateEnabled","pitchEnabled","mapInstance","handleMapReady","moveCamera","options","duration","currentZoom","zoomChanged","undefined","setZoom","panTo","fitCoordinates","coordinates","first","padding","length","props","bounds","LatLngBounds","forEach","coord","extend","fitBounds","top","left","bottom","right","render","initialCoordinate","minZoom","maxZoom","userLocationEnabled","gestureHandling","defaultCenter","mapChildren","overlayChildren","push","mapContainerStyle","mapStyle","defaultZoom","disableDefaultUI","tilt"],"sourceRoot":"../../src","sources":["MapView.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Children","forwardRef","isValidElement","useEffect","useImperativeHandle","useRef","useState","View","Map","useMap","Marker","Polyline","jsx","_jsx","jsxs","_jsxs","MAP_COMPONENT_TYPES","Set","isMapComponent","child","has","type","createSyntheticEvent","nativeEvent","currentTarget","target","bubbles","cancelable","defaultPrevented","eventPhase","isTrusted","preventDefault","stopPropagation","isDefaultPrevented","isPropagationStopped","persist","timeStamp","Date","now","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","initialCoordinate","initialZoom","minZoom","maxZoom","zoomEnabled","scrollEnabled","pitchEnabled","padding","userLocationEnabled","onCameraMove","onCameraIdle","onReady","map","readyFired","moveCamera","options","zoom","duration","center","lat","lng","currentZoom","getZoom","zoomChanged","undefined","setZoom","panTo","fitCoordinates","coordinates","first","fitPadding","length","bounds","google","maps","LatLngBounds","forEach","coord","extend","fitBounds","top","left","bottom","right","current","createPayload","gesture","getCenter","isDragging","wasGesture","dragStartListener","addListener","dragEndListener","centerListener","idleListener","event","removeListener","gestureHandling","defaultCenter","mapChildren","overlayChildren","push","mapContainerStyle","mapStyle","defaultZoom","disableDefaultUI","tilt"],"sourceRoot":"../../src","sources":["MapView.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,34 +1,25 @@
1
1
  "use strict";
2
2
 
3
- import React from 'react';
4
3
  import { AdvancedMarker } from '@vis.gl/react-google-maps';
5
4
  import { jsx as _jsx } from "react/jsx-runtime";
6
- /**
7
- * Converts point to % anchor for web.
8
- * e.g. `0.5` to `-50%`
9
- */
10
5
  const toWebAnchor = value => `-${value * 100}%`;
11
- export class Marker extends React.Component {
12
- render() {
13
- const {
14
- coordinate,
15
- title,
16
- anchor,
17
- zIndex,
18
- children
19
- } = this.props;
20
- const position = {
6
+ export function Marker({
7
+ coordinate,
8
+ title,
9
+ anchor,
10
+ zIndex,
11
+ children
12
+ }) {
13
+ return /*#__PURE__*/_jsx(AdvancedMarker, {
14
+ position: {
21
15
  lat: coordinate.latitude,
22
16
  lng: coordinate.longitude
23
- };
24
- return /*#__PURE__*/_jsx(AdvancedMarker, {
25
- position: position,
26
- title: title,
27
- zIndex: zIndex,
28
- anchorLeft: anchor ? toWebAnchor(anchor.x) : undefined,
29
- anchorTop: anchor ? toWebAnchor(anchor.y) : undefined,
30
- children: children
31
- });
32
- }
17
+ },
18
+ title: title,
19
+ zIndex: zIndex,
20
+ anchorLeft: anchor ? toWebAnchor(anchor.x) : undefined,
21
+ anchorTop: anchor ? toWebAnchor(anchor.y) : undefined,
22
+ children: children
23
+ });
33
24
  }
34
25
  //# sourceMappingURL=Marker.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","AdvancedMarker","jsx","_jsx","toWebAnchor","value","Marker","Component","render","coordinate","title","anchor","zIndex","children","props","position","lat","latitude","lng","longitude","anchorLeft","x","undefined","anchorTop","y"],"sourceRoot":"../../../src","sources":["components/Marker.web.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG3D;AACA;AACA;AACA;AACA,MAAMC,WAAW,GAAIC,KAAa,IAAK,IAAIA,KAAK,GAAG,GAAG,GAAG;AAEzD,OAAO,MAAMC,MAAM,SAASN,KAAK,CAACO,SAAS,CAAc;EACvDC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,UAAU;MAAEC,KAAK;MAAEC,MAAM;MAAEC,MAAM;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACC,KAAK;IAElE,MAAMC,QAAQ,GAAG;MACfC,GAAG,EAAEP,UAAU,CAACQ,QAAQ;MACxBC,GAAG,EAAET,UAAU,CAACU;IAClB,CAAC;IAED,oBACEhB,IAAA,CAACF,cAAc;MACbc,QAAQ,EAAEA,QAAS;MACnBL,KAAK,EAAEA,KAAM;MACbE,MAAM,EAAEA,MAAO;MACfQ,UAAU,EAAET,MAAM,GAAGP,WAAW,CAACO,MAAM,CAACU,CAAC,CAAC,GAAGC,SAAU;MACvDC,SAAS,EAAEZ,MAAM,GAAGP,WAAW,CAACO,MAAM,CAACa,CAAC,CAAC,GAAGF,SAAU;MAAAT,QAAA,EAErDA;IAAQ,CACK,CAAC;EAErB;AACF","ignoreList":[]}
1
+ {"version":3,"names":["AdvancedMarker","jsx","_jsx","toWebAnchor","value","Marker","coordinate","title","anchor","zIndex","children","position","lat","latitude","lng","longitude","anchorLeft","x","undefined","anchorTop","y"],"sourceRoot":"../../../src","sources":["components/Marker.web.tsx"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG3D,MAAMC,WAAW,GAAIC,KAAa,IAAK,IAAIA,KAAK,GAAG,GAAG,GAAG;AAEzD,OAAO,SAASC,MAAMA,CAAC;EACrBC,UAAU;EACVC,KAAK;EACLC,MAAM;EACNC,MAAM;EACNC;AACW,CAAC,EAAE;EACd,oBACER,IAAA,CAACF,cAAc;IACbW,QAAQ,EAAE;MAAEC,GAAG,EAAEN,UAAU,CAACO,QAAQ;MAAEC,GAAG,EAAER,UAAU,CAACS;IAAU,CAAE;IAClER,KAAK,EAAEA,KAAM;IACbE,MAAM,EAAEA,MAAO;IACfO,UAAU,EAAER,MAAM,GAAGL,WAAW,CAACK,MAAM,CAACS,CAAC,CAAC,GAAGC,SAAU;IACvDC,SAAS,EAAEX,MAAM,GAAGL,WAAW,CAACK,MAAM,CAACY,CAAC,CAAC,GAAGF,SAAU;IAAAR,QAAA,EAErDA;EAAQ,CACK,CAAC;AAErB","ignoreList":[]}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { Component, useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { useMap } from '@vis.gl/react-google-maps';
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
5
  const ANIMATION_DURATION = 1500;
7
6
  function interpolateColor(color1, color2, t) {
8
7
  const hex = c => parseInt(c, 16);
@@ -26,7 +25,7 @@ function getGradientColor(colors, position) {
26
25
  const t = scaledPos - index;
27
26
  return interpolateColor(colors[index], colors[index + 1], t);
28
27
  }
29
- function PolylineImpl({
28
+ export function Polyline({
30
29
  coordinates,
31
30
  strokeColors,
32
31
  strokeWidth = 1,
@@ -167,11 +166,4 @@ function PolylineImpl({
167
166
  }, [coordinates, animated, hasGradient, updatePath, mapReady]);
168
167
  return null;
169
168
  }
170
- export class Polyline extends Component {
171
- render() {
172
- return /*#__PURE__*/_jsx(PolylineImpl, {
173
- ...this.props
174
- });
175
- }
176
- }
177
169
  //# sourceMappingURL=Polyline.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Component","useCallback","useEffect","useMemo","useRef","useState","useMap","jsx","_jsx","ANIMATION_DURATION","interpolateColor","color1","color2","t","hex","c","parseInt","r1","slice","g1","b1","r2","g2","b2","r","Math","round","g","b","toString","padStart","getGradientColor","colors","position","length","scaledPos","index","floor","PolylineImpl","coordinates","strokeColors","strokeWidth","animated","zIndex","resolvedZIndex","map","polylinesRef","animationRef","hasGradient","propsRef","mapReady","setMapReady","current","updatePath","path","currentMap","currentColors","currentStrokeWidth","currentHasGradient","currentZIndex","neededSegments","existing","i","segmentPath","color","segment","setPath","setOptions","strokeColor","push","google","maps","Polyline","strokeWeight","strokeOpacity","setMap","polylines","cancelAnimationFrame","forEach","p","fullPath","lat","latitude","lng","longitude","totalPoints","cycleDuration","animate","time","progress","startIdx","endIdx","partialPath","startFloor","endFloor","frac","from","to","min","requestAnimationFrame","render","props"],"sourceRoot":"../../../src","sources":["components/Polyline.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","useMap","ANIMATION_DURATION","interpolateColor","color1","color2","t","hex","c","parseInt","r1","slice","g1","b1","r2","g2","b2","r","Math","round","g","b","toString","padStart","getGradientColor","colors","position","length","scaledPos","index","floor","Polyline","coordinates","strokeColors","strokeWidth","animated","zIndex","resolvedZIndex","map","polylinesRef","animationRef","hasGradient","propsRef","mapReady","setMapReady","current","updatePath","path","currentMap","currentColors","currentStrokeWidth","currentHasGradient","currentZIndex","neededSegments","existing","i","segmentPath","color","segment","setPath","setOptions","strokeColor","push","google","maps","strokeWeight","strokeOpacity","setMap","polylines","cancelAnimationFrame","forEach","p","fullPath","lat","latitude","lng","longitude","totalPoints","cycleDuration","animate","time","progress","startIdx","endIdx","partialPath","startFloor","endFloor","frac","from","to","min","requestAnimationFrame"],"sourceRoot":"../../../src","sources":["components/Polyline.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,3 @@
1
- import { Component } from 'react';
2
- import type { MapViewProps, MapViewRef, MoveCameraOptions, FitCoordinatesOptions } from './MapView.types';
3
- import type { Coordinate } from './types';
4
- export declare class MapView extends Component<MapViewProps> implements MapViewRef {
5
- static defaultProps: Partial<MapViewProps>;
6
- private mapInstance;
7
- private handleMapReady;
8
- moveCamera(coordinate: Coordinate, options: MoveCameraOptions): void;
9
- fitCoordinates(coordinates: Coordinate[], options?: FitCoordinatesOptions): void;
10
- render(): import("react/jsx-runtime").JSX.Element;
11
- }
1
+ import type { MapViewProps, MapViewRef } from './MapView.types';
2
+ export declare const MapView: import("react").ForwardRefExoticComponent<MapViewProps & import("react").RefAttributes<MapViewRef>>;
12
3
  //# sourceMappingURL=MapView.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MapView.web.d.ts","sourceRoot":"","sources":["../../../src/MapView.web.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAQV,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAmJ1C,qBAAa,OAAQ,SAAQ,SAAS,CAAC,YAAY,CAAE,YAAW,UAAU;IACxE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAQxC;IAEF,OAAO,CAAC,WAAW,CAAgC;IAEnD,OAAO,CAAC,cAAc,CAEpB;IAEF,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB;IAoB7D,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB;IA0BzE,MAAM;CAoFP"}
1
+ {"version":3,"file":"MapView.web.d.ts","sourceRoot":"","sources":["../../../src/MapView.web.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAyEzB,eAAO,MAAM,OAAO,qGAyLlB,CAAC"}
@@ -1,6 +1,3 @@
1
- import React from 'react';
2
1
  import type { MarkerProps } from './Marker';
3
- export declare class Marker extends React.Component<MarkerProps> {
4
- render(): import("react/jsx-runtime").JSX.Element;
5
- }
2
+ export declare function Marker({ coordinate, title, anchor, zIndex, children, }: MarkerProps): import("react/jsx-runtime").JSX.Element;
6
3
  //# sourceMappingURL=Marker.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Marker.web.d.ts","sourceRoot":"","sources":["../../../../src/components/Marker.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQ5C,qBAAa,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;IACtD,MAAM;CAoBP"}
1
+ {"version":3,"file":"Marker.web.d.ts","sourceRoot":"","sources":["../../../../src/components/Marker.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAI5C,wBAAgB,MAAM,CAAC,EACrB,UAAU,EACV,KAAK,EACL,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE,WAAW,2CAYb"}
@@ -1,6 +1,3 @@
1
- import { Component } from 'react';
2
1
  import type { PolylineProps } from './Polyline';
3
- export declare class Polyline extends Component<PolylineProps> {
4
- render(): import("react/jsx-runtime").JSX.Element;
5
- }
2
+ export declare function Polyline({ coordinates, strokeColors, strokeWidth, animated, zIndex, }: PolylineProps): null;
6
3
  //# sourceMappingURL=Polyline.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Polyline.web.d.ts","sourceRoot":"","sources":["../../../../src/components/Polyline.web.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAMV,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAgNhD,qBAAa,QAAS,SAAQ,SAAS,CAAC,aAAa,CAAC;IACpD,MAAM;CAGP"}
1
+ {"version":3,"file":"Polyline.web.d.ts","sourceRoot":"","sources":["../../../../src/components/Polyline.web.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAkChD,wBAAgB,QAAQ,CAAC,EACvB,WAAW,EACX,YAAY,EACZ,WAAe,EACf,QAAQ,EACR,MAAM,GACP,EAAE,aAAa,QAsKf"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lugg/maps",
3
- "version": "0.2.0-alpha.10",
3
+ "version": "0.2.0-alpha.11",
4
4
  "description": "Universal maps for React Native.",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  Children,
3
- Component,
3
+ forwardRef,
4
4
  isValidElement,
5
5
  useEffect,
6
+ useImperativeHandle,
6
7
  useRef,
7
8
  useState,
8
9
  type CSSProperties,
@@ -24,7 +25,6 @@ import type {
24
25
  } from './MapView.types';
25
26
  import type { Coordinate } from './types';
26
27
 
27
- // Map-specific component types that render inside the Google Map
28
28
  const MAP_COMPONENT_TYPES = new Set([Marker, Polyline]);
29
29
 
30
30
  const isMapComponent = (child: ReactElement): boolean =>
@@ -49,17 +49,6 @@ const createSyntheticEvent = <T,>(nativeEvent: T): NativeSyntheticEvent<T> =>
49
49
  type: '',
50
50
  } as unknown as NativeSyntheticEvent<T>);
51
51
 
52
- interface MapControllerProps {
53
- onMapReady: (map: google.maps.Map) => void;
54
- onCameraMove?: (event: NativeSyntheticEvent<CameraEventPayload>) => void;
55
- onCameraIdle?: (event: NativeSyntheticEvent<CameraEventPayload>) => void;
56
- onReady?: () => void;
57
- }
58
-
59
- interface UserLocationMarkerProps {
60
- enabled?: boolean;
61
- }
62
-
63
52
  const userLocationDotStyle: CSSProperties = {
64
53
  width: 16,
65
54
  height: 16,
@@ -69,7 +58,7 @@ const userLocationDotStyle: CSSProperties = {
69
58
  boxShadow: '0 1px 4px rgba(0,0,0,0.3)',
70
59
  };
71
60
 
72
- function UserLocationMarker({ enabled }: UserLocationMarkerProps) {
61
+ function UserLocationMarker({ enabled }: { enabled?: boolean }) {
73
62
  const [coordinate, setCoordinate] = useState<Coordinate | null>(null);
74
63
 
75
64
  useEffect(() => {
@@ -106,24 +95,89 @@ function UserLocationMarker({ enabled }: UserLocationMarkerProps) {
106
95
  );
107
96
  }
108
97
 
109
- function MapController({
110
- onMapReady,
111
- onCameraMove,
112
- onCameraIdle,
113
- onReady,
114
- }: MapControllerProps) {
98
+ export const MapView = forwardRef<MapViewRef, MapViewProps>(function MapView(
99
+ props,
100
+ ref
101
+ ) {
102
+ const {
103
+ mapId = 'DEMO_MAP_ID',
104
+ initialCoordinate,
105
+ initialZoom = 10,
106
+ minZoom,
107
+ maxZoom,
108
+ zoomEnabled = true,
109
+ scrollEnabled = true,
110
+ pitchEnabled = true,
111
+ padding,
112
+ userLocationEnabled,
113
+ onCameraMove,
114
+ onCameraIdle,
115
+ onReady,
116
+ children,
117
+ style,
118
+ } = props;
119
+
115
120
  const map = useMap();
116
121
  const readyFired = useRef(false);
117
122
 
118
- useEffect(() => {
119
- if (!map) return;
120
- onMapReady(map);
123
+ useImperativeHandle(
124
+ ref,
125
+ () => ({
126
+ moveCamera(coordinate: Coordinate, options: MoveCameraOptions) {
127
+ if (!map) return;
128
+
129
+ const { zoom, duration = -1 } = options;
130
+ const center = { lat: coordinate.latitude, lng: coordinate.longitude };
131
+
132
+ if (duration === 0) {
133
+ map.moveCamera({ center, zoom });
134
+ } else {
135
+ const currentZoom = map.getZoom();
136
+ const zoomChanged = zoom !== undefined && zoom !== currentZoom;
137
+
138
+ if (zoomChanged) {
139
+ map.setZoom(zoom);
140
+ }
141
+ map.panTo(center);
142
+ }
143
+ },
144
+
145
+ fitCoordinates(
146
+ coordinates: Coordinate[],
147
+ options?: FitCoordinatesOptions
148
+ ) {
149
+ const first = coordinates[0];
150
+ if (!map || !first) return;
151
+
152
+ const { padding: fitPadding, duration = -1 } = options ?? {};
153
+
154
+ if (coordinates.length === 1) {
155
+ this.moveCamera(first, { zoom: initialZoom, duration });
156
+ return;
157
+ }
158
+
159
+ const bounds = new google.maps.LatLngBounds();
160
+ coordinates.forEach((coord) => {
161
+ bounds.extend({ lat: coord.latitude, lng: coord.longitude });
162
+ });
163
+
164
+ map.fitBounds(bounds, {
165
+ top: fitPadding?.top ?? 0,
166
+ left: fitPadding?.left ?? 0,
167
+ bottom: fitPadding?.bottom ?? 0,
168
+ right: fitPadding?.right ?? 0,
169
+ });
170
+ },
171
+ }),
172
+ [map, initialZoom]
173
+ );
121
174
 
122
- if (!readyFired.current) {
175
+ useEffect(() => {
176
+ if (map && !readyFired.current) {
123
177
  readyFired.current = true;
124
178
  onReady?.();
125
179
  }
126
- }, [map, onMapReady, onReady]);
180
+ }, [map, onReady]);
127
181
 
128
182
  useEffect(() => {
129
183
  if (!map) return;
@@ -141,9 +195,11 @@ function MapController({
141
195
  };
142
196
 
143
197
  let isDragging = false;
198
+ let wasGesture = false;
144
199
 
145
200
  const dragStartListener = map.addListener('dragstart', () => {
146
201
  isDragging = true;
202
+ wasGesture = true;
147
203
  });
148
204
 
149
205
  const dragEndListener = map.addListener('dragend', () => {
@@ -155,7 +211,8 @@ function MapController({
155
211
  });
156
212
 
157
213
  const idleListener = map.addListener('idle', () => {
158
- onCameraIdle?.(createSyntheticEvent(createPayload(false)));
214
+ onCameraIdle?.(createSyntheticEvent(createPayload(wasGesture)));
215
+ wasGesture = false;
159
216
  });
160
217
 
161
218
  return () => {
@@ -166,154 +223,61 @@ function MapController({
166
223
  };
167
224
  }, [map, onCameraMove, onCameraIdle]);
168
225
 
169
- return null;
170
- }
226
+ const gestureHandling =
227
+ scrollEnabled === false && zoomEnabled === false
228
+ ? 'none'
229
+ : scrollEnabled === false
230
+ ? 'none'
231
+ : 'auto';
171
232
 
172
- export class MapView extends Component<MapViewProps> implements MapViewRef {
173
- static defaultProps: Partial<MapViewProps> = {
174
- provider: 'google',
175
- mapId: 'DEMO_MAP_ID',
176
- initialZoom: 10,
177
- zoomEnabled: true,
178
- scrollEnabled: true,
179
- rotateEnabled: true,
180
- pitchEnabled: true,
181
- };
182
-
183
- private mapInstance: google.maps.Map | null = null;
233
+ const defaultCenter = initialCoordinate
234
+ ? { lat: initialCoordinate.latitude, lng: initialCoordinate.longitude }
235
+ : undefined;
184
236
 
185
- private handleMapReady = (map: google.maps.Map) => {
186
- this.mapInstance = map;
187
- };
188
-
189
- moveCamera(coordinate: Coordinate, options: MoveCameraOptions) {
190
- const map = this.mapInstance;
191
- if (!map) return;
237
+ const mapChildren: ReactNode[] = [];
238
+ const overlayChildren: ReactNode[] = [];
192
239
 
193
- const { zoom, duration = -1 } = options;
194
- const center = { lat: coordinate.latitude, lng: coordinate.longitude };
195
-
196
- if (duration === 0) {
197
- map.moveCamera({ center, zoom });
240
+ Children.forEach(children, (child) => {
241
+ if (!isValidElement(child)) return;
242
+ if (isMapComponent(child)) {
243
+ mapChildren.push(child);
198
244
  } else {
199
- const currentZoom = map.getZoom();
200
- const zoomChanged = zoom !== undefined && zoom !== currentZoom;
201
-
202
- if (zoomChanged) {
203
- map.setZoom(zoom);
204
- }
205
- map.panTo(center);
245
+ overlayChildren.push(child);
206
246
  }
207
- }
208
-
209
- fitCoordinates(coordinates: Coordinate[], options?: FitCoordinatesOptions) {
210
- const map = this.mapInstance;
211
- const first = coordinates[0];
212
- if (!map || !first) return;
213
-
214
- const { padding, duration = -1 } = options ?? {};
215
-
216
- if (coordinates.length === 1) {
217
- const zoom = this.props.initialZoom ?? 10;
218
- this.moveCamera(first, { zoom, duration });
219
- return;
220
- }
221
-
222
- const bounds = new google.maps.LatLngBounds();
223
- coordinates.forEach((coord) => {
224
- bounds.extend({ lat: coord.latitude, lng: coord.longitude });
225
- });
226
-
227
- map.fitBounds(bounds, {
228
- top: padding?.top ?? 0,
229
- left: padding?.left ?? 0,
230
- bottom: padding?.bottom ?? 0,
231
- right: padding?.right ?? 0,
232
- });
233
- }
234
-
235
- render() {
236
- const {
237
- mapId,
238
- initialCoordinate,
239
- initialZoom,
240
- minZoom,
241
- maxZoom,
242
- zoomEnabled,
243
- scrollEnabled,
244
- pitchEnabled,
245
- padding,
246
- userLocationEnabled,
247
- onCameraMove,
248
- onCameraIdle,
249
- onReady,
250
- children,
251
- style,
252
- } = this.props;
253
-
254
- const gestureHandling =
255
- scrollEnabled === false && zoomEnabled === false
256
- ? 'none'
257
- : scrollEnabled === false
258
- ? 'none'
259
- : 'auto';
260
-
261
- const defaultCenter = initialCoordinate
262
- ? { lat: initialCoordinate.latitude, lng: initialCoordinate.longitude }
263
- : undefined;
264
-
265
- // Separate map children (Marker, Polyline) from overlay children (regular Views)
266
- const mapChildren: ReactNode[] = [];
267
- const overlayChildren: ReactNode[] = [];
268
-
269
- Children.forEach(children, (child) => {
270
- if (!isValidElement(child)) return;
271
- if (isMapComponent(child)) {
272
- mapChildren.push(child);
273
- } else {
274
- overlayChildren.push(child);
275
- }
276
- });
277
-
278
- const mapContainerStyle: ViewStyle = {
279
- position: 'absolute',
280
- top: padding?.top ?? 0,
281
- left: padding?.left ?? 0,
282
- right: padding?.right ?? 0,
283
- bottom: padding?.bottom ?? 0,
284
- };
247
+ });
248
+
249
+ const mapContainerStyle: ViewStyle = {
250
+ position: 'absolute',
251
+ top: padding?.top ?? 0,
252
+ left: padding?.left ?? 0,
253
+ right: padding?.right ?? 0,
254
+ bottom: padding?.bottom ?? 0,
255
+ };
285
256
 
286
- const mapStyle: CSSProperties = {
287
- width: '100%',
288
- height: '100%',
289
- };
257
+ const mapStyle: CSSProperties = {
258
+ width: '100%',
259
+ height: '100%',
260
+ };
290
261
 
291
- return (
292
- <View style={style}>
293
- <View style={mapContainerStyle}>
294
- <Map
295
- mapId={mapId}
296
- defaultCenter={defaultCenter}
297
- defaultZoom={initialZoom}
298
- minZoom={minZoom}
299
- maxZoom={maxZoom}
300
- gestureHandling={gestureHandling}
301
- disableDefaultUI
302
- tilt={pitchEnabled === false ? 0 : undefined}
303
- style={mapStyle}
304
- >
305
- <MapController
306
- onMapReady={this.handleMapReady}
307
- onCameraMove={onCameraMove}
308
- onCameraIdle={onCameraIdle}
309
- onReady={onReady}
310
- />
311
- <UserLocationMarker enabled={userLocationEnabled} />
312
- {mapChildren}
313
- </Map>
314
- </View>
315
- {overlayChildren}
262
+ return (
263
+ <View style={style}>
264
+ <View style={mapContainerStyle}>
265
+ <Map
266
+ mapId={mapId}
267
+ defaultCenter={defaultCenter}
268
+ defaultZoom={initialZoom}
269
+ minZoom={minZoom}
270
+ maxZoom={maxZoom}
271
+ gestureHandling={gestureHandling}
272
+ disableDefaultUI
273
+ tilt={pitchEnabled === false ? 0 : undefined}
274
+ style={mapStyle}
275
+ >
276
+ <UserLocationMarker enabled={userLocationEnabled} />
277
+ {mapChildren}
278
+ </Map>
316
279
  </View>
317
- );
318
- }
319
- }
280
+ {overlayChildren}
281
+ </View>
282
+ );
283
+ });
@@ -1,32 +1,24 @@
1
- import React from 'react';
2
1
  import { AdvancedMarker } from '@vis.gl/react-google-maps';
3
2
  import type { MarkerProps } from './Marker';
4
3
 
5
- /**
6
- * Converts point to % anchor for web.
7
- * e.g. `0.5` to `-50%`
8
- */
9
4
  const toWebAnchor = (value: number) => `-${value * 100}%`;
10
5
 
11
- export class Marker extends React.Component<MarkerProps> {
12
- render() {
13
- const { coordinate, title, anchor, zIndex, children } = this.props;
14
-
15
- const position = {
16
- lat: coordinate.latitude,
17
- lng: coordinate.longitude,
18
- };
19
-
20
- return (
21
- <AdvancedMarker
22
- position={position}
23
- title={title}
24
- zIndex={zIndex}
25
- anchorLeft={anchor ? toWebAnchor(anchor.x) : undefined}
26
- anchorTop={anchor ? toWebAnchor(anchor.y) : undefined}
27
- >
28
- {children}
29
- </AdvancedMarker>
30
- );
31
- }
6
+ export function Marker({
7
+ coordinate,
8
+ title,
9
+ anchor,
10
+ zIndex,
11
+ children,
12
+ }: MarkerProps) {
13
+ return (
14
+ <AdvancedMarker
15
+ position={{ lat: coordinate.latitude, lng: coordinate.longitude }}
16
+ title={title}
17
+ zIndex={zIndex}
18
+ anchorLeft={anchor ? toWebAnchor(anchor.x) : undefined}
19
+ anchorTop={anchor ? toWebAnchor(anchor.y) : undefined}
20
+ >
21
+ {children}
22
+ </AdvancedMarker>
23
+ );
32
24
  }
@@ -1,11 +1,4 @@
1
- import {
2
- Component,
3
- useCallback,
4
- useEffect,
5
- useMemo,
6
- useRef,
7
- useState,
8
- } from 'react';
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
9
2
  import { useMap } from '@vis.gl/react-google-maps';
10
3
  import type { PolylineProps } from './Polyline';
11
4
 
@@ -41,7 +34,7 @@ function getGradientColor(colors: string[], position: number): string {
41
34
  return interpolateColor(colors[index]!, colors[index + 1]!, t);
42
35
  }
43
36
 
44
- function PolylineImpl({
37
+ export function Polyline({
45
38
  coordinates,
46
39
  strokeColors,
47
40
  strokeWidth = 1,
@@ -214,9 +207,3 @@ function PolylineImpl({
214
207
 
215
208
  return null;
216
209
  }
217
-
218
- export class Polyline extends Component<PolylineProps> {
219
- render() {
220
- return <PolylineImpl {...this.props} />;
221
- }
222
- }