react-spatial 1.2.0 → 1.2.3-beta.2

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/LayerService.js +128 -184
  2. package/LayerService.js.map +7 -1
  3. package/Projections.js +29 -12
  4. package/Projections.js.map +7 -1
  5. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js +163 -221
  6. package/components/BaseLayerSwitcher/BaseLayerSwitcher.js.map +7 -1
  7. package/components/BaseLayerSwitcher/index.js +1 -3
  8. package/components/BaseLayerSwitcher/index.js.map +7 -1
  9. package/components/BasicMap/BasicMap.js +147 -285
  10. package/components/BasicMap/BasicMap.js.map +7 -1
  11. package/components/BasicMap/index.js +1 -3
  12. package/components/BasicMap/index.js.map +7 -1
  13. package/components/CanvasSaveButton/CanvasSaveButton.js +165 -419
  14. package/components/CanvasSaveButton/CanvasSaveButton.js.map +7 -1
  15. package/components/CanvasSaveButton/index.js +1 -3
  16. package/components/CanvasSaveButton/index.js.map +7 -1
  17. package/components/Copyright/Copyright.js +29 -70
  18. package/components/Copyright/Copyright.js.map +7 -1
  19. package/components/Copyright/index.js +1 -3
  20. package/components/Copyright/index.js.map +7 -1
  21. package/components/FeatureExportButton/FeatureExportButton.js +40 -106
  22. package/components/FeatureExportButton/FeatureExportButton.js.map +7 -1
  23. package/components/FeatureExportButton/index.js +1 -3
  24. package/components/FeatureExportButton/index.js.map +7 -1
  25. package/components/FilterButton/FilterButton.js +41 -106
  26. package/components/FilterButton/FilterButton.js.map +7 -1
  27. package/components/FilterButton/index.js +1 -3
  28. package/components/FilterButton/index.js.map +7 -1
  29. package/components/FitExtent/FitExtent.js +17 -50
  30. package/components/FitExtent/FitExtent.js.map +7 -1
  31. package/components/FitExtent/index.js +1 -3
  32. package/components/FitExtent/index.js.map +7 -1
  33. package/components/FollowButton/FollowButton.js +41 -111
  34. package/components/FollowButton/FollowButton.js.map +7 -1
  35. package/components/FollowButton/index.js +1 -3
  36. package/components/FollowButton/index.js.map +7 -1
  37. package/components/Geolocation/Geolocation.js +104 -213
  38. package/components/Geolocation/Geolocation.js.map +7 -1
  39. package/components/Geolocation/index.js +1 -3
  40. package/components/Geolocation/index.js.map +7 -1
  41. package/components/LayerTree/LayerTree.js +207 -397
  42. package/components/LayerTree/LayerTree.js.map +7 -1
  43. package/components/LayerTree/index.js +1 -3
  44. package/components/LayerTree/index.js.map +7 -1
  45. package/components/MousePosition/MousePosition.js +61 -130
  46. package/components/MousePosition/MousePosition.js.map +7 -1
  47. package/components/MousePosition/index.js +1 -3
  48. package/components/MousePosition/index.js.map +7 -1
  49. package/components/NorthArrow/NorthArrow.js +22 -62
  50. package/components/NorthArrow/NorthArrow.js.map +7 -1
  51. package/components/NorthArrow/index.js +1 -3
  52. package/components/NorthArrow/index.js.map +7 -1
  53. package/components/Overlay/Overlay.js +85 -132
  54. package/components/Overlay/Overlay.js.map +7 -1
  55. package/components/Overlay/index.js +1 -3
  56. package/components/Overlay/index.js.map +7 -1
  57. package/components/Permalink/Permalink.js +151 -231
  58. package/components/Permalink/Permalink.js.map +7 -1
  59. package/components/Permalink/index.js +1 -3
  60. package/components/Permalink/index.js.map +7 -1
  61. package/components/Popup/Popup.js +106 -233
  62. package/components/Popup/Popup.js.map +7 -1
  63. package/components/Popup/index.js +1 -3
  64. package/components/Popup/index.js.map +7 -1
  65. package/components/ResizeHandler/ResizeHandler.js +60 -115
  66. package/components/ResizeHandler/ResizeHandler.js.map +7 -1
  67. package/components/ResizeHandler/index.js +1 -3
  68. package/components/ResizeHandler/index.js.map +7 -1
  69. package/components/RouteSchedule/RouteSchedule.js +153 -285
  70. package/components/RouteSchedule/RouteSchedule.js.map +7 -1
  71. package/components/RouteSchedule/index.js +1 -3
  72. package/components/RouteSchedule/index.js.map +7 -1
  73. package/components/ScaleLine/ScaleLine.js +21 -45
  74. package/components/ScaleLine/ScaleLine.js.map +7 -1
  75. package/components/ScaleLine/index.js +1 -3
  76. package/components/ScaleLine/index.js.map +7 -1
  77. package/components/Search/Search.js +122 -186
  78. package/components/Search/Search.js.map +7 -1
  79. package/components/Search/SearchService.js +45 -69
  80. package/components/Search/SearchService.js.map +7 -1
  81. package/components/Search/engines/Engine.js +18 -25
  82. package/components/Search/engines/Engine.js.map +7 -1
  83. package/components/Search/engines/StopFinder.js +21 -38
  84. package/components/Search/engines/StopFinder.js.map +7 -1
  85. package/components/Search/index.js +3 -6
  86. package/components/Search/index.js.map +7 -1
  87. package/components/StopsFinder/StopsFinder.js +123 -174
  88. package/components/StopsFinder/StopsFinder.js.map +7 -1
  89. package/components/StopsFinder/StopsFinderOption.js +37 -54
  90. package/components/StopsFinder/StopsFinderOption.js.map +7 -1
  91. package/components/StopsFinder/index.js +1 -3
  92. package/components/StopsFinder/index.js.map +7 -1
  93. package/components/TrackerControl/TrackerControl.js +73 -128
  94. package/components/TrackerControl/TrackerControl.js.map +7 -1
  95. package/components/TrackerControl/index.js +1 -3
  96. package/components/TrackerControl/index.js.map +7 -1
  97. package/components/Zoom/Zoom.js +69 -112
  98. package/components/Zoom/Zoom.js.map +7 -1
  99. package/components/Zoom/index.js +1 -3
  100. package/components/Zoom/index.js.map +7 -1
  101. package/package.json +20 -15
  102. package/propTypes.js +17 -23
  103. package/propTypes.js.map +7 -1
  104. package/setupTests.js +2 -4
  105. package/setupTests.js.map +7 -1
  106. package/themes/default/components.scss +0 -1
  107. package/themes/default/examples.scss +0 -1
  108. package/utils/GlobalsForOle.js +63 -64
  109. package/utils/GlobalsForOle.js.map +7 -1
  110. package/utils/KML.js +178 -364
  111. package/utils/KML.js.map +7 -1
  112. package/utils/KMLFormat.js +37 -73
  113. package/utils/KMLFormat.js.map +7 -1
  114. package/utils/Styles.js +24 -32
  115. package/utils/Styles.js.map +7 -1
  116. package/utils/getPolygonPattern.js +11 -44
  117. package/utils/getPolygonPattern.js.map +7 -1
  118. package/utils/timeUtils.js +16 -35
  119. package/utils/timeUtils.js.map +7 -1
  120. package/LayerService.test.js +0 -160
  121. package/LayerService.test.js.map +0 -1
  122. package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js +0 -88
  123. package/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js.map +0 -1
  124. package/components/BaseLayerToggler/BaseLayerToggler.js +0 -490
  125. package/components/BaseLayerToggler/BaseLayerToggler.js.map +0 -1
  126. package/components/BaseLayerToggler/BaseLayerToggler.md.scss +0 -9
  127. package/components/BaseLayerToggler/BaseLayerToggler.scss +0 -49
  128. package/components/BaseLayerToggler/BaseLayerToggler.test.js +0 -127
  129. package/components/BaseLayerToggler/BaseLayerToggler.test.js.map +0 -1
  130. package/components/BaseLayerToggler/index.js +0 -3
  131. package/components/BaseLayerToggler/index.js.map +0 -1
  132. package/components/BasicMap/BasicMap.test.js +0 -288
  133. package/components/BasicMap/BasicMap.test.js.map +0 -1
  134. package/components/CanvasSaveButton/CanvasSaveButton.test.js +0 -173
  135. package/components/CanvasSaveButton/CanvasSaveButton.test.js.map +0 -1
  136. package/components/Copyright/Copyright.test.js +0 -133
  137. package/components/Copyright/Copyright.test.js.map +0 -1
  138. package/components/FeatureExportButton/FeatureExportButton.test.js +0 -407
  139. package/components/FeatureExportButton/FeatureExportButton.test.js.map +0 -1
  140. package/components/FilterButton/FilterButton.test.js +0 -48
  141. package/components/FilterButton/FilterButton.test.js.map +0 -1
  142. package/components/FitExtent/FitExtent.test.js +0 -44
  143. package/components/FitExtent/FitExtent.test.js.map +0 -1
  144. package/components/FollowButton/FollowButton.test.js +0 -57
  145. package/components/FollowButton/FollowButton.test.js.map +0 -1
  146. package/components/Geolocation/Geolocation.test.js +0 -263
  147. package/components/Geolocation/Geolocation.test.js.map +0 -1
  148. package/components/LayerTree/LayerTree.test.js +0 -323
  149. package/components/LayerTree/LayerTree.test.js.map +0 -1
  150. package/components/MousePosition/MousePosition.test.js +0 -125
  151. package/components/MousePosition/MousePosition.test.js.map +0 -1
  152. package/components/NorthArrow/NorthArrow.test.js +0 -106
  153. package/components/NorthArrow/NorthArrow.test.js.map +0 -1
  154. package/components/Overlay/Overlay.test.js +0 -145
  155. package/components/Overlay/Overlay.test.js.map +0 -1
  156. package/components/Permalink/Permalink.test.js +0 -267
  157. package/components/Permalink/Permalink.test.js.map +0 -1
  158. package/components/Popup/Popup.test.js +0 -291
  159. package/components/Popup/Popup.test.js.map +0 -1
  160. package/components/ResizeHandler/ResizeHandler.test.js +0 -410
  161. package/components/ResizeHandler/ResizeHandler.test.js.map +0 -1
  162. package/components/RouteSchedule/RouteSchedule.test.js +0 -102
  163. package/components/RouteSchedule/RouteSchedule.test.js.map +0 -1
  164. package/components/ScaleLine/ScaleLine.test.js +0 -32
  165. package/components/ScaleLine/ScaleLine.test.js.map +0 -1
  166. package/components/Search/Search.test.js +0 -15
  167. package/components/Search/Search.test.js.map +0 -1
  168. package/components/StopsFinder/StopsFinder.test.js +0 -19
  169. package/components/StopsFinder/StopsFinder.test.js.map +0 -1
  170. package/components/TrackerControl/TrackerControl.test.js +0 -17
  171. package/components/TrackerControl/TrackerControl.test.js.map +0 -1
  172. package/components/Zoom/Zoom.test.js +0 -150
  173. package/components/Zoom/Zoom.test.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 'enzyme-adapter-react-16';\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 'enzyme-adapter-react-16';
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 'enzyme-adapter-react-16';\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":"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"}
@@ -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 'enzyme-adapter-react-16';
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><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 'enzyme-adapter-react-16';\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><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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"}