@mapcomponents/react-maplibre 1.0.5 → 1.0.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/.eslintrc.cjs CHANGED
@@ -3,6 +3,7 @@ module.exports = {
3
3
  browser: true,
4
4
  node: true,
5
5
  es2021: true,
6
+ jest: true,
6
7
  },
7
8
  extends: [
8
9
  "eslint:recommended",
package/CHANGELOG.md CHANGED
@@ -1,10 +1,23 @@
1
1
  # Change Log
2
2
 
3
+ ## [v1.0.7] - 2024-07-30
4
+
5
+ ### Changed
6
+ - a6bc647: Upgrade to maplibre-gl 4.5 (sky enabled) (#178)
7
+
8
+ ### Fixed
9
+ - dde2ef4: fix: incorrect property access (#181) …
10
+
11
+ ## [v1.0.6] - 2024-07-30
12
+
13
+ ### Fixed
14
+ - 209ec04: Fix/use layerhook update on functions
3
15
 
4
16
  ## [v1.0.5] - 2024-06-21
5
17
 
6
18
  ### Changed
7
19
  - 78f7106: client search component MlClientSearch removed from release…
20
+
8
21
  ### Fixed
9
22
  - 78f7106: MlGeojsonlayer options.source bug
10
23
 
package/dist/index.cjs.js CHANGED
@@ -2434,15 +2434,6 @@ function useLayer(props) {
2434
2434
  console.error('Failed to add layer:', error);
2435
2435
  }
2436
2436
  setLayer(function () { var _a; return (_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.map.getLayer(layerId.current); });
2437
- if (typeof props.onHover !== 'undefined') {
2438
- mapHook.map.on('mousemove', layerId.current, props.onHover, mapHook.componentId);
2439
- }
2440
- if (typeof props.onClick !== 'undefined') {
2441
- mapHook.map.on('click', layerId.current, props.onClick, mapHook.componentId);
2442
- }
2443
- if (typeof props.onLeave !== 'undefined') {
2444
- mapHook.map.on('mouseleave', layerId.current, props.onLeave, mapHook.componentId);
2445
- }
2446
2437
  // recreate layer if style has changed
2447
2438
  var styledataEventHandler = function () {
2448
2439
  var _a;
@@ -2563,6 +2554,48 @@ function useLayer(props) {
2563
2554
  }
2564
2555
  };
2565
2556
  }, [mapHook.map, (_a = props.options) === null || _a === void 0 ? void 0 : _a.source]);
2557
+ // Reload onClick-handlers when they change
2558
+ React.useEffect(function () {
2559
+ var _a, _b, _c;
2560
+ if (!props.onClick || !(mapHook === null || mapHook === void 0 ? void 0 : mapHook.map) || !((_b = (_a = mapHook === null || mapHook === void 0 ? void 0 : mapHook.map) === null || _a === void 0 ? void 0 : _a.getLayer) === null || _b === void 0 ? void 0 : _b.call(_a, layerId.current)))
2561
+ return;
2562
+ var onClickHandler = props.onClick;
2563
+ (_c = mapHook.map) === null || _c === void 0 ? void 0 : _c.on('click', layerId.current, onClickHandler);
2564
+ return function () {
2565
+ var _a;
2566
+ if (onClickHandler && (mapHook === null || mapHook === void 0 ? void 0 : mapHook.map)) {
2567
+ (_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.off('click', layerId.current, onClickHandler);
2568
+ }
2569
+ };
2570
+ }, [mapHook.map, props.onClick]);
2571
+ // Reload onHover-handlers when they change
2572
+ React.useEffect(function () {
2573
+ var _a, _b, _c;
2574
+ if (!props.onHover || !(mapHook === null || mapHook === void 0 ? void 0 : mapHook.map) || !((_b = (_a = mapHook === null || mapHook === void 0 ? void 0 : mapHook.map) === null || _a === void 0 ? void 0 : _a.getLayer) === null || _b === void 0 ? void 0 : _b.call(_a, layerId.current)))
2575
+ return;
2576
+ var onHoverHandler = props.onHover;
2577
+ (_c = mapHook.map) === null || _c === void 0 ? void 0 : _c.on('mousemove', layerId.current, onHoverHandler);
2578
+ return function () {
2579
+ var _a;
2580
+ if (onHoverHandler && (mapHook === null || mapHook === void 0 ? void 0 : mapHook.map)) {
2581
+ (_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.off('mousemove', layerId.current, onHoverHandler);
2582
+ }
2583
+ };
2584
+ }, [mapHook.map, props.onHover]);
2585
+ // Reload onLeave-handlers when they change
2586
+ React.useEffect(function () {
2587
+ var _a, _b, _c;
2588
+ if (!props.onLeave || !(mapHook === null || mapHook === void 0 ? void 0 : mapHook.map) || !((_b = (_a = mapHook === null || mapHook === void 0 ? void 0 : mapHook.map) === null || _a === void 0 ? void 0 : _a.getLayer) === null || _b === void 0 ? void 0 : _b.call(_a, layerId.current)))
2589
+ return;
2590
+ var onLeaveHandler = props.onLeave;
2591
+ (_c = mapHook.map) === null || _c === void 0 ? void 0 : _c.on('mouseleave', layerId.current, onLeaveHandler);
2592
+ return function () {
2593
+ var _a;
2594
+ if (onLeaveHandler && (mapHook === null || mapHook === void 0 ? void 0 : mapHook.map)) {
2595
+ (_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.off('mouseleave', layerId.current, onLeaveHandler);
2596
+ }
2597
+ };
2598
+ }, [mapHook.map, props.onLeave]);
2566
2599
  return {
2567
2600
  map: mapHook.map,
2568
2601
  layer: layer,
@@ -2679,7 +2712,7 @@ function useSource(props) {
2679
2712
  var removeSource = React.useCallback(function () {
2680
2713
  var _a, _b;
2681
2714
  if (mapHook.map && ((_b = (_a = mapHook.map) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b._layers)) {
2682
- for (var _i = 0, _c = Object.entries(mapHook.map.map.style._layers); _i < _c.length; _i++) {
2715
+ for (var _i = 0, _c = Object.entries(mapHook.map.style._layers); _i < _c.length; _i++) {
2683
2716
  var _d = _c[_i], layerId = _d[0], layer = _d[1];
2684
2717
  if (layer.source === sourceId.current) {
2685
2718
  mapHook.map.removeLayer(layerId);
@@ -2755,7 +2788,7 @@ function useSource(props) {
2755
2788
  * @component
2756
2789
  */
2757
2790
  var MlGeoJsonLayer = function (props) {
2758
- var _a, _b, _c, _d, _e, _f, _g, _h;
2791
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
2759
2792
  var layerType = props.type || getDefaulLayerTypeByGeometry(props.geojson);
2760
2793
  var layerId = React.useRef(props.layerId || 'MlGeoJsonLayer-' + uuid.v4());
2761
2794
  var labelLayerId = "label-".concat(layerId.current);
@@ -2778,7 +2811,10 @@ var MlGeoJsonLayer = function (props) {
2778
2811
  useLayer({
2779
2812
  mapId: props.mapId,
2780
2813
  layerId: layerId.current,
2781
- options: __assign(__assign({ source: 'source-' + layerId.current }, props.options), { paint: __assign(__assign({}, (props.paint || getDefaultPaintPropsByType(layerType, props.defaultPaintOverrides))), (_c = props === null || props === void 0 ? void 0 : props.options) === null || _c === void 0 ? void 0 : _c.paint), layout: __assign(__assign({}, ((props === null || props === void 0 ? void 0 : props.layout) || {})), (_d = props === null || props === void 0 ? void 0 : props.options) === null || _d === void 0 ? void 0 : _d.layout), type: layerType }),
2814
+ options: __assign(__assign({}, (typeof ((_c = props === null || props === void 0 ? void 0 : props.options) === null || _c === void 0 ? void 0 : _c.source) !== 'undefined' &&
2815
+ typeof ((_d = props === null || props === void 0 ? void 0 : props.options) === null || _d === void 0 ? void 0 : _d.source) === 'string'
2816
+ ? { source: props.options.source }
2817
+ : { source: 'source-' + layerId.current })), { paint: __assign(__assign({}, (props.paint || getDefaultPaintPropsByType(layerType, props.defaultPaintOverrides))), (_e = props === null || props === void 0 ? void 0 : props.options) === null || _e === void 0 ? void 0 : _e.paint), layout: __assign(__assign({}, ((props === null || props === void 0 ? void 0 : props.layout) || {})), (_f = props === null || props === void 0 ? void 0 : props.options) === null || _f === void 0 ? void 0 : _f.layout), type: layerType }),
2782
2818
  insertBeforeLayer: props.insertBeforeLayer,
2783
2819
  onHover: props.onHover,
2784
2820
  onClick: props.onClick,
@@ -2788,7 +2824,10 @@ var MlGeoJsonLayer = function (props) {
2788
2824
  // Using it with geojson and options.source undefined will cause it to return without creating a layer.
2789
2825
  useLayer({
2790
2826
  mapId: props.mapId,
2791
- options: __assign(__assign(__assign({ source: props.labelProp ? 'source-' + layerId.current : undefined, id: labelLayerId, type: 'symbol', maxzoom: 24, minzoom: 1 }, ((props === null || props === void 0 ? void 0 : props.labelOptions) ? props.labelOptions : {})), (((_e = props === null || props === void 0 ? void 0 : props.options) === null || _e === void 0 ? void 0 : _e.filter) ? { filter: props.options.filter } : {})), { layout: __assign(__assign({ 'text-font': ['Open Sans Regular'], 'text-field': "{".concat(props.labelProp, "}"), 'text-size': 12, 'text-anchor': 'top' }, (((_f = props === null || props === void 0 ? void 0 : props.labelOptions) === null || _f === void 0 ? void 0 : _f.layout) ? props.labelOptions.layout : {})), (((_g = props === null || props === void 0 ? void 0 : props.layout) === null || _g === void 0 ? void 0 : _g.visibility) ? { visibility: props.layout.visibility } : {})), paint: __assign({ 'text-halo-width': 1, 'text-halo-color': '#fefefe', 'text-color': '#121212' }, (((_h = props === null || props === void 0 ? void 0 : props.labelOptions) === null || _h === void 0 ? void 0 : _h.paint) ? props.labelOptions.paint : {})) }),
2827
+ options: __assign(__assign(__assign(__assign(__assign({}, (typeof ((_g = props === null || props === void 0 ? void 0 : props.options) === null || _g === void 0 ? void 0 : _g.source) !== 'undefined' &&
2828
+ typeof ((_h = props === null || props === void 0 ? void 0 : props.options) === null || _h === void 0 ? void 0 : _h.source) === 'string'
2829
+ ? { source: props.options.source }
2830
+ : { source: 'source-' + layerId.current })), { id: labelLayerId, type: 'symbol', maxzoom: 24, minzoom: 1 }), ((props === null || props === void 0 ? void 0 : props.labelOptions) ? props.labelOptions : {})), (((_j = props === null || props === void 0 ? void 0 : props.options) === null || _j === void 0 ? void 0 : _j.filter) ? { filter: props.options.filter } : {})), { layout: __assign(__assign({ 'text-font': ['Open Sans Regular'], 'text-field': "{".concat(props.labelProp, "}"), 'text-size': 12, 'text-anchor': 'top' }, (((_k = props === null || props === void 0 ? void 0 : props.labelOptions) === null || _k === void 0 ? void 0 : _k.layout) ? props.labelOptions.layout : {})), (((_l = props === null || props === void 0 ? void 0 : props.layout) === null || _l === void 0 ? void 0 : _l.visibility) ? { visibility: props.layout.visibility } : {})), paint: __assign({ 'text-halo-width': 1, 'text-halo-color': '#fefefe', 'text-color': '#121212' }, (((_m = props === null || props === void 0 ? void 0 : props.labelOptions) === null || _m === void 0 ? void 0 : _m.paint) ? props.labelOptions.paint : {})) }),
2792
2831
  });
2793
2832
  return React.createElement(React.Fragment, null);
2794
2833
  };