react-simple-maps 3.0.0-beta.4 → 3.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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, useContext, forwardRef, 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';
@@ -169,7 +169,7 @@ function _nonIterableRest() {
169
169
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
170
170
  }
171
171
 
172
- var _excluded$9 = ["width", "height", "projection", "projectionConfig"];
172
+ var _excluded$a = ["width", "height", "projection", "projectionConfig"];
173
173
 
174
174
  var geoPath = d3Geo.geoPath,
175
175
  projections = _objectWithoutProperties(d3Geo, ["geoPath"]);
@@ -201,7 +201,7 @@ var MapProvider = function MapProvider(_ref2) {
201
201
  height = _ref2.height,
202
202
  projection = _ref2.projection,
203
203
  projectionConfig = _ref2.projectionConfig,
204
- restProps = _objectWithoutProperties(_ref2, _excluded$9);
204
+ restProps = _objectWithoutProperties(_ref2, _excluded$a);
205
205
 
206
206
  var _ref3 = projectionConfig.center || [],
207
207
  _ref4 = _slicedToArray(_ref3, 2),
@@ -254,9 +254,12 @@ MapProvider.propTypes = {
254
254
  projectionConfig: PropTypes.object
255
255
  };
256
256
 
257
- var _excluded$8 = ["width", "height", "projection", "projectionConfig", "className"];
257
+ var useMapContext = function useMapContext() {
258
+ return useContext(MapContext);
259
+ };
258
260
 
259
- var ComposableMap = function ComposableMap(_ref) {
261
+ var _excluded$9 = ["width", "height", "projection", "projectionConfig", "className"];
262
+ var ComposableMap = forwardRef(function (_ref, ref) {
260
263
  var _ref$width = _ref.width,
261
264
  width = _ref$width === void 0 ? 800 : _ref$width,
262
265
  _ref$height = _ref.height,
@@ -267,7 +270,7 @@ var ComposableMap = function ComposableMap(_ref) {
267
270
  projectionConfig = _ref$projectionConfig === void 0 ? {} : _ref$projectionConfig,
268
271
  _ref$className = _ref.className,
269
272
  className = _ref$className === void 0 ? "" : _ref$className,
270
- restProps = _objectWithoutProperties(_ref, _excluded$8);
273
+ restProps = _objectWithoutProperties(_ref, _excluded$9);
271
274
 
272
275
  return /*#__PURE__*/React.createElement(MapProvider, {
273
276
  width: width,
@@ -275,11 +278,12 @@ var ComposableMap = function ComposableMap(_ref) {
275
278
  projection: projection,
276
279
  projectionConfig: projectionConfig
277
280
  }, /*#__PURE__*/React.createElement("svg", _extends({
281
+ ref: ref,
278
282
  viewBox: "0 0 ".concat(width, " ").concat(height),
279
283
  className: "rsm-svg ".concat(className)
280
284
  }, restProps)));
281
- };
282
-
285
+ });
286
+ ComposableMap.displayName = "ComposableMap";
283
287
  ComposableMap.propTypes = {
284
288
  width: PropTypes.number,
285
289
  height: PropTypes.number,
@@ -414,15 +418,14 @@ function useGeographies(_ref) {
414
418
  };
415
419
  }
416
420
 
417
- var _excluded$7 = ["geography", "children", "parseGeographies", "className"];
418
-
419
- var Geographies = function Geographies(_ref) {
421
+ var _excluded$8 = ["geography", "children", "parseGeographies", "className"];
422
+ var Geographies = forwardRef(function (_ref, ref) {
420
423
  var geography = _ref.geography,
421
424
  children = _ref.children,
422
425
  parseGeographies = _ref.parseGeographies,
423
426
  _ref$className = _ref.className,
424
427
  className = _ref$className === void 0 ? "" : _ref$className,
425
- restProps = _objectWithoutProperties(_ref, _excluded$7);
428
+ restProps = _objectWithoutProperties(_ref, _excluded$8);
426
429
 
427
430
  var _useContext = useContext(MapContext),
428
431
  path = _useContext.path,
@@ -437,6 +440,7 @@ var Geographies = function Geographies(_ref) {
437
440
  borders = _useGeographies.borders;
438
441
 
439
442
  return /*#__PURE__*/React.createElement("g", _extends({
443
+ ref: ref,
440
444
  className: "rsm-geographies ".concat(className)
441
445
  }, restProps), geographies && geographies.length > 0 && children({
442
446
  geographies: geographies,
@@ -445,8 +449,8 @@ var Geographies = function Geographies(_ref) {
445
449
  path: path,
446
450
  projection: projection
447
451
  }));
448
- };
449
-
452
+ });
453
+ Geographies.displayName = "Geographies";
450
454
  Geographies.propTypes = {
451
455
  geography: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.array]),
452
456
  children: PropTypes.func,
@@ -454,9 +458,8 @@ Geographies.propTypes = {
454
458
  className: PropTypes.string
455
459
  };
456
460
 
457
- var _excluded$6 = ["geography", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "onFocus", "onBlur", "style", "className"];
458
-
459
- var Geography = function Geography(_ref) {
461
+ var _excluded$7 = ["geography", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "onFocus", "onBlur", "style", "className"];
462
+ var Geography = forwardRef(function (_ref, ref) {
460
463
  var geography = _ref.geography,
461
464
  onMouseEnter = _ref.onMouseEnter,
462
465
  onMouseLeave = _ref.onMouseLeave,
@@ -468,7 +471,7 @@ var Geography = function Geography(_ref) {
468
471
  style = _ref$style === void 0 ? {} : _ref$style,
469
472
  _ref$className = _ref.className,
470
473
  className = _ref$className === void 0 ? "" : _ref$className,
471
- restProps = _objectWithoutProperties(_ref, _excluded$6);
474
+ restProps = _objectWithoutProperties(_ref, _excluded$7);
472
475
 
473
476
  var _useState = useState(false),
474
477
  _useState2 = _slicedToArray(_useState, 2),
@@ -513,6 +516,7 @@ var Geography = function Geography(_ref) {
513
516
  }
514
517
 
515
518
  return /*#__PURE__*/React.createElement("path", _extends({
519
+ ref: ref,
516
520
  tabIndex: "0",
517
521
  className: "rsm-geography ".concat(className),
518
522
  d: geography.svgPath,
@@ -524,8 +528,8 @@ var Geography = function Geography(_ref) {
524
528
  onMouseUp: handleMouseUp,
525
529
  style: style[isPressed || isFocused ? isPressed ? "pressed" : "hover" : "default"]
526
530
  }, restProps));
527
- };
528
-
531
+ });
532
+ Geography.displayName = "Geography";
529
533
  Geography.propTypes = {
530
534
  geography: PropTypes.object,
531
535
  onMouseEnter: PropTypes.func,
@@ -539,9 +543,8 @@ Geography.propTypes = {
539
543
  };
540
544
  var Geography$1 = memo(Geography);
541
545
 
542
- var _excluded$5 = ["fill", "stroke", "step", "className"];
543
-
544
- var Graticule = function Graticule(_ref) {
546
+ var _excluded$6 = ["fill", "stroke", "step", "className"];
547
+ var Graticule = forwardRef(function (_ref, ref) {
545
548
  var _ref$fill = _ref.fill,
546
549
  fill = _ref$fill === void 0 ? "transparent" : _ref$fill,
547
550
  _ref$stroke = _ref.stroke,
@@ -550,19 +553,20 @@ var Graticule = function Graticule(_ref) {
550
553
  step = _ref$step === void 0 ? [10, 10] : _ref$step,
551
554
  _ref$className = _ref.className,
552
555
  className = _ref$className === void 0 ? "" : _ref$className,
553
- restProps = _objectWithoutProperties(_ref, _excluded$5);
556
+ restProps = _objectWithoutProperties(_ref, _excluded$6);
554
557
 
555
558
  var _useContext = useContext(MapContext),
556
559
  path = _useContext.path;
557
560
 
558
561
  return /*#__PURE__*/React.createElement("path", _extends({
562
+ ref: ref,
559
563
  d: path(geoGraticule().step(step)()),
560
564
  fill: fill,
561
565
  stroke: stroke,
562
566
  className: "rsm-graticule ".concat(className)
563
567
  }, restProps));
564
- };
565
-
568
+ });
569
+ Graticule.displayName = "Graticule";
566
570
  Graticule.propTypes = {
567
571
  fill: PropTypes.string,
568
572
  stroke: PropTypes.string,
@@ -571,6 +575,36 @@ Graticule.propTypes = {
571
575
  };
572
576
  var Graticule$1 = memo(Graticule);
573
577
 
578
+ var _excluded$5 = ["value"];
579
+ var ZoomContext = createContext();
580
+ var defaultValue = {
581
+ x: 0,
582
+ y: 0,
583
+ k: 1,
584
+ transformString: "translate(0 0) scale(1)"
585
+ };
586
+
587
+ var ZoomProvider = function ZoomProvider(_ref) {
588
+ var _ref$value = _ref.value,
589
+ value = _ref$value === void 0 ? defaultValue : _ref$value,
590
+ restProps = _objectWithoutProperties(_ref, _excluded$5);
591
+
592
+ return /*#__PURE__*/React.createElement(ZoomContext.Provider, _extends({
593
+ value: value
594
+ }, restProps));
595
+ };
596
+
597
+ ZoomProvider.propTypes = {
598
+ x: PropTypes.number,
599
+ y: PropTypes.number,
600
+ k: PropTypes.number,
601
+ transformString: PropTypes.string
602
+ };
603
+
604
+ var useZoomPanContext = function useZoomPanContext() {
605
+ return useContext(ZoomContext);
606
+ };
607
+
574
608
  function useZoomPan(_ref) {
575
609
  var center = _ref.center,
576
610
  filterZoomEvent = _ref.filterZoomEvent,
@@ -719,8 +753,7 @@ function useZoomPan(_ref) {
719
753
  }
720
754
 
721
755
  var _excluded$4 = ["center", "zoom", "minZoom", "maxZoom", "translateExtent", "filterZoomEvent", "onMoveStart", "onMove", "onMoveEnd", "className"];
722
-
723
- var ZoomableGroup = function ZoomableGroup(_ref) {
756
+ var ZoomableGroup = forwardRef(function (_ref, ref) {
724
757
  var _ref$center = _ref.center,
725
758
  center = _ref$center === void 0 ? [0, 0] : _ref$center,
726
759
  _ref$zoom = _ref.zoom,
@@ -752,20 +785,29 @@ var ZoomableGroup = function ZoomableGroup(_ref) {
752
785
  zoom: zoom
753
786
  }),
754
787
  mapRef = _useZoomPan.mapRef,
755
- transformString = _useZoomPan.transformString;
756
-
757
- return /*#__PURE__*/React.createElement("g", {
788
+ transformString = _useZoomPan.transformString,
789
+ position = _useZoomPan.position;
790
+
791
+ return /*#__PURE__*/React.createElement(ZoomProvider, {
792
+ value: {
793
+ x: position.x,
794
+ y: position.y,
795
+ k: position.k,
796
+ transformString: transformString
797
+ }
798
+ }, /*#__PURE__*/React.createElement("g", {
758
799
  ref: mapRef
759
800
  }, /*#__PURE__*/React.createElement("rect", {
760
801
  width: width,
761
802
  height: height,
762
803
  fill: "transparent"
763
804
  }), /*#__PURE__*/React.createElement("g", _extends({
805
+ ref: ref,
764
806
  transform: transformString,
765
807
  className: "rsm-zoomable-group ".concat(className)
766
- }, restProps)));
767
- };
768
-
808
+ }, restProps))));
809
+ });
810
+ ZoomableGroup.displayName = "ZoomableGroup";
769
811
  ZoomableGroup.propTypes = {
770
812
  center: PropTypes.array,
771
813
  zoom: PropTypes.number,
@@ -779,8 +821,7 @@ ZoomableGroup.propTypes = {
779
821
  };
780
822
 
781
823
  var _excluded$3 = ["id", "fill", "stroke", "strokeWidth", "className"];
782
-
783
- var Sphere = function Sphere(_ref) {
824
+ var Sphere = forwardRef(function (_ref, ref) {
784
825
  var _ref$id = _ref.id,
785
826
  id = _ref$id === void 0 ? "rsm-sphere" : _ref$id,
786
827
  _ref$fill = _ref.fill,
@@ -806,6 +847,7 @@ var Sphere = function Sphere(_ref) {
806
847
  }, /*#__PURE__*/React.createElement("path", {
807
848
  d: spherePath
808
849
  }))), /*#__PURE__*/React.createElement("path", _extends({
850
+ ref: ref,
809
851
  d: spherePath,
810
852
  fill: fill,
811
853
  stroke: stroke,
@@ -815,8 +857,8 @@ var Sphere = function Sphere(_ref) {
815
857
  },
816
858
  className: "rsm-sphere ".concat(className)
817
859
  }, restProps)));
818
- };
819
-
860
+ });
861
+ Sphere.displayName = "Sphere";
820
862
  Sphere.propTypes = {
821
863
  id: PropTypes.string,
822
864
  fill: PropTypes.string,
@@ -827,8 +869,7 @@ Sphere.propTypes = {
827
869
  var Sphere$1 = memo(Sphere);
828
870
 
829
871
  var _excluded$2 = ["coordinates", "children", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "onFocus", "onBlur", "style", "className"];
830
-
831
- var Marker = function Marker(_ref) {
872
+ var Marker = forwardRef(function (_ref, ref) {
832
873
  var coordinates = _ref.coordinates,
833
874
  children = _ref.children,
834
875
  onMouseEnter = _ref.onMouseEnter,
@@ -894,6 +935,7 @@ var Marker = function Marker(_ref) {
894
935
  }
895
936
 
896
937
  return /*#__PURE__*/React.createElement("g", _extends({
938
+ ref: ref,
897
939
  transform: "translate(".concat(x, ", ").concat(y, ")"),
898
940
  className: "rsm-marker ".concat(className),
899
941
  onMouseEnter: handleMouseEnter,
@@ -904,8 +946,8 @@ var Marker = function Marker(_ref) {
904
946
  onMouseUp: handleMouseUp,
905
947
  style: style[isPressed || isFocused ? isPressed ? "pressed" : "hover" : "default"]
906
948
  }, restProps), children);
907
- };
908
-
949
+ });
950
+ Marker.displayName = "Marker";
909
951
  Marker.propTypes = {
910
952
  coordinates: PropTypes.array,
911
953
  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
@@ -920,8 +962,7 @@ Marker.propTypes = {
920
962
  };
921
963
 
922
964
  var _excluded$1 = ["from", "to", "coordinates", "stroke", "strokeWidth", "fill", "className"];
923
-
924
- var Line = function Line(_ref) {
965
+ var Line = forwardRef(function (_ref, ref) {
925
966
  var _ref$from = _ref.from,
926
967
  from = _ref$from === void 0 ? [0, 0] : _ref$from,
927
968
  _ref$to = _ref.to,
@@ -945,14 +986,15 @@ var Line = function Line(_ref) {
945
986
  coordinates: coordinates || [from, to]
946
987
  };
947
988
  return /*#__PURE__*/React.createElement("path", _extends({
989
+ ref: ref,
948
990
  d: path(lineData),
949
991
  className: "rsm-line ".concat(className),
950
992
  stroke: stroke,
951
993
  strokeWidth: strokeWidth,
952
994
  fill: fill
953
995
  }, restProps));
954
- };
955
-
996
+ });
997
+ Line.displayName = "Line";
956
998
  Line.propTypes = {
957
999
  from: PropTypes.array,
958
1000
  to: PropTypes.array,
@@ -964,8 +1006,7 @@ Line.propTypes = {
964
1006
  };
965
1007
 
966
1008
  var _excluded = ["subject", "children", "connectorProps", "dx", "dy", "curve", "className"];
967
-
968
- var Annotation = function Annotation(_ref) {
1009
+ var Annotation = forwardRef(function (_ref, ref) {
969
1010
  var subject = _ref.subject,
970
1011
  children = _ref.children,
971
1012
  connectorProps = _ref.connectorProps,
@@ -989,6 +1030,7 @@ var Annotation = function Annotation(_ref) {
989
1030
 
990
1031
  var connectorPath = createConnectorPath(dx, dy, curve);
991
1032
  return /*#__PURE__*/React.createElement("g", _extends({
1033
+ ref: ref,
992
1034
  transform: "translate(".concat(x + dx, ", ").concat(y + dy, ")"),
993
1035
  className: "rsm-annotation ".concat(className)
994
1036
  }, restProps), /*#__PURE__*/React.createElement("path", _extends({
@@ -996,8 +1038,8 @@ var Annotation = function Annotation(_ref) {
996
1038
  fill: "transparent",
997
1039
  stroke: "#000"
998
1040
  }, connectorProps)), children);
999
- };
1000
-
1041
+ });
1042
+ Annotation.displayName = "Annotation";
1001
1043
  Annotation.propTypes = {
1002
1044
  subject: PropTypes.array,
1003
1045
  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
@@ -1008,4 +1050,4 @@ Annotation.propTypes = {
1008
1050
  className: PropTypes.string
1009
1051
  };
1010
1052
 
1011
- export { Annotation, ComposableMap, Geographies, Geography$1 as Geography, Graticule$1 as Graticule, Line, MapContext, MapProvider, Marker, Sphere$1 as Sphere, ZoomableGroup, useGeographies, useZoomPan };
1053
+ export { Annotation, ComposableMap, Geographies, Geography$1 as Geography, Graticule$1 as Graticule, Line, MapContext, MapProvider, Marker, Sphere$1 as Sphere, ZoomContext, ZoomProvider, ZoomableGroup, useGeographies, useMapContext, useZoomPan, useZoomPanContext };
package/dist/index.js CHANGED
@@ -196,7 +196,7 @@ function _nonIterableRest() {
196
196
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
197
197
  }
198
198
 
199
- var _excluded$9 = ["width", "height", "projection", "projectionConfig"];
199
+ var _excluded$a = ["width", "height", "projection", "projectionConfig"];
200
200
 
201
201
  var geoPath = d3Geo__namespace.geoPath,
202
202
  projections = _objectWithoutProperties(d3Geo__namespace, ["geoPath"]);
@@ -228,7 +228,7 @@ var MapProvider = function MapProvider(_ref2) {
228
228
  height = _ref2.height,
229
229
  projection = _ref2.projection,
230
230
  projectionConfig = _ref2.projectionConfig,
231
- restProps = _objectWithoutProperties(_ref2, _excluded$9);
231
+ restProps = _objectWithoutProperties(_ref2, _excluded$a);
232
232
 
233
233
  var _ref3 = projectionConfig.center || [],
234
234
  _ref4 = _slicedToArray(_ref3, 2),
@@ -281,9 +281,12 @@ MapProvider.propTypes = {
281
281
  projectionConfig: PropTypes__default["default"].object
282
282
  };
283
283
 
284
- var _excluded$8 = ["width", "height", "projection", "projectionConfig", "className"];
284
+ var useMapContext = function useMapContext() {
285
+ return React.useContext(MapContext);
286
+ };
285
287
 
286
- var ComposableMap = function ComposableMap(_ref) {
288
+ var _excluded$9 = ["width", "height", "projection", "projectionConfig", "className"];
289
+ var ComposableMap = React.forwardRef(function (_ref, ref) {
287
290
  var _ref$width = _ref.width,
288
291
  width = _ref$width === void 0 ? 800 : _ref$width,
289
292
  _ref$height = _ref.height,
@@ -294,7 +297,7 @@ var ComposableMap = function ComposableMap(_ref) {
294
297
  projectionConfig = _ref$projectionConfig === void 0 ? {} : _ref$projectionConfig,
295
298
  _ref$className = _ref.className,
296
299
  className = _ref$className === void 0 ? "" : _ref$className,
297
- restProps = _objectWithoutProperties(_ref, _excluded$8);
300
+ restProps = _objectWithoutProperties(_ref, _excluded$9);
298
301
 
299
302
  return /*#__PURE__*/React__default["default"].createElement(MapProvider, {
300
303
  width: width,
@@ -302,11 +305,12 @@ var ComposableMap = function ComposableMap(_ref) {
302
305
  projection: projection,
303
306
  projectionConfig: projectionConfig
304
307
  }, /*#__PURE__*/React__default["default"].createElement("svg", _extends({
308
+ ref: ref,
305
309
  viewBox: "0 0 ".concat(width, " ").concat(height),
306
310
  className: "rsm-svg ".concat(className)
307
311
  }, restProps)));
308
- };
309
-
312
+ });
313
+ ComposableMap.displayName = "ComposableMap";
310
314
  ComposableMap.propTypes = {
311
315
  width: PropTypes__default["default"].number,
312
316
  height: PropTypes__default["default"].number,
@@ -441,15 +445,14 @@ function useGeographies(_ref) {
441
445
  };
442
446
  }
443
447
 
444
- var _excluded$7 = ["geography", "children", "parseGeographies", "className"];
445
-
446
- var Geographies = function Geographies(_ref) {
448
+ var _excluded$8 = ["geography", "children", "parseGeographies", "className"];
449
+ var Geographies = React.forwardRef(function (_ref, ref) {
447
450
  var geography = _ref.geography,
448
451
  children = _ref.children,
449
452
  parseGeographies = _ref.parseGeographies,
450
453
  _ref$className = _ref.className,
451
454
  className = _ref$className === void 0 ? "" : _ref$className,
452
- restProps = _objectWithoutProperties(_ref, _excluded$7);
455
+ restProps = _objectWithoutProperties(_ref, _excluded$8);
453
456
 
454
457
  var _useContext = React.useContext(MapContext),
455
458
  path = _useContext.path,
@@ -464,6 +467,7 @@ var Geographies = function Geographies(_ref) {
464
467
  borders = _useGeographies.borders;
465
468
 
466
469
  return /*#__PURE__*/React__default["default"].createElement("g", _extends({
470
+ ref: ref,
467
471
  className: "rsm-geographies ".concat(className)
468
472
  }, restProps), geographies && geographies.length > 0 && children({
469
473
  geographies: geographies,
@@ -472,8 +476,8 @@ var Geographies = function Geographies(_ref) {
472
476
  path: path,
473
477
  projection: projection
474
478
  }));
475
- };
476
-
479
+ });
480
+ Geographies.displayName = "Geographies";
477
481
  Geographies.propTypes = {
478
482
  geography: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].object, PropTypes__default["default"].array]),
479
483
  children: PropTypes__default["default"].func,
@@ -481,9 +485,8 @@ Geographies.propTypes = {
481
485
  className: PropTypes__default["default"].string
482
486
  };
483
487
 
484
- var _excluded$6 = ["geography", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "onFocus", "onBlur", "style", "className"];
485
-
486
- var Geography = function Geography(_ref) {
488
+ var _excluded$7 = ["geography", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "onFocus", "onBlur", "style", "className"];
489
+ var Geography = React.forwardRef(function (_ref, ref) {
487
490
  var geography = _ref.geography,
488
491
  onMouseEnter = _ref.onMouseEnter,
489
492
  onMouseLeave = _ref.onMouseLeave,
@@ -495,7 +498,7 @@ var Geography = function Geography(_ref) {
495
498
  style = _ref$style === void 0 ? {} : _ref$style,
496
499
  _ref$className = _ref.className,
497
500
  className = _ref$className === void 0 ? "" : _ref$className,
498
- restProps = _objectWithoutProperties(_ref, _excluded$6);
501
+ restProps = _objectWithoutProperties(_ref, _excluded$7);
499
502
 
500
503
  var _useState = React.useState(false),
501
504
  _useState2 = _slicedToArray(_useState, 2),
@@ -540,6 +543,7 @@ var Geography = function Geography(_ref) {
540
543
  }
541
544
 
542
545
  return /*#__PURE__*/React__default["default"].createElement("path", _extends({
546
+ ref: ref,
543
547
  tabIndex: "0",
544
548
  className: "rsm-geography ".concat(className),
545
549
  d: geography.svgPath,
@@ -551,8 +555,8 @@ var Geography = function Geography(_ref) {
551
555
  onMouseUp: handleMouseUp,
552
556
  style: style[isPressed || isFocused ? isPressed ? "pressed" : "hover" : "default"]
553
557
  }, restProps));
554
- };
555
-
558
+ });
559
+ Geography.displayName = "Geography";
556
560
  Geography.propTypes = {
557
561
  geography: PropTypes__default["default"].object,
558
562
  onMouseEnter: PropTypes__default["default"].func,
@@ -566,9 +570,8 @@ Geography.propTypes = {
566
570
  };
567
571
  var Geography$1 = React.memo(Geography);
568
572
 
569
- var _excluded$5 = ["fill", "stroke", "step", "className"];
570
-
571
- var Graticule = function Graticule(_ref) {
573
+ var _excluded$6 = ["fill", "stroke", "step", "className"];
574
+ var Graticule = React.forwardRef(function (_ref, ref) {
572
575
  var _ref$fill = _ref.fill,
573
576
  fill = _ref$fill === void 0 ? "transparent" : _ref$fill,
574
577
  _ref$stroke = _ref.stroke,
@@ -577,19 +580,20 @@ var Graticule = function Graticule(_ref) {
577
580
  step = _ref$step === void 0 ? [10, 10] : _ref$step,
578
581
  _ref$className = _ref.className,
579
582
  className = _ref$className === void 0 ? "" : _ref$className,
580
- restProps = _objectWithoutProperties(_ref, _excluded$5);
583
+ restProps = _objectWithoutProperties(_ref, _excluded$6);
581
584
 
582
585
  var _useContext = React.useContext(MapContext),
583
586
  path = _useContext.path;
584
587
 
585
588
  return /*#__PURE__*/React__default["default"].createElement("path", _extends({
589
+ ref: ref,
586
590
  d: path(d3Geo.geoGraticule().step(step)()),
587
591
  fill: fill,
588
592
  stroke: stroke,
589
593
  className: "rsm-graticule ".concat(className)
590
594
  }, restProps));
591
- };
592
-
595
+ });
596
+ Graticule.displayName = "Graticule";
593
597
  Graticule.propTypes = {
594
598
  fill: PropTypes__default["default"].string,
595
599
  stroke: PropTypes__default["default"].string,
@@ -598,6 +602,36 @@ Graticule.propTypes = {
598
602
  };
599
603
  var Graticule$1 = React.memo(Graticule);
600
604
 
605
+ var _excluded$5 = ["value"];
606
+ var ZoomContext = React.createContext();
607
+ var defaultValue = {
608
+ x: 0,
609
+ y: 0,
610
+ k: 1,
611
+ transformString: "translate(0 0) scale(1)"
612
+ };
613
+
614
+ var ZoomProvider = function ZoomProvider(_ref) {
615
+ var _ref$value = _ref.value,
616
+ value = _ref$value === void 0 ? defaultValue : _ref$value,
617
+ restProps = _objectWithoutProperties(_ref, _excluded$5);
618
+
619
+ return /*#__PURE__*/React__default["default"].createElement(ZoomContext.Provider, _extends({
620
+ value: value
621
+ }, restProps));
622
+ };
623
+
624
+ ZoomProvider.propTypes = {
625
+ x: PropTypes__default["default"].number,
626
+ y: PropTypes__default["default"].number,
627
+ k: PropTypes__default["default"].number,
628
+ transformString: PropTypes__default["default"].string
629
+ };
630
+
631
+ var useZoomPanContext = function useZoomPanContext() {
632
+ return React.useContext(ZoomContext);
633
+ };
634
+
601
635
  function useZoomPan(_ref) {
602
636
  var center = _ref.center,
603
637
  filterZoomEvent = _ref.filterZoomEvent,
@@ -746,8 +780,7 @@ function useZoomPan(_ref) {
746
780
  }
747
781
 
748
782
  var _excluded$4 = ["center", "zoom", "minZoom", "maxZoom", "translateExtent", "filterZoomEvent", "onMoveStart", "onMove", "onMoveEnd", "className"];
749
-
750
- var ZoomableGroup = function ZoomableGroup(_ref) {
783
+ var ZoomableGroup = React.forwardRef(function (_ref, ref) {
751
784
  var _ref$center = _ref.center,
752
785
  center = _ref$center === void 0 ? [0, 0] : _ref$center,
753
786
  _ref$zoom = _ref.zoom,
@@ -779,20 +812,29 @@ var ZoomableGroup = function ZoomableGroup(_ref) {
779
812
  zoom: zoom
780
813
  }),
781
814
  mapRef = _useZoomPan.mapRef,
782
- transformString = _useZoomPan.transformString;
783
-
784
- return /*#__PURE__*/React__default["default"].createElement("g", {
815
+ transformString = _useZoomPan.transformString,
816
+ position = _useZoomPan.position;
817
+
818
+ return /*#__PURE__*/React__default["default"].createElement(ZoomProvider, {
819
+ value: {
820
+ x: position.x,
821
+ y: position.y,
822
+ k: position.k,
823
+ transformString: transformString
824
+ }
825
+ }, /*#__PURE__*/React__default["default"].createElement("g", {
785
826
  ref: mapRef
786
827
  }, /*#__PURE__*/React__default["default"].createElement("rect", {
787
828
  width: width,
788
829
  height: height,
789
830
  fill: "transparent"
790
831
  }), /*#__PURE__*/React__default["default"].createElement("g", _extends({
832
+ ref: ref,
791
833
  transform: transformString,
792
834
  className: "rsm-zoomable-group ".concat(className)
793
- }, restProps)));
794
- };
795
-
835
+ }, restProps))));
836
+ });
837
+ ZoomableGroup.displayName = "ZoomableGroup";
796
838
  ZoomableGroup.propTypes = {
797
839
  center: PropTypes__default["default"].array,
798
840
  zoom: PropTypes__default["default"].number,
@@ -806,8 +848,7 @@ ZoomableGroup.propTypes = {
806
848
  };
807
849
 
808
850
  var _excluded$3 = ["id", "fill", "stroke", "strokeWidth", "className"];
809
-
810
- var Sphere = function Sphere(_ref) {
851
+ var Sphere = React.forwardRef(function (_ref, ref) {
811
852
  var _ref$id = _ref.id,
812
853
  id = _ref$id === void 0 ? "rsm-sphere" : _ref$id,
813
854
  _ref$fill = _ref.fill,
@@ -833,6 +874,7 @@ var Sphere = function Sphere(_ref) {
833
874
  }, /*#__PURE__*/React__default["default"].createElement("path", {
834
875
  d: spherePath
835
876
  }))), /*#__PURE__*/React__default["default"].createElement("path", _extends({
877
+ ref: ref,
836
878
  d: spherePath,
837
879
  fill: fill,
838
880
  stroke: stroke,
@@ -842,8 +884,8 @@ var Sphere = function Sphere(_ref) {
842
884
  },
843
885
  className: "rsm-sphere ".concat(className)
844
886
  }, restProps)));
845
- };
846
-
887
+ });
888
+ Sphere.displayName = "Sphere";
847
889
  Sphere.propTypes = {
848
890
  id: PropTypes__default["default"].string,
849
891
  fill: PropTypes__default["default"].string,
@@ -854,8 +896,7 @@ Sphere.propTypes = {
854
896
  var Sphere$1 = React.memo(Sphere);
855
897
 
856
898
  var _excluded$2 = ["coordinates", "children", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "onFocus", "onBlur", "style", "className"];
857
-
858
- var Marker = function Marker(_ref) {
899
+ var Marker = React.forwardRef(function (_ref, ref) {
859
900
  var coordinates = _ref.coordinates,
860
901
  children = _ref.children,
861
902
  onMouseEnter = _ref.onMouseEnter,
@@ -921,6 +962,7 @@ var Marker = function Marker(_ref) {
921
962
  }
922
963
 
923
964
  return /*#__PURE__*/React__default["default"].createElement("g", _extends({
965
+ ref: ref,
924
966
  transform: "translate(".concat(x, ", ").concat(y, ")"),
925
967
  className: "rsm-marker ".concat(className),
926
968
  onMouseEnter: handleMouseEnter,
@@ -931,8 +973,8 @@ var Marker = function Marker(_ref) {
931
973
  onMouseUp: handleMouseUp,
932
974
  style: style[isPressed || isFocused ? isPressed ? "pressed" : "hover" : "default"]
933
975
  }, restProps), children);
934
- };
935
-
976
+ });
977
+ Marker.displayName = "Marker";
936
978
  Marker.propTypes = {
937
979
  coordinates: PropTypes__default["default"].array,
938
980
  children: PropTypes__default["default"].oneOfType([PropTypes__default["default"].node, PropTypes__default["default"].arrayOf(PropTypes__default["default"].node)]),
@@ -947,8 +989,7 @@ Marker.propTypes = {
947
989
  };
948
990
 
949
991
  var _excluded$1 = ["from", "to", "coordinates", "stroke", "strokeWidth", "fill", "className"];
950
-
951
- var Line = function Line(_ref) {
992
+ var Line = React.forwardRef(function (_ref, ref) {
952
993
  var _ref$from = _ref.from,
953
994
  from = _ref$from === void 0 ? [0, 0] : _ref$from,
954
995
  _ref$to = _ref.to,
@@ -972,14 +1013,15 @@ var Line = function Line(_ref) {
972
1013
  coordinates: coordinates || [from, to]
973
1014
  };
974
1015
  return /*#__PURE__*/React__default["default"].createElement("path", _extends({
1016
+ ref: ref,
975
1017
  d: path(lineData),
976
1018
  className: "rsm-line ".concat(className),
977
1019
  stroke: stroke,
978
1020
  strokeWidth: strokeWidth,
979
1021
  fill: fill
980
1022
  }, restProps));
981
- };
982
-
1023
+ });
1024
+ Line.displayName = "Line";
983
1025
  Line.propTypes = {
984
1026
  from: PropTypes__default["default"].array,
985
1027
  to: PropTypes__default["default"].array,
@@ -991,8 +1033,7 @@ Line.propTypes = {
991
1033
  };
992
1034
 
993
1035
  var _excluded = ["subject", "children", "connectorProps", "dx", "dy", "curve", "className"];
994
-
995
- var Annotation = function Annotation(_ref) {
1036
+ var Annotation = React.forwardRef(function (_ref, ref) {
996
1037
  var subject = _ref.subject,
997
1038
  children = _ref.children,
998
1039
  connectorProps = _ref.connectorProps,
@@ -1016,6 +1057,7 @@ var Annotation = function Annotation(_ref) {
1016
1057
 
1017
1058
  var connectorPath = createConnectorPath(dx, dy, curve);
1018
1059
  return /*#__PURE__*/React__default["default"].createElement("g", _extends({
1060
+ ref: ref,
1019
1061
  transform: "translate(".concat(x + dx, ", ").concat(y + dy, ")"),
1020
1062
  className: "rsm-annotation ".concat(className)
1021
1063
  }, restProps), /*#__PURE__*/React__default["default"].createElement("path", _extends({
@@ -1023,8 +1065,8 @@ var Annotation = function Annotation(_ref) {
1023
1065
  fill: "transparent",
1024
1066
  stroke: "#000"
1025
1067
  }, connectorProps)), children);
1026
- };
1027
-
1068
+ });
1069
+ Annotation.displayName = "Annotation";
1028
1070
  Annotation.propTypes = {
1029
1071
  subject: PropTypes__default["default"].array,
1030
1072
  children: PropTypes__default["default"].oneOfType([PropTypes__default["default"].node, PropTypes__default["default"].arrayOf(PropTypes__default["default"].node)]),
@@ -1045,6 +1087,10 @@ exports.MapContext = MapContext;
1045
1087
  exports.MapProvider = MapProvider;
1046
1088
  exports.Marker = Marker;
1047
1089
  exports.Sphere = Sphere$1;
1090
+ exports.ZoomContext = ZoomContext;
1091
+ exports.ZoomProvider = ZoomProvider;
1048
1092
  exports.ZoomableGroup = ZoomableGroup;
1049
1093
  exports.useGeographies = useGeographies;
1094
+ exports.useMapContext = useMapContext;
1050
1095
  exports.useZoomPan = useZoomPan;
1096
+ exports.useZoomPanContext = useZoomPanContext;
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 i=s(t),c=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){y(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 y(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function g(){return g=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},g.apply(this,arguments)}function v(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 h(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=v(f,["geoPath"]),x=t.createContext(),k=function(e){var r=e.width,o=e.height,n=e.projection,a=e.projectionConfig,u=v(e,j),s=h(a.center||[],2),l=s[0],c=s[1],f=h(a.rotate||[],3),d=f[0],p=f[1],m=f[2],y=h(a.parallels||[],2),b=y[0],k=y[1],w=a.scale||null,O=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 i=E[n]().translate([u/2,l/2]);return[i.center?"center":null,i.rotate?"rotate":null,i.scale?"scale":null,i.parallels?"parallels":null].forEach((function(e){e&&(i=i[e](r[e]||i[e]()))})),i}({projectionConfig:{center:l||0===l||c||0===c?[l,c]:null,rotate:d||0===d||p||0===p?[d,p,m]:null,parallels:b||0===b||k||0===k?[b,k]:null,scale:w},projection:n,width:r,height:o})}),[r,o,n,l,c,d,p,m,b,k,w]),N=t.useCallback(O,[O]),S=t.useMemo((function(){return{width:r,height:o,projection:N,path:M().projection(N)}}),[r,o,N]);return i.default.createElement(x.Provider,g({value:S},u))};k.propTypes={width:c.default.number,height:c.default.number,projection:c.default.oneOfType([c.default.string,c.default.func]),projectionConfig:c.default.object};var w=["width","height","projection","projectionConfig","className"],O=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,c=void 0===l?{}:l,f=e.className,d=void 0===f?"":f,p=v(e,w);return i.default.createElement(k,{width:o,height:a,projection:s,projectionConfig:c},i.default.createElement("svg",g({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(x).path,a=h(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}}O.displayName="ComposableMap",O.propTypes={width:c.default.number,height:c.default.number,projection:c.default.oneOfType([c.default.string,c.default.func]),projectionConfig:c.default.object,className:c.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=v(e,R),c=t.useContext(x),f=c.path,d=c.projection,p=T({geography:o,parseGeographies:a}),m=p.geographies,y=p.outline,h=p.borders;return i.default.createElement("g",g({ref:r,className:"rsm-geographies ".concat(s)},l),m&&m.length>0&&n({geographies:m,outline:y,borders:h,path:f,projection:d}))}));Z.displayName="Geographies",Z.propTypes={geography:c.default.oneOfType([c.default.string,c.default.object,c.default.array]),children:c.default.func,parseGeographies:c.default.func,className:c.default.string};var z=["geography","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","onFocus","onBlur","style","className"],G=t.forwardRef((function(e,r){var o=e.geography,n=e.onMouseEnter,a=e.onMouseLeave,u=e.onMouseDown,s=e.onMouseUp,l=e.onFocus,c=e.onBlur,f=e.style,d=void 0===f?{}:f,p=e.className,m=void 0===p?"":p,y=v(e,z),b=h(t.useState(!1),2),j=b[0],M=b[1],E=h(t.useState(!1),2),x=E[0],k=E[1];return i.default.createElement("path",g({ref:r,tabIndex:"0",className:"rsm-geography ".concat(m),d:o.svgPath,onMouseEnter:function(e){k(!0),n&&n(e)},onMouseLeave:function(e){k(!1),j&&M(!1),a&&a(e)},onFocus:function(e){k(!0),l&&l(e)},onBlur:function(e){k(!1),j&&M(!1),c&&c(e)},onMouseDown:function(e){M(!0),u&&u(e)},onMouseUp:function(e){M(!1),s&&s(e)},style:d[j||x?j?"pressed":"hover":"default"]},y))}));G.displayName="Geography",G.propTypes={geography:c.default.object,onMouseEnter:c.default.func,onMouseLeave:c.default.func,onMouseDown:c.default.func,onMouseUp:c.default.func,onFocus:c.default.func,onBlur:c.default.func,style:c.default.object,className:c.default.string};var D=t.memo(G),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,c=void 0===l?[10,10]:l,f=e.className,d=void 0===f?"":f,p=v(e,L),m=t.useContext(x).path;return i.default.createElement("path",g({ref:r,d:m(o.geoGraticule().step(c)()),fill:a,stroke:s,className:"rsm-graticule ".concat(d)},p))}));A.displayName="Graticule",A.propTypes={fill:c.default.string,stroke:c.default.string,step:c.default.array,className:c.default.string};var B=t.memo(A),F=["value"],U=t.createContext(),q={x:0,y:0,k:1,transformString:"translate(0 0) scale(1)"},W=function(e){var t=e.value,r=void 0===t?q:t,o=v(e,F);return i.default.createElement(U.Provider,g({value:r},o))};W.propTypes={x:c.default.number,y:c.default.number,k:c.default.number,transformString:c.default.string};function I(e){var r=e.center,o=e.filterZoomEvent,n=e.onMoveStart,s=e.onMoveEnd,l=e.onMove,i=e.translateExtent,c=void 0===i?[[-1/0,-1/0],[1/0,1/0]]:i,f=e.scaleExtent,d=void 0===f?[1,8]:f,p=e.zoom,m=void 0===p?1:p,y=t.useContext(x),g=y.width,v=y.height,b=y.projection,j=h(r,2),M=j[0],E=j[1],k=h(t.useState({x:0,y:0,k:1}),2),w=k[0],O=k[1],S=t.useRef({x:0,y:0,k:1}),P=t.useRef(),C=t.useRef(),T=t.useRef(!1),R=h(c,2),Z=R[0],z=R[1],G=h(Z,2),D=G[0],L=G[1],A=h(z,2),B=A[0],F=A[1],U=h(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([[D,L],[B,F]]).on("start",(function(e){n&&!T.current&&n({coordinates:b.invert(N(g,v,e.transform)),zoom:e.transform.k},e)})).on("zoom",(function(e){if(!T.current){var t=e.transform,r=e.sourceEvent;O({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=h(b.invert(N(g,v,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)}),[g,v,D,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(g/2-t,v/2-r).scale(m)),O({x:g/2-t,y:v/2-r,k:m}),S.current={x:M,y:E,k:m}}}),[M,E,m,g,v,b]),{mapRef:P,position:w,transformString:"translate(".concat(w.x," ").concat(w.y,") scale(").concat(w.k,")")}}var K=["center","zoom","minZoom","maxZoom","translateExtent","filterZoomEvent","onMoveStart","onMove","onMoveEnd","className"],_=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,c=e.maxZoom,f=void 0===c?8:c,d=e.translateExtent,p=e.filterZoomEvent,m=e.onMoveStart,y=e.onMove,h=e.onMoveEnd,b=e.className,j=v(e,K),M=t.useContext(x),E=M.width,k=M.height,w=I({center:n,filterZoomEvent:p,onMoveStart:m,onMove:y,onMoveEnd:h,scaleExtent:[l,f],translateExtent:d,zoom:u}),O=w.mapRef,N=w.transformString,S=w.position;return i.default.createElement(W,{value:{x:S.x,y:S.y,k:S.k,transformString:N}},i.default.createElement("g",{ref:O},i.default.createElement("rect",{width:E,height:k,fill:"transparent"}),i.default.createElement("g",g({ref:r,transform:N,className:"rsm-zoomable-group ".concat(b)},j))))}));_.displayName="ZoomableGroup",_.propTypes={center:c.default.array,zoom:c.default.number,minZoom:c.default.number,maxZoom:c.default.number,translateExtent:c.default.arrayOf(c.default.array),onMoveStart:c.default.func,onMove:c.default.func,onMoveEnd:c.default.func,className:c.default.string};var Q=["id","fill","stroke","strokeWidth","className"],$=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,c=e.strokeWidth,f=void 0===c?.5:c,d=e.className,p=void 0===d?"":d,m=v(e,Q),y=t.useContext(x).path,h=t.useMemo((function(){return y({type:"Sphere"})}),[y]);return i.default.createElement(t.Fragment,null,i.default.createElement("defs",null,i.default.createElement("clipPath",{id:n},i.default.createElement("path",{d:h}))),i.default.createElement("path",g({ref:r,d:h,fill:u,stroke:l,strokeWidth:f,style:{pointerEvents:"none"},className:"rsm-sphere ".concat(p)},m)))}));$.displayName="Sphere",$.propTypes={id:c.default.string,fill:c.default.string,stroke:c.default.string,strokeWidth:c.default.number,className:c.default.string};var H=t.memo($),J=["coordinates","children","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","onFocus","onBlur","style","className"],V=t.forwardRef((function(e,r){var o=e.coordinates,n=e.children,a=e.onMouseEnter,u=e.onMouseLeave,s=e.onMouseDown,l=e.onMouseUp,c=e.onFocus,f=e.onBlur,d=e.style,p=void 0===d?{}:d,m=e.className,y=void 0===m?"":m,b=v(e,J),j=t.useContext(x).projection,M=h(t.useState(!1),2),E=M[0],k=M[1],w=h(t.useState(!1),2),O=w[0],N=w[1],S=h(j(o),2),P=S[0],C=S[1];return i.default.createElement("g",g({ref:r,transform:"translate(".concat(P,", ").concat(C,")"),className:"rsm-marker ".concat(y),onMouseEnter:function(e){N(!0),a&&a(e)},onMouseLeave:function(e){N(!1),E&&k(!1),u&&u(e)},onFocus:function(e){N(!0),c&&c(e)},onBlur:function(e){N(!1),E&&k(!1),f&&f(e)},onMouseDown:function(e){k(!0),s&&s(e)},onMouseUp:function(e){k(!1),l&&l(e)},style:p[E||O?E?"pressed":"hover":"default"]},b),n)}));V.displayName="Marker",V.propTypes={coordinates:c.default.array,children:c.default.oneOfType([c.default.node,c.default.arrayOf(c.default.node)]),onMouseEnter:c.default.func,onMouseLeave:c.default.func,onMouseDown:c.default.func,onMouseUp:c.default.func,onFocus:c.default.func,onBlur:c.default.func,style:c.default.object,className:c.default.string};var X=["from","to","coordinates","stroke","strokeWidth","fill","className"],Y=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,c=void 0===l?"currentcolor":l,f=e.strokeWidth,d=void 0===f?3:f,p=e.fill,m=void 0===p?"transparent":p,y=e.className,h=void 0===y?"":y,b=v(e,X),j=t.useContext(x).path,M={type:"LineString",coordinates:s||[n,u]};return i.default.createElement("path",g({ref:r,d:j(M),className:"rsm-line ".concat(h),stroke:c,strokeWidth:d,fill:m},b))}));Y.displayName="Line",Y.propTypes={from:c.default.array,to:c.default.array,coordinates:c.default.array,stroke:c.default.string,strokeWidth:c.default.number,fill:c.default.string,className:c.default.string};var ee=["subject","children","connectorProps","dx","dy","curve","className"],te=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,c=void 0===l?30:l,f=e.curve,d=void 0===f?0:f,p=e.className,m=void 0===p?"":p,y=v(e,ee),b=h((0,t.useContext(x).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,c,d);return i.default.createElement("g",g({ref:r,transform:"translate(".concat(j+s,", ").concat(M+c,")"),className:"rsm-annotation ".concat(m)},y),i.default.createElement("path",g({d:E,fill:"transparent",stroke:"#000"},a)),n)}));te.displayName="Annotation",te.propTypes={subject:c.default.array,children:c.default.oneOfType([c.default.node,c.default.arrayOf(c.default.node)]),dx:c.default.number,dy:c.default.number,curve:c.default.number,connectorProps:c.default.object,className:c.default.string},e.Annotation=te,e.ComposableMap=O,e.Geographies=Z,e.Geography=D,e.Graticule=B,e.Line=Y,e.MapContext=x,e.MapProvider=k,e.Marker=V,e.Sphere=H,e.ZoomContext=U,e.ZoomProvider=W,e.ZoomableGroup=_,e.useGeographies=T,e.useMapContext=function(){return t.useContext(x)},e.useZoomPan=I,e.useZoomPanContext=function(){return t.useContext(U)},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.4",
3
+ "version": "3.0.0-beta.7",
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",