react-spatial 1.2.2 → 1.2.3-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.
Files changed (185) hide show
  1. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js +163 -221
  2. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js.map +7 -1
  3. package/components/BaseLayerSwitcher/index.js +1 -3
  4. package/components/BaseLayerSwitcher/index.js.map +7 -1
  5. package/components/BasicMap/BasicMap.js +147 -285
  6. package/components/BasicMap/BasicMap.js.map +7 -1
  7. package/components/BasicMap/index.js +1 -3
  8. package/components/BasicMap/index.js.map +7 -1
  9. package/components/CanvasSaveButton/CanvasSaveButton.js +165 -419
  10. package/components/CanvasSaveButton/CanvasSaveButton.js.map +7 -1
  11. package/components/CanvasSaveButton/index.js +1 -3
  12. package/components/CanvasSaveButton/index.js.map +7 -1
  13. package/components/Copyright/Copyright.js +29 -70
  14. package/components/Copyright/Copyright.js.map +7 -1
  15. package/components/Copyright/index.js +1 -3
  16. package/components/Copyright/index.js.map +7 -1
  17. package/components/FeatureExportButton/FeatureExportButton.js +40 -106
  18. package/components/FeatureExportButton/FeatureExportButton.js.map +7 -1
  19. package/components/FeatureExportButton/index.js +1 -3
  20. package/components/FeatureExportButton/index.js.map +7 -1
  21. package/components/FilterButton/FilterButton.js +41 -106
  22. package/components/FilterButton/FilterButton.js.map +7 -1
  23. package/components/FilterButton/index.js +1 -3
  24. package/components/FilterButton/index.js.map +7 -1
  25. package/components/FitExtent/FitExtent.js +17 -50
  26. package/components/FitExtent/FitExtent.js.map +7 -1
  27. package/components/FitExtent/index.js +1 -3
  28. package/components/FitExtent/index.js.map +7 -1
  29. package/components/FollowButton/FollowButton.js +41 -111
  30. package/components/FollowButton/FollowButton.js.map +7 -1
  31. package/components/FollowButton/index.js +1 -3
  32. package/components/FollowButton/index.js.map +7 -1
  33. package/components/Geolocation/Geolocation.js +104 -213
  34. package/components/Geolocation/Geolocation.js.map +7 -1
  35. package/components/Geolocation/index.js +1 -3
  36. package/components/Geolocation/index.js.map +7 -1
  37. package/components/LayerTree/LayerTree.js +204 -410
  38. package/components/LayerTree/LayerTree.js.map +7 -1
  39. package/components/LayerTree/index.js +1 -3
  40. package/components/LayerTree/index.js.map +7 -1
  41. package/components/MousePosition/MousePosition.js +61 -130
  42. package/components/MousePosition/MousePosition.js.map +7 -1
  43. package/components/MousePosition/index.js +1 -3
  44. package/components/MousePosition/index.js.map +7 -1
  45. package/components/NorthArrow/NorthArrow.js +22 -62
  46. package/components/NorthArrow/NorthArrow.js.map +7 -1
  47. package/components/NorthArrow/index.js +1 -3
  48. package/components/NorthArrow/index.js.map +7 -1
  49. package/components/Overlay/Overlay.js +83 -130
  50. package/components/Overlay/Overlay.js.map +7 -1
  51. package/components/Overlay/index.js +1 -3
  52. package/components/Overlay/index.js.map +7 -1
  53. package/components/Permalink/Permalink.js +150 -244
  54. package/components/Permalink/Permalink.js.map +7 -1
  55. package/components/Permalink/index.js +1 -3
  56. package/components/Permalink/index.js.map +7 -1
  57. package/components/Popup/Popup.js +106 -233
  58. package/components/Popup/Popup.js.map +7 -1
  59. package/components/Popup/index.js +1 -3
  60. package/components/Popup/index.js.map +7 -1
  61. package/components/ResizeHandler/ResizeHandler.js +58 -113
  62. package/components/ResizeHandler/ResizeHandler.js.map +7 -1
  63. package/components/ResizeHandler/index.js +1 -3
  64. package/components/ResizeHandler/index.js.map +7 -1
  65. package/components/RouteSchedule/RouteSchedule.js +150 -283
  66. package/components/RouteSchedule/RouteSchedule.js.map +7 -1
  67. package/components/RouteSchedule/index.js +1 -3
  68. package/components/RouteSchedule/index.js.map +7 -1
  69. package/components/ScaleLine/ScaleLine.js +21 -45
  70. package/components/ScaleLine/ScaleLine.js.map +7 -1
  71. package/components/ScaleLine/index.js +1 -3
  72. package/components/ScaleLine/index.js.map +7 -1
  73. package/components/Search/Search.js +122 -186
  74. package/components/Search/Search.js.map +7 -1
  75. package/components/Search/SearchService.js +45 -69
  76. package/components/Search/SearchService.js.map +7 -1
  77. package/components/Search/engines/Engine.js +18 -25
  78. package/components/Search/engines/Engine.js.map +7 -1
  79. package/components/Search/engines/StopFinder.js +21 -38
  80. package/components/Search/engines/StopFinder.js.map +7 -1
  81. package/components/Search/index.js +3 -6
  82. package/components/Search/index.js.map +7 -1
  83. package/components/StopsFinder/StopsFinder.js +123 -174
  84. package/components/StopsFinder/StopsFinder.js.map +7 -1
  85. package/components/StopsFinder/StopsFinderOption.js +37 -54
  86. package/components/StopsFinder/StopsFinderOption.js.map +7 -1
  87. package/components/StopsFinder/index.js +1 -3
  88. package/components/StopsFinder/index.js.map +7 -1
  89. package/components/TrackerControl/TrackerControl.js +73 -128
  90. package/components/TrackerControl/TrackerControl.js.map +7 -1
  91. package/components/TrackerControl/index.js +1 -3
  92. package/components/TrackerControl/index.js.map +7 -1
  93. package/components/Zoom/Zoom.js +69 -112
  94. package/components/Zoom/Zoom.js.map +7 -1
  95. package/components/Zoom/index.js +1 -3
  96. package/components/Zoom/index.js.map +7 -1
  97. package/package.json +10 -5
  98. package/themes/default/components.scss +0 -1
  99. package/themes/default/examples.scss +0 -1
  100. package/utils/GlobalsForOle.js +63 -64
  101. package/utils/GlobalsForOle.js.map +7 -1
  102. package/utils/KML.js +178 -364
  103. package/utils/KML.js.map +7 -1
  104. package/utils/KMLFormat.js +37 -73
  105. package/utils/KMLFormat.js.map +7 -1
  106. package/utils/Styles.js +24 -32
  107. package/utils/Styles.js.map +7 -1
  108. package/utils/getPolygonPattern.js +11 -44
  109. package/utils/getPolygonPattern.js.map +7 -1
  110. package/utils/timeUtils.js +16 -35
  111. package/utils/timeUtils.js.map +7 -1
  112. package/LayerService.js +0 -193
  113. package/LayerService.js.map +0 -1
  114. package/LayerService.test.js +0 -160
  115. package/LayerService.test.js.map +0 -1
  116. package/Projections.js +0 -16
  117. package/Projections.js.map +0 -1
  118. package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js +0 -88
  119. package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js.map +0 -1
  120. package/components/BaseLayerToggler/BaseLayerToggler.js +0 -490
  121. package/components/BaseLayerToggler/BaseLayerToggler.js.map +0 -1
  122. package/components/BaseLayerToggler/BaseLayerToggler.md.scss +0 -9
  123. package/components/BaseLayerToggler/BaseLayerToggler.scss +0 -49
  124. package/components/BaseLayerToggler/BaseLayerToggler.test.js +0 -127
  125. package/components/BaseLayerToggler/BaseLayerToggler.test.js.map +0 -1
  126. package/components/BaseLayerToggler/index.js +0 -3
  127. package/components/BaseLayerToggler/index.js.map +0 -1
  128. package/components/BasicMap/BasicMap.test.js +0 -288
  129. package/components/BasicMap/BasicMap.test.js.map +0 -1
  130. package/components/CanvasSaveButton/CanvasSaveButton.test.js +0 -173
  131. package/components/CanvasSaveButton/CanvasSaveButton.test.js.map +0 -1
  132. package/components/Copyright/Copyright.test.js +0 -133
  133. package/components/Copyright/Copyright.test.js.map +0 -1
  134. package/components/FeatureExportButton/FeatureExportButton.test.js +0 -407
  135. package/components/FeatureExportButton/FeatureExportButton.test.js.map +0 -1
  136. package/components/FilterButton/FilterButton.test.js +0 -48
  137. package/components/FilterButton/FilterButton.test.js.map +0 -1
  138. package/components/FitExtent/FitExtent.test.js +0 -44
  139. package/components/FitExtent/FitExtent.test.js.map +0 -1
  140. package/components/FollowButton/FollowButton.test.js +0 -57
  141. package/components/FollowButton/FollowButton.test.js.map +0 -1
  142. package/components/Geolocation/Geolocation.test.js +0 -263
  143. package/components/Geolocation/Geolocation.test.js.map +0 -1
  144. package/components/LayerTree/LayerTree.test.js +0 -323
  145. package/components/LayerTree/LayerTree.test.js.map +0 -1
  146. package/components/MousePosition/MousePosition.test.js +0 -125
  147. package/components/MousePosition/MousePosition.test.js.map +0 -1
  148. package/components/NorthArrow/NorthArrow.test.js +0 -106
  149. package/components/NorthArrow/NorthArrow.test.js.map +0 -1
  150. package/components/Overlay/Overlay.test.js +0 -145
  151. package/components/Overlay/Overlay.test.js.map +0 -1
  152. package/components/Permalink/Permalink.test.js +0 -267
  153. package/components/Permalink/Permalink.test.js.map +0 -1
  154. package/components/Popup/Popup.test.js +0 -291
  155. package/components/Popup/Popup.test.js.map +0 -1
  156. package/components/ResizeHandler/ResizeHandler.test.js +0 -410
  157. package/components/ResizeHandler/ResizeHandler.test.js.map +0 -1
  158. package/components/RouteSchedule/RouteSchedule.test.js +0 -102
  159. package/components/RouteSchedule/RouteSchedule.test.js.map +0 -1
  160. package/components/ScaleLine/ScaleLine.test.js +0 -32
  161. package/components/ScaleLine/ScaleLine.test.js.map +0 -1
  162. package/components/Search/Search.test.js +0 -15
  163. package/components/Search/Search.test.js.map +0 -1
  164. package/components/StopsFinder/StopsFinder.test.js +0 -19
  165. package/components/StopsFinder/StopsFinder.test.js.map +0 -1
  166. package/components/TrackerControl/TrackerControl.test.js +0 -17
  167. package/components/TrackerControl/TrackerControl.test.js.map +0 -1
  168. package/components/Zoom/Zoom.test.js +0 -150
  169. package/components/Zoom/Zoom.test.js.map +0 -1
  170. package/propTypes.js +0 -55
  171. package/propTypes.js.map +0 -1
  172. package/setupTests.js +0 -5
  173. package/setupTests.js.map +0 -1
  174. package/styleguidist/ComponentsList.js +0 -52
  175. package/styleguidist/ComponentsList.js.map +0 -1
  176. package/styleguidist/StyleGuide.js +0 -253
  177. package/styleguidist/StyleGuide.js.map +0 -1
  178. package/utils/KML.test.js +0 -163
  179. package/utils/KML.test.js.map +0 -1
  180. package/utils/KMLFormat.test.js +0 -22
  181. package/utils/KMLFormat.test.js.map +0 -1
  182. package/utils/getPolygonPattern.test.js +0 -66
  183. package/utils/getPolygonPattern.test.js.map +0 -1
  184. package/utils/timeUtils.test.js +0 -32
  185. package/utils/timeUtils.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"CanvasSaveButton.test.js","sources":["../../../src/components/CanvasSaveButton/CanvasSaveButton.test.js"],"sourcesContent":["import 'jest-canvas-mock';\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport { configure, shallow } from 'enzyme';\nimport Adapter from '@wojtekmaj/enzyme-adapter-react-17';\nimport Map from 'ol/Map';\nimport View from 'ol/View';\nimport { TiImage } from 'react-icons/ti';\nimport RenderEvent from 'ol/render/Event';\nimport CanvasSaveButton from './CanvasSaveButton';\n\nconfigure({ adapter: new Adapter() });\n\ndescribe('CanvasSaveButton', () => {\n let olMap;\n const conf = {\n title: 'Karte als Bild speichern.',\n icon: <TiImage focusable={false} />,\n className: 'ta-example',\n saveFormat: 'image/jpeg',\n };\n\n beforeEach(() => {\n const target = document.createElement('div');\n document.body.appendChild(target);\n target.style.width = '100px';\n target.style.height = '100px';\n olMap = new Map({\n target,\n controls: [],\n view: new View({\n center: [0, 0],\n zoom: 0,\n }),\n });\n olMap.getView().setCenter([1, 1]);\n });\n\n afterEach(() => {\n if (olMap.getTargetElement()) {\n document.body.removeChild(olMap.getTargetElement());\n }\n olMap.setTarget(null);\n });\n\n test('should match snapshot.', () => {\n const component = renderer.create(\n <CanvasSaveButton format={conf.saveFormat} map={olMap}>\n {conf.icon}\n </CanvasSaveButton>,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n });\n\n test('should match snapshot with a different attributes', () => {\n const component = renderer.create(\n // eslint-disable-next-line jsx-a11y/tabindex-no-positive\n <CanvasSaveButton title={conf.title} className=\"foo\" tabIndex=\"1\">\n {conf.icon}\n </CanvasSaveButton>,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n });\n\n test('should call onSaveBefore then download then onSaveEnd function on click.', async (done) => {\n const saveStart = jest.fn((m) => {\n return Promise.resolve(m);\n });\n const saveEnd = jest.fn();\n const wrapper = shallow(\n <CanvasSaveButton\n className=\"ta-example\"\n map={olMap}\n format={conf.saveFormat}\n onSaveStart={saveStart}\n onSaveEnd={saveEnd}\n extraData={{\n copyright: {\n text: () => {\n return (\n 'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +\n 'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +\n 'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +\n 'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +\n 'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +\n 'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +\n 'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)'\n );\n },\n },\n }}\n >\n {conf.icon}\n </CanvasSaveButton>,\n );\n const link = document.createElement('a');\n link.click = jest.fn();\n const div = document.createElement('div');\n const canvas = document.createElement('canvas');\n canvas.toBlob = jest.fn((callback) => {\n return callback();\n });\n global.URL.createObjectURL = jest.fn(() => {\n return 'fooblob';\n });\n // We use a spy here to be able to correctly restore the initial function\n const spy3 = jest\n .spyOn(global.document, 'createElement')\n .mockImplementation((elt) => {\n if (elt === 'canvas') {\n return canvas;\n }\n if (elt === 'div') {\n return div;\n }\n if (elt === 'a') {\n return link;\n }\n return {};\n });\n const spy = jest.spyOn(CanvasSaveButton.prototype, 'createCanvasImage');\n const spy2 = jest.spyOn(CanvasSaveButton.prototype, 'downloadCanvasImage');\n jest\n .spyOn(olMap.getTargetElement(), 'getElementsByTagName')\n .mockReturnValue([canvas]);\n await wrapper.find('.ta-example').simulate('click');\n await olMap.dispatchEvent(\n new RenderEvent('rendercomplete', undefined, undefined, {\n canvas,\n }),\n );\n await window.setTimeout(() => {\n expect(spy).toHaveBeenCalledTimes(1);\n expect(saveStart).toHaveBeenCalledTimes(1);\n expect(saveEnd).toHaveBeenCalledTimes(1);\n expect(spy2.mock.calls[0][0]).toBe(canvas);\n expect(spy2.mock.calls[0][0].toBlob).toHaveBeenCalledTimes(1);\n expect(link.href).toBe('http://localhost/fooblob');\n expect(link.download).toBe('.jpg');\n expect(link.click).toHaveBeenCalledTimes(1);\n spy.mockRestore();\n spy2.mockRestore();\n spy3.mockRestore();\n done();\n });\n });\n\n test('stops click event propagation on ie.', () => {\n const wrapper = shallow(\n <CanvasSaveButton className=\"ta-example\" title={conf.title} map={olMap}>\n {conf.icon}\n </CanvasSaveButton>,\n );\n\n const evt = {\n stopPropagation: jest.fn(),\n preventDefault: jest.fn(),\n };\n window.navigator.msSaveBlob = true;\n\n const canvas = document.createElement('canvas');\n const p = new Promise((resolve) => {\n resolve(canvas);\n });\n jest\n .spyOn(CanvasSaveButton.prototype, 'createCanvasImage')\n .mockReturnValue(p);\n\n wrapper.find('.ta-example').simulate('click', evt);\n expect(evt.stopPropagation).toHaveBeenCalledTimes(1);\n expect(evt.preventDefault).toHaveBeenCalledTimes(1);\n\n window.navigator.msSaveBlob = false;\n });\n});\n"],"names":["let","const"],"mappings":"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"}
