react-spatial 1.1.5 → 1.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,8 @@
1
- /* eslint-disable react/jsx-props-no-spreading */
2
1
  import React from 'react';
3
- import { configure, mount } from 'enzyme';
4
- import Adapter from 'enzyme-adapter-react-16';
5
- import 'jest-canvas-mock';
6
- import renderer from 'react-test-renderer';
7
2
  import { Layer } from 'mobility-toolbox-js/ol';
3
+ import { fireEvent, render } from '@testing-library/react';
8
4
  import BaseLayerSwitcher from './BaseLayerSwitcher';
9
5
 
10
- configure({ adapter: new Adapter() });
11
-
12
6
  describe('BaseLayerSwitcher', function () {
13
7
  var layers;
14
8
  var layerImages = {
@@ -37,49 +31,57 @@ describe('BaseLayerSwitcher', function () {
37
31
 
38
32
  describe('matches snapshots', function () {
39
33
  test('using default properties.', function () {
40
- var component = renderer.create(
34
+ var ref = render(
41
35
  React.createElement( BaseLayerSwitcher, { layers: layers, layerImages: layerImages })
42
36
  );
43
- var tree = component.toJSON();
44
- expect(tree).toMatchSnapshot();
37
+ var container = ref.container;
38
+ expect(container.innerHTML).toMatchSnapshot();
45
39
  });
46
40
  });
47
41
 
48
42
  test('the correct baselayer is visible on mount', function () {
49
- var comp = mount(
50
- React.createElement( BaseLayerSwitcher, { layers: layers, layerImages: layerImages })
51
- );
52
- expect(comp.props().layers[0].visible).toBe(true);
43
+ render(React.createElement( BaseLayerSwitcher, { layers: layers, layerImages: layerImages }));
44
+ expect(layers[0].visible).toBe(true);
53
45
  });
54
46
 
55
- test('removes open class and switches layer on click', function () {
56
- var comp = mount(
47
+ test('removes open class and switches layer on click', async function () {
48
+ var ref = render(
57
49
  React.createElement( BaseLayerSwitcher, { layers: layers, layerImages: layerImages })
58
50
  );
59
- comp.find('.rs-opener').at(0).simulate('click');
60
- comp.find('.rs-base-layer-switcher-button').at(3).simulate('click');
51
+ var container = ref.container;
52
+ await fireEvent.click(container.querySelector('.rs-opener'));
53
+ await fireEvent.click(
54
+ container.querySelectorAll('.rs-base-layer-switcher-button')[3]
55
+ );
61
56
  expect(
62
- comp.props().layers.filter(function (layer) {
57
+ layers.filter(function (layer) {
63
58
  return layer.isBaseLayer;
64
59
  })[2].visible
65
60
  ).toBe(true);
66
- expect(comp.find('.rs-base-layer-switcher rs-open').exists()).toBe(false);
61
+ expect(!!container.querySelector('.rs-base-layer-switcher rs-open')).toBe(
62
+ false
63
+ );
67
64
  });
68
65
 
69
- test('toggles base map instead of opening when only two base layers', function () {
70
- var comp = mount(React.createElement( BaseLayerSwitcher, { layers: layers.slice(0, 2) }));
66
+ test('toggles base map instead of opening when only two base layers', async function () {
67
+ var ref = render(
68
+ React.createElement( BaseLayerSwitcher, { layers: layers.slice(0, 2) })
69
+ );
70
+ var container = ref.container;
71
71
  expect(
72
- comp.props().layers.filter(function (layer) {
72
+ layers.filter(function (layer) {
73
73
  return layer.isBaseLayer;
74
74
  })[0].visible
75
75
  ).toBe(true);
76
- comp.find('.rs-opener').at(0).simulate('click');
76
+ await fireEvent.click(container.querySelector('.rs-opener'));
77
77
  expect(
78
- comp.props().layers.filter(function (layer) {
78
+ layers.filter(function (layer) {
79
79
  return layer.isBaseLayer;
80
80
  })[1].visible
81
81
  ).toBe(true);
82
- expect(comp.find('.rs-base-layer-switcher rs-open').exists()).toBe(false);
82
+ expect(!!container.querySelector('.rs-base-layer-switcher rs-open')).toBe(
83
+ false
84
+ );
83
85
  });
84
86
  });
85
87
 
@@ -1 +1 @@
1
- {"version":3,"file":"BaseLayerSwitcher.test.js","sources":["../../../src/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\nimport { configure, mount } from 'enzyme';\nimport Adapter from 'enzyme-adapter-react-16';\nimport 'jest-canvas-mock';\nimport renderer from 'react-test-renderer';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport BaseLayerSwitcher from './BaseLayerSwitcher';\n\nconfigure({ adapter: new Adapter() });\n\ndescribe('BaseLayerSwitcher', () => {\n let layers;\n const layerImages = {\n layerFoo: 'foo',\n layerBar: 'bar',\n layerFoobar: 'foobar',\n };\n\n beforeEach(() => {\n layers = [\n new Layer({\n name: 'bl1',\n isBaseLayer: true,\n }),\n new Layer({\n name: 'bl2',\n isBaseLayer: true,\n visible: false,\n }),\n new Layer({\n name: 'bl3',\n isBaseLayer: true,\n visible: false,\n }),\n ];\n });\n\n describe('matches snapshots', () => {\n test('using default properties.', () => {\n const component = renderer.create(\n <BaseLayerSwitcher layers={layers} layerImages={layerImages} />,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n });\n });\n\n test('the correct baselayer is visible on mount', () => {\n const comp = mount(\n <BaseLayerSwitcher layers={layers} layerImages={layerImages} />,\n );\n expect(comp.props().layers[0].visible).toBe(true);\n });\n\n test('removes open class and switches layer on click', () => {\n const comp = mount(\n <BaseLayerSwitcher layers={layers} layerImages={layerImages} />,\n );\n comp.find('.rs-opener').at(0).simulate('click');\n comp.find('.rs-base-layer-switcher-button').at(3).simulate('click');\n expect(\n comp.props().layers.filter((layer) => {\n return layer.isBaseLayer;\n })[2].visible,\n ).toBe(true);\n expect(comp.find('.rs-base-layer-switcher rs-open').exists()).toBe(false);\n });\n\n test('toggles base map instead of opening when only two base layers', () => {\n const comp = mount(<BaseLayerSwitcher layers={layers.slice(0, 2)} />);\n expect(\n comp.props().layers.filter((layer) => {\n return layer.isBaseLayer;\n })[0].visible,\n ).toBe(true);\n comp.find('.rs-opener').at(0).simulate('click');\n expect(\n comp.props().layers.filter((layer) => {\n return layer.isBaseLayer;\n })[1].visible,\n ).toBe(true);\n expect(comp.find('.rs-base-layer-switcher rs-open').exists()).toBe(false);\n });\n});\n"],"names":["let","const"],"mappings":"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"}
1
+ {"version":3,"file":"BaseLayerSwitcher.test.js","sources":["../../../src/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js"],"sourcesContent":["import React from 'react';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport { fireEvent, render } from '@testing-library/react';\nimport BaseLayerSwitcher from './BaseLayerSwitcher';\n\ndescribe('BaseLayerSwitcher', () => {\n let layers;\n const layerImages = {\n layerFoo: 'foo',\n layerBar: 'bar',\n layerFoobar: 'foobar',\n };\n\n beforeEach(() => {\n layers = [\n new Layer({\n name: 'bl1',\n isBaseLayer: true,\n }),\n new Layer({\n name: 'bl2',\n isBaseLayer: true,\n visible: false,\n }),\n new Layer({\n name: 'bl3',\n isBaseLayer: true,\n visible: false,\n }),\n ];\n });\n\n describe('matches snapshots', () => {\n test('using default properties.', () => {\n const { container } = render(\n <BaseLayerSwitcher layers={layers} layerImages={layerImages} />,\n );\n expect(container.innerHTML).toMatchSnapshot();\n });\n });\n\n test('the correct baselayer is visible on mount', () => {\n render(<BaseLayerSwitcher layers={layers} layerImages={layerImages} />);\n expect(layers[0].visible).toBe(true);\n });\n\n test('removes open class and switches layer on click', async () => {\n const { container } = render(\n <BaseLayerSwitcher layers={layers} layerImages={layerImages} />,\n );\n await fireEvent.click(container.querySelector('.rs-opener'));\n await fireEvent.click(\n container.querySelectorAll('.rs-base-layer-switcher-button')[3],\n );\n expect(\n layers.filter((layer) => {\n return layer.isBaseLayer;\n })[2].visible,\n ).toBe(true);\n expect(!!container.querySelector('.rs-base-layer-switcher rs-open')).toBe(\n false,\n );\n });\n\n test('toggles base map instead of opening when only two base layers', async () => {\n const { container } = render(\n <BaseLayerSwitcher layers={layers.slice(0, 2)} />,\n );\n expect(\n layers.filter((layer) => {\n return layer.isBaseLayer;\n })[0].visible,\n ).toBe(true);\n await fireEvent.click(container.querySelector('.rs-opener'));\n expect(\n layers.filter((layer) => {\n return layer.isBaseLayer;\n })[1].visible,\n ).toBe(true);\n expect(!!container.querySelector('.rs-base-layer-switcher rs-open')).toBe(\n false,\n );\n });\n});\n"],"names":["let","const"],"mappings":"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"}
@@ -1,20 +1,15 @@
1
1
  /* eslint-disable react/jsx-props-no-spreading */
2
2
  import React from 'react';
3
- import { configure, shallow, mount } from 'enzyme';
4
- import Adapter from 'enzyme-adapter-react-16';
5
- import 'jest-canvas-mock';
6
3
  import OLMap from 'ol/Map';
4
+ import { fireEvent, render, screen } from '@testing-library/react';
7
5
  import { Layer } from 'mobility-toolbox-js/ol';
8
- import renderer from 'react-test-renderer';
9
6
  import BaseLayerToggler from './BaseLayerToggler';
10
7
  import LayerService from '../../LayerService';
11
8
 
12
- configure({ adapter: new Adapter() });
13
-
14
9
  var shallowComp = function (layers, props) {
15
10
  var map = new OLMap({});
16
11
  var layerService = new LayerService(layers);
17
- return shallow(
12
+ return render(
18
13
  React.createElement( BaseLayerToggler, Object.assign({},
19
14
  { layerService: layerService, map: map }, (props || {})))
20
15
  );
@@ -22,7 +17,7 @@ var shallowComp = function (layers, props) {
22
17
  var mountComp = function (layers, props) {
23
18
  var map = new OLMap({});
24
19
  var layerService = new LayerService(layers);
25
- return mount(
20
+ return render(
26
21
  React.createElement( BaseLayerToggler, Object.assign({},
27
22
  { layerService: layerService, map: map }, (props || {})))
28
23
  );
@@ -31,12 +26,12 @@ var mountComp = function (layers, props) {
31
26
  var expectSnapshot = function (layers, props) {
32
27
  var map = new OLMap({});
33
28
  var layerService = new LayerService(layers);
34
- var component = renderer.create(
29
+ var ref = render(
35
30
  React.createElement( BaseLayerToggler, Object.assign({},
36
31
  { layerService: layerService, map: map }, (props || {})))
37
32
  );
38
- var tree = component.toJSON();
39
- expect(tree).toMatchSnapshot();
33
+ var container = ref.container;
34
+ expect(container.innerHTML).toMatchSnapshot();
40
35
  };
41
36
 
42
37
  describe('BaseLayerToggler', function () {
@@ -66,93 +61,66 @@ describe('BaseLayerToggler', function () {
66
61
  });
67
62
 
68
63
  test('initialize correctly the state', function () {
69
- var wrapper = shallowComp(layers);
70
- var comp = wrapper.instance();
71
- expect(comp.state.idx).toBe(1);
72
- expect(comp.state.layers.length).toBe(3);
73
- expect(comp.state.layerVisible).toBe(comp.state.layers[0]);
64
+ shallowComp(layers);
65
+ expect(layers[0].visible).toBe(true);
74
66
  });
75
67
 
76
- test('goes forward through all available layer except the current layer displayed on the map.', function () {
77
- var wrapper = shallowComp(layers);
78
- var comp = wrapper.instance();
79
- var layerVisible = comp.state.layers[0];
80
- expect(comp.state.layers.length).toBe(3);
81
- expect(comp.state.layerVisible).toBe(layerVisible);
82
- expect(comp.state.idx).toBe(1);
83
-
84
- wrapper.find('.rs-base-layer-next').simulate('click');
85
- expect(comp.state.layerVisible).toBe(layerVisible);
86
- expect(comp.state.idx).toBe(2);
68
+ test('goes forward through all available layer except the current layer displayed on the map.', async function () {
69
+ var ref = shallowComp(layers);
70
+ var container = ref.container;
71
+ expect(layers[0].visible).toBe(true);
72
+ await fireEvent.click(
73
+ container.querySelector('.rs-base-layer-toggle-button')
74
+ );
75
+ expect(layers[1].visible).toBe(true);
87
76
 
88
77
  // Layer at index 0 is displayed on the map so we must ignore it
89
- wrapper.find('.rs-base-layer-next').simulate('click');
90
- expect(comp.state.layerVisible).toBe(layerVisible);
91
- expect(comp.state.idx).toBe(1);
78
+ await fireEvent.click(container.querySelector('.rs-base-layer-next'));
79
+ await fireEvent.click(
80
+ container.querySelector('.rs-base-layer-toggle-button')
81
+ );
82
+ expect(layers[2].visible).toBe(true);
83
+
84
+ await fireEvent.click(container.querySelector('.rs-base-layer-next'));
85
+ await fireEvent.click(
86
+ container.querySelector('.rs-base-layer-toggle-button')
87
+ );
88
+ expect(layers[0].visible).toBe(true);
92
89
  });
93
90
 
94
- test('goes backward through all available layer except the current layer displayed on the map.', function () {
95
- var wrapper = shallowComp(layers);
96
- var comp = wrapper.instance();
97
- var layerVisible = comp.state.layers[0];
98
- expect(comp.state.layers.length).toBe(3);
99
- expect(comp.state.layerVisible).toBe(layerVisible);
100
- expect(comp.state.idx).toBe(1);
101
-
102
- wrapper.find('.rs-base-layer-previous').simulate('click');
103
- expect(comp.state.layerVisible).toBe(layerVisible);
104
- expect(comp.state.idx).toBe(2);
91
+ test('goes backward through all available layer except the current layer displayed on the map.', async function () {
92
+ var ref = shallowComp(layers);
93
+ var container = ref.container;
94
+ expect(layers[0].visible).toBe(true);
105
95
 
106
96
  // Layer at index 0 is displayed on the map so we must ignore it
107
- wrapper.find('.rs-base-layer-previous').simulate('click');
108
- expect(comp.state.layerVisible).toBe(layerVisible);
109
- expect(comp.state.idx).toBe(1);
110
- });
111
-
112
- test('displays always a baseLayer on the map.', function () {
113
- var wrapper = shallowComp(layers);
114
- var comp = wrapper.instance();
115
- var layerVisible = comp.state.layers[0];
116
- expect(comp.state.layers.length).toBe(3);
117
- expect(comp.state.layerVisible).toBe(layerVisible);
118
- expect(comp.state.idx).toBe(1);
119
- comp.state.layers[0].setVisible(false);
120
-
121
- expect(comp.state.layers.length).toBe(3);
122
- expect(comp.state.layerVisible).toBe(comp.state.layers[1]);
123
- expect(comp.state.idx).toBe(0);
124
- });
125
-
126
- test('display on the map the layer clicked', function () {
127
- var wrapper = mountComp(layers);
128
- var comp = wrapper.instance();
129
- expect(comp.state.layers.length).toBe(3);
130
- expect(comp.state.layers[0].visible).toBe(true);
131
- wrapper.find('.rs-base-layer-toggle-button').simulate('click');
132
- wrapper.update();
133
- expect(comp.state.layers[0].visible).toBe(false);
134
- expect(comp.state.layers[1].visible).toBe(true);
135
- expect(comp.state.layerVisible).toBe(comp.state.layers[1]);
136
- expect(comp.state.idx).toBe(0); // Toggle
97
+ await fireEvent.click(container.querySelector('.rs-base-layer-previous'));
98
+ await fireEvent.click(
99
+ container.querySelector('.rs-base-layer-toggle-button')
100
+ );
101
+ expect(layers[2].visible).toBe(true);
102
+
103
+ await fireEvent.click(container.querySelector('.rs-base-layer-next'));
104
+ await fireEvent.click(
105
+ container.querySelector('.rs-base-layer-toggle-button')
106
+ );
107
+ expect(layers[1].visible).toBe(true);
137
108
  });
138
109
 
139
110
  test('hide baseLayerToggler if only one baselayer', function () {
140
- var wrapper = mountComp([layers[0]]);
141
- expect(wrapper.find('.rs-base-layer-item').exists()).toBe(false);
111
+ var ref = mountComp([layers[0]]);
112
+ var container = ref.container;
113
+ expect(container.innerHTML).toBe('');
142
114
  });
143
115
 
144
116
  test('should use children', function () {
145
- var wrapper = shallowComp(layers, {
117
+ shallowComp(layers, {
146
118
  prevButtonContent: 'prev',
147
119
  nextButtonContent: 'next',
148
120
  });
149
- expect(wrapper.find('.rs-base-layer-item').exists()).toBe(false);
150
-
151
- var next = wrapper.find('.rs-base-layer-next').text();
152
- var prev = wrapper.find('.rs-base-layer-previous').text();
153
121
 
154
- expect(next).toBe('next');
155
- expect(prev).toBe('prev');
122
+ expect(screen.getByText('next')).not.toBeNull();
123
+ expect(screen.getByText('prev')).not.toBeNull();
156
124
  });
157
125
  });
158
126
 
@@ -1 +1 @@
1
- {"version":3,"file":"BaseLayerToggler.test.js","sources":["../../../src/components/BaseLayerToggler/BaseLayerToggler.test.js"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\nimport { configure, shallow, mount } from 'enzyme';\nimport Adapter from 'enzyme-adapter-react-16';\nimport 'jest-canvas-mock';\nimport OLMap from 'ol/Map';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport renderer from 'react-test-renderer';\nimport BaseLayerToggler from './BaseLayerToggler';\nimport LayerService from '../../LayerService';\n\nconfigure({ adapter: new Adapter() });\n\nconst shallowComp = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n return shallow(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n};\nconst mountComp = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n return mount(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n};\n\nconst expectSnapshot = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n const component = renderer.create(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n};\n\ndescribe('BaseLayerToggler', () => {\n let layers;\n\n beforeEach(() => {\n layers = [\n new Layer({\n name: 'bl1',\n isBaseLayer: true,\n }),\n new Layer({\n name: 'bl2',\n isBaseLayer: true,\n visible: false,\n }),\n new Layer({\n name: 'bl3',\n isBaseLayer: true,\n visible: false,\n }),\n ];\n });\n describe('matches snapshots', () => {\n test('using default properties.', () => {\n expectSnapshot(layers);\n });\n });\n\n test('initialize correctly the state', () => {\n const wrapper = shallowComp(layers);\n const comp = wrapper.instance();\n expect(comp.state.idx).toBe(1);\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layerVisible).toBe(comp.state.layers[0]);\n });\n\n test('goes forward through all available layer except the current layer displayed on the map.', () => {\n const wrapper = shallowComp(layers);\n const comp = wrapper.instance();\n const layerVisible = comp.state.layers[0];\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(1);\n\n wrapper.find('.rs-base-layer-next').simulate('click');\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(2);\n\n // Layer at index 0 is displayed on the map so we must ignore it\n wrapper.find('.rs-base-layer-next').simulate('click');\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(1);\n });\n\n test('goes backward through all available layer except the current layer displayed on the map.', () => {\n const wrapper = shallowComp(layers);\n const comp = wrapper.instance();\n const layerVisible = comp.state.layers[0];\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(1);\n\n wrapper.find('.rs-base-layer-previous').simulate('click');\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(2);\n\n // Layer at index 0 is displayed on the map so we must ignore it\n wrapper.find('.rs-base-layer-previous').simulate('click');\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(1);\n });\n\n test('displays always a baseLayer on the map.', () => {\n const wrapper = shallowComp(layers);\n const comp = wrapper.instance();\n const layerVisible = comp.state.layers[0];\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layerVisible).toBe(layerVisible);\n expect(comp.state.idx).toBe(1);\n comp.state.layers[0].setVisible(false);\n\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layerVisible).toBe(comp.state.layers[1]);\n expect(comp.state.idx).toBe(0);\n });\n\n test('display on the map the layer clicked', () => {\n const wrapper = mountComp(layers);\n const comp = wrapper.instance();\n expect(comp.state.layers.length).toBe(3);\n expect(comp.state.layers[0].visible).toBe(true);\n wrapper.find('.rs-base-layer-toggle-button').simulate('click');\n wrapper.update();\n expect(comp.state.layers[0].visible).toBe(false);\n expect(comp.state.layers[1].visible).toBe(true);\n expect(comp.state.layerVisible).toBe(comp.state.layers[1]);\n expect(comp.state.idx).toBe(0); // Toggle\n });\n\n test('hide baseLayerToggler if only one baselayer', () => {\n const wrapper = mountComp([layers[0]]);\n expect(wrapper.find('.rs-base-layer-item').exists()).toBe(false);\n });\n\n test('should use children', () => {\n const wrapper = shallowComp(layers, {\n prevButtonContent: 'prev',\n nextButtonContent: 'next',\n });\n expect(wrapper.find('.rs-base-layer-item').exists()).toBe(false);\n\n const next = wrapper.find('.rs-base-layer-next').text();\n const prev = wrapper.find('.rs-base-layer-previous').text();\n\n expect(next).toBe('next');\n expect(prev).toBe('prev');\n });\n});\n"],"names":["const","let"],"mappings":"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"}
1
+ {"version":3,"file":"BaseLayerToggler.test.js","sources":["../../../src/components/BaseLayerToggler/BaseLayerToggler.test.js"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\nimport OLMap from 'ol/Map';\nimport { fireEvent, render, screen } from '@testing-library/react';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport BaseLayerToggler from './BaseLayerToggler';\nimport LayerService from '../../LayerService';\n\nconst shallowComp = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n return render(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n};\nconst mountComp = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n return render(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n};\n\nconst expectSnapshot = (layers, props) => {\n const map = new OLMap({});\n const layerService = new LayerService(layers);\n const { container } = render(\n <BaseLayerToggler\n layerService={layerService}\n map={map}\n {...(props || {})}\n />,\n );\n expect(container.innerHTML).toMatchSnapshot();\n};\n\ndescribe('BaseLayerToggler', () => {\n let layers;\n\n beforeEach(() => {\n layers = [\n new Layer({\n name: 'bl1',\n isBaseLayer: true,\n }),\n new Layer({\n name: 'bl2',\n isBaseLayer: true,\n visible: false,\n }),\n new Layer({\n name: 'bl3',\n isBaseLayer: true,\n visible: false,\n }),\n ];\n });\n describe('matches snapshots', () => {\n test('using default properties.', () => {\n expectSnapshot(layers);\n });\n });\n\n test('initialize correctly the state', () => {\n shallowComp(layers);\n expect(layers[0].visible).toBe(true);\n });\n\n test('goes forward through all available layer except the current layer displayed on the map.', async () => {\n const { container } = shallowComp(layers);\n expect(layers[0].visible).toBe(true);\n await fireEvent.click(\n container.querySelector('.rs-base-layer-toggle-button'),\n );\n expect(layers[1].visible).toBe(true);\n\n // Layer at index 0 is displayed on the map so we must ignore it\n await fireEvent.click(container.querySelector('.rs-base-layer-next'));\n await fireEvent.click(\n container.querySelector('.rs-base-layer-toggle-button'),\n );\n expect(layers[2].visible).toBe(true);\n\n await fireEvent.click(container.querySelector('.rs-base-layer-next'));\n await fireEvent.click(\n container.querySelector('.rs-base-layer-toggle-button'),\n );\n expect(layers[0].visible).toBe(true);\n });\n\n test('goes backward through all available layer except the current layer displayed on the map.', async () => {\n const { container } = shallowComp(layers);\n expect(layers[0].visible).toBe(true);\n\n // Layer at index 0 is displayed on the map so we must ignore it\n await fireEvent.click(container.querySelector('.rs-base-layer-previous'));\n await fireEvent.click(\n container.querySelector('.rs-base-layer-toggle-button'),\n );\n expect(layers[2].visible).toBe(true);\n\n await fireEvent.click(container.querySelector('.rs-base-layer-next'));\n await fireEvent.click(\n container.querySelector('.rs-base-layer-toggle-button'),\n );\n expect(layers[1].visible).toBe(true);\n });\n\n test('hide baseLayerToggler if only one baselayer', () => {\n const { container } = mountComp([layers[0]]);\n expect(container.innerHTML).toBe('');\n });\n\n test('should use children', () => {\n shallowComp(layers, {\n prevButtonContent: 'prev',\n nextButtonContent: 'next',\n });\n\n expect(screen.getByText('next')).not.toBeNull();\n expect(screen.getByText('prev')).not.toBeNull();\n });\n});\n"],"names":["const","let"],"mappings":"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"}
@@ -233,7 +233,7 @@ var BasicMap = /*@__PURE__*/(function (PureComponent) {
233
233
  }
234
234
 
235
235
  if (prevProps.layers !== layers) {
236
- this.setLayers(layers);
236
+ this.setLayers(layers, prevProps.layers);
237
237
  }
238
238
 
239
239
  // Creates a new view if necessary before updating the others prop.
@@ -293,22 +293,15 @@ var BasicMap = /*@__PURE__*/(function (PureComponent) {
293
293
  this.setState({ node: node });
294
294
  };
295
295
 
296
- BasicMap.prototype.setLayers = function setLayers (layers) {
297
- var this$1 = this;
296
+ BasicMap.prototype.setLayers = function setLayers (layers, prevLayers) {
298
297
  if ( layers === void 0 ) layers = [];
298
+ if ( prevLayers === void 0 ) prevLayers = [];
299
299
 
300
- var layersToRemove = this.layers.filter(function (layer) {
301
- return !layers.includes(layer);
302
- });
303
- for (var i = 0; i < layersToRemove.length; i += 1) {
304
- this.terminateLayer(layersToRemove[i]);
300
+ for (var i = 0; i < prevLayers.length; i += 1) {
301
+ this.terminateLayer(prevLayers[i]);
305
302
  }
306
-
307
- var layersToInit = layers.filter(function (layer) {
308
- return !this$1.layers.includes(layer);
309
- });
310
- for (var i$1 = 0; i$1 < layersToInit.length; i$1 += 1) {
311
- this.initLayer(layersToInit[i$1]);
303
+ for (var i$1 = 0; i$1 < layers.length; i$1 += 1) {
304
+ this.initLayer(layers[i$1]);
312
305
  }
313
306
  this.layers = layers;
314
307
  };
@@ -1 +1 @@
1
- {"version":3,"file":"BasicMap.js","sources":["../../../src/components/BasicMap/BasicMap.js"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { defaults as defaultInteractions } from 'ol/interaction';\nimport { equals } from 'ol/extent';\nimport OLMap from 'ol/Map';\nimport OLCollection from 'ol/Collection';\nimport View from 'ol/View';\nimport { unByKey } from 'ol/Observable';\nimport Interaction from 'ol/interaction/Interaction';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport ResizeHandler from '../ResizeHandler';\n\nconst propTypes = {\n /** Map animation options */\n animationOptions: PropTypes.shape({\n center: PropTypes.arrayOf(PropTypes.number),\n resolution: PropTypes.number,\n zoom: PropTypes.number,\n }),\n\n /** Center of the [ol/View](https://openlayers.org/en/latest/apidoc/module-ol_View-View.html). */\n center: PropTypes.arrayOf(PropTypes.number),\n\n /** Class name of the map container */\n className: PropTypes.string,\n\n /** Map extent */\n extent: PropTypes.arrayOf(PropTypes.number),\n\n /** Openlayers [fit options](https://openlayers.org/en/latest/apidoc/module-ol_View-View.html#fit) when extent is updated */\n fitOptions: PropTypes.object,\n\n /** Array of [ol/interaction](https://openlayers.org/en/latest/apidoc/module-ol_interaction_Interaction-Interaction.html). */\n interactions: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.instanceOf(Interaction)),\n PropTypes.instanceOf(OLCollection),\n ]),\n\n /** Array of [mobility-toolbox-js layers](https://mobility-toolbox-js.geops.io/api/identifiers%20html#ol-layers) to display. */\n layers: PropTypes.arrayOf(PropTypes.instanceOf(Layer)),\n\n /** An [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html). */\n map: PropTypes.instanceOf(OLMap),\n\n /**\n * Callback when a [ol/Feature](https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html) is clicked.\n * @param {OLFeature[]} features An array of [ol/Feature](https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html).\n * @param {ol.MapBrowserEvent} event The singleclick [ol/MapBrowserEvent](https://openlayers.org/en/latest/apidoc/module-ol_MapBrowserEvent-MapBrowserEvent.html#event:singleclick).\n */\n onFeaturesClick: PropTypes.func,\n\n /**\n * Optional options to pass on feature click. Passed to ol's 'getFeaturesAtPixel' method.\n * https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html#getFeaturesAtPixel\n */\n featuresClickOptions: PropTypes.shape({\n layerFilter: PropTypes.func,\n hitTolerance: PropTypes.number,\n checkWrapped: PropTypes.bool,\n }),\n\n /**\n * Callback when a [ol/Feature](https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html) is hovered.\n * @param {OLFeature[]} features An array of [ol/Feature](https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html).\n * @param {ol.MapBrowserEvent} event The pointermove [ol/MapBrowserEvent](https://openlayers.org/en/latest/apidoc/module-ol_MapBrowserEvent-MapBrowserEvent.html#event:pointermove).\n */\n onFeaturesHover: PropTypes.func,\n\n /**\n * Callback when the map was moved.\n * @param {ol.MapEvent} event The movend [ol/MapEvent](https://openlayers.org/en/latest/apidoc/module-ol_MapBrowserEvent-MapBrowserEvent.html#event:moveend).\n */\n onMapMoved: PropTypes.func,\n\n /** Map resolution */\n resolution: PropTypes.number,\n\n /** The tabIndex of the map. */\n tabIndex: PropTypes.number,\n\n /** The style of the map. */\n style: PropTypes.object,\n\n /** HTML aria-label. */\n ariaLabel: PropTypes.string,\n\n /** [ol/View](https://openlayers.org/en/latest/apidoc/module-ol_View-View.html) constructor options */\n viewOptions: PropTypes.shape({\n minZoom: PropTypes.number,\n maxZoom: PropTypes.number,\n extent: PropTypes.array,\n projection: PropTypes.string,\n }),\n\n /** Map zoom level */\n zoom: PropTypes.number,\n};\n\nconst defaultProps = {\n animationOptions: undefined,\n center: [0, 0],\n className: 'rs-map',\n extent: undefined,\n fitOptions: {\n duration: 1000,\n padding: [20, 20, 20, 20],\n maxZoom: 23,\n },\n style: undefined,\n interactions: null,\n layers: [],\n map: null,\n onFeaturesClick: undefined,\n featuresClickOptions: {\n hitTolerance: 0,\n },\n onFeaturesHover: undefined,\n onMapMoved: undefined,\n resolution: undefined,\n tabIndex: undefined,\n ariaLabel: 'map',\n viewOptions: {\n minZoom: 0,\n maxZoom: 22,\n extent: undefined,\n projection: 'EPSG:3857',\n },\n zoom: 1,\n};\n\n/**\n * The BasicMap component renders an [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).\n *\n * The map's view is created with the following parameters for the view:\n * - projection: 'EPSG:3857'\n * - zoom: 0\n * - minZoom: 0\n * - maxZoom: 22\n *\n * These options can be overridden using the viewOptions property.\n */\nclass BasicMap extends PureComponent {\n constructor(props) {\n super(props);\n const { map, interactions } = this.props;\n\n this.map =\n map ||\n new OLMap({\n controls: [],\n interactions:\n interactions ||\n defaultInteractions({\n altShiftDragRotate: false,\n pinchRotate: false,\n }),\n });\n\n this.state = {\n node: null,\n };\n\n this.layers = [];\n this.moveEndRef = null;\n this.singleClickRef = null;\n this.pointerMoveRef = null;\n this.setNode = this.setNode.bind(this);\n }\n\n componentDidMount() {\n const { layers, extent, viewOptions, center, zoom, resolution } =\n this.props;\n const { node } = this.state;\n this.map.setTarget(node);\n\n // We set the view here otherwise the map is not correctly zoomed.\n this.map.setView(new View({ ...viewOptions, center, zoom, resolution }));\n\n // // Since ol 6.1.0 touch-action is set to auto and creates a bad navigation experience on mobile,\n // // so we have to force it to none for mobile.\n // // https://github.com/openlayers/openlayers/pull/10187/files\n const viewPort = this.map.getViewport();\n viewPort.style.touchAction = 'none';\n viewPort.style.msTouchAction = 'none';\n viewPort.setAttribute('touch-action', 'none');\n\n // Fit only work if the map has a size.\n if (this.map.getSize() && extent) {\n this.map.getView().fit(extent);\n }\n\n this.setLayers(layers);\n this.listenMoveEnd();\n this.listenSingleClick();\n this.listenPointerMove();\n }\n\n componentDidUpdate(prevProps, prevState) {\n const {\n animationOptions,\n center,\n extent,\n fitOptions,\n layers,\n resolution,\n viewOptions,\n zoom,\n onMapMoved,\n onFeaturesClick,\n onFeaturesHover,\n } = this.props;\n const { node } = this.state;\n\n if (prevState.node !== node) {\n this.map.setTarget(node);\n\n // When the node is set we reinitialize the extent with the extent property.\n if (!prevState.node && node && extent) {\n this.map.getView().fit(extent);\n }\n }\n\n if (prevProps.layers !== layers) {\n this.setLayers(layers);\n }\n\n // Creates a new view if necessary before updating the others prop.\n if (\n viewOptions &&\n JSON.stringify(viewOptions) !== JSON.stringify(prevProps.viewOptions)\n ) {\n // Re-create a view, ol doesn't provide any method to setExtent of view.\n this.map.setView(\n new View({\n ...viewOptions,\n center,\n resolution,\n zoom,\n }),\n );\n }\n\n const view = this.map.getView();\n\n if (animationOptions && prevProps.animationOptions !== animationOptions) {\n view.animate(animationOptions);\n }\n\n if (prevProps.center !== center) {\n view.setCenter(center);\n }\n\n if (zoom !== prevProps.zoom) {\n view.setZoom(zoom);\n }\n\n if (resolution !== prevProps.resolution) {\n view.setResolution(resolution);\n }\n\n if (extent && !equals(extent, prevProps.extent || [])) {\n view.fit(extent, fitOptions);\n }\n\n if (onMapMoved !== prevProps.onMapMoved) {\n this.listenMoveEnd();\n }\n\n if (onFeaturesClick !== prevProps.onFeaturesClick) {\n this.listenSingleClick();\n }\n\n if (onFeaturesHover !== prevProps.onFeaturesHover) {\n this.listenPointerMove();\n }\n }\n\n componentWillUnmount() {\n unByKey([this.moveEndRef, this.singleClickRef, this.pointerMoveRef]);\n }\n\n setNode(node) {\n this.setState({ node });\n }\n\n setLayers(layers = []) {\n const layersToRemove = this.layers.filter((layer) => {\n return !layers.includes(layer);\n });\n for (let i = 0; i < layersToRemove.length; i += 1) {\n this.terminateLayer(layersToRemove[i]);\n }\n\n const layersToInit = layers.filter((layer) => {\n return !this.layers.includes(layer);\n });\n for (let i = 0; i < layersToInit.length; i += 1) {\n this.initLayer(layersToInit[i]);\n }\n this.layers = layers;\n }\n\n initLayer(layer) {\n layer.init(this.map);\n if (\n layer.olLayer &&\n this.map.getLayers() &&\n !this.map.getLayers().getArray().includes(layer.olLayer)\n ) {\n this.map.addLayer(layer.olLayer);\n }\n const layers = layer.children || [];\n for (let i = 0; i < layers.length; i += 1) {\n this.initLayer(layers[i]);\n }\n }\n\n terminateLayer(layer) {\n if (\n layer.olLayer &&\n this.map.getLayers() &&\n this.map.getLayers().getArray().includes(layer.olLayer)\n ) {\n this.map.removeLayer(layer.olLayer);\n }\n layer.terminate(this.map);\n const layers = layer.children || [];\n for (let i = 0; i < layers.length; i += 1) {\n this.terminateLayer(layers[i]);\n }\n }\n\n listenMoveEnd() {\n const { onMapMoved } = this.props;\n unByKey(this.moveEndRef);\n\n if (!onMapMoved) {\n return;\n }\n\n this.moveEndRef = this.map.on('moveend', (evt) => {\n return onMapMoved(evt);\n });\n }\n\n listenSingleClick() {\n const { onFeaturesClick, featuresClickOptions } = this.props;\n unByKey(this.singleClickRef);\n\n if (!onFeaturesClick) {\n return;\n }\n\n this.singleClickRef = this.map.on('singleclick', (evt) => {\n const features = evt.map.getFeaturesAtPixel(\n evt.pixel,\n featuresClickOptions,\n );\n onFeaturesClick(features || [], evt);\n });\n }\n\n listenPointerMove() {\n const { onFeaturesHover } = this.props;\n unByKey(this.pointerMoveRef);\n\n if (!onFeaturesHover) {\n return;\n }\n\n this.pointerMoveRef = this.map.on('pointermove', (evt) => {\n const features = evt.map.getFeaturesAtPixel(evt.pixel);\n onFeaturesHover(features || [], evt);\n });\n }\n\n render() {\n const { className, tabIndex, ariaLabel, style } = this.props;\n const { node } = this.state;\n return (\n <div\n className={className}\n ref={this.setNode}\n role=\"presentation\"\n aria-label={ariaLabel}\n tabIndex={tabIndex}\n style={style}\n >\n <ResizeHandler\n maxHeightBrkpts={null}\n maxWidthBrkpts={null}\n observe={node}\n onResize={() => {\n this.map.updateSize();\n }}\n />\n </div>\n );\n }\n}\n\nBasicMap.propTypes = propTypes;\nBasicMap.defaultProps = defaultProps;\n\nexport default BasicMap;\n"],"names":["const","super","i","let","this"],"mappings":"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"}
1
+ {"version":3,"file":"BasicMap.js","sources":["../../../src/components/BasicMap/BasicMap.js"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { defaults as defaultInteractions } from 'ol/interaction';\nimport { equals } from 'ol/extent';\nimport OLMap from 'ol/Map';\nimport OLCollection from 'ol/Collection';\nimport View from 'ol/View';\nimport { unByKey } from 'ol/Observable';\nimport Interaction from 'ol/interaction/Interaction';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport ResizeHandler from '../ResizeHandler';\n\nconst propTypes = {\n /** Map animation options */\n animationOptions: PropTypes.shape({\n center: PropTypes.arrayOf(PropTypes.number),\n resolution: PropTypes.number,\n zoom: PropTypes.number,\n }),\n\n /** Center of the [ol/View](https://openlayers.org/en/latest/apidoc/module-ol_View-View.html). */\n center: PropTypes.arrayOf(PropTypes.number),\n\n /** Class name of the map container */\n className: PropTypes.string,\n\n /** Map extent */\n extent: PropTypes.arrayOf(PropTypes.number),\n\n /** Openlayers [fit options](https://openlayers.org/en/latest/apidoc/module-ol_View-View.html#fit) when extent is updated */\n fitOptions: PropTypes.object,\n\n /** Array of [ol/interaction](https://openlayers.org/en/latest/apidoc/module-ol_interaction_Interaction-Interaction.html). */\n interactions: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.instanceOf(Interaction)),\n PropTypes.instanceOf(OLCollection),\n ]),\n\n /** Array of [mobility-toolbox-js layers](https://mobility-toolbox-js.geops.io/api/identifiers%20html#ol-layers) to display. */\n layers: PropTypes.arrayOf(PropTypes.instanceOf(Layer)),\n\n /** An [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html). */\n map: PropTypes.instanceOf(OLMap),\n\n /**\n * Callback when a [ol/Feature](https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html) is clicked.\n * @param {OLFeature[]} features An array of [ol/Feature](https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html).\n * @param {ol.MapBrowserEvent} event The singleclick [ol/MapBrowserEvent](https://openlayers.org/en/latest/apidoc/module-ol_MapBrowserEvent-MapBrowserEvent.html#event:singleclick).\n */\n onFeaturesClick: PropTypes.func,\n\n /**\n * Optional options to pass on feature click. Passed to ol's 'getFeaturesAtPixel' method.\n * https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html#getFeaturesAtPixel\n */\n featuresClickOptions: PropTypes.shape({\n layerFilter: PropTypes.func,\n hitTolerance: PropTypes.number,\n checkWrapped: PropTypes.bool,\n }),\n\n /**\n * Callback when a [ol/Feature](https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html) is hovered.\n * @param {OLFeature[]} features An array of [ol/Feature](https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html).\n * @param {ol.MapBrowserEvent} event The pointermove [ol/MapBrowserEvent](https://openlayers.org/en/latest/apidoc/module-ol_MapBrowserEvent-MapBrowserEvent.html#event:pointermove).\n */\n onFeaturesHover: PropTypes.func,\n\n /**\n * Callback when the map was moved.\n * @param {ol.MapEvent} event The movend [ol/MapEvent](https://openlayers.org/en/latest/apidoc/module-ol_MapBrowserEvent-MapBrowserEvent.html#event:moveend).\n */\n onMapMoved: PropTypes.func,\n\n /** Map resolution */\n resolution: PropTypes.number,\n\n /** The tabIndex of the map. */\n tabIndex: PropTypes.number,\n\n /** The style of the map. */\n style: PropTypes.object,\n\n /** HTML aria-label. */\n ariaLabel: PropTypes.string,\n\n /** [ol/View](https://openlayers.org/en/latest/apidoc/module-ol_View-View.html) constructor options */\n viewOptions: PropTypes.shape({\n minZoom: PropTypes.number,\n maxZoom: PropTypes.number,\n extent: PropTypes.array,\n projection: PropTypes.string,\n }),\n\n /** Map zoom level */\n zoom: PropTypes.number,\n};\n\nconst defaultProps = {\n animationOptions: undefined,\n center: [0, 0],\n className: 'rs-map',\n extent: undefined,\n fitOptions: {\n duration: 1000,\n padding: [20, 20, 20, 20],\n maxZoom: 23,\n },\n style: undefined,\n interactions: null,\n layers: [],\n map: null,\n onFeaturesClick: undefined,\n featuresClickOptions: {\n hitTolerance: 0,\n },\n onFeaturesHover: undefined,\n onMapMoved: undefined,\n resolution: undefined,\n tabIndex: undefined,\n ariaLabel: 'map',\n viewOptions: {\n minZoom: 0,\n maxZoom: 22,\n extent: undefined,\n projection: 'EPSG:3857',\n },\n zoom: 1,\n};\n\n/**\n * The BasicMap component renders an [ol/map](https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html).\n *\n * The map's view is created with the following parameters for the view:\n * - projection: 'EPSG:3857'\n * - zoom: 0\n * - minZoom: 0\n * - maxZoom: 22\n *\n * These options can be overridden using the viewOptions property.\n */\nclass BasicMap extends PureComponent {\n constructor(props) {\n super(props);\n const { map, interactions } = this.props;\n\n this.map =\n map ||\n new OLMap({\n controls: [],\n interactions:\n interactions ||\n defaultInteractions({\n altShiftDragRotate: false,\n pinchRotate: false,\n }),\n });\n\n this.state = {\n node: null,\n };\n\n this.layers = [];\n this.moveEndRef = null;\n this.singleClickRef = null;\n this.pointerMoveRef = null;\n this.setNode = this.setNode.bind(this);\n }\n\n componentDidMount() {\n const { layers, extent, viewOptions, center, zoom, resolution } =\n this.props;\n const { node } = this.state;\n this.map.setTarget(node);\n\n // We set the view here otherwise the map is not correctly zoomed.\n this.map.setView(new View({ ...viewOptions, center, zoom, resolution }));\n\n // // Since ol 6.1.0 touch-action is set to auto and creates a bad navigation experience on mobile,\n // // so we have to force it to none for mobile.\n // // https://github.com/openlayers/openlayers/pull/10187/files\n const viewPort = this.map.getViewport();\n viewPort.style.touchAction = 'none';\n viewPort.style.msTouchAction = 'none';\n viewPort.setAttribute('touch-action', 'none');\n\n // Fit only work if the map has a size.\n if (this.map.getSize() && extent) {\n this.map.getView().fit(extent);\n }\n\n this.setLayers(layers);\n this.listenMoveEnd();\n this.listenSingleClick();\n this.listenPointerMove();\n }\n\n componentDidUpdate(prevProps, prevState) {\n const {\n animationOptions,\n center,\n extent,\n fitOptions,\n layers,\n resolution,\n viewOptions,\n zoom,\n onMapMoved,\n onFeaturesClick,\n onFeaturesHover,\n } = this.props;\n const { node } = this.state;\n\n if (prevState.node !== node) {\n this.map.setTarget(node);\n\n // When the node is set we reinitialize the extent with the extent property.\n if (!prevState.node && node && extent) {\n this.map.getView().fit(extent);\n }\n }\n\n if (prevProps.layers !== layers) {\n this.setLayers(layers, prevProps.layers);\n }\n\n // Creates a new view if necessary before updating the others prop.\n if (\n viewOptions &&\n JSON.stringify(viewOptions) !== JSON.stringify(prevProps.viewOptions)\n ) {\n // Re-create a view, ol doesn't provide any method to setExtent of view.\n this.map.setView(\n new View({\n ...viewOptions,\n center,\n resolution,\n zoom,\n }),\n );\n }\n\n const view = this.map.getView();\n\n if (animationOptions && prevProps.animationOptions !== animationOptions) {\n view.animate(animationOptions);\n }\n\n if (prevProps.center !== center) {\n view.setCenter(center);\n }\n\n if (zoom !== prevProps.zoom) {\n view.setZoom(zoom);\n }\n\n if (resolution !== prevProps.resolution) {\n view.setResolution(resolution);\n }\n\n if (extent && !equals(extent, prevProps.extent || [])) {\n view.fit(extent, fitOptions);\n }\n\n if (onMapMoved !== prevProps.onMapMoved) {\n this.listenMoveEnd();\n }\n\n if (onFeaturesClick !== prevProps.onFeaturesClick) {\n this.listenSingleClick();\n }\n\n if (onFeaturesHover !== prevProps.onFeaturesHover) {\n this.listenPointerMove();\n }\n }\n\n componentWillUnmount() {\n unByKey([this.moveEndRef, this.singleClickRef, this.pointerMoveRef]);\n }\n\n setNode(node) {\n this.setState({ node });\n }\n\n setLayers(layers = [], prevLayers = []) {\n for (let i = 0; i < prevLayers.length; i += 1) {\n this.terminateLayer(prevLayers[i]);\n }\n for (let i = 0; i < layers.length; i += 1) {\n this.initLayer(layers[i]);\n }\n this.layers = layers;\n }\n\n initLayer(layer) {\n layer.init(this.map);\n if (\n layer.olLayer &&\n this.map.getLayers() &&\n !this.map.getLayers().getArray().includes(layer.olLayer)\n ) {\n this.map.addLayer(layer.olLayer);\n }\n const layers = layer.children || [];\n for (let i = 0; i < layers.length; i += 1) {\n this.initLayer(layers[i]);\n }\n }\n\n terminateLayer(layer) {\n if (\n layer.olLayer &&\n this.map.getLayers() &&\n this.map.getLayers().getArray().includes(layer.olLayer)\n ) {\n this.map.removeLayer(layer.olLayer);\n }\n layer.terminate(this.map);\n const layers = layer.children || [];\n for (let i = 0; i < layers.length; i += 1) {\n this.terminateLayer(layers[i]);\n }\n }\n\n listenMoveEnd() {\n const { onMapMoved } = this.props;\n unByKey(this.moveEndRef);\n\n if (!onMapMoved) {\n return;\n }\n\n this.moveEndRef = this.map.on('moveend', (evt) => {\n return onMapMoved(evt);\n });\n }\n\n listenSingleClick() {\n const { onFeaturesClick, featuresClickOptions } = this.props;\n unByKey(this.singleClickRef);\n\n if (!onFeaturesClick) {\n return;\n }\n\n this.singleClickRef = this.map.on('singleclick', (evt) => {\n const features = evt.map.getFeaturesAtPixel(\n evt.pixel,\n featuresClickOptions,\n );\n onFeaturesClick(features || [], evt);\n });\n }\n\n listenPointerMove() {\n const { onFeaturesHover } = this.props;\n unByKey(this.pointerMoveRef);\n\n if (!onFeaturesHover) {\n return;\n }\n\n this.pointerMoveRef = this.map.on('pointermove', (evt) => {\n const features = evt.map.getFeaturesAtPixel(evt.pixel);\n onFeaturesHover(features || [], evt);\n });\n }\n\n render() {\n const { className, tabIndex, ariaLabel, style } = this.props;\n const { node } = this.state;\n return (\n <div\n className={className}\n ref={this.setNode}\n role=\"presentation\"\n aria-label={ariaLabel}\n tabIndex={tabIndex}\n style={style}\n >\n <ResizeHandler\n maxHeightBrkpts={null}\n maxWidthBrkpts={null}\n observe={node}\n onResize={() => {\n this.map.updateSize();\n }}\n />\n </div>\n );\n }\n}\n\nBasicMap.propTypes = propTypes;\nBasicMap.defaultProps = defaultProps;\n\nexport default BasicMap;\n"],"names":["const","super","i","let","this"],"mappings":"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"}