react-simple-maps 3.0.0-beta.3 → 3.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
-
2
1
  <img src="https://img.shields.io/bundlephobia/minzip/react-simple-maps?color=%2328cb95&label=gzip" />
3
2
 
4
3
  # react-simple-maps
4
+
5
5
  Create beautiful SVG maps in react with d3-geo and topojson using a declarative api.
6
6
 
7
7
  Read the [docs](https://www.react-simple-maps.io/docs/getting-started/), or check out the [examples](https://www.react-simple-maps.io/examples/).
@@ -28,38 +28,36 @@ $ yarn add react-simple-maps
28
28
 
29
29
  ### Usage
30
30
 
31
- `React-simple-maps` exposes a set of components that can be combined to create svg maps with markers and annotations. In order to render a map you have to provide a reference to a valid topojson file. You can find example topojson files in the [`topojson-maps` folder](https://github.com/zcreativelabs/react-simple-maps/tree/master/topojson-maps) or on [topojson world-atlas](https://github.com/topojson/world-atlas). To learn how to make your own topojson maps from shapefiles, please read ["How to convert and prepare TopoJSON files for interactive mapping with d3"](https://hackernoon.com/how-to-convert-and-prepare-topojson-files-for-interactive-mapping-with-d3-499cf0ced5f) on medium.
31
+ `React-simple-maps` exposes a set of components that can be combined to create svg maps with markers and annotations. In order to render a map you have to provide a reference to a valid topojson file. You can find example topojson files on [here](https://github.com/topojson/world-atlas) or [here](https://github.com/deldersveld/topojson). To learn how to make your own topojson maps from shapefiles, please read ["How to convert and prepare TopoJSON files for interactive mapping with d3"](https://hackernoon.com/how-to-convert-and-prepare-topojson-files-for-interactive-mapping-with-d3-499cf0ced5f) on medium.
32
32
 
33
33
  ```jsx
34
- import React from "react"
35
- import ReactDOM from "react-dom"
36
- import {
37
- ComposableMap,
38
- Geographies,
39
- Geography,
40
- } from "react-simple-maps"
34
+ import React from "react";
35
+ import ReactDOM from "react-dom";
36
+ import { ComposableMap, Geographies, Geography } from "react-simple-maps";
41
37
 
42
38
  // url to a valid topojson file
43
39
  const geoUrl =
44
- "https://raw.githubusercontent.com/zcreativelabs/react-simple-maps/master/topojson-maps/world-110m.json"
40
+ "https://raw.githubusercontent.com/deldersveld/topojson/master/world-countries.json";
45
41
 
46
42
  const App = () => {
47
43
  return (
48
44
  <div>
49
45
  <ComposableMap>
50
46
  <Geographies geography={geoUrl}>
51
- {({geographies}) => geographies.map(geo =>
52
- <Geography key={geo.rsmKey} geography={geo} />
53
- )}
47
+ {({ geographies }) =>
48
+ geographies.map((geo) => (
49
+ <Geography key={geo.rsmKey} geography={geo} />
50
+ ))
51
+ }
54
52
  </Geographies>
55
53
  </ComposableMap>
56
54
  </div>
57
- )
58
- }
55
+ );
56
+ };
59
57
 
60
58
  document.addEventListener("DOMContentLoaded", () => {
61
- ReactDOM.render(<App />, document.getElementById("app"))
62
- })
59
+ ReactDOM.render(<App />, document.getElementById("app"));
60
+ });
63
61
  ```
64
62
 
65
63
  Check out the [live example](https://codesandbox.io/s/basic-map-wvlol)
@@ -68,5 +66,16 @@ The above will render a world map using the [equal earth projection](https://obs
68
66
 
69
67
  For other examples and components, check out the [documentation](https://www.react-simple-maps.io/docs/getting-started).
70
68
 
69
+ ### Map files
70
+
71
+ React-simple-maps does not restrict you to one specific map and relies on custom map files that you can modify in any way necessary for the project. This means that you can visualise countries, regions, and continents in various resolutions, as long as they can be represented using geojson/topojson.
72
+
73
+ In order for this to work properly, you will however need to provide these valid map files to react-simple-maps yourself. Luckily, there are decent sources for map files on github and elsewhere. Here are some you can check out:
74
+
75
+ * [Natural Earth](https://github.com/nvkelso/natural-earth-vector)
76
+ * [Topojson maps by @deldersveld](https://github.com/deldersveld/topojson)
77
+ * [Topojson world atlas](https://github.com/topojson/world-atlas)
78
+
71
79
  ### License
80
+
72
81
  MIT licensed. Copyright (c) Richard Zimerman 2017. See [LICENSE.md](https://github.com/zcreativelabs/react-simple-maps/blob/master/LICENSE) for more details.
package/dist/index.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import React, { createContext, useMemo, useCallback, useContext, useState, useEffect, memo, useRef, Fragment } from 'react';
1
+ import React, { createContext, useMemo, useCallback, forwardRef, useContext, useState, useEffect, memo, useRef, Fragment } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import * as d3Geo from 'd3-geo';
4
4
  import { geoGraticule } from 'd3-geo';
@@ -255,8 +255,7 @@ MapProvider.propTypes = {
255
255
  };
256
256
 
257
257
  var _excluded$8 = ["width", "height", "projection", "projectionConfig", "className"];
258
-
259
- var ComposableMap = function ComposableMap(_ref) {
258
+ var ComposableMap = forwardRef(function (_ref, ref) {
260
259
  var _ref$width = _ref.width,
261
260
  width = _ref$width === void 0 ? 800 : _ref$width,
262
261
  _ref$height = _ref.height,
@@ -275,11 +274,12 @@ var ComposableMap = function ComposableMap(_ref) {
275
274
  projection: projection,
276
275
  projectionConfig: projectionConfig
277
276
  }, /*#__PURE__*/React.createElement("svg", _extends({
277
+ ref: ref,
278
278
  viewBox: "0 0 ".concat(width, " ").concat(height),
279
279
  className: "rsm-svg ".concat(className)
280
280
  }, restProps)));
281
- };
282
-
281
+ });
282
+ ComposableMap.displayName = "ComposableMap";
283
283
  ComposableMap.propTypes = {
284
284
  width: PropTypes.number,
285
285
  height: PropTypes.number,
@@ -415,8 +415,7 @@ function useGeographies(_ref) {
415
415
  }
416
416
 
417
417
  var _excluded$7 = ["geography", "children", "parseGeographies", "className"];
418
-
419
- var Geographies = function Geographies(_ref) {
418
+ var Geographies = forwardRef(function (_ref, ref) {
420
419
  var geography = _ref.geography,
421
420
  children = _ref.children,
422
421
  parseGeographies = _ref.parseGeographies,
@@ -437,6 +436,7 @@ var Geographies = function Geographies(_ref) {
437
436
  borders = _useGeographies.borders;
438
437
 
439
438
  return /*#__PURE__*/React.createElement("g", _extends({
439
+ ref: ref,
440
440
  className: "rsm-geographies ".concat(className)
441
441
  }, restProps), geographies && geographies.length > 0 && children({
442
442
  geographies: geographies,
@@ -445,8 +445,8 @@ var Geographies = function Geographies(_ref) {
445
445
  path: path,
446
446
  projection: projection
447
447
  }));
448
- };
449
-
448
+ });
449
+ Geographies.displayName = "Geographies";
450
450
  Geographies.propTypes = {
451
451
  geography: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.array]),
452
452
  children: PropTypes.func,
@@ -455,8 +455,7 @@ Geographies.propTypes = {
455
455
  };
456
456
 
457
457
  var _excluded$6 = ["geography", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "onFocus", "onBlur", "style", "className"];
458
-
459
- var Geography = function Geography(_ref) {
458
+ var Geography = forwardRef(function (_ref, ref) {
460
459
  var geography = _ref.geography,
461
460
  onMouseEnter = _ref.onMouseEnter,
462
461
  onMouseLeave = _ref.onMouseLeave,
@@ -513,6 +512,7 @@ var Geography = function Geography(_ref) {
513
512
  }
514
513
 
515
514
  return /*#__PURE__*/React.createElement("path", _extends({
515
+ ref: ref,
516
516
  tabIndex: "0",
517
517
  className: "rsm-geography ".concat(className),
518
518
  d: geography.svgPath,
@@ -524,8 +524,8 @@ var Geography = function Geography(_ref) {
524
524
  onMouseUp: handleMouseUp,
525
525
  style: style[isPressed || isFocused ? isPressed ? "pressed" : "hover" : "default"]
526
526
  }, restProps));
527
- };
528
-
527
+ });
528
+ Geography.displayName = "Geography";
529
529
  Geography.propTypes = {
530
530
  geography: PropTypes.object,
531
531
  onMouseEnter: PropTypes.func,
@@ -540,8 +540,7 @@ Geography.propTypes = {
540
540
  var Geography$1 = memo(Geography);
541
541
 
542
542
  var _excluded$5 = ["fill", "stroke", "step", "className"];
543
-
544
- var Graticule = function Graticule(_ref) {
543
+ var Graticule = forwardRef(function (_ref, ref) {
545
544
  var _ref$fill = _ref.fill,
546
545
  fill = _ref$fill === void 0 ? "transparent" : _ref$fill,
547
546
  _ref$stroke = _ref.stroke,
@@ -556,13 +555,14 @@ var Graticule = function Graticule(_ref) {
556
555
  path = _useContext.path;
557
556
 
558
557
  return /*#__PURE__*/React.createElement("path", _extends({
558
+ ref: ref,
559
559
  d: path(geoGraticule().step(step)()),
560
560
  fill: fill,
561
561
  stroke: stroke,
562
562
  className: "rsm-graticule ".concat(className)
563
563
  }, restProps));
564
- };
565
-
564
+ });
565
+ Graticule.displayName = "Graticule";
566
566
  Graticule.propTypes = {
567
567
  fill: PropTypes.string,
568
568
  stroke: PropTypes.string,
@@ -719,8 +719,7 @@ function useZoomPan(_ref) {
719
719
  }
720
720
 
721
721
  var _excluded$4 = ["center", "zoom", "minZoom", "maxZoom", "translateExtent", "filterZoomEvent", "onMoveStart", "onMove", "onMoveEnd", "className"];
722
-
723
- var ZoomableGroup = function ZoomableGroup(_ref) {
722
+ var ZoomableGroup = forwardRef(function (_ref, ref) {
724
723
  var _ref$center = _ref.center,
725
724
  center = _ref$center === void 0 ? [0, 0] : _ref$center,
726
725
  _ref$zoom = _ref.zoom,
@@ -761,11 +760,12 @@ var ZoomableGroup = function ZoomableGroup(_ref) {
761
760
  height: height,
762
761
  fill: "transparent"
763
762
  }), /*#__PURE__*/React.createElement("g", _extends({
763
+ ref: ref,
764
764
  transform: transformString,
765
765
  className: "rsm-zoomable-group ".concat(className)
766
766
  }, restProps)));
767
- };
768
-
767
+ });
768
+ ZoomableGroup.displayName = "ZoomableGroup";
769
769
  ZoomableGroup.propTypes = {
770
770
  center: PropTypes.array,
771
771
  zoom: PropTypes.number,
@@ -779,8 +779,7 @@ ZoomableGroup.propTypes = {
779
779
  };
780
780
 
781
781
  var _excluded$3 = ["id", "fill", "stroke", "strokeWidth", "className"];
782
-
783
- var Sphere = function Sphere(_ref) {
782
+ var Sphere = forwardRef(function (_ref, ref) {
784
783
  var _ref$id = _ref.id,
785
784
  id = _ref$id === void 0 ? "rsm-sphere" : _ref$id,
786
785
  _ref$fill = _ref.fill,
@@ -806,6 +805,7 @@ var Sphere = function Sphere(_ref) {
806
805
  }, /*#__PURE__*/React.createElement("path", {
807
806
  d: spherePath
808
807
  }))), /*#__PURE__*/React.createElement("path", _extends({
808
+ ref: ref,
809
809
  d: spherePath,
810
810
  fill: fill,
811
811
  stroke: stroke,
@@ -815,8 +815,8 @@ var Sphere = function Sphere(_ref) {
815
815
  },
816
816
  className: "rsm-sphere ".concat(className)
817
817
  }, restProps)));
818
- };
819
-
818
+ });
819
+ Sphere.displayName = "Sphere";
820
820
  Sphere.propTypes = {
821
821
  id: PropTypes.string,
822
822
  fill: PropTypes.string,
@@ -827,8 +827,7 @@ Sphere.propTypes = {
827
827
  var Sphere$1 = memo(Sphere);
828
828
 
829
829
  var _excluded$2 = ["coordinates", "children", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "onFocus", "onBlur", "style", "className"];
830
-
831
- var Marker = function Marker(_ref) {
830
+ var Marker = forwardRef(function (_ref, ref) {
832
831
  var coordinates = _ref.coordinates,
833
832
  children = _ref.children,
834
833
  onMouseEnter = _ref.onMouseEnter,
@@ -894,6 +893,7 @@ var Marker = function Marker(_ref) {
894
893
  }
895
894
 
896
895
  return /*#__PURE__*/React.createElement("g", _extends({
896
+ ref: ref,
897
897
  transform: "translate(".concat(x, ", ").concat(y, ")"),
898
898
  className: "rsm-marker ".concat(className),
899
899
  onMouseEnter: handleMouseEnter,
@@ -904,8 +904,8 @@ var Marker = function Marker(_ref) {
904
904
  onMouseUp: handleMouseUp,
905
905
  style: style[isPressed || isFocused ? isPressed ? "pressed" : "hover" : "default"]
906
906
  }, restProps), children);
907
- };
908
-
907
+ });
908
+ Marker.displayName = "Marker";
909
909
  Marker.propTypes = {
910
910
  coordinates: PropTypes.array,
911
911
  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
@@ -920,8 +920,7 @@ Marker.propTypes = {
920
920
  };
921
921
 
922
922
  var _excluded$1 = ["from", "to", "coordinates", "stroke", "strokeWidth", "fill", "className"];
923
-
924
- var Line = function Line(_ref) {
923
+ var Line = forwardRef(function (_ref, ref) {
925
924
  var _ref$from = _ref.from,
926
925
  from = _ref$from === void 0 ? [0, 0] : _ref$from,
927
926
  _ref$to = _ref.to,
@@ -945,14 +944,15 @@ var Line = function Line(_ref) {
945
944
  coordinates: coordinates || [from, to]
946
945
  };
947
946
  return /*#__PURE__*/React.createElement("path", _extends({
947
+ ref: ref,
948
948
  d: path(lineData),
949
949
  className: "rsm-line ".concat(className),
950
950
  stroke: stroke,
951
951
  strokeWidth: strokeWidth,
952
952
  fill: fill
953
953
  }, restProps));
954
- };
955
-
954
+ });
955
+ Line.displayName = "Line";
956
956
  Line.propTypes = {
957
957
  from: PropTypes.array,
958
958
  to: PropTypes.array,
@@ -964,8 +964,7 @@ Line.propTypes = {
964
964
  };
965
965
 
966
966
  var _excluded = ["subject", "children", "connectorProps", "dx", "dy", "curve", "className"];
967
-
968
- var Annotation = function Annotation(_ref) {
967
+ var Annotation = forwardRef(function (_ref, ref) {
969
968
  var subject = _ref.subject,
970
969
  children = _ref.children,
971
970
  connectorProps = _ref.connectorProps,
@@ -989,6 +988,7 @@ var Annotation = function Annotation(_ref) {
989
988
 
990
989
  var connectorPath = createConnectorPath(dx, dy, curve);
991
990
  return /*#__PURE__*/React.createElement("g", _extends({
991
+ ref: ref,
992
992
  transform: "translate(".concat(x + dx, ", ").concat(y + dy, ")"),
993
993
  className: "rsm-annotation ".concat(className)
994
994
  }, restProps), /*#__PURE__*/React.createElement("path", _extends({
@@ -996,8 +996,8 @@ var Annotation = function Annotation(_ref) {
996
996
  fill: "transparent",
997
997
  stroke: "#000"
998
998
  }, connectorProps)), children);
999
- };
1000
-
999
+ });
1000
+ Annotation.displayName = "Annotation";
1001
1001
  Annotation.propTypes = {
1002
1002
  subject: PropTypes.array,
1003
1003
  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
package/dist/index.js CHANGED
@@ -1,10 +1,37 @@
1
- import React, { createContext, useMemo, useCallback, useContext, useState, useEffect, memo, useRef, Fragment } from 'react';
2
- import PropTypes from 'prop-types';
3
- import * as d3Geo from 'd3-geo';
4
- import { geoGraticule } from 'd3-geo';
5
- import { feature, mesh } from 'topojson-client';
6
- import { zoom, zoomIdentity } from 'd3-zoom';
7
- import { select } from 'd3-selection';
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var PropTypes = require('prop-types');
7
+ var d3Geo = require('d3-geo');
8
+ var topojsonClient = require('topojson-client');
9
+ var d3Zoom = require('d3-zoom');
10
+ var d3Selection = require('d3-selection');
11
+
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ function _interopNamespace(e) {
15
+ if (e && e.__esModule) return e;
16
+ var n = Object.create(null);
17
+ if (e) {
18
+ Object.keys(e).forEach(function (k) {
19
+ if (k !== 'default') {
20
+ var d = Object.getOwnPropertyDescriptor(e, k);
21
+ Object.defineProperty(n, k, d.get ? d : {
22
+ enumerable: true,
23
+ get: function () { return e[k]; }
24
+ });
25
+ }
26
+ });
27
+ }
28
+ n["default"] = e;
29
+ return Object.freeze(n);
30
+ }
31
+
32
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
33
+ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
34
+ var d3Geo__namespace = /*#__PURE__*/_interopNamespace(d3Geo);
8
35
 
9
36
  function ownKeys(object, enumerableOnly) {
10
37
  var keys = Object.keys(object);
@@ -171,10 +198,10 @@ function _nonIterableRest() {
171
198
 
172
199
  var _excluded$9 = ["width", "height", "projection", "projectionConfig"];
173
200
 
174
- var geoPath = d3Geo.geoPath,
175
- projections = _objectWithoutProperties(d3Geo, ["geoPath"]);
201
+ var geoPath = d3Geo__namespace.geoPath,
202
+ projections = _objectWithoutProperties(d3Geo__namespace, ["geoPath"]);
176
203
 
177
- var MapContext = createContext();
204
+ var MapContext = React.createContext();
178
205
 
179
206
  var makeProjection = function makeProjection(_ref) {
180
207
  var _ref$projectionConfig = _ref.projectionConfig,
@@ -220,7 +247,7 @@ var MapProvider = function MapProvider(_ref2) {
220
247
  p2 = _ref8[1];
221
248
 
222
249
  var s = projectionConfig.scale || null;
223
- var projMemo = useMemo(function () {
250
+ var projMemo = React.useMemo(function () {
224
251
  return makeProjection({
225
252
  projectionConfig: {
226
253
  center: cx || cx === 0 || cy || cy === 0 ? [cx, cy] : null,
@@ -233,8 +260,8 @@ var MapProvider = function MapProvider(_ref2) {
233
260
  height: height
234
261
  });
235
262
  }, [width, height, projection, cx, cy, rx, ry, rz, p1, p2, s]);
236
- var proj = useCallback(projMemo, [projMemo]);
237
- var value = useMemo(function () {
263
+ var proj = React.useCallback(projMemo, [projMemo]);
264
+ var value = React.useMemo(function () {
238
265
  return {
239
266
  width: width,
240
267
  height: height,
@@ -242,21 +269,20 @@ var MapProvider = function MapProvider(_ref2) {
242
269
  path: geoPath().projection(proj)
243
270
  };
244
271
  }, [width, height, proj]);
245
- return /*#__PURE__*/React.createElement(MapContext.Provider, _extends({
272
+ return /*#__PURE__*/React__default["default"].createElement(MapContext.Provider, _extends({
246
273
  value: value
247
274
  }, restProps));
248
275
  };
249
276
 
250
277
  MapProvider.propTypes = {
251
- width: PropTypes.number,
252
- height: PropTypes.number,
253
- projection: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
254
- projectionConfig: PropTypes.object
278
+ width: PropTypes__default["default"].number,
279
+ height: PropTypes__default["default"].number,
280
+ projection: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].func]),
281
+ projectionConfig: PropTypes__default["default"].object
255
282
  };
256
283
 
257
284
  var _excluded$8 = ["width", "height", "projection", "projectionConfig", "className"];
258
-
259
- var ComposableMap = function ComposableMap(_ref) {
285
+ var ComposableMap = React.forwardRef(function (_ref, ref) {
260
286
  var _ref$width = _ref.width,
261
287
  width = _ref$width === void 0 ? 800 : _ref$width,
262
288
  _ref$height = _ref.height,
@@ -269,23 +295,24 @@ var ComposableMap = function ComposableMap(_ref) {
269
295
  className = _ref$className === void 0 ? "" : _ref$className,
270
296
  restProps = _objectWithoutProperties(_ref, _excluded$8);
271
297
 
272
- return /*#__PURE__*/React.createElement(MapProvider, {
298
+ return /*#__PURE__*/React__default["default"].createElement(MapProvider, {
273
299
  width: width,
274
300
  height: height,
275
301
  projection: projection,
276
302
  projectionConfig: projectionConfig
277
- }, /*#__PURE__*/React.createElement("svg", _extends({
303
+ }, /*#__PURE__*/React__default["default"].createElement("svg", _extends({
304
+ ref: ref,
278
305
  viewBox: "0 0 ".concat(width, " ").concat(height),
279
306
  className: "rsm-svg ".concat(className)
280
307
  }, restProps)));
281
- };
282
-
308
+ });
309
+ ComposableMap.displayName = "ComposableMap";
283
310
  ComposableMap.propTypes = {
284
- width: PropTypes.number,
285
- height: PropTypes.number,
286
- projection: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
287
- projectionConfig: PropTypes.object,
288
- className: PropTypes.string
311
+ width: PropTypes__default["default"].number,
312
+ height: PropTypes__default["default"].number,
313
+ projection: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].func]),
314
+ projectionConfig: PropTypes__default["default"].object,
315
+ className: PropTypes__default["default"].string
289
316
  };
290
317
 
291
318
  function getCoords(w, h, t) {
@@ -311,16 +338,16 @@ function getFeatures(geographies, parseGeographies) {
311
338
  return parseGeographies ? parseGeographies(geographies.features || geographies) : geographies.features || geographies;
312
339
  }
313
340
 
314
- var feats = feature(geographies, geographies.objects[Object.keys(geographies.objects)[0]]).features;
341
+ var feats = topojsonClient.feature(geographies, geographies.objects[Object.keys(geographies.objects)[0]]).features;
315
342
  return parseGeographies ? parseGeographies(feats) : feats;
316
343
  }
317
344
  function getMesh(geographies) {
318
345
  var isTopojson = geographies.type === "Topology";
319
346
  if (!isTopojson) return null;
320
- var outline = mesh(geographies, geographies.objects[Object.keys(geographies.objects)[0]], function (a, b) {
347
+ var outline = topojsonClient.mesh(geographies, geographies.objects[Object.keys(geographies.objects)[0]], function (a, b) {
321
348
  return a === b;
322
349
  });
323
- var borders = mesh(geographies, geographies.objects[Object.keys(geographies.objects)[0]], function (a, b) {
350
+ var borders = topojsonClient.mesh(geographies, geographies.objects[Object.keys(geographies.objects)[0]], function (a, b) {
324
351
  return a !== b;
325
352
  });
326
353
  return {
@@ -365,15 +392,15 @@ function useGeographies(_ref) {
365
392
  var geography = _ref.geography,
366
393
  parseGeographies = _ref.parseGeographies;
367
394
 
368
- var _useContext = useContext(MapContext),
395
+ var _useContext = React.useContext(MapContext),
369
396
  path = _useContext.path;
370
397
 
371
- var _useState = useState({}),
398
+ var _useState = React.useState({}),
372
399
  _useState2 = _slicedToArray(_useState, 2),
373
400
  output = _useState2[0],
374
401
  setOutput = _useState2[1];
375
402
 
376
- useEffect(function () {
403
+ React.useEffect(function () {
377
404
  if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === "undefined") return;
378
405
  if (!geography) return;
379
406
 
@@ -394,7 +421,7 @@ function useGeographies(_ref) {
394
421
  }
395
422
  }, [geography, parseGeographies]);
396
423
 
397
- var _useMemo = useMemo(function () {
424
+ var _useMemo = React.useMemo(function () {
398
425
  var mesh = output.mesh || {};
399
426
  var preparedMesh = prepareMesh(mesh.outline, mesh.borders, path);
400
427
  return {
@@ -415,8 +442,7 @@ function useGeographies(_ref) {
415
442
  }
416
443
 
417
444
  var _excluded$7 = ["geography", "children", "parseGeographies", "className"];
418
-
419
- var Geographies = function Geographies(_ref) {
445
+ var Geographies = React.forwardRef(function (_ref, ref) {
420
446
  var geography = _ref.geography,
421
447
  children = _ref.children,
422
448
  parseGeographies = _ref.parseGeographies,
@@ -424,7 +450,7 @@ var Geographies = function Geographies(_ref) {
424
450
  className = _ref$className === void 0 ? "" : _ref$className,
425
451
  restProps = _objectWithoutProperties(_ref, _excluded$7);
426
452
 
427
- var _useContext = useContext(MapContext),
453
+ var _useContext = React.useContext(MapContext),
428
454
  path = _useContext.path,
429
455
  projection = _useContext.projection;
430
456
 
@@ -436,7 +462,8 @@ var Geographies = function Geographies(_ref) {
436
462
  outline = _useGeographies.outline,
437
463
  borders = _useGeographies.borders;
438
464
 
439
- return /*#__PURE__*/React.createElement("g", _extends({
465
+ return /*#__PURE__*/React__default["default"].createElement("g", _extends({
466
+ ref: ref,
440
467
  className: "rsm-geographies ".concat(className)
441
468
  }, restProps), geographies && geographies.length > 0 && children({
442
469
  geographies: geographies,
@@ -445,18 +472,17 @@ var Geographies = function Geographies(_ref) {
445
472
  path: path,
446
473
  projection: projection
447
474
  }));
448
- };
449
-
475
+ });
476
+ Geographies.displayName = "Geographies";
450
477
  Geographies.propTypes = {
451
- geography: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.array]),
452
- children: PropTypes.func,
453
- parseGeographies: PropTypes.func,
454
- className: PropTypes.string
478
+ geography: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].object, PropTypes__default["default"].array]),
479
+ children: PropTypes__default["default"].func,
480
+ parseGeographies: PropTypes__default["default"].func,
481
+ className: PropTypes__default["default"].string
455
482
  };
456
483
 
457
484
  var _excluded$6 = ["geography", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "onFocus", "onBlur", "style", "className"];
458
-
459
- var Geography = function Geography(_ref) {
485
+ var Geography = React.forwardRef(function (_ref, ref) {
460
486
  var geography = _ref.geography,
461
487
  onMouseEnter = _ref.onMouseEnter,
462
488
  onMouseLeave = _ref.onMouseLeave,
@@ -470,12 +496,12 @@ var Geography = function Geography(_ref) {
470
496
  className = _ref$className === void 0 ? "" : _ref$className,
471
497
  restProps = _objectWithoutProperties(_ref, _excluded$6);
472
498
 
473
- var _useState = useState(false),
499
+ var _useState = React.useState(false),
474
500
  _useState2 = _slicedToArray(_useState, 2),
475
501
  isPressed = _useState2[0],
476
502
  setPressed = _useState2[1];
477
503
 
478
- var _useState3 = useState(false),
504
+ var _useState3 = React.useState(false),
479
505
  _useState4 = _slicedToArray(_useState3, 2),
480
506
  isFocused = _useState4[0],
481
507
  setFocus = _useState4[1];
@@ -512,7 +538,8 @@ var Geography = function Geography(_ref) {
512
538
  if (onMouseUp) onMouseUp(evt);
513
539
  }
514
540
 
515
- return /*#__PURE__*/React.createElement("path", _extends({
541
+ return /*#__PURE__*/React__default["default"].createElement("path", _extends({
542
+ ref: ref,
516
543
  tabIndex: "0",
517
544
  className: "rsm-geography ".concat(className),
518
545
  d: geography.svgPath,
@@ -524,24 +551,23 @@ var Geography = function Geography(_ref) {
524
551
  onMouseUp: handleMouseUp,
525
552
  style: style[isPressed || isFocused ? isPressed ? "pressed" : "hover" : "default"]
526
553
  }, restProps));
527
- };
528
-
554
+ });
555
+ Geography.displayName = "Geography";
529
556
  Geography.propTypes = {
530
- geography: PropTypes.object,
531
- onMouseEnter: PropTypes.func,
532
- onMouseLeave: PropTypes.func,
533
- onMouseDown: PropTypes.func,
534
- onMouseUp: PropTypes.func,
535
- onFocus: PropTypes.func,
536
- onBlur: PropTypes.func,
537
- style: PropTypes.object,
538
- className: PropTypes.string
557
+ geography: PropTypes__default["default"].object,
558
+ onMouseEnter: PropTypes__default["default"].func,
559
+ onMouseLeave: PropTypes__default["default"].func,
560
+ onMouseDown: PropTypes__default["default"].func,
561
+ onMouseUp: PropTypes__default["default"].func,
562
+ onFocus: PropTypes__default["default"].func,
563
+ onBlur: PropTypes__default["default"].func,
564
+ style: PropTypes__default["default"].object,
565
+ className: PropTypes__default["default"].string
539
566
  };
540
- var Geography$1 = memo(Geography);
567
+ var Geography$1 = React.memo(Geography);
541
568
 
542
569
  var _excluded$5 = ["fill", "stroke", "step", "className"];
543
-
544
- var Graticule = function Graticule(_ref) {
570
+ var Graticule = React.forwardRef(function (_ref, ref) {
545
571
  var _ref$fill = _ref.fill,
546
572
  fill = _ref$fill === void 0 ? "transparent" : _ref$fill,
547
573
  _ref$stroke = _ref.stroke,
@@ -552,24 +578,25 @@ var Graticule = function Graticule(_ref) {
552
578
  className = _ref$className === void 0 ? "" : _ref$className,
553
579
  restProps = _objectWithoutProperties(_ref, _excluded$5);
554
580
 
555
- var _useContext = useContext(MapContext),
581
+ var _useContext = React.useContext(MapContext),
556
582
  path = _useContext.path;
557
583
 
558
- return /*#__PURE__*/React.createElement("path", _extends({
559
- d: path(geoGraticule().step(step)()),
584
+ return /*#__PURE__*/React__default["default"].createElement("path", _extends({
585
+ ref: ref,
586
+ d: path(d3Geo.geoGraticule().step(step)()),
560
587
  fill: fill,
561
588
  stroke: stroke,
562
589
  className: "rsm-graticule ".concat(className)
563
590
  }, restProps));
564
- };
565
-
591
+ });
592
+ Graticule.displayName = "Graticule";
566
593
  Graticule.propTypes = {
567
- fill: PropTypes.string,
568
- stroke: PropTypes.string,
569
- step: PropTypes.array,
570
- className: PropTypes.string
594
+ fill: PropTypes__default["default"].string,
595
+ stroke: PropTypes__default["default"].string,
596
+ step: PropTypes__default["default"].array,
597
+ className: PropTypes__default["default"].string
571
598
  };
572
- var Graticule$1 = memo(Graticule);
599
+ var Graticule$1 = React.memo(Graticule);
573
600
 
574
601
  function useZoomPan(_ref) {
575
602
  var center = _ref.center,
@@ -582,9 +609,9 @@ function useZoomPan(_ref) {
582
609
  _ref$scaleExtent = _ref.scaleExtent,
583
610
  scaleExtent = _ref$scaleExtent === void 0 ? [1, 8] : _ref$scaleExtent,
584
611
  _ref$zoom = _ref.zoom,
585
- zoom$1 = _ref$zoom === void 0 ? 1 : _ref$zoom;
612
+ zoom = _ref$zoom === void 0 ? 1 : _ref$zoom;
586
613
 
587
- var _useContext = useContext(MapContext),
614
+ var _useContext = React.useContext(MapContext),
588
615
  width = _useContext.width,
589
616
  height = _useContext.height,
590
617
  projection = _useContext.projection;
@@ -593,7 +620,7 @@ function useZoomPan(_ref) {
593
620
  lon = _center[0],
594
621
  lat = _center[1];
595
622
 
596
- var _useState = useState({
623
+ var _useState = React.useState({
597
624
  x: 0,
598
625
  y: 0,
599
626
  k: 1
@@ -602,14 +629,14 @@ function useZoomPan(_ref) {
602
629
  position = _useState2[0],
603
630
  setPosition = _useState2[1];
604
631
 
605
- var lastPosition = useRef({
632
+ var lastPosition = React.useRef({
606
633
  x: 0,
607
634
  y: 0,
608
635
  k: 1
609
636
  });
610
- var mapRef = useRef();
611
- var zoomRef = useRef();
612
- var bypassEvents = useRef(false);
637
+ var mapRef = React.useRef();
638
+ var zoomRef = React.useRef();
639
+ var bypassEvents = React.useRef(false);
613
640
 
614
641
  var _translateExtent = _slicedToArray(translateExtent, 2),
615
642
  a = _translateExtent[0],
@@ -627,8 +654,8 @@ function useZoomPan(_ref) {
627
654
  minZoom = _scaleExtent[0],
628
655
  maxZoom = _scaleExtent[1];
629
656
 
630
- useEffect(function () {
631
- var svg = select(mapRef.current);
657
+ React.useEffect(function () {
658
+ var svg = d3Selection.select(mapRef.current);
632
659
 
633
660
  function handleZoomStart(d3Event) {
634
661
  if (!onMoveStart || bypassEvents.current) return;
@@ -688,29 +715,29 @@ function useZoomPan(_ref) {
688
715
  return d3Event ? !d3Event.ctrlKey && !d3Event.button : false;
689
716
  }
690
717
 
691
- var zoom$1 = zoom().filter(filterFunc).scaleExtent([minZoom, maxZoom]).translateExtent([[a1, a2], [b1, b2]]).on("start", handleZoomStart).on("zoom", handleZoom).on("end", handleZoomEnd);
692
- zoomRef.current = zoom$1;
693
- svg.call(zoom$1);
718
+ var zoom = d3Zoom.zoom().filter(filterFunc).scaleExtent([minZoom, maxZoom]).translateExtent([[a1, a2], [b1, b2]]).on("start", handleZoomStart).on("zoom", handleZoom).on("end", handleZoomEnd);
719
+ zoomRef.current = zoom;
720
+ svg.call(zoom);
694
721
  }, [width, height, a1, a2, b1, b2, minZoom, maxZoom, projection, onMoveStart, onMove, onMoveEnd, filterZoomEvent]);
695
- useEffect(function () {
696
- if (lon === lastPosition.current.x && lat === lastPosition.current.y && zoom$1 === lastPosition.current.k) return;
722
+ React.useEffect(function () {
723
+ if (lon === lastPosition.current.x && lat === lastPosition.current.y && zoom === lastPosition.current.k) return;
697
724
  var coords = projection([lon, lat]);
698
- var x = coords[0] * zoom$1;
699
- var y = coords[1] * zoom$1;
700
- var svg = select(mapRef.current);
725
+ var x = coords[0] * zoom;
726
+ var y = coords[1] * zoom;
727
+ var svg = d3Selection.select(mapRef.current);
701
728
  bypassEvents.current = true;
702
- svg.call(zoomRef.current.transform, zoomIdentity.translate(width / 2 - x, height / 2 - y).scale(zoom$1));
729
+ svg.call(zoomRef.current.transform, d3Zoom.zoomIdentity.translate(width / 2 - x, height / 2 - y).scale(zoom));
703
730
  setPosition({
704
731
  x: width / 2 - x,
705
732
  y: height / 2 - y,
706
- k: zoom$1
733
+ k: zoom
707
734
  });
708
735
  lastPosition.current = {
709
736
  x: lon,
710
737
  y: lat,
711
- k: zoom$1
738
+ k: zoom
712
739
  };
713
- }, [lon, lat, zoom$1, width, height, projection]);
740
+ }, [lon, lat, zoom, width, height, projection]);
714
741
  return {
715
742
  mapRef: mapRef,
716
743
  position: position,
@@ -719,8 +746,7 @@ function useZoomPan(_ref) {
719
746
  }
720
747
 
721
748
  var _excluded$4 = ["center", "zoom", "minZoom", "maxZoom", "translateExtent", "filterZoomEvent", "onMoveStart", "onMove", "onMoveEnd", "className"];
722
-
723
- var ZoomableGroup = function ZoomableGroup(_ref) {
749
+ var ZoomableGroup = React.forwardRef(function (_ref, ref) {
724
750
  var _ref$center = _ref.center,
725
751
  center = _ref$center === void 0 ? [0, 0] : _ref$center,
726
752
  _ref$zoom = _ref.zoom,
@@ -737,7 +763,7 @@ var ZoomableGroup = function ZoomableGroup(_ref) {
737
763
  className = _ref.className,
738
764
  restProps = _objectWithoutProperties(_ref, _excluded$4);
739
765
 
740
- var _useContext = useContext(MapContext),
766
+ var _useContext = React.useContext(MapContext),
741
767
  width = _useContext.width,
742
768
  height = _useContext.height;
743
769
 
@@ -754,33 +780,33 @@ var ZoomableGroup = function ZoomableGroup(_ref) {
754
780
  mapRef = _useZoomPan.mapRef,
755
781
  transformString = _useZoomPan.transformString;
756
782
 
757
- return /*#__PURE__*/React.createElement("g", {
783
+ return /*#__PURE__*/React__default["default"].createElement("g", {
758
784
  ref: mapRef
759
- }, /*#__PURE__*/React.createElement("rect", {
785
+ }, /*#__PURE__*/React__default["default"].createElement("rect", {
760
786
  width: width,
761
787
  height: height,
762
788
  fill: "transparent"
763
- }), /*#__PURE__*/React.createElement("g", _extends({
789
+ }), /*#__PURE__*/React__default["default"].createElement("g", _extends({
790
+ ref: ref,
764
791
  transform: transformString,
765
792
  className: "rsm-zoomable-group ".concat(className)
766
793
  }, restProps)));
767
- };
768
-
794
+ });
795
+ ZoomableGroup.displayName = "ZoomableGroup";
769
796
  ZoomableGroup.propTypes = {
770
- center: PropTypes.array,
771
- zoom: PropTypes.number,
772
- minZoom: PropTypes.number,
773
- maxZoom: PropTypes.number,
774
- translateExtent: PropTypes.arrayOf(PropTypes.array),
775
- onMoveStart: PropTypes.func,
776
- onMove: PropTypes.func,
777
- onMoveEnd: PropTypes.func,
778
- className: PropTypes.string
797
+ center: PropTypes__default["default"].array,
798
+ zoom: PropTypes__default["default"].number,
799
+ minZoom: PropTypes__default["default"].number,
800
+ maxZoom: PropTypes__default["default"].number,
801
+ translateExtent: PropTypes__default["default"].arrayOf(PropTypes__default["default"].array),
802
+ onMoveStart: PropTypes__default["default"].func,
803
+ onMove: PropTypes__default["default"].func,
804
+ onMoveEnd: PropTypes__default["default"].func,
805
+ className: PropTypes__default["default"].string
779
806
  };
780
807
 
781
808
  var _excluded$3 = ["id", "fill", "stroke", "strokeWidth", "className"];
782
-
783
- var Sphere = function Sphere(_ref) {
809
+ var Sphere = React.forwardRef(function (_ref, ref) {
784
810
  var _ref$id = _ref.id,
785
811
  id = _ref$id === void 0 ? "rsm-sphere" : _ref$id,
786
812
  _ref$fill = _ref.fill,
@@ -793,19 +819,20 @@ var Sphere = function Sphere(_ref) {
793
819
  className = _ref$className === void 0 ? "" : _ref$className,
794
820
  restProps = _objectWithoutProperties(_ref, _excluded$3);
795
821
 
796
- var _useContext = useContext(MapContext),
822
+ var _useContext = React.useContext(MapContext),
797
823
  path = _useContext.path;
798
824
 
799
- var spherePath = useMemo(function () {
825
+ var spherePath = React.useMemo(function () {
800
826
  return path({
801
827
  type: "Sphere"
802
828
  });
803
829
  }, [path]);
804
- return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("clipPath", {
830
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, /*#__PURE__*/React__default["default"].createElement("defs", null, /*#__PURE__*/React__default["default"].createElement("clipPath", {
805
831
  id: id
806
- }, /*#__PURE__*/React.createElement("path", {
832
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
807
833
  d: spherePath
808
- }))), /*#__PURE__*/React.createElement("path", _extends({
834
+ }))), /*#__PURE__*/React__default["default"].createElement("path", _extends({
835
+ ref: ref,
809
836
  d: spherePath,
810
837
  fill: fill,
811
838
  stroke: stroke,
@@ -815,20 +842,19 @@ var Sphere = function Sphere(_ref) {
815
842
  },
816
843
  className: "rsm-sphere ".concat(className)
817
844
  }, restProps)));
818
- };
819
-
845
+ });
846
+ Sphere.displayName = "Sphere";
820
847
  Sphere.propTypes = {
821
- id: PropTypes.string,
822
- fill: PropTypes.string,
823
- stroke: PropTypes.string,
824
- strokeWidth: PropTypes.number,
825
- className: PropTypes.string
848
+ id: PropTypes__default["default"].string,
849
+ fill: PropTypes__default["default"].string,
850
+ stroke: PropTypes__default["default"].string,
851
+ strokeWidth: PropTypes__default["default"].number,
852
+ className: PropTypes__default["default"].string
826
853
  };
827
- var Sphere$1 = memo(Sphere);
854
+ var Sphere$1 = React.memo(Sphere);
828
855
 
829
856
  var _excluded$2 = ["coordinates", "children", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "onFocus", "onBlur", "style", "className"];
830
-
831
- var Marker = function Marker(_ref) {
857
+ var Marker = React.forwardRef(function (_ref, ref) {
832
858
  var coordinates = _ref.coordinates,
833
859
  children = _ref.children,
834
860
  onMouseEnter = _ref.onMouseEnter,
@@ -843,15 +869,15 @@ var Marker = function Marker(_ref) {
843
869
  className = _ref$className === void 0 ? "" : _ref$className,
844
870
  restProps = _objectWithoutProperties(_ref, _excluded$2);
845
871
 
846
- var _useContext = useContext(MapContext),
872
+ var _useContext = React.useContext(MapContext),
847
873
  projection = _useContext.projection;
848
874
 
849
- var _useState = useState(false),
875
+ var _useState = React.useState(false),
850
876
  _useState2 = _slicedToArray(_useState, 2),
851
877
  isPressed = _useState2[0],
852
878
  setPressed = _useState2[1];
853
879
 
854
- var _useState3 = useState(false),
880
+ var _useState3 = React.useState(false),
855
881
  _useState4 = _slicedToArray(_useState3, 2),
856
882
  isFocused = _useState4[0],
857
883
  setFocus = _useState4[1];
@@ -893,7 +919,8 @@ var Marker = function Marker(_ref) {
893
919
  if (onMouseUp) onMouseUp(evt);
894
920
  }
895
921
 
896
- return /*#__PURE__*/React.createElement("g", _extends({
922
+ return /*#__PURE__*/React__default["default"].createElement("g", _extends({
923
+ ref: ref,
897
924
  transform: "translate(".concat(x, ", ").concat(y, ")"),
898
925
  className: "rsm-marker ".concat(className),
899
926
  onMouseEnter: handleMouseEnter,
@@ -904,24 +931,23 @@ var Marker = function Marker(_ref) {
904
931
  onMouseUp: handleMouseUp,
905
932
  style: style[isPressed || isFocused ? isPressed ? "pressed" : "hover" : "default"]
906
933
  }, restProps), children);
907
- };
908
-
934
+ });
935
+ Marker.displayName = "Marker";
909
936
  Marker.propTypes = {
910
- coordinates: PropTypes.array,
911
- children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
912
- onMouseEnter: PropTypes.func,
913
- onMouseLeave: PropTypes.func,
914
- onMouseDown: PropTypes.func,
915
- onMouseUp: PropTypes.func,
916
- onFocus: PropTypes.func,
917
- onBlur: PropTypes.func,
918
- style: PropTypes.object,
919
- className: PropTypes.string
937
+ coordinates: PropTypes__default["default"].array,
938
+ children: PropTypes__default["default"].oneOfType([PropTypes__default["default"].node, PropTypes__default["default"].arrayOf(PropTypes__default["default"].node)]),
939
+ onMouseEnter: PropTypes__default["default"].func,
940
+ onMouseLeave: PropTypes__default["default"].func,
941
+ onMouseDown: PropTypes__default["default"].func,
942
+ onMouseUp: PropTypes__default["default"].func,
943
+ onFocus: PropTypes__default["default"].func,
944
+ onBlur: PropTypes__default["default"].func,
945
+ style: PropTypes__default["default"].object,
946
+ className: PropTypes__default["default"].string
920
947
  };
921
948
 
922
949
  var _excluded$1 = ["from", "to", "coordinates", "stroke", "strokeWidth", "fill", "className"];
923
-
924
- var Line = function Line(_ref) {
950
+ var Line = React.forwardRef(function (_ref, ref) {
925
951
  var _ref$from = _ref.from,
926
952
  from = _ref$from === void 0 ? [0, 0] : _ref$from,
927
953
  _ref$to = _ref.to,
@@ -937,35 +963,35 @@ var Line = function Line(_ref) {
937
963
  className = _ref$className === void 0 ? "" : _ref$className,
938
964
  restProps = _objectWithoutProperties(_ref, _excluded$1);
939
965
 
940
- var _useContext = useContext(MapContext),
966
+ var _useContext = React.useContext(MapContext),
941
967
  path = _useContext.path;
942
968
 
943
969
  var lineData = {
944
970
  type: "LineString",
945
971
  coordinates: coordinates || [from, to]
946
972
  };
947
- return /*#__PURE__*/React.createElement("path", _extends({
973
+ return /*#__PURE__*/React__default["default"].createElement("path", _extends({
974
+ ref: ref,
948
975
  d: path(lineData),
949
976
  className: "rsm-line ".concat(className),
950
977
  stroke: stroke,
951
978
  strokeWidth: strokeWidth,
952
979
  fill: fill
953
980
  }, restProps));
954
- };
955
-
981
+ });
982
+ Line.displayName = "Line";
956
983
  Line.propTypes = {
957
- from: PropTypes.array,
958
- to: PropTypes.array,
959
- coordinates: PropTypes.array,
960
- stroke: PropTypes.string,
961
- strokeWidth: PropTypes.number,
962
- fill: PropTypes.string,
963
- className: PropTypes.string
984
+ from: PropTypes__default["default"].array,
985
+ to: PropTypes__default["default"].array,
986
+ coordinates: PropTypes__default["default"].array,
987
+ stroke: PropTypes__default["default"].string,
988
+ strokeWidth: PropTypes__default["default"].number,
989
+ fill: PropTypes__default["default"].string,
990
+ className: PropTypes__default["default"].string
964
991
  };
965
992
 
966
993
  var _excluded = ["subject", "children", "connectorProps", "dx", "dy", "curve", "className"];
967
-
968
- var Annotation = function Annotation(_ref) {
994
+ var Annotation = React.forwardRef(function (_ref, ref) {
969
995
  var subject = _ref.subject,
970
996
  children = _ref.children,
971
997
  connectorProps = _ref.connectorProps,
@@ -979,7 +1005,7 @@ var Annotation = function Annotation(_ref) {
979
1005
  className = _ref$className === void 0 ? "" : _ref$className,
980
1006
  restProps = _objectWithoutProperties(_ref, _excluded);
981
1007
 
982
- var _useContext = useContext(MapContext),
1008
+ var _useContext = React.useContext(MapContext),
983
1009
  projection = _useContext.projection;
984
1010
 
985
1011
  var _projection = projection(subject),
@@ -988,24 +1014,37 @@ var Annotation = function Annotation(_ref) {
988
1014
  y = _projection2[1];
989
1015
 
990
1016
  var connectorPath = createConnectorPath(dx, dy, curve);
991
- return /*#__PURE__*/React.createElement("g", _extends({
1017
+ return /*#__PURE__*/React__default["default"].createElement("g", _extends({
1018
+ ref: ref,
992
1019
  transform: "translate(".concat(x + dx, ", ").concat(y + dy, ")"),
993
1020
  className: "rsm-annotation ".concat(className)
994
- }, restProps), /*#__PURE__*/React.createElement("path", _extends({
1021
+ }, restProps), /*#__PURE__*/React__default["default"].createElement("path", _extends({
995
1022
  d: connectorPath,
996
1023
  fill: "transparent",
997
1024
  stroke: "#000"
998
1025
  }, connectorProps)), children);
999
- };
1000
-
1026
+ });
1027
+ Annotation.displayName = "Annotation";
1001
1028
  Annotation.propTypes = {
1002
- subject: PropTypes.array,
1003
- children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
1004
- dx: PropTypes.number,
1005
- dy: PropTypes.number,
1006
- curve: PropTypes.number,
1007
- connectorProps: PropTypes.object,
1008
- className: PropTypes.string
1029
+ subject: PropTypes__default["default"].array,
1030
+ children: PropTypes__default["default"].oneOfType([PropTypes__default["default"].node, PropTypes__default["default"].arrayOf(PropTypes__default["default"].node)]),
1031
+ dx: PropTypes__default["default"].number,
1032
+ dy: PropTypes__default["default"].number,
1033
+ curve: PropTypes__default["default"].number,
1034
+ connectorProps: PropTypes__default["default"].object,
1035
+ className: PropTypes__default["default"].string
1009
1036
  };
1010
1037
 
1011
- export { Annotation, ComposableMap, Geographies, Geography$1 as Geography, Graticule$1 as Graticule, Line, MapContext, MapProvider, Marker, Sphere$1 as Sphere, ZoomableGroup, useGeographies, useZoomPan };
1038
+ exports.Annotation = Annotation;
1039
+ exports.ComposableMap = ComposableMap;
1040
+ exports.Geographies = Geographies;
1041
+ exports.Geography = Geography$1;
1042
+ exports.Graticule = Graticule$1;
1043
+ exports.Line = Line;
1044
+ exports.MapContext = MapContext;
1045
+ exports.MapProvider = MapProvider;
1046
+ exports.Marker = Marker;
1047
+ exports.Sphere = Sphere$1;
1048
+ exports.ZoomableGroup = ZoomableGroup;
1049
+ exports.useGeographies = useGeographies;
1050
+ exports.useZoomPan = useZoomPan;
package/dist/index.umd.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types"),require("d3-geo"),require("topojson-client"),require("d3-zoom"),require("d3-selection")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","d3-geo","topojson-client","d3-zoom","d3-selection"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).reactSimpleMaps=e.reactSimpleMaps||{},e.React,e.PropTypes,e.d3,e.topojson,e.d3,e.d3)}(this,(function(e,t,o,r,n,a,u){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(o){if("default"!==o){var r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:function(){return e[o]}})}})),t.default=e,Object.freeze(t)}var l=s(t),i=s(o),f=c(r);function d(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function p(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?d(Object(o),!0).forEach((function(t){g(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):d(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function g(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var r in o)Object.prototype.hasOwnProperty.call(o,r)&&(e[r]=o[r])}return e},h.apply(this,arguments)}function v(e,t){if(null==e)return{};var o,r,n=function(e,t){if(null==e)return{};var o,r,n={},a=Object.keys(e);for(r=0;r<a.length;r++)o=a[r],t.indexOf(o)>=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)o=a[r],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==o)return;var r,n,a=[],u=!0,s=!1;try{for(o=o.call(e);!(u=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);u=!0);}catch(e){s=!0,n=e}finally{try{u||null==o.return||o.return()}finally{if(s)throw n}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return b(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);"Object"===o&&e.constructor&&(o=e.constructor.name);if("Map"===o||"Set"===o)return Array.from(e);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return b(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,r=new Array(t);o<t;o++)r[o]=e[o];return r}var j=["width","height","projection","projectionConfig"],M=f.geoPath,E=v(f,["geoPath"]),O=t.createContext(),k=function(e){var o=e.width,r=e.height,n=e.projection,a=e.projectionConfig,u=v(e,j),s=y(a.center||[],2),c=s[0],i=s[1],f=y(a.rotate||[],3),d=f[0],p=f[1],m=f[2],g=y(a.parallels||[],2),b=g[0],k=g[1],x=a.scale||null,w=t.useMemo((function(){return function(e){var t=e.projectionConfig,o=void 0===t?{}:t,r=e.projection,n=void 0===r?"geoEqualEarth":r,a=e.width,u=void 0===a?800:a,s=e.height,c=void 0===s?600:s;if("function"==typeof n)return n;var l=E[n]().translate([u/2,c/2]);return[l.center?"center":null,l.rotate?"rotate":null,l.scale?"scale":null,l.parallels?"parallels":null].forEach((function(e){e&&(l=l[e](o[e]||l[e]()))})),l}({projectionConfig:{center:c||0===c||i||0===i?[c,i]:null,rotate:d||0===d||p||0===p?[d,p,m]:null,parallels:b||0===b||k||0===k?[b,k]:null,scale:x},projection:n,width:o,height:r})}),[o,r,n,c,i,d,p,m,b,k,x]),N=t.useCallback(w,[w]),S=t.useMemo((function(){return{width:o,height:r,projection:N,path:M().projection(N)}}),[o,r,N]);return l.default.createElement(O.Provider,h({value:S},u))};k.propTypes={width:i.default.number,height:i.default.number,projection:i.default.oneOfType([i.default.string,i.default.func]),projectionConfig:i.default.object};var x=["width","height","projection","projectionConfig","className"],w=function(e){var t=e.width,o=void 0===t?800:t,r=e.height,n=void 0===r?600:r,a=e.projection,u=void 0===a?"geoEqualEarth":a,s=e.projectionConfig,c=void 0===s?{}:s,i=e.className,f=void 0===i?"":i,d=v(e,x);return l.default.createElement(k,{width:o,height:n,projection:u,projectionConfig:c},l.default.createElement("svg",h({viewBox:"0 0 ".concat(o," ").concat(n),className:"rsm-svg ".concat(f)},d)))};function N(e,t,o){var r=(e*o.k-e)/2,n=(t*o.k-t)/2;return[e/2-(r+o.x)/o.k,t/2-(n+o.y)/o.k]}function S(e,t){if(!("Topology"===e.type))return t?t(e.features||e):e.features||e;var o=n.feature(e,e.objects[Object.keys(e.objects)[0]]).features;return t?t(o):o}function P(e){return"Topology"===e.type?{outline:n.mesh(e,e.objects[Object.keys(e.objects)[0]],(function(e,t){return e===t})),borders:n.mesh(e,e.objects[Object.keys(e.objects)[0]],(function(e,t){return e!==t}))}:null}function C(e,t){return e?e.map((function(e,o){return p(p({},e),{},{rsmKey:"geo-".concat(o),svgPath:t(e)})})):[]}function T(e){var o=e.geography,r=e.parseGeographies,n=t.useContext(O).path,a=y(t.useState({}),2),u=a[0],s=a[1];t.useEffect((function(){var e;"undefined"!==("undefined"==typeof window?"undefined":m(window))&&(o&&("string"==typeof o?(e=o,fetch(e).then((function(e){if(!e.ok)throw Error(e.statusText);return e.json()})).catch((function(e){console.log("There was a problem when fetching the data: ",e)}))).then((function(e){e&&s({geographies:S(e,r),mesh:P(e)})})):s({geographies:S(o,r),mesh:P(o)})))}),[o,r]);var c=t.useMemo((function(){var e=u.mesh||{},t=function(e,t,o){return e&&t?{outline:p(p({},e),{},{rsmKey:"outline",svgPath:o(e)}),borders:p(p({},t),{},{rsmKey:"borders",svgPath:o(t)})}:{}}(e.outline,e.borders,n);return{geographies:C(u.geographies,n),outline:t.outline,borders:t.borders}}),[u,n]);return{geographies:c.geographies,outline:c.outline,borders:c.borders}}w.propTypes={width:i.default.number,height:i.default.number,projection:i.default.oneOfType([i.default.string,i.default.func]),projectionConfig:i.default.object,className:i.default.string};var z=["geography","children","parseGeographies","className"],D=function(e){var o=e.geography,r=e.children,n=e.parseGeographies,a=e.className,u=void 0===a?"":a,s=v(e,z),c=t.useContext(O),i=c.path,f=c.projection,d=T({geography:o,parseGeographies:n}),p=d.geographies,m=d.outline,g=d.borders;return l.default.createElement("g",h({className:"rsm-geographies ".concat(u)},s),p&&p.length>0&&r({geographies:p,outline:m,borders:g,path:i,projection:f}))};D.propTypes={geography:i.default.oneOfType([i.default.string,i.default.object,i.default.array]),children:i.default.func,parseGeographies:i.default.func,className:i.default.string};var Z=["geography","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","onFocus","onBlur","style","className"],G=function(e){var o=e.geography,r=e.onMouseEnter,n=e.onMouseLeave,a=e.onMouseDown,u=e.onMouseUp,s=e.onFocus,c=e.onBlur,i=e.style,f=void 0===i?{}:i,d=e.className,p=void 0===d?"":d,m=v(e,Z),g=y(t.useState(!1),2),b=g[0],j=g[1],M=y(t.useState(!1),2),E=M[0],O=M[1];return l.default.createElement("path",h({tabIndex:"0",className:"rsm-geography ".concat(p),d:o.svgPath,onMouseEnter:function(e){O(!0),r&&r(e)},onMouseLeave:function(e){O(!1),b&&j(!1),n&&n(e)},onFocus:function(e){O(!0),s&&s(e)},onBlur:function(e){O(!1),b&&j(!1),c&&c(e)},onMouseDown:function(e){j(!0),a&&a(e)},onMouseUp:function(e){j(!1),u&&u(e)},style:f[b||E?b?"pressed":"hover":"default"]},m))};G.propTypes={geography:i.default.object,onMouseEnter:i.default.func,onMouseLeave:i.default.func,onMouseDown:i.default.func,onMouseUp:i.default.func,onFocus:i.default.func,onBlur:i.default.func,style:i.default.object,className:i.default.string};var L=t.memo(G),A=["fill","stroke","step","className"],B=function(e){var o=e.fill,n=void 0===o?"transparent":o,a=e.stroke,u=void 0===a?"currentcolor":a,s=e.step,c=void 0===s?[10,10]:s,i=e.className,f=void 0===i?"":i,d=v(e,A),p=t.useContext(O).path;return l.default.createElement("path",h({d:p(r.geoGraticule().step(c)()),fill:n,stroke:u,className:"rsm-graticule ".concat(f)},d))};B.propTypes={fill:i.default.string,stroke:i.default.string,step:i.default.array,className:i.default.string};var F=t.memo(B);function U(e){var o=e.center,r=e.filterZoomEvent,n=e.onMoveStart,s=e.onMoveEnd,c=e.onMove,l=e.translateExtent,i=void 0===l?[[-1/0,-1/0],[1/0,1/0]]:l,f=e.scaleExtent,d=void 0===f?[1,8]:f,p=e.zoom,m=void 0===p?1:p,g=t.useContext(O),h=g.width,v=g.height,b=g.projection,j=y(o,2),M=j[0],E=j[1],k=y(t.useState({x:0,y:0,k:1}),2),x=k[0],w=k[1],S=t.useRef({x:0,y:0,k:1}),P=t.useRef(),C=t.useRef(),T=t.useRef(!1),z=y(i,2),D=z[0],Z=z[1],G=y(D,2),L=G[0],A=G[1],B=y(Z,2),F=B[0],U=B[1],q=y(d,2),W=q[0],R=q[1];return t.useEffect((function(){var e=u.select(P.current);var t=a.zoom().filter((function(e){return r?r(e):!!e&&(!e.ctrlKey&&!e.button)})).scaleExtent([W,R]).translateExtent([[L,A],[F,U]]).on("start",(function(e){n&&!T.current&&n({coordinates:b.invert(N(h,v,e.transform)),zoom:e.transform.k},e)})).on("zoom",(function(e){if(!T.current){var t=e.transform,o=e.sourceEvent;w({x:t.x,y:t.y,k:t.k,dragging:o}),c&&c({x:t.x,y:t.y,zoom:t.k,dragging:o},e)}})).on("end",(function(e){if(T.current)T.current=!1;else{var t=y(b.invert(N(h,v,e.transform)),2),o=t[0],r=t[1];S.current={x:o,y:r,k:e.transform.k},s&&s({coordinates:[o,r],zoom:e.transform.k},e)}}));C.current=t,e.call(t)}),[h,v,L,A,F,U,W,R,b,n,c,s,r]),t.useEffect((function(){if(M!==S.current.x||E!==S.current.y||m!==S.current.k){var e=b([M,E]),t=e[0]*m,o=e[1]*m,r=u.select(P.current);T.current=!0,r.call(C.current.transform,a.zoomIdentity.translate(h/2-t,v/2-o).scale(m)),w({x:h/2-t,y:v/2-o,k:m}),S.current={x:M,y:E,k:m}}}),[M,E,m,h,v,b]),{mapRef:P,position:x,transformString:"translate(".concat(x.x," ").concat(x.y,") scale(").concat(x.k,")")}}var q=["center","zoom","minZoom","maxZoom","translateExtent","filterZoomEvent","onMoveStart","onMove","onMoveEnd","className"],W=function(e){var o=e.center,r=void 0===o?[0,0]:o,n=e.zoom,a=void 0===n?1:n,u=e.minZoom,s=void 0===u?1:u,c=e.maxZoom,i=void 0===c?8:c,f=e.translateExtent,d=e.filterZoomEvent,p=e.onMoveStart,m=e.onMove,g=e.onMoveEnd,y=e.className,b=v(e,q),j=t.useContext(O),M=j.width,E=j.height,k=U({center:r,filterZoomEvent:d,onMoveStart:p,onMove:m,onMoveEnd:g,scaleExtent:[s,i],translateExtent:f,zoom:a}),x=k.mapRef,w=k.transformString;return l.default.createElement("g",{ref:x},l.default.createElement("rect",{width:M,height:E,fill:"transparent"}),l.default.createElement("g",h({transform:w,className:"rsm-zoomable-group ".concat(y)},b)))};W.propTypes={center:i.default.array,zoom:i.default.number,minZoom:i.default.number,maxZoom:i.default.number,translateExtent:i.default.arrayOf(i.default.array),onMoveStart:i.default.func,onMove:i.default.func,onMoveEnd:i.default.func,className:i.default.string};var R=["id","fill","stroke","strokeWidth","className"],I=function(e){var o=e.id,r=void 0===o?"rsm-sphere":o,n=e.fill,a=void 0===n?"transparent":n,u=e.stroke,s=void 0===u?"currentcolor":u,c=e.strokeWidth,i=void 0===c?.5:c,f=e.className,d=void 0===f?"":f,p=v(e,R),m=t.useContext(O).path,g=t.useMemo((function(){return m({type:"Sphere"})}),[m]);return l.default.createElement(t.Fragment,null,l.default.createElement("defs",null,l.default.createElement("clipPath",{id:r},l.default.createElement("path",{d:g}))),l.default.createElement("path",h({d:g,fill:a,stroke:s,strokeWidth:i,style:{pointerEvents:"none"},className:"rsm-sphere ".concat(d)},p)))};I.propTypes={id:i.default.string,fill:i.default.string,stroke:i.default.string,strokeWidth:i.default.number,className:i.default.string};var K=t.memo(I),_=["coordinates","children","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","onFocus","onBlur","style","className"],Q=function(e){var o=e.coordinates,r=e.children,n=e.onMouseEnter,a=e.onMouseLeave,u=e.onMouseDown,s=e.onMouseUp,c=e.onFocus,i=e.onBlur,f=e.style,d=void 0===f?{}:f,p=e.className,m=void 0===p?"":p,g=v(e,_),b=t.useContext(O).projection,j=y(t.useState(!1),2),M=j[0],E=j[1],k=y(t.useState(!1),2),x=k[0],w=k[1],N=y(b(o),2),S=N[0],P=N[1];return l.default.createElement("g",h({transform:"translate(".concat(S,", ").concat(P,")"),className:"rsm-marker ".concat(m),onMouseEnter:function(e){w(!0),n&&n(e)},onMouseLeave:function(e){w(!1),M&&E(!1),a&&a(e)},onFocus:function(e){w(!0),c&&c(e)},onBlur:function(e){w(!1),M&&E(!1),i&&i(e)},onMouseDown:function(e){E(!0),u&&u(e)},onMouseUp:function(e){E(!1),s&&s(e)},style:d[M||x?M?"pressed":"hover":"default"]},g),r)};Q.propTypes={coordinates:i.default.array,children:i.default.oneOfType([i.default.node,i.default.arrayOf(i.default.node)]),onMouseEnter:i.default.func,onMouseLeave:i.default.func,onMouseDown:i.default.func,onMouseUp:i.default.func,onFocus:i.default.func,onBlur:i.default.func,style:i.default.object,className:i.default.string};var $=["from","to","coordinates","stroke","strokeWidth","fill","className"],H=function(e){var o=e.from,r=void 0===o?[0,0]:o,n=e.to,a=void 0===n?[0,0]:n,u=e.coordinates,s=e.stroke,c=void 0===s?"currentcolor":s,i=e.strokeWidth,f=void 0===i?3:i,d=e.fill,p=void 0===d?"transparent":d,m=e.className,g=void 0===m?"":m,y=v(e,$),b=t.useContext(O).path,j={type:"LineString",coordinates:u||[r,a]};return l.default.createElement("path",h({d:b(j),className:"rsm-line ".concat(g),stroke:c,strokeWidth:f,fill:p},y))};H.propTypes={from:i.default.array,to:i.default.array,coordinates:i.default.array,stroke:i.default.string,strokeWidth:i.default.number,fill:i.default.string,className:i.default.string};var J=["subject","children","connectorProps","dx","dy","curve","className"],V=function(e){var o=e.subject,r=e.children,n=e.connectorProps,a=e.dx,u=void 0===a?30:a,s=e.dy,c=void 0===s?30:s,i=e.curve,f=void 0===i?0:i,d=e.className,p=void 0===d?"":d,m=v(e,J),g=y((0,t.useContext(O).projection)(o),2),b=g[0],j=g[1],M=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:30,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.5,r=Array.isArray(o)?o:[o,o],n=e/2*r[0],a=t/2*r[1];return"M".concat(0,",",0," Q",-e/2-n,",").concat(-t/2+a," ").concat(-e,",").concat(-t)}(u,c,f);return l.default.createElement("g",h({transform:"translate(".concat(b+u,", ").concat(j+c,")"),className:"rsm-annotation ".concat(p)},m),l.default.createElement("path",h({d:M,fill:"transparent",stroke:"#000"},n)),r)};V.propTypes={subject:i.default.array,children:i.default.oneOfType([i.default.node,i.default.arrayOf(i.default.node)]),dx:i.default.number,dy:i.default.number,curve:i.default.number,connectorProps:i.default.object,className:i.default.string},e.Annotation=V,e.ComposableMap=w,e.Geographies=D,e.Geography=L,e.Graticule=F,e.Line=H,e.MapContext=O,e.MapProvider=k,e.Marker=Q,e.Sphere=K,e.ZoomableGroup=W,e.useGeographies=T,e.useZoomPan=U,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types"),require("d3-geo"),require("topojson-client"),require("d3-zoom"),require("d3-selection")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","d3-geo","topojson-client","d3-zoom","d3-selection"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).reactSimpleMaps=e.reactSimpleMaps||{},e.React,e.PropTypes,e.d3,e.topojson,e.d3,e.d3)}(this,(function(e,t,r,o,n,a,u){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=s(t),i=s(r),f=l(o);function d(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function p(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?d(Object(r),!0).forEach((function(t){h(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):d(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}function h(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function y(){return y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},y.apply(this,arguments)}function g(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},a=Object.keys(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)r=a[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function v(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var o,n,a=[],u=!0,s=!1;try{for(r=r.call(e);!(u=(o=r.next()).done)&&(a.push(o.value),!t||a.length!==t);u=!0);}catch(e){s=!0,n=e}finally{try{u||null==r.return||r.return()}finally{if(s)throw n}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return b(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return b(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=new Array(t);r<t;r++)o[r]=e[r];return o}var j=["width","height","projection","projectionConfig"],M=f.geoPath,E=g(f,["geoPath"]),w=t.createContext(),O=function(e){var r=e.width,o=e.height,n=e.projection,a=e.projectionConfig,u=g(e,j),s=v(a.center||[],2),l=s[0],i=s[1],f=v(a.rotate||[],3),d=f[0],p=f[1],m=f[2],h=v(a.parallels||[],2),b=h[0],O=h[1],k=a.scale||null,x=t.useMemo((function(){return function(e){var t=e.projectionConfig,r=void 0===t?{}:t,o=e.projection,n=void 0===o?"geoEqualEarth":o,a=e.width,u=void 0===a?800:a,s=e.height,l=void 0===s?600:s;if("function"==typeof n)return n;var c=E[n]().translate([u/2,l/2]);return[c.center?"center":null,c.rotate?"rotate":null,c.scale?"scale":null,c.parallels?"parallels":null].forEach((function(e){e&&(c=c[e](r[e]||c[e]()))})),c}({projectionConfig:{center:l||0===l||i||0===i?[l,i]:null,rotate:d||0===d||p||0===p?[d,p,m]:null,parallels:b||0===b||O||0===O?[b,O]:null,scale:k},projection:n,width:r,height:o})}),[r,o,n,l,i,d,p,m,b,O,k]),N=t.useCallback(x,[x]),S=t.useMemo((function(){return{width:r,height:o,projection:N,path:M().projection(N)}}),[r,o,N]);return c.default.createElement(w.Provider,y({value:S},u))};O.propTypes={width:i.default.number,height:i.default.number,projection:i.default.oneOfType([i.default.string,i.default.func]),projectionConfig:i.default.object};var k=["width","height","projection","projectionConfig","className"],x=t.forwardRef((function(e,t){var r=e.width,o=void 0===r?800:r,n=e.height,a=void 0===n?600:n,u=e.projection,s=void 0===u?"geoEqualEarth":u,l=e.projectionConfig,i=void 0===l?{}:l,f=e.className,d=void 0===f?"":f,p=g(e,k);return c.default.createElement(O,{width:o,height:a,projection:s,projectionConfig:i},c.default.createElement("svg",y({ref:t,viewBox:"0 0 ".concat(o," ").concat(a),className:"rsm-svg ".concat(d)},p)))}));function N(e,t,r){var o=(e*r.k-e)/2,n=(t*r.k-t)/2;return[e/2-(o+r.x)/r.k,t/2-(n+r.y)/r.k]}function S(e,t){if(!("Topology"===e.type))return t?t(e.features||e):e.features||e;var r=n.feature(e,e.objects[Object.keys(e.objects)[0]]).features;return t?t(r):r}function P(e){return"Topology"===e.type?{outline:n.mesh(e,e.objects[Object.keys(e.objects)[0]],(function(e,t){return e===t})),borders:n.mesh(e,e.objects[Object.keys(e.objects)[0]],(function(e,t){return e!==t}))}:null}function C(e,t){return e?e.map((function(e,r){return p(p({},e),{},{rsmKey:"geo-".concat(r),svgPath:t(e)})})):[]}function T(e){var r=e.geography,o=e.parseGeographies,n=t.useContext(w).path,a=v(t.useState({}),2),u=a[0],s=a[1];t.useEffect((function(){var e;"undefined"!==("undefined"==typeof window?"undefined":m(window))&&(r&&("string"==typeof r?(e=r,fetch(e).then((function(e){if(!e.ok)throw Error(e.statusText);return e.json()})).catch((function(e){console.log("There was a problem when fetching the data: ",e)}))).then((function(e){e&&s({geographies:S(e,o),mesh:P(e)})})):s({geographies:S(r,o),mesh:P(r)})))}),[r,o]);var l=t.useMemo((function(){var e=u.mesh||{},t=function(e,t,r){return e&&t?{outline:p(p({},e),{},{rsmKey:"outline",svgPath:r(e)}),borders:p(p({},t),{},{rsmKey:"borders",svgPath:r(t)})}:{}}(e.outline,e.borders,n);return{geographies:C(u.geographies,n),outline:t.outline,borders:t.borders}}),[u,n]);return{geographies:l.geographies,outline:l.outline,borders:l.borders}}x.displayName="ComposableMap",x.propTypes={width:i.default.number,height:i.default.number,projection:i.default.oneOfType([i.default.string,i.default.func]),projectionConfig:i.default.object,className:i.default.string};var R=["geography","children","parseGeographies","className"],z=t.forwardRef((function(e,r){var o=e.geography,n=e.children,a=e.parseGeographies,u=e.className,s=void 0===u?"":u,l=g(e,R),i=t.useContext(w),f=i.path,d=i.projection,p=T({geography:o,parseGeographies:a}),m=p.geographies,h=p.outline,v=p.borders;return c.default.createElement("g",y({ref:r,className:"rsm-geographies ".concat(s)},l),m&&m.length>0&&n({geographies:m,outline:h,borders:v,path:f,projection:d}))}));z.displayName="Geographies",z.propTypes={geography:i.default.oneOfType([i.default.string,i.default.object,i.default.array]),children:i.default.func,parseGeographies:i.default.func,className:i.default.string};var G=["geography","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","onFocus","onBlur","style","className"],D=t.forwardRef((function(e,r){var o=e.geography,n=e.onMouseEnter,a=e.onMouseLeave,u=e.onMouseDown,s=e.onMouseUp,l=e.onFocus,i=e.onBlur,f=e.style,d=void 0===f?{}:f,p=e.className,m=void 0===p?"":p,h=g(e,G),b=v(t.useState(!1),2),j=b[0],M=b[1],E=v(t.useState(!1),2),w=E[0],O=E[1];return c.default.createElement("path",y({ref:r,tabIndex:"0",className:"rsm-geography ".concat(m),d:o.svgPath,onMouseEnter:function(e){O(!0),n&&n(e)},onMouseLeave:function(e){O(!1),j&&M(!1),a&&a(e)},onFocus:function(e){O(!0),l&&l(e)},onBlur:function(e){O(!1),j&&M(!1),i&&i(e)},onMouseDown:function(e){M(!0),u&&u(e)},onMouseUp:function(e){M(!1),s&&s(e)},style:d[j||w?j?"pressed":"hover":"default"]},h))}));D.displayName="Geography",D.propTypes={geography:i.default.object,onMouseEnter:i.default.func,onMouseLeave:i.default.func,onMouseDown:i.default.func,onMouseUp:i.default.func,onFocus:i.default.func,onBlur:i.default.func,style:i.default.object,className:i.default.string};var Z=t.memo(D),L=["fill","stroke","step","className"],A=t.forwardRef((function(e,r){var n=e.fill,a=void 0===n?"transparent":n,u=e.stroke,s=void 0===u?"currentcolor":u,l=e.step,i=void 0===l?[10,10]:l,f=e.className,d=void 0===f?"":f,p=g(e,L),m=t.useContext(w).path;return c.default.createElement("path",y({ref:r,d:m(o.geoGraticule().step(i)()),fill:a,stroke:s,className:"rsm-graticule ".concat(d)},p))}));A.displayName="Graticule",A.propTypes={fill:i.default.string,stroke:i.default.string,step:i.default.array,className:i.default.string};var B=t.memo(A);function F(e){var r=e.center,o=e.filterZoomEvent,n=e.onMoveStart,s=e.onMoveEnd,l=e.onMove,c=e.translateExtent,i=void 0===c?[[-1/0,-1/0],[1/0,1/0]]:c,f=e.scaleExtent,d=void 0===f?[1,8]:f,p=e.zoom,m=void 0===p?1:p,h=t.useContext(w),y=h.width,g=h.height,b=h.projection,j=v(r,2),M=j[0],E=j[1],O=v(t.useState({x:0,y:0,k:1}),2),k=O[0],x=O[1],S=t.useRef({x:0,y:0,k:1}),P=t.useRef(),C=t.useRef(),T=t.useRef(!1),R=v(i,2),z=R[0],G=R[1],D=v(z,2),Z=D[0],L=D[1],A=v(G,2),B=A[0],F=A[1],U=v(d,2),q=U[0],W=U[1];return t.useEffect((function(){var e=u.select(P.current);var t=a.zoom().filter((function(e){return o?o(e):!!e&&(!e.ctrlKey&&!e.button)})).scaleExtent([q,W]).translateExtent([[Z,L],[B,F]]).on("start",(function(e){n&&!T.current&&n({coordinates:b.invert(N(y,g,e.transform)),zoom:e.transform.k},e)})).on("zoom",(function(e){if(!T.current){var t=e.transform,r=e.sourceEvent;x({x:t.x,y:t.y,k:t.k,dragging:r}),l&&l({x:t.x,y:t.y,zoom:t.k,dragging:r},e)}})).on("end",(function(e){if(T.current)T.current=!1;else{var t=v(b.invert(N(y,g,e.transform)),2),r=t[0],o=t[1];S.current={x:r,y:o,k:e.transform.k},s&&s({coordinates:[r,o],zoom:e.transform.k},e)}}));C.current=t,e.call(t)}),[y,g,Z,L,B,F,q,W,b,n,l,s,o]),t.useEffect((function(){if(M!==S.current.x||E!==S.current.y||m!==S.current.k){var e=b([M,E]),t=e[0]*m,r=e[1]*m,o=u.select(P.current);T.current=!0,o.call(C.current.transform,a.zoomIdentity.translate(y/2-t,g/2-r).scale(m)),x({x:y/2-t,y:g/2-r,k:m}),S.current={x:M,y:E,k:m}}}),[M,E,m,y,g,b]),{mapRef:P,position:k,transformString:"translate(".concat(k.x," ").concat(k.y,") scale(").concat(k.k,")")}}var U=["center","zoom","minZoom","maxZoom","translateExtent","filterZoomEvent","onMoveStart","onMove","onMoveEnd","className"],q=t.forwardRef((function(e,r){var o=e.center,n=void 0===o?[0,0]:o,a=e.zoom,u=void 0===a?1:a,s=e.minZoom,l=void 0===s?1:s,i=e.maxZoom,f=void 0===i?8:i,d=e.translateExtent,p=e.filterZoomEvent,m=e.onMoveStart,h=e.onMove,v=e.onMoveEnd,b=e.className,j=g(e,U),M=t.useContext(w),E=M.width,O=M.height,k=F({center:n,filterZoomEvent:p,onMoveStart:m,onMove:h,onMoveEnd:v,scaleExtent:[l,f],translateExtent:d,zoom:u}),x=k.mapRef,N=k.transformString;return c.default.createElement("g",{ref:x},c.default.createElement("rect",{width:E,height:O,fill:"transparent"}),c.default.createElement("g",y({ref:r,transform:N,className:"rsm-zoomable-group ".concat(b)},j)))}));q.displayName="ZoomableGroup",q.propTypes={center:i.default.array,zoom:i.default.number,minZoom:i.default.number,maxZoom:i.default.number,translateExtent:i.default.arrayOf(i.default.array),onMoveStart:i.default.func,onMove:i.default.func,onMoveEnd:i.default.func,className:i.default.string};var W=["id","fill","stroke","strokeWidth","className"],I=t.forwardRef((function(e,r){var o=e.id,n=void 0===o?"rsm-sphere":o,a=e.fill,u=void 0===a?"transparent":a,s=e.stroke,l=void 0===s?"currentcolor":s,i=e.strokeWidth,f=void 0===i?.5:i,d=e.className,p=void 0===d?"":d,m=g(e,W),h=t.useContext(w).path,v=t.useMemo((function(){return h({type:"Sphere"})}),[h]);return c.default.createElement(t.Fragment,null,c.default.createElement("defs",null,c.default.createElement("clipPath",{id:n},c.default.createElement("path",{d:v}))),c.default.createElement("path",y({ref:r,d:v,fill:u,stroke:l,strokeWidth:f,style:{pointerEvents:"none"},className:"rsm-sphere ".concat(p)},m)))}));I.displayName="Sphere",I.propTypes={id:i.default.string,fill:i.default.string,stroke:i.default.string,strokeWidth:i.default.number,className:i.default.string};var K=t.memo(I),_=["coordinates","children","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","onFocus","onBlur","style","className"],Q=t.forwardRef((function(e,r){var o=e.coordinates,n=e.children,a=e.onMouseEnter,u=e.onMouseLeave,s=e.onMouseDown,l=e.onMouseUp,i=e.onFocus,f=e.onBlur,d=e.style,p=void 0===d?{}:d,m=e.className,h=void 0===m?"":m,b=g(e,_),j=t.useContext(w).projection,M=v(t.useState(!1),2),E=M[0],O=M[1],k=v(t.useState(!1),2),x=k[0],N=k[1],S=v(j(o),2),P=S[0],C=S[1];return c.default.createElement("g",y({ref:r,transform:"translate(".concat(P,", ").concat(C,")"),className:"rsm-marker ".concat(h),onMouseEnter:function(e){N(!0),a&&a(e)},onMouseLeave:function(e){N(!1),E&&O(!1),u&&u(e)},onFocus:function(e){N(!0),i&&i(e)},onBlur:function(e){N(!1),E&&O(!1),f&&f(e)},onMouseDown:function(e){O(!0),s&&s(e)},onMouseUp:function(e){O(!1),l&&l(e)},style:p[E||x?E?"pressed":"hover":"default"]},b),n)}));Q.displayName="Marker",Q.propTypes={coordinates:i.default.array,children:i.default.oneOfType([i.default.node,i.default.arrayOf(i.default.node)]),onMouseEnter:i.default.func,onMouseLeave:i.default.func,onMouseDown:i.default.func,onMouseUp:i.default.func,onFocus:i.default.func,onBlur:i.default.func,style:i.default.object,className:i.default.string};var $=["from","to","coordinates","stroke","strokeWidth","fill","className"],H=t.forwardRef((function(e,r){var o=e.from,n=void 0===o?[0,0]:o,a=e.to,u=void 0===a?[0,0]:a,s=e.coordinates,l=e.stroke,i=void 0===l?"currentcolor":l,f=e.strokeWidth,d=void 0===f?3:f,p=e.fill,m=void 0===p?"transparent":p,h=e.className,v=void 0===h?"":h,b=g(e,$),j=t.useContext(w).path,M={type:"LineString",coordinates:s||[n,u]};return c.default.createElement("path",y({ref:r,d:j(M),className:"rsm-line ".concat(v),stroke:i,strokeWidth:d,fill:m},b))}));H.displayName="Line",H.propTypes={from:i.default.array,to:i.default.array,coordinates:i.default.array,stroke:i.default.string,strokeWidth:i.default.number,fill:i.default.string,className:i.default.string};var J=["subject","children","connectorProps","dx","dy","curve","className"],V=t.forwardRef((function(e,r){var o=e.subject,n=e.children,a=e.connectorProps,u=e.dx,s=void 0===u?30:u,l=e.dy,i=void 0===l?30:l,f=e.curve,d=void 0===f?0:f,p=e.className,m=void 0===p?"":p,h=g(e,J),b=v((0,t.useContext(w).projection)(o),2),j=b[0],M=b[1],E=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:30,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.5,o=Array.isArray(r)?r:[r,r],n=e/2*o[0],a=t/2*o[1];return"M".concat(0,",",0," Q",-e/2-n,",").concat(-t/2+a," ").concat(-e,",").concat(-t)}(s,i,d);return c.default.createElement("g",y({ref:r,transform:"translate(".concat(j+s,", ").concat(M+i,")"),className:"rsm-annotation ".concat(m)},h),c.default.createElement("path",y({d:E,fill:"transparent",stroke:"#000"},a)),n)}));V.displayName="Annotation",V.propTypes={subject:i.default.array,children:i.default.oneOfType([i.default.node,i.default.arrayOf(i.default.node)]),dx:i.default.number,dy:i.default.number,curve:i.default.number,connectorProps:i.default.object,className:i.default.string},e.Annotation=V,e.ComposableMap=x,e.Geographies=z,e.Geography=Z,e.Graticule=B,e.Line=H,e.MapContext=w,e.MapProvider=O,e.Marker=Q,e.Sphere=K,e.ZoomableGroup=q,e.useGeographies=T,e.useZoomPan=F,Object.defineProperty(e,"__esModule",{value:!0})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-simple-maps",
3
- "version": "3.0.0-beta.3",
3
+ "version": "3.0.0-beta.6",
4
4
  "description": "An svg map chart component built with and for React",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.es.js",
@@ -56,9 +56,9 @@
56
56
  "react-dom": "^16.8.0 || 17.x || 18.x"
57
57
  },
58
58
  "dependencies": {
59
- "d3-geo": "^3.0.1",
60
- "d3-selection": "^3.0.0",
61
- "d3-zoom": "^3.0.0",
59
+ "d3-geo": "^2.0.2",
60
+ "d3-selection": "^2.0.0",
61
+ "d3-zoom": "^2.0.0",
62
62
  "topojson-client": "^3.1.0"
63
63
  }
64
64
  }