@@ -1,133 +0,0 @@
1
- import 'jest-canvas-mock';
2
- import React from 'react';
3
- import { configure, mount } from 'enzyme';
4
- import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
5
- import { act } from 'react-dom/test-utils';
6
- import { Map, View } from 'ol';
7
- import Tile from 'ol/Tile';
8
- import TileLayer from 'ol/layer/Tile';
9
- import TileSource from 'ol/source/Tile';
10
- import { createXYZ } from 'ol/tilegrid';
11
- import { Layer } from 'mobility-toolbox-js/ol';
12
- import Copyright from './Copyright';
13
-
14
- configure({ adapter: new Adapter() });
15
-
16
- var image = new Image();
17
- image.width = 256;
18
- image.height = 256;
19
-
20
- var tileLoadFunction = function () {
21
- var tile = new Tile([0, 0, -1], 2 /* LOADED */);
22
- tile.getImage = function () {
23
- return image;
24
- };
25
- return tile;
26
- };
27
-
28
- var getOLTileLayer = function () {
29
- var layer = new TileLayer({
30
- source: new TileSource({
31
- projection: 'EPSG:3857',
32
- tileGrid: createXYZ(),
33
- }),
34
- });
35
- layer.getSource().getTile = tileLoadFunction;
36
- return layer;
37
- };
38
-
39
- var getLayer = function (copyrights, visible) {
40
- if ( visible === void 0 ) visible = true;
41
-
42
- return new Layer({
43
- visible: visible,
44
- copyrights: copyrights,
45
- olLayer: getOLTileLayer(),
46
- });
47
- };
48
-
49
- var layers;
50
- var map;
51
-
52
- describe('Copyright', function () {
53
- beforeEach(function () {
54
- var target = document.createElement('div');
55
- document.body.appendChild(target);
56
- layers = [getLayer('bar'), getLayer('foo', false)];
57
- map = new Map({
58
- target: target,
59
- view: new View({
60
- center: [0, 0],
61
- zoom: 0,
62
- }),
63
- layers: layers.map(function (layer) {
64
- return layer.olLayer;
65
- }),
66
- });
67
- map.setSize([200, 200]);
68
- layers.forEach(function (layer) {
69
- layer.init(map);
70
- });
71
- act(function () {
72
- map.renderSync();
73
- });
74
- });
75
-
76
- afterEach(function () {
77
- map.setTarget(null);
78
- map = null;
79
- });
80
-
81
- test('is empty if no layers are visible', function () {
82
- var component = mount(React.createElement( Copyright, { map: map }));
83
- expect(component.html()).toBe(null);
84
- });
85
-
86
- test('displays one copyright', function () {
87
- var wrapper = mount(React.createElement( Copyright, { map: map }));
88
- act(function () {
89
- map.renderSync();
90
- });
91
- wrapper.update();
92
- expect(wrapper.text()).toBe('bar');
93
- });
94
-
95
- test('displays 2 copyrights', function () {
96
- var wrapper = mount(React.createElement( Copyright, { map: map }));
97
- layers[0].setVisible(true);
98
- layers[1].setVisible(true);
99
- act(function () {
100
- map.renderSync();
101
- });
102
- wrapper.update();
103
- expect(wrapper.text()).toBe('bar | foo');
104
- });
105
-
106
- test('displays a copyright using a custom format', function () {
107
- var wrapper = mount(
108
- React.createElement( Copyright, {
109
- map: map, format: function (copyrights) {
110
- return ("Number of copyrights: " + (copyrights.length));
111
- } })
112
- );
113
-
114
- act(function () {
115
- map.renderSync();
116
- });
117
- wrapper.update();
118
-
119
- expect(wrapper.text()).toBe('Number of copyrights: 1');
120
- });
121
-
122
- test('set a custom className', function () {
123
- var wrapper = mount(React.createElement( Copyright, { map: map, className: "foo" }));
124
- expect(wrapper.find('.foo').length).toBe(1);
125
- });
126
-
127
- test('set a custom attribute to the root element', function () {
128
- var wrapper = mount(React.createElement( Copyright, { map: map, foo: "bar" }));
129
- expect(wrapper.find('[foo]').length).toBe(1);
130
- });
131
- });
132
-
133
- //# sourceMappingURL=Copyright.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Copyright.test.js","sources":["../../../src/components/Copyright/Copyright.test.js"],"sourcesContent":["import 'jest-canvas-mock';\nimport React from 'react';\nimport { configure, mount } from 'enzyme';\nimport Adapter from '@wojtekmaj/enzyme-adapter-react-17';\nimport { act } from 'react-dom/test-utils';\nimport { Map, View } from 'ol';\nimport Tile from 'ol/Tile';\nimport TileLayer from 'ol/layer/Tile';\nimport TileSource from 'ol/source/Tile';\nimport { createXYZ } from 'ol/tilegrid';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport Copyright from './Copyright';\n\nconfigure({ adapter: new Adapter() });\n\nconst image = new Image();\nimage.width = 256;\nimage.height = 256;\n\nconst tileLoadFunction = () => {\n const tile = new Tile([0, 0, -1], 2 /* LOADED */);\n tile.getImage = () => {\n return image;\n };\n return tile;\n};\n\nconst getOLTileLayer = () => {\n const layer = new TileLayer({\n source: new TileSource({\n projection: 'EPSG:3857',\n tileGrid: createXYZ(),\n }),\n });\n layer.getSource().getTile = tileLoadFunction;\n return layer;\n};\n\nconst getLayer = (copyrights, visible = true) => {\n return new Layer({\n visible,\n copyrights,\n olLayer: getOLTileLayer(),\n });\n};\n\nlet layers;\nlet map;\n\ndescribe('Copyright', () => {\n beforeEach(() => {\n const target = document.createElement('div');\n document.body.appendChild(target);\n layers = [getLayer('bar'), getLayer('foo', false)];\n map = new Map({\n target,\n view: new View({\n center: [0, 0],\n zoom: 0,\n }),\n layers: layers.map((layer) => {\n return layer.olLayer;\n }),\n });\n map.setSize([200, 200]);\n layers.forEach((layer) => {\n layer.init(map);\n });\n act(() => {\n map.renderSync();\n });\n });\n\n afterEach(() => {\n map.setTarget(null);\n map = null;\n });\n\n test('is empty if no layers are visible', () => {\n const component = mount(<Copyright map={map} />);\n expect(component.html()).toBe(null);\n });\n\n test('displays one copyright', () => {\n const wrapper = mount(<Copyright map={map} />);\n act(() => {\n map.renderSync();\n });\n wrapper.update();\n expect(wrapper.text()).toBe('bar');\n });\n\n test('displays 2 copyrights', () => {\n const wrapper = mount(<Copyright map={map} />);\n layers[0].setVisible(true);\n layers[1].setVisible(true);\n act(() => {\n map.renderSync();\n });\n wrapper.update();\n expect(wrapper.text()).toBe('bar | foo');\n });\n\n test('displays a copyright using a custom format', () => {\n const wrapper = mount(\n <Copyright\n map={map}\n format={(copyrights) => {\n return `Number of copyrights: ${copyrights.length}`;\n }}\n />,\n );\n\n act(() => {\n map.renderSync();\n });\n wrapper.update();\n\n expect(wrapper.text()).toBe('Number of copyrights: 1');\n });\n\n test('set a custom className', () => {\n const wrapper = mount(<Copyright map={map} className=\"foo\" />);\n expect(wrapper.find('.foo').length).toBe(1);\n });\n\n test('set a custom attribute to the root element', () => {\n const wrapper = mount(<Copyright map={map} foo=\"bar\" />);\n expect(wrapper.find('[foo]').length).toBe(1);\n });\n});\n"],"names":["const","let"],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,SAAS,SAAS,EAAE,KAAK,QAAQ,QAAQ,CAAC;AAC1C,OAAO,OAAO,MAAM,oCAAoC,CAAC;AACzD,SAAS,GAAG,QAAQ,sBAAsB,CAAC;AAC3C,SAAS,GAAG,EAAE,IAAI,QAAQ,IAAI,CAAC;AAC/B,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,SAAS,MAAM,eAAe,CAAC;AACtC,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,SAAS,SAAS,QAAQ,aAAa,CAAC;AACxC,SAAS,KAAK,QAAQ,wBAAwB,CAAC;AAC/C,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC;AACA,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;AACtC;AACAA,GAAK,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAC1B,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AAClB,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;AACnB;AACAA,GAAK,CAAC,gBAAgB,YAAG,GAAM;AAC/B,EAAEA,GAAK,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC;AACpD,EAAE,IAAI,CAAC,QAAQ,YAAG,GAAM;AACxB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG,CAAC;AACJ,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACAA,GAAK,CAAC,cAAc,YAAG,GAAM;AAC7B,EAAEA,GAAK,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC;AAC9B,IAAI,MAAM,EAAE,IAAI,UAAU,CAAC;AAC3B,MAAM,UAAU,EAAE,WAAW;AAC7B,MAAM,QAAQ,EAAE,SAAS,EAAE;AAC3B,KAAK,CAAC;AACN,GAAG,CAAC,CAAC;AACL,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,GAAG,gBAAgB,CAAC;AAC/C,EAAE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF;AACAA,GAAK,CAAC,QAAQ,YAAG,CAAC,UAAU,EAAE,OAAc,EAAK;mCAAZ,GAAG;AAAU;AAClD,EAAE,OAAO,IAAI,KAAK,CAAC;AACnB,aAAI,OAAO;AACX,gBAAI,UAAU;AACd,IAAI,OAAO,EAAE,cAAc,EAAE;AAC7B,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACAC,GAAG,CAAC,MAAM,CAAC;AACXA,GAAG,CAAC,GAAG,CAAC;AACR;AACA,QAAQ,CAAC,WAAW,WAAE,GAAM;AAC5B,EAAE,UAAU,UAAC,GAAM;AACnB,IAAID,GAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACjD,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACtC,IAAI,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC;AAClB,cAAM,MAAM;AACZ,MAAM,IAAI,EAAE,IAAI,IAAI,CAAC;AACrB,QAAQ,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,QAAQ,IAAI,EAAE,CAAC;AACf,OAAO,CAAC;AACR,MAAM,MAAM,EAAE,MAAM,CAAC,GAAG,UAAC,CAAC,KAAK,EAAK;AACpC,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC;AAC7B,OAAO,CAAC;AACR,KAAK,CAAC,CAAC;AACP,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,CAAC,OAAO,UAAC,CAAC,KAAK,EAAK;AAC9B,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,KAAK,CAAC,CAAC;AACP,IAAI,GAAG,UAAC,GAAM;AACd,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;AACvB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC;AACL;AACA,EAAE,SAAS,UAAC,GAAM;AAClB,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxB,IAAI,GAAG,GAAG,IAAI,CAAC;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,mCAAmC,WAAE,GAAM;AAClD,IAAIA,GAAK,CAAC,SAAS,GAAG,KAAK,CAAC,qBAAC,YAAS,CAAC,KAAK,KAAI,CAAG,CAAC,CAAC;AACrD,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,wBAAwB,WAAE,GAAM;AACvC,IAAIA,GAAK,CAAC,OAAO,GAAG,KAAK,CAAC,qBAAC,YAAS,CAAC,KAAK,KAAI,CAAG,CAAC,CAAC;AACnD,IAAI,GAAG,UAAC,GAAM;AACd,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;AACvB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;AACrB,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,uBAAuB,WAAE,GAAM;AACtC,IAAIA,GAAK,CAAC,OAAO,GAAG,KAAK,CAAC,qBAAC,YAAS,CAAC,KAAK,KAAI,CAAG,CAAC,CAAC;AACnD,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI,GAAG,UAAC,GAAM;AACd,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;AACvB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;AACrB,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,4CAA4C,WAAE,GAAM;AAC3D,IAAIA,GAAK,CAAC,OAAO,GAAG,KAAK;AACzB,MAAM,qBAAC,YAAS;AAChB,QAAQ,KAAK,GAAI,EACT,iBAAQ,CAAC,UAAU,EAAK;AAChC,UAAU,OAAO,6BAAyB,UAAU,CAAC,QAAQ,CAAC;AAC9D,WAAU,CACD;AACT,KAAK,CAAC;AACN;AACA,IAAI,GAAG,UAAC,GAAM;AACd,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;AACvB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;AACrB;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC3D,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,wBAAwB,WAAE,GAAM;AACvC,IAAIA,GAAK,CAAC,OAAO,GAAG,KAAK,CAAC,qBAAC,YAAS,CAAC,KAAK,GAAI,EAAC,WAAU,OAAK,CAAG,CAAC,CAAC;AACnE,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChD,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,4CAA4C,WAAE,GAAM;AAC3D,IAAIA,GAAK,CAAC,OAAO,GAAG,KAAK,CAAC,qBAAC,YAAS,CAAC,KAAK,GAAI,EAAC,KAAI,OAAK,CAAG,CAAC,CAAC;AAC7D,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjD,GAAG,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;"}
@@ -1,407 +0,0 @@
1
- import 'jest-canvas-mock';
2
- import React from 'react';
3
- import renderer from 'react-test-renderer';
4
- import { configure, mount, shallow } from 'enzyme';
5
- import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
6
- import { Layer } from 'mobility-toolbox-js/ol';
7
- import GPX from 'ol/format/GPX';
8
- import VectorSource from 'ol/source/Vector';
9
- import Style from 'ol/style/Style';
10
- import Icon from 'ol/style/Icon';
11
- import Text from 'ol/style/Text';
12
- import Fill from 'ol/style/Fill';
13
- import Stroke from 'ol/style/Stroke';
14
- import Circle from 'ol/geom/Circle';
15
- import Point from 'ol/geom/Point';
16
- import LineString from 'ol/geom/LineString';
17
- import Feature from 'ol/Feature';
18
- import VectorLayer from 'ol/layer/Vector';
19
-
20
- import FeatureExportButton from '.';
21
-
22
- configure({ adapter: new Adapter() });
23
-
24
- var layer = new Layer({
25
- name: 'Sample layer',
26
- olLayer: new VectorLayer({
27
- source: new VectorSource({
28
- features: [
29
- new Feature({
30
- geometry: new Point([819103.972418, 6120013.078324]),
31
- }) ],
32
- }),
33
- }),
34
- });
35
-
36
- describe('FeatureExportButton', function () {
37
- describe('should match snapshot', function () {
38
- test('with default attributes.', function () {
39
- var component = renderer.create(React.createElement( FeatureExportButton, { layer: layer }));
40
- var tree = component.toJSON();
41
- expect(tree).toMatchSnapshot();
42
- });
43
-
44
- test('should match snapshot with cutom attributes.', function () {
45
- var component = renderer.create(
46
- React.createElement( FeatureExportButton, {
47
- layer: layer, className: "foo", title: "bar", tabIndex: 2 })
48
- );
49
- var tree = component.toJSON();
50
- expect(tree).toMatchSnapshot();
51
- });
52
-
53
- test('should match snapshot with children passed.', function () {
54
- var component = renderer.create(
55
- React.createElement( FeatureExportButton, { layer: layer },
56
- React.createElement( 'div', null, "Foo" )
57
- )
58
- );
59
- var tree = component.toJSON();
60
- expect(tree).toMatchSnapshot();
61
- });
62
- });
63
-
64
- describe('triggers onClick', function () {
65
- // Use library 'jest-environment-jsdom-fourteen'
66
- // to allow jest test of format.writeFeatures(feats).
67
- var renderLayer = function (featNumbers) {
68
- var featsArray = [];
69
- for (var i = 0; i < featNumbers; i += 1) {
70
- featsArray.push(
71
- new Feature({
72
- geometry: new Point([819103.972418, 6120013.078324]),
73
- })
74
- );
75
- }
76
-
77
- return new Layer({
78
- name: 'ExportLayer',
79
- olLayer: new VectorLayer({
80
- source: new VectorSource({
81
- features: featsArray,
82
- }),
83
- }),
84
- });
85
- };
86
-
87
- var iconLayer = renderLayer(1);
88
-
89
- var textStyle = new Style({
90
- text: new Text({
91
- text: 'text name',
92
- font: 'normal 16px Helvetica',
93
- stroke: new Stroke({
94
- color: [255, 255, 255, 1],
95
- width: 3,
96
- }),
97
- }),
98
- });
99
-
100
- test('should be trigger click function.', function () {
101
- var wrapper = shallow(React.createElement( FeatureExportButton, { layer: iconLayer }));
102
- var spy = jest.spyOn(FeatureExportButton, 'exportFeatures');
103
- wrapper.find('.rs-feature-export-button').simulate('click');
104
- expect(spy).toHaveBeenCalledTimes(1);
105
- });
106
-
107
- test('should use attributes for parsing', function () {
108
- var wrapper = mount(
109
- React.createElement( FeatureExportButton, {
110
- format: GPX, projection: "EPSG:4326", layer: iconLayer })
111
- );
112
- var spy = jest.spyOn(FeatureExportButton, 'exportFeatures');
113
- wrapper.find('.rs-feature-export-button').simulate('click');
114
- expect(spy).toHaveBeenCalledWith(iconLayer, 'EPSG:4326', GPX);
115
- });
116
-
117
- describe('#createFeatureString()', function () {
118
- describe('using KMLFormat', function () {
119
- test('should export kml by default.', function () {
120
- var exportString = FeatureExportButton.createFeatureString(
121
- iconLayer,
122
- FeatureExportButton.defaultProps.projection,
123
- FeatureExportButton.defaultProps.format
124
- );
125
- expect(exportString).toMatchSnapshot();
126
- });
127
-
128
- var iconStyle = new Style({
129
- image: new Icon({
130
- anchor: [0.5, 46],
131
- anchorXUnits: 'fraction',
132
- anchorYUnits: 'pixels',
133
- src: 'https://openlayers.org/en/latest/examples/data/icon.png',
134
- }),
135
- });
136
-
137
- iconLayer.olLayer.getSource().forEachFeature(function (f) {
138
- f.setStyle(iconStyle);
139
- });
140
-
141
- test('should export icon style in kml.', function () {
142
- var exportString = FeatureExportButton.createFeatureString(
143
- iconLayer,
144
- FeatureExportButton.defaultProps.projection,
145
- FeatureExportButton.defaultProps.format
146
- );
147
- var expectedString =
148
- '<Style><IconStyle><scale>2</scale><Icon><href>' +
149
- 'https://openlayers.org/en/latest/examples/data/icon.png' +
150
- '</href></Icon></IconStyle></Style>';
151
- expect(exportString.match(/<Style>(.*?)<\/Style>/g)[0]).toBe(
152
- expectedString
153
- );
154
- });
155
-
156
- test('should export with layer name.', function () {
157
- var namedlayer = renderLayer(1);
158
- var exportString = FeatureExportButton.createFeatureString(
159
- namedlayer,
160
- FeatureExportButton.defaultProps.projection,
161
- FeatureExportButton.defaultProps.format
162
- );
163
- var expectedname = '<name>ExportLayer</name>';
164
- expect(exportString.match(/<name>(.*?)<\/name>/g)[0]).toBe(
165
- expectedname
166
- );
167
- });
168
-
169
- test('should export without layer name.', function () {
170
- var unnamedlayer = renderLayer(1);
171
- var exportString = FeatureExportButton.createFeatureString(
172
- unnamedlayer,
173
- FeatureExportButton.defaultProps.projection,
174
- FeatureExportButton.defaultProps.format
175
- );
176
- expect(
177
- /<document><name>ExportLayer<\/name>/g.test(exportString)
178
- ).toBe(false);
179
- });
180
-
181
- test('should export text style in kml.', function () {
182
- var textlayer = renderLayer(2);
183
-
184
- textlayer.olLayer.getSource().forEachFeature(function (f) {
185
- f.setStyle(textStyle);
186
- });
187
- var exportString = FeatureExportButton.createFeatureString(
188
- textlayer,
189
- FeatureExportButton.defaultProps.projection,
190
- FeatureExportButton.defaultProps.format
191
- );
192
- var expectedStyle =
193
- '<Style><IconStyle><scale>0</scale></IconStyle>' +
194
- '<LabelStyle><color>ff333333</color></LabelStyle></Style>';
195
- expect(exportString.match(/<Style>(.*?)<\/Style>/g)[0]).toBe(
196
- expectedStyle
197
- );
198
- });
199
-
200
- test('should only export none-empty text style in kml.', function () {
201
- var textlayer = renderLayer(2);
202
-
203
- textlayer.olLayer.getSource().forEachFeature(function (f) {
204
- f.setStyle(textStyle);
205
- });
206
- var exportString1 = FeatureExportButton.createFeatureString(
207
- textlayer,
208
- FeatureExportButton.defaultProps.projection,
209
- FeatureExportButton.defaultProps.format
210
- );
211
-
212
- expect(
213
- exportString1.match(/<Placemark>(.*?)<\/Placemark>/g).length
214
- ).toBe(2);
215
-
216
- var newStyle = new Style({
217
- text: new Text({
218
- text: '',
219
- font: 'normal 16px Helvetica',
220
- stroke: new Stroke({
221
- color: [255, 255, 255, 1],
222
- width: 3,
223
- }),
224
- }),
225
- });
226
- // Set empty string as name for first feature
227
- textlayer.olLayer.getSource().getFeatures()[0].setStyle(newStyle);
228
-
229
- var exportString2 = FeatureExportButton.createFeatureString(
230
- textlayer,
231
- FeatureExportButton.defaultProps.projection,
232
- FeatureExportButton.defaultProps.format
233
- );
234
-
235
- expect(
236
- exportString2.match(/<Placemark>(.*?)<\/Placemark>/g).length
237
- ).toBe(1);
238
- });
239
-
240
- test("should not export 'Cirle geom' (kml unsupported).", function () {
241
- var circleLayer = new Layer({
242
- name: 'ExportLayer',
243
- olLayer: new VectorLayer({
244
- source: new VectorSource({
245
- features: [
246
- new Feature({
247
- geometry: new Circle({
248
- center: [843119.531243, 6111943.000197],
249
- radius: 1000,
250
- }),
251
- }) ],
252
- }),
253
- }),
254
- });
255
-
256
- var circleStyle = new Style({
257
- stroke: new Stroke({
258
- color: 'red',
259
- width: 3,
260
- }),
261
- fill: new Fill({
262
- color: 'rgba(255, 0, 0, 0.1)',
263
- }),
264
- });
265
-
266
- circleLayer.olLayer.getSource().forEachFeature(function (f) {
267
- f.setStyle(circleStyle);
268
- });
269
- var exportString = FeatureExportButton.createFeatureString(
270
- circleLayer,
271
- FeatureExportButton.defaultProps.projection,
272
- FeatureExportButton.defaultProps.format
273
- );
274
- expect(exportString).toBe(undefined);
275
- });
276
-
277
- test('should export extended data.', function () {
278
- var extendedLayer = renderLayer(1);
279
-
280
- var style = new Style({
281
- stroke: new Stroke({
282
- color: [0, 0, 0, 1],
283
- lineDash: [40, 40],
284
- }),
285
- text: new Text({
286
- text: 'text name',
287
- font: 'normal 18px Arial',
288
- rotation: 0.5,
289
- backgroundFill: new Fill({
290
- color: 'rgba(255,255,255,0.01)',
291
- }),
292
- }),
293
- });
294
-
295
- extendedLayer.olLayer.getSource().forEachFeature(function (f) {
296
- f.setStyle(style);
297
- });
298
- var exportString = FeatureExportButton.createFeatureString(
299
- extendedLayer,
300
- FeatureExportButton.defaultProps.projection,
301
- FeatureExportButton.defaultProps.format
302
- );
303
- var expectedStyle =
304
- '<ExtendedData><Data name="lineDash"><value>40,40</value></Data>' +
305
- '<Data name="textBackgroundFillColor"><value>rgba(255,255,255,0.01)</value></Data>' +
306
- '<Data name="textFont"><value>normal 18px Arial</value></Data>' +
307
- '<Data name="textRotation"><value>0.5</value></Data></ExtendedData>';
308
- expect(
309
- exportString.match(/<ExtendedData>(.*?)<\/ExtendedData>/g)[0]
310
- ).toBe(expectedStyle);
311
- });
312
-
313
- test('should not export others extended data than style.', function () {
314
- var extendedLayer = renderLayer(1);
315
-
316
- var style = new Style({
317
- stroke: new Stroke({
318
- color: [0, 0, 0, 1],
319
- lineDash: [40, 40],
320
- }),
321
- text: new Text({
322
- text: 'text name',
323
- font: 'normal 18px Arial',
324
- rotation: 0.5,
325
- backgroundFill: new Fill({
326
- color: 'rgba(255,255,255,0.01)',
327
- }),
328
- }),
329
- });
330
-
331
- extendedLayer.olLayer.getSource().forEachFeature(function (f) {
332
- f.setStyle(style);
333
- f.set('foo', 'bar');
334
- });
335
- var exportString = FeatureExportButton.createFeatureString(
336
- extendedLayer,
337
- FeatureExportButton.defaultProps.projection,
338
- FeatureExportButton.defaultProps.format
339
- );
340
- var expectedStyle =
341
- '<ExtendedData><Data name="lineDash"><value>40,40</value></Data>' +
342
- '<Data name="textBackgroundFillColor"><value>rgba(255,255,255,0.01)</value></Data>' +
343
- '<Data name="textFont"><value>normal 18px Arial</value></Data>' +
344
- '<Data name="textRotation"><value>0.5</value></Data></ExtendedData>';
345
- expect(
346
- exportString.match(/<ExtendedData>(.*?)<\/ExtendedData>/g)[0]
347
- ).toBe(expectedStyle);
348
- });
349
-
350
- test('should export lineStartIcon and lineEndIcon style.', function () {
351
- var extendedLayer = renderLayer(1);
352
- var line = new Feature({
353
- geometry: new LineString([
354
- [0, 1],
355
- [2, 3],
356
- [4, 5] ]),
357
- });
358
- extendedLayer.olLayer.getSource().addFeatures([line]);
359
-
360
- var style = [
361
- new Style({
362
- stroke: new Stroke({
363
- color: [0, 0, 0, 1],
364
- lineDash: [40, 40],
365
- }),
366
- }),
367
- new Style({
368
- geometry: function () {
369
- return new Point([4, 5]);
370
- },
371
- image: new Icon({
372
- src: 'fooarrowend.png',
373
- }),
374
- }),
375
- new Style({
376
- geometry: function () {
377
- return new Point([0, 1]);
378
- },
379
- image: new Icon({
380
- src: 'fooarrowstart.png',
381
- }),
382
- }) ];
383
- line.setStyle(style);
384
-
385
- var exportString = FeatureExportButton.createFeatureString(
386
- extendedLayer,
387
- FeatureExportButton.defaultProps.projection,
388
- FeatureExportButton.defaultProps.format
389
- );
390
- var expectedStyle =
391
- '<ExtendedData><Data name="lineDash"><value>40,40</value></Data>' +
392
- '<Data name="lineEndIcon">' +
393
- '<value>{"url":"fooarrowend.png","scale":1,"size":null}</value></Data>' +
394
- '<Data name="lineStartIcon">' +
395
- '<value>{"url":"fooarrowstart.png","scale":1,"size":null}</value></Data>' +
396
- '</ExtendedData>';
397
-
398
- expect(
399
- exportString.match(/<ExtendedData>(.*?)<\/ExtendedData>/g)[0]
400
- ).toBe(expectedStyle);
401
- });
402
- });
403
- });
404
- });
405
- });
406
-
407
- //# sourceMappingURL=FeatureExportButton.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FeatureExportButton.test.js","sources":["../../../src/components/FeatureExportButton/FeatureExportButton.test.js"],"sourcesContent":["import 'jest-canvas-mock';\nimport React from 'react';\nimport renderer from 'react-test-renderer';\nimport { configure, mount, shallow } from 'enzyme';\nimport Adapter from '@wojtekmaj/enzyme-adapter-react-17';\nimport { Layer } from 'mobility-toolbox-js/ol';\nimport GPX from 'ol/format/GPX';\nimport VectorSource from 'ol/source/Vector';\nimport Style from 'ol/style/Style';\nimport Icon from 'ol/style/Icon';\nimport Text from 'ol/style/Text';\nimport Fill from 'ol/style/Fill';\nimport Stroke from 'ol/style/Stroke';\nimport Circle from 'ol/geom/Circle';\nimport Point from 'ol/geom/Point';\nimport LineString from 'ol/geom/LineString';\nimport Feature from 'ol/Feature';\nimport VectorLayer from 'ol/layer/Vector';\n\nimport FeatureExportButton from '.';\n\nconfigure({ adapter: new Adapter() });\n\nconst layer = new Layer({\n name: 'Sample layer',\n olLayer: new VectorLayer({\n source: new VectorSource({\n features: [\n new Feature({\n geometry: new Point([819103.972418, 6120013.078324]),\n }),\n ],\n }),\n }),\n});\n\ndescribe('FeatureExportButton', () => {\n describe('should match snapshot', () => {\n test('with default attributes.', () => {\n const component = renderer.create(<FeatureExportButton layer={layer} />);\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n });\n\n test('should match snapshot with cutom attributes.', () => {\n const component = renderer.create(\n <FeatureExportButton\n layer={layer}\n className=\"foo\"\n title=\"bar\"\n // eslint-disable-next-line jsx-a11y/tabindex-no-positive\n tabIndex={2}\n />,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n });\n\n test('should match snapshot with children passed.', () => {\n const component = renderer.create(\n <FeatureExportButton layer={layer}>\n <div>Foo</div>\n </FeatureExportButton>,\n );\n const tree = component.toJSON();\n expect(tree).toMatchSnapshot();\n });\n });\n\n describe('triggers onClick', () => {\n // Use library 'jest-environment-jsdom-fourteen'\n // to allow jest test of format.writeFeatures(feats).\n const renderLayer = (featNumbers) => {\n const featsArray = [];\n for (let i = 0; i < featNumbers; i += 1) {\n featsArray.push(\n new Feature({\n geometry: new Point([819103.972418, 6120013.078324]),\n }),\n );\n }\n\n return new Layer({\n name: 'ExportLayer',\n olLayer: new VectorLayer({\n source: new VectorSource({\n features: featsArray,\n }),\n }),\n });\n };\n\n const iconLayer = renderLayer(1);\n\n const textStyle = new Style({\n text: new Text({\n text: 'text name',\n font: 'normal 16px Helvetica',\n stroke: new Stroke({\n color: [255, 255, 255, 1],\n width: 3,\n }),\n }),\n });\n\n test('should be trigger click function.', () => {\n const wrapper = shallow(<FeatureExportButton layer={iconLayer} />);\n const spy = jest.spyOn(FeatureExportButton, 'exportFeatures');\n wrapper.find('.rs-feature-export-button').simulate('click');\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('should use attributes for parsing', () => {\n const wrapper = mount(\n <FeatureExportButton\n format={GPX}\n projection=\"EPSG:4326\"\n layer={iconLayer}\n />,\n );\n const spy = jest.spyOn(FeatureExportButton, 'exportFeatures');\n wrapper.find('.rs-feature-export-button').simulate('click');\n expect(spy).toHaveBeenCalledWith(iconLayer, 'EPSG:4326', GPX);\n });\n\n describe('#createFeatureString()', () => {\n describe('using KMLFormat', () => {\n test('should export kml by default.', () => {\n const exportString = FeatureExportButton.createFeatureString(\n iconLayer,\n FeatureExportButton.defaultProps.projection,\n FeatureExportButton.defaultProps.format,\n );\n expect(exportString).toMatchSnapshot();\n });\n\n const iconStyle = new Style({\n image: new Icon({\n anchor: [0.5, 46],\n anchorXUnits: 'fraction',\n anchorYUnits: 'pixels',\n src: 'https://openlayers.org/en/latest/examples/data/icon.png',\n }),\n });\n\n iconLayer.olLayer.getSource().forEachFeature((f) => {\n f.setStyle(iconStyle);\n });\n\n test('should export icon style in kml.', () => {\n const exportString = FeatureExportButton.createFeatureString(\n iconLayer,\n FeatureExportButton.defaultProps.projection,\n FeatureExportButton.defaultProps.format,\n );\n const expectedString =\n '<Style><IconStyle><scale>2</scale><Icon><href>' +\n 'https://openlayers.org/en/latest/examples/data/icon.png' +\n '</href></Icon></IconStyle></Style>';\n expect(exportString.match(/<Style>(.*?)<\\/Style>/g)[0]).toBe(\n expectedString,\n );\n });\n\n test('should export with layer name.', () => {\n const namedlayer = renderLayer(1);\n const exportString = FeatureExportButton.createFeatureString(\n namedlayer,\n FeatureExportButton.defaultProps.projection,\n FeatureExportButton.defaultProps.format,\n );\n const expectedname = '<name>ExportLayer</name>';\n expect(exportString.match(/<name>(.*?)<\\/name>/g)[0]).toBe(\n expectedname,\n );\n });\n\n test('should export without layer name.', () => {\n const unnamedlayer = renderLayer(1);\n const exportString = FeatureExportButton.createFeatureString(\n unnamedlayer,\n FeatureExportButton.defaultProps.projection,\n FeatureExportButton.defaultProps.format,\n );\n expect(\n /<document><name>ExportLayer<\\/name>/g.test(exportString),\n ).toBe(false);\n });\n\n test('should export text style in kml.', () => {\n const textlayer = renderLayer(2);\n\n textlayer.olLayer.getSource().forEachFeature((f) => {\n f.setStyle(textStyle);\n });\n const exportString = FeatureExportButton.createFeatureString(\n textlayer,\n FeatureExportButton.defaultProps.projection,\n FeatureExportButton.defaultProps.format,\n );\n const expectedStyle =\n '<Style><IconStyle><scale>0</scale></IconStyle>' +\n '<LabelStyle><color>ff333333</color></LabelStyle></Style>';\n expect(exportString.match(/<Style>(.*?)<\\/Style>/g)[0]).toBe(\n expectedStyle,\n );\n });\n\n test('should only export none-empty text style in kml.', () => {\n const textlayer = renderLayer(2);\n\n textlayer.olLayer.getSource().forEachFeature((f) => {\n f.setStyle(textStyle);\n });\n const exportString1 = FeatureExportButton.createFeatureString(\n textlayer,\n FeatureExportButton.defaultProps.projection,\n FeatureExportButton.defaultProps.format,\n );\n\n expect(\n exportString1.match(/<Placemark>(.*?)<\\/Placemark>/g).length,\n ).toBe(2);\n\n const newStyle = new Style({\n text: new Text({\n text: '',\n font: 'normal 16px Helvetica',\n stroke: new Stroke({\n color: [255, 255, 255, 1],\n width: 3,\n }),\n }),\n });\n // Set empty string as name for first feature\n textlayer.olLayer.getSource().getFeatures()[0].setStyle(newStyle);\n\n const exportString2 = FeatureExportButton.createFeatureString(\n textlayer,\n FeatureExportButton.defaultProps.projection,\n FeatureExportButton.defaultProps.format,\n );\n\n expect(\n exportString2.match(/<Placemark>(.*?)<\\/Placemark>/g).length,\n ).toBe(1);\n });\n\n test(\"should not export 'Cirle geom' (kml unsupported).\", () => {\n const circleLayer = new Layer({\n name: 'ExportLayer',\n olLayer: new VectorLayer({\n source: new VectorSource({\n features: [\n new Feature({\n geometry: new Circle({\n center: [843119.531243, 6111943.000197],\n radius: 1000,\n }),\n }),\n ],\n }),\n }),\n });\n\n const circleStyle = new Style({\n stroke: new Stroke({\n color: 'red',\n width: 3,\n }),\n fill: new Fill({\n color: 'rgba(255, 0, 0, 0.1)',\n }),\n });\n\n circleLayer.olLayer.getSource().forEachFeature((f) => {\n f.setStyle(circleStyle);\n });\n const exportString = FeatureExportButton.createFeatureString(\n circleLayer,\n FeatureExportButton.defaultProps.projection,\n FeatureExportButton.defaultProps.format,\n );\n expect(exportString).toBe(undefined);\n });\n\n test('should export extended data.', () => {\n const extendedLayer = renderLayer(1);\n\n const style = new Style({\n stroke: new Stroke({\n color: [0, 0, 0, 1],\n lineDash: [40, 40],\n }),\n text: new Text({\n text: 'text name',\n font: 'normal 18px Arial',\n rotation: 0.5,\n backgroundFill: new Fill({\n color: 'rgba(255,255,255,0.01)',\n }),\n }),\n });\n\n extendedLayer.olLayer.getSource().forEachFeature((f) => {\n f.setStyle(style);\n });\n const exportString = FeatureExportButton.createFeatureString(\n extendedLayer,\n FeatureExportButton.defaultProps.projection,\n FeatureExportButton.defaultProps.format,\n );\n const expectedStyle =\n '<ExtendedData><Data name=\"lineDash\"><value>40,40</value></Data>' +\n '<Data name=\"textBackgroundFillColor\"><value>rgba(255,255,255,0.01)</value></Data>' +\n '<Data name=\"textFont\"><value>normal 18px Arial</value></Data>' +\n '<Data name=\"textRotation\"><value>0.5</value></Data></ExtendedData>';\n expect(\n exportString.match(/<ExtendedData>(.*?)<\\/ExtendedData>/g)[0],\n ).toBe(expectedStyle);\n });\n\n test('should not export others extended data than style.', () => {\n const extendedLayer = renderLayer(1);\n\n const style = new Style({\n stroke: new Stroke({\n color: [0, 0, 0, 1],\n lineDash: [40, 40],\n }),\n text: new Text({\n text: 'text name',\n font: 'normal 18px Arial',\n rotation: 0.5,\n backgroundFill: new Fill({\n color: 'rgba(255,255,255,0.01)',\n }),\n }),\n });\n\n extendedLayer.olLayer.getSource().forEachFeature((f) => {\n f.setStyle(style);\n f.set('foo', 'bar');\n });\n const exportString = FeatureExportButton.createFeatureString(\n extendedLayer,\n FeatureExportButton.defaultProps.projection,\n FeatureExportButton.defaultProps.format,\n );\n const expectedStyle =\n '<ExtendedData><Data name=\"lineDash\"><value>40,40</value></Data>' +\n '<Data name=\"textBackgroundFillColor\"><value>rgba(255,255,255,0.01)</value></Data>' +\n '<Data name=\"textFont\"><value>normal 18px Arial</value></Data>' +\n '<Data name=\"textRotation\"><value>0.5</value></Data></ExtendedData>';\n expect(\n exportString.match(/<ExtendedData>(.*?)<\\/ExtendedData>/g)[0],\n ).toBe(expectedStyle);\n });\n\n test('should export lineStartIcon and lineEndIcon style.', () => {\n const extendedLayer = renderLayer(1);\n const line = new Feature({\n geometry: new LineString([\n [0, 1],\n [2, 3],\n [4, 5],\n ]),\n });\n extendedLayer.olLayer.getSource().addFeatures([line]);\n\n const style = [\n new Style({\n stroke: new Stroke({\n color: [0, 0, 0, 1],\n lineDash: [40, 40],\n }),\n }),\n new Style({\n geometry: () => {\n return new Point([4, 5]);\n },\n image: new Icon({\n src: 'fooarrowend.png',\n }),\n }),\n new Style({\n geometry: () => {\n return new Point([0, 1]);\n },\n image: new Icon({\n src: 'fooarrowstart.png',\n }),\n }),\n ];\n line.setStyle(style);\n\n const exportString = FeatureExportButton.createFeatureString(\n extendedLayer,\n FeatureExportButton.defaultProps.projection,\n FeatureExportButton.defaultProps.format,\n );\n const expectedStyle =\n '<ExtendedData><Data name=\"lineDash\"><value>40,40</value></Data>' +\n '<Data name=\"lineEndIcon\">' +\n '<value>{\"url\":\"fooarrowend.png\",\"scale\":1,\"size\":null}</value></Data>' +\n '<Data name=\"lineStartIcon\">' +\n '<value>{\"url\":\"fooarrowstart.png\",\"scale\":1,\"size\":null}</value></Data>' +\n '</ExtendedData>';\n\n expect(\n exportString.match(/<ExtendedData>(.*?)<\\/ExtendedData>/g)[0],\n ).toBe(expectedStyle);\n });\n });\n });\n });\n});\n"],"names":["const","let"],"mappings":"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"}