react-spatial 1.5.3 → 1.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.js +262 -0
- package/components/BaseLayerSwitcher/BaseLayerSwitcher.js.map +7 -0
- package/components/BaseLayerSwitcher/index.js +1 -0
- package/components/BaseLayerSwitcher/index.js.map +7 -0
- package/{src/components → components}/BasicMap/BasicMap.js +80 -170
- package/components/BasicMap/BasicMap.js.map +7 -0
- package/components/BasicMap/index.js +1 -0
- package/components/BasicMap/index.js.map +7 -0
- package/{src/components → components}/CanvasSaveButton/CanvasSaveButton.js +133 -278
- package/components/CanvasSaveButton/CanvasSaveButton.js.map +7 -0
- package/components/CanvasSaveButton/index.js +1 -0
- package/components/CanvasSaveButton/index.js.map +7 -0
- package/{src/components → components}/Copyright/Copyright.js +21 -41
- package/components/Copyright/Copyright.js.map +7 -0
- package/components/Copyright/index.js +1 -0
- package/components/Copyright/index.js.map +7 -0
- package/components/FeatureExportButton/FeatureExportButton.js +80 -0
- package/components/FeatureExportButton/FeatureExportButton.js.map +7 -0
- package/components/FeatureExportButton/index.js +1 -0
- package/components/FeatureExportButton/index.js.map +7 -0
- package/{src/components → components}/FitExtent/FitExtent.js +16 -30
- package/components/FitExtent/FitExtent.js.map +7 -0
- package/components/FitExtent/index.js +1 -0
- package/components/FitExtent/index.js.map +7 -0
- package/{src/components → components}/Geolocation/Geolocation.js +60 -110
- package/components/Geolocation/Geolocation.js.map +7 -0
- package/components/Geolocation/index.js +1 -0
- package/components/Geolocation/index.js.map +7 -0
- package/{src/components → components}/LayerTree/LayerTree.js +113 -213
- package/components/LayerTree/LayerTree.js.map +7 -0
- package/components/LayerTree/index.js +1 -0
- package/components/LayerTree/index.js.map +7 -0
- package/{src/components → components}/MousePosition/MousePosition.js +37 -70
- package/components/MousePosition/MousePosition.js.map +7 -0
- package/components/MousePosition/index.js +1 -0
- package/components/MousePosition/index.js.map +7 -0
- package/{src/components → components}/NorthArrow/NorthArrow.js +18 -34
- package/components/NorthArrow/NorthArrow.js.map +7 -0
- package/components/NorthArrow/index.js +1 -0
- package/components/NorthArrow/index.js.map +7 -0
- package/{src/components → components}/Overlay/Overlay.js +59 -85
- package/components/Overlay/Overlay.js.map +7 -0
- package/components/Overlay/index.js +1 -0
- package/components/Overlay/index.js.map +7 -0
- package/{src/components → components}/Permalink/Permalink.js +64 -147
- package/components/Permalink/Permalink.js.map +7 -0
- package/components/Permalink/index.js +1 -0
- package/components/Permalink/index.js.map +7 -0
- package/{src/components → components}/Popup/Popup.js +57 -116
- package/components/Popup/Popup.js.map +7 -0
- package/components/Popup/index.js +1 -0
- package/components/Popup/index.js.map +7 -0
- package/{src/components → components}/ResizeHandler/ResizeHandler.js +15 -49
- package/components/ResizeHandler/ResizeHandler.js.map +7 -0
- package/components/ResizeHandler/index.js +1 -0
- package/components/ResizeHandler/index.js.map +7 -0
- package/components/RouteSchedule/RouteSchedule.js +268 -0
- package/components/RouteSchedule/RouteSchedule.js.map +7 -0
- package/components/RouteSchedule/index.js +1 -0
- package/components/RouteSchedule/index.js.map +7 -0
- package/{src/components → components}/ScaleLine/ScaleLine.js +8 -23
- package/components/ScaleLine/ScaleLine.js.map +7 -0
- package/components/ScaleLine/index.js +1 -0
- package/components/ScaleLine/index.js.map +7 -0
- package/{src/components → components}/StopsFinder/StopsFinder.js +74 -103
- package/components/StopsFinder/StopsFinder.js.map +7 -0
- package/components/StopsFinder/StopsFinderOption.js +44 -0
- package/components/StopsFinder/StopsFinderOption.js.map +7 -0
- package/components/StopsFinder/index.js +1 -0
- package/components/StopsFinder/index.js.map +7 -0
- package/{src/components → components}/Zoom/Zoom.js +46 -77
- package/components/Zoom/Zoom.js.map +7 -0
- package/components/Zoom/index.js +1 -0
- package/components/Zoom/index.js.map +7 -0
- package/package.json +32 -31
- package/{src/propTypes.js → propTypes.js} +30 -16
- package/propTypes.js.map +7 -0
- package/{src/setupTests.js → setupTests.js} +1 -1
- package/setupTests.js.map +7 -0
- package/utils/GlobalsForOle.js +94 -0
- package/utils/GlobalsForOle.js.map +7 -0
- package/utils/KML.js +420 -0
- package/utils/KML.js.map +7 -0
- package/{src/utils → utils}/KMLFormat.js +29 -32
- package/utils/KMLFormat.js.map +7 -0
- package/{src/utils → utils}/Styles.js +14 -20
- package/utils/Styles.js.map +7 -0
- package/{src/utils → utils}/getPolygonPattern.js +6 -34
- package/utils/getPolygonPattern.js.map +7 -0
- package/{src/utils → utils}/timeUtils.js +5 -22
- package/utils/timeUtils.js.map +7 -0
- package/.github/workflows/conventional-pr-title.yml +0 -21
- package/.github/workflows/main.yml +0 -28
- package/.husky/commit-msg +0 -4
- package/.husky/post-checkout +0 -4
- package/.husky/post-merge +0 -4
- package/.husky/post-rebase +0 -4
- package/.husky/pre-commit +0 -4
- package/.nvmrc +0 -1
- package/.whitesource +0 -8
- package/CHANGELOG.md +0 -65
- package/DEVELOP.md +0 -113
- package/__mocks__/mapbox-gl.js +0 -11
- package/__mocks__/resize-observer-polyfill.js +0 -9
- package/babel.config.js +0 -3
- package/commitlint.config.js +0 -1
- package/data/topic1.js +0 -119
- package/data/topic2.js +0 -28
- package/doc/README.md +0 -21
- package/doc/doc-config.json +0 -4
- package/pull_request_template.md +0 -16
- package/renovate.json +0 -4
- package/scripts/read-pkg-json.js +0 -17
- package/src/components/BaseLayerSwitcher/BaseLayerSwitcher.js +0 -322
- package/src/components/BaseLayerSwitcher/BaseLayerSwitcher.test.js +0 -69
- package/src/components/BaseLayerSwitcher/README.md +0 -61
- package/src/components/BaseLayerSwitcher/__snapshots__/BaseLayerSwitcher.test.js.snap +0 -88
- package/src/components/BaseLayerSwitcher/index.js +0 -1
- package/src/components/BasicMap/BasicMap.test.js +0 -281
- package/src/components/BasicMap/README.md +0 -18
- package/src/components/BasicMap/index.js +0 -1
- package/src/components/CanvasSaveButton/CanvasSaveButton.test.js +0 -148
- package/src/components/CanvasSaveButton/README.md +0 -76
- package/src/components/CanvasSaveButton/__snapshots__/CanvasSaveButton.test.js.snap +0 -76
- package/src/components/CanvasSaveButton/index.js +0 -1
- package/src/components/Copyright/Copyright.test.js +0 -134
- package/src/components/Copyright/README.md +0 -36
- package/src/components/Copyright/index.js +0 -1
- package/src/components/FeatureExportButton/FeatureExportButton.js +0 -118
- package/src/components/FeatureExportButton/FeatureExportButton.test.js +0 -417
- package/src/components/FeatureExportButton/README.md +0 -76
- package/src/components/FeatureExportButton/__snapshots__/FeatureExportButton.test.js.snap +0 -67
- package/src/components/FeatureExportButton/index.js +0 -1
- package/src/components/FitExtent/FitExtent.test.js +0 -48
- package/src/components/FitExtent/README.md +0 -34
- package/src/components/FitExtent/__snapshots__/FitExtent.test.js.snap +0 -13
- package/src/components/FitExtent/index.js +0 -1
- package/src/components/Geolocation/Geolocation.test.js +0 -267
- package/src/components/Geolocation/README.md +0 -25
- package/src/components/Geolocation/__snapshots__/Geolocation.test.js.snap +0 -92
- package/src/components/Geolocation/index.js +0 -1
- package/src/components/LayerTree/LayerTree.test.js +0 -337
- package/src/components/LayerTree/README.md +0 -92
- package/src/components/LayerTree/__snapshots__/LayerTree.test.js.snap +0 -1746
- package/src/components/LayerTree/index.js +0 -1
- package/src/components/MousePosition/MousePosition.test.js +0 -132
- package/src/components/MousePosition/README.md +0 -50
- package/src/components/MousePosition/__snapshots__/MousePosition.test.js.snap +0 -76
- package/src/components/MousePosition/index.js +0 -1
- package/src/components/NorthArrow/NorthArrow.test.js +0 -104
- package/src/components/NorthArrow/README.md +0 -59
- package/src/components/NorthArrow/__snapshots__/NorthArrow.test.js.snap +0 -117
- package/src/components/NorthArrow/index.js +0 -1
- package/src/components/Overlay/Overlay.test.js +0 -149
- package/src/components/Overlay/README.md +0 -59
- package/src/components/Overlay/__snapshots__/Overlay.test.js.snap +0 -9
- package/src/components/Overlay/index.js +0 -1
- package/src/components/Permalink/Permalink.test.js +0 -285
- package/src/components/Permalink/README.md +0 -105
- package/src/components/Permalink/index.js +0 -1
- package/src/components/Popup/Popup.test.js +0 -307
- package/src/components/Popup/README.md +0 -93
- package/src/components/Popup/__snapshots__/Popup.test.js.snap +0 -180
- package/src/components/Popup/index.js +0 -1
- package/src/components/README.md +0 -41
- package/src/components/ResizeHandler/ResizeHandler.test.js +0 -344
- package/src/components/ResizeHandler/index.js +0 -1
- package/src/components/RouteSchedule/README.md +0 -118
- package/src/components/RouteSchedule/RouteSchedule.js +0 -370
- package/src/components/RouteSchedule/RouteSchedule.test.js +0 -113
- package/src/components/RouteSchedule/__snapshots__/RouteSchedule.test.js.snap +0 -248
- package/src/components/RouteSchedule/index.js +0 -1
- package/src/components/ScaleLine/README.md +0 -29
- package/src/components/ScaleLine/ScaleLine.test.js +0 -30
- package/src/components/ScaleLine/__snapshots__/ScaleLine.test.js.snap +0 -7
- package/src/components/ScaleLine/index.js +0 -1
- package/src/components/StopsFinder/README.md +0 -50
- package/src/components/StopsFinder/StopsFinder.test.js +0 -17
- package/src/components/StopsFinder/StopsFinderOption.js +0 -61
- package/src/components/StopsFinder/__snapshots__/StopsFinder.test.js.snap +0 -133
- package/src/components/StopsFinder/index.js +0 -1
- package/src/components/Zoom/README.md +0 -25
- package/src/components/Zoom/Zoom.test.js +0 -141
- package/src/components/Zoom/__snapshots__/Zoom.test.js.snap +0 -201
- package/src/components/Zoom/index.js +0 -1
- package/src/styleguidist/ComponentsList.js +0 -52
- package/src/styleguidist/StyleGuide.js +0 -277
- package/src/styleguidist/styleguidist.css +0 -38
- package/src/utils/GlobalsForOle.js +0 -99
- package/src/utils/KML.js +0 -594
- package/src/utils/KML.test.js +0 -337
- package/src/utils/KMLFormat.test.js +0 -50
- package/src/utils/__snapshots__/KML.test.js.snap.KML-readFeatures()-and-writeFeatures()-should-read-and-write-lineDash-and-fillPattern-style-for-polygon.canvas-image.png +0 -0
- package/src/utils/__snapshots__/getPolygonPattern.test.js.snap.getPolygonPattern()-render-pattern-2-(cross)-color-and-(light-blue)-opacity.canvas-image.png +0 -0
- package/src/utils/__snapshots__/getPolygonPattern.test.js.snap.getPolygonPattern()-render-pattern-3-(diagonal-line-from-bottom-left-tot-top-right)-with-color-(light-blue)-and-opacity.canvas-image.png +0 -0
- package/src/utils/__snapshots__/getPolygonPattern.test.js.snap.getPolygonPattern()-render-pattern-4-(diagonal-line-from-top-left-to-bottom-right)-with-color-(light-blue)-and-opacity.canvas-image.png +0 -0
- package/src/utils/getPolygonPattern.test.js +0 -61
- package/src/utils/timeUtils.test.js +0 -30
- package/styleguide.config.js +0 -251
- /package/{src/components → components}/BaseLayerSwitcher/BaseLayerSwitcher.md.scss +0 -0
- /package/{src/components → components}/BaseLayerSwitcher/BaseLayerSwitcher.scss +0 -0
- /package/{src/components → components}/BasicMap/BasicMap.md.scss +0 -0
- /package/{src/components → components}/CanvasSaveButton/CanvasSaveButton.md.scss +0 -0
- /package/{src/components → components}/Copyright/Copyright.md.scss +0 -0
- /package/{src/components → components}/FeatureExportButton/FeatureExportButton.md.scss +0 -0
- /package/{src/components → components}/FitExtent/FitExtent.md.scss +0 -0
- /package/{src/components → components}/Geolocation/Geolocation.md.scss +0 -0
- /package/{src/components → components}/Geolocation/Geolocation.scss +0 -0
- /package/{src/components → components}/LayerTree/LayerTree.md.scss +0 -0
- /package/{src/components → components}/LayerTree/LayerTree.scss +0 -0
- /package/{src/components → components}/MousePosition/MousePosition.md.scss +0 -0
- /package/{src/components → components}/NorthArrow/NorthArrow.scss +0 -0
- /package/{src/components → components}/Overlay/Overlay.md.scss +0 -0
- /package/{src/components → components}/Overlay/Overlay.scss +0 -0
- /package/{src/components → components}/Permalink/Permalink.md.scss +0 -0
- /package/{src/components → components}/Popup/Popup.md.scss +0 -0
- /package/{src/components → components}/Popup/Popup.scss +0 -0
- /package/{src/components → components}/RouteSchedule/RouteSchedule.md.scss +0 -0
- /package/{src/components → components}/RouteSchedule/RouteSchedule.scss +0 -0
- /package/{src/components → components}/ScaleLine/ScaleLine.scss +0 -0
- /package/{src/components → components}/Zoom/Zoom.md.scss +0 -0
- /package/{src/components → components}/Zoom/Zoom.scss +0 -0
- /package/{src/images → images}/RouteSchedule/firstStation.png +0 -0
- /package/{src/images → images}/RouteSchedule/lastStation.png +0 -0
- /package/{src/images → images}/RouteSchedule/line.png +0 -0
- /package/{src/images → images}/RouteSchedule/station.png +0 -0
- /package/{src/images → images}/baselayer/baselayer.basebright.png +0 -0
- /package/{src/images → images}/baselayer/baselayer.osm.png +0 -0
- /package/{src/images → images}/baselayer/baselayer.travic.png +0 -0
- /package/{src/images → images}/baselayer/open.topo.map.png +0 -0
- /package/{src/images → images}/baselayer/osm.baselayer.hot.png +0 -0
- /package/{src/images → images}/baselayer/osm.baselayer.png +0 -0
- /package/{src/images → images}/favicon.png +0 -0
- /package/{src/images → images}/geops_logo.png +0 -0
- /package/{src/images → images}/geops_logo.svg +0 -0
- /package/{src/images → images}/geops_qr.png +0 -0
- /package/{src/images → images}/mots/bus_poi-blue-01.svg +0 -0
- /package/{src/images → images}/mots/bus_poi-grey-01.svg +0 -0
- /package/{src/images → images}/mots/bus_round-blue-01.svg +0 -0
- /package/{src/images → images}/mots/bus_round-grey-01.svg +0 -0
- /package/{src/images → images}/mots/bus_square-blue-01.svg +0 -0
- /package/{src/images → images}/mots/bus_square-grey-01.svg +0 -0
- /package/{src/images → images}/mots/cable_car_poi-blue-01.svg +0 -0
- /package/{src/images → images}/mots/cable_car_poi-grey-01.svg +0 -0
- /package/{src/images → images}/mots/cable_car_round-blue-01.svg +0 -0
- /package/{src/images → images}/mots/cable_car_round-grey-01.svg +0 -0
- /package/{src/images → images}/mots/cable_car_square-blue-01.svg +0 -0
- /package/{src/images → images}/mots/cable_car_square-grey-01.svg +0 -0
- /package/{src/images → images}/mots/ferry_poi-blue-01.svg +0 -0
- /package/{src/images → images}/mots/ferry_poi-grey-01.svg +0 -0
- /package/{src/images → images}/mots/ferry_round-blue-01.svg +0 -0
- /package/{src/images → images}/mots/ferry_round-grey-01.svg +0 -0
- /package/{src/images → images}/mots/ferry_square-blue-01.svg +0 -0
- /package/{src/images → images}/mots/ferry_square-grey-01.svg +0 -0
- /package/{src/images → images}/mots/funicular_round-blue-01.svg +0 -0
- /package/{src/images → images}/mots/funicular_round-grey-01.svg +0 -0
- /package/{src/images → images}/mots/funicular_square-blue-01.svg +0 -0
- /package/{src/images → images}/mots/gondola_round-blue-01.svg +0 -0
- /package/{src/images → images}/mots/rail_poi-blue-01.svg +0 -0
- /package/{src/images → images}/mots/rail_poi-grey-01.svg +0 -0
- /package/{src/images → images}/mots/rail_round-blue-01.svg +0 -0
- /package/{src/images → images}/mots/rail_round-grey-01.svg +0 -0
- /package/{src/images → images}/mots/rail_square-blue-01.svg +0 -0
- /package/{src/images → images}/mots/rail_square-grey-01.svg +0 -0
- /package/{src/images → images}/mots/subway_round blue-01.svg +0 -0
- /package/{src/images → images}/mots/subway_round-blue-01.svg +0 -0
- /package/{src/images → images}/mots/tram_poi-blue-01.svg +0 -0
- /package/{src/images → images}/mots/tram_poi-grey-01.svg +0 -0
- /package/{src/images → images}/mots/tram_round-blue-01.svg +0 -0
- /package/{src/images → images}/mots/tram_round-grey-01.svg +0 -0
- /package/{src/images → images}/mots/tram_square-blue-01.svg +0 -0
- /package/{src/images → images}/mots/tram_square-grey-01.svg +0 -0
- /package/{src/images → images}/northArrow.svg +0 -0
- /package/{src/images → images}/northArrow.url.svg +0 -0
- /package/{src/images → images}/northArrowCircle.svg +0 -0
- /package/{src/images → images}/northArrowCircle.url.svg +0 -0
- /package/{src/themes → themes}/README.md +0 -0
- /package/{src/themes → themes}/default/components.scss +0 -0
- /package/{src/themes → themes}/default/examples.scss +0 -0
- /package/{src/themes → themes}/default/index.scss +0 -0
- /package/{src/themes → themes}/default/mixins.scss +0 -0
- /package/{src/themes → themes}/default/variables.scss +0 -0
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`BaseLayerSwitcher matches snapshots using default properties. 1`] = `
|
|
4
|
-
<div class="rs-base-layer-switcher">
|
|
5
|
-
<div class="rs-base-layer-switcher-button rs-opener"
|
|
6
|
-
role="button"
|
|
7
|
-
title="Open Baselayer-Switcher"
|
|
8
|
-
aria-label="Open Baselayer-Switcher"
|
|
9
|
-
style="background-image: url(bar); background-size: cover; background-repeat: no-repeat; background-position: center;"
|
|
10
|
-
tabindex="0"
|
|
11
|
-
>
|
|
12
|
-
<div class="rs-base-layer-switcher-title">
|
|
13
|
-
Base layers
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
16
|
-
<div class="rs-base-layer-switcher-btn-wrapper"
|
|
17
|
-
style="overflow: hidden; z-index: 3;"
|
|
18
|
-
>
|
|
19
|
-
<div class="rs-base-layer-switcher-button"
|
|
20
|
-
role="button"
|
|
21
|
-
title="bl1"
|
|
22
|
-
aria-label="bl1"
|
|
23
|
-
tabindex="-1"
|
|
24
|
-
>
|
|
25
|
-
<div class="rs-base-layer-switcher-title rs-active">
|
|
26
|
-
bl1
|
|
27
|
-
</div>
|
|
28
|
-
<span class="rs-alt-text">
|
|
29
|
-
Source not found
|
|
30
|
-
</span>
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
<div class="rs-base-layer-switcher-btn-wrapper"
|
|
34
|
-
style="overflow: hidden; z-index: 2;"
|
|
35
|
-
>
|
|
36
|
-
<div class="rs-base-layer-switcher-button"
|
|
37
|
-
role="button"
|
|
38
|
-
title="bl2"
|
|
39
|
-
aria-label="bl2"
|
|
40
|
-
tabindex="-1"
|
|
41
|
-
>
|
|
42
|
-
<div class="rs-base-layer-switcher-title">
|
|
43
|
-
bl2
|
|
44
|
-
</div>
|
|
45
|
-
<span class="rs-alt-text">
|
|
46
|
-
Source not found
|
|
47
|
-
</span>
|
|
48
|
-
</div>
|
|
49
|
-
</div>
|
|
50
|
-
<div class="rs-base-layer-switcher-btn-wrapper"
|
|
51
|
-
style="overflow: hidden; z-index: 1;"
|
|
52
|
-
>
|
|
53
|
-
<div class="rs-base-layer-switcher-button"
|
|
54
|
-
role="button"
|
|
55
|
-
title="bl3"
|
|
56
|
-
aria-label="bl3"
|
|
57
|
-
tabindex="-1"
|
|
58
|
-
>
|
|
59
|
-
<div class="rs-base-layer-switcher-title">
|
|
60
|
-
bl3
|
|
61
|
-
</div>
|
|
62
|
-
<span class="rs-alt-text">
|
|
63
|
-
Source not found
|
|
64
|
-
</span>
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
<div class="rs-base-layer-switcher-btn-wrapper">
|
|
68
|
-
<div class="rs-base-layer-switcher-close-btn"
|
|
69
|
-
role="button"
|
|
70
|
-
tabindex="-1"
|
|
71
|
-
aria-label="Close Baselayer-Switcher"
|
|
72
|
-
title="Close Baselayer-Switcher"
|
|
73
|
-
>
|
|
74
|
-
<svg stroke="currentColor"
|
|
75
|
-
fill="currentColor"
|
|
76
|
-
stroke-width="0"
|
|
77
|
-
viewbox="0 0 320 512"
|
|
78
|
-
height="1em"
|
|
79
|
-
width="1em"
|
|
80
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
81
|
-
>
|
|
82
|
-
<path d="M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z">
|
|
83
|
-
</path>
|
|
84
|
-
</svg>
|
|
85
|
-
</div>
|
|
86
|
-
</div>
|
|
87
|
-
</div>
|
|
88
|
-
`;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from './BaseLayerSwitcher';
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
import 'jest-canvas-mock';
|
|
2
|
-
import proj4 from 'proj4';
|
|
3
|
-
import { register } from 'ol/proj/proj4';
|
|
4
|
-
import React from 'react';
|
|
5
|
-
import ResizeObserver from 'resize-observer-polyfill';
|
|
6
|
-
import { Layer } from 'mobility-toolbox-js/ol';
|
|
7
|
-
import MapEvent from 'ol/MapEvent';
|
|
8
|
-
import OLLayer from 'ol/layer/Vector';
|
|
9
|
-
import OLMap from 'ol/Map';
|
|
10
|
-
import OLView from 'ol/View';
|
|
11
|
-
import { render } from '@testing-library/react';
|
|
12
|
-
import BasicMap from './BasicMap';
|
|
13
|
-
|
|
14
|
-
proj4.defs(
|
|
15
|
-
'EPSG:21781',
|
|
16
|
-
'+proj=somerc +lat_0=46.95240555555556 ' +
|
|
17
|
-
'+lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel ' +
|
|
18
|
-
'+towgs84=674.4,15.1,405.3,0,0,0,0 +units=m +no_defs',
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
register(proj4);
|
|
22
|
-
|
|
23
|
-
const extent = [0, 0, 1000, 1000];
|
|
24
|
-
const olLayers = [
|
|
25
|
-
new Layer({
|
|
26
|
-
name: 'foo',
|
|
27
|
-
olLayer: new OLLayer({}),
|
|
28
|
-
visible: true,
|
|
29
|
-
}),
|
|
30
|
-
];
|
|
31
|
-
|
|
32
|
-
describe('BasicMap', () => {
|
|
33
|
-
let olMap;
|
|
34
|
-
beforeEach(() => {
|
|
35
|
-
const olView = new OLView();
|
|
36
|
-
olMap = new OLMap({ view: olView });
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
test('should be rendered', () => {
|
|
40
|
-
const setTarget = jest.spyOn(olMap, 'setTarget');
|
|
41
|
-
render(<BasicMap map={olMap} />);
|
|
42
|
-
expect(setTarget).toHaveBeenCalled();
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
test('should be rendered with touchAction to none', () => {
|
|
46
|
-
render(<BasicMap map={olMap} />);
|
|
47
|
-
expect(olMap.getViewport().style.touchAction).toBe('none');
|
|
48
|
-
expect(olMap.getViewport().style.msTouchAction).toBe('none');
|
|
49
|
-
expect(olMap.getViewport().getAttribute('touch-action')).toBe('none');
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
test('uses onMapMoved function', () => {
|
|
53
|
-
const spy = jest.fn(() => {});
|
|
54
|
-
const spy2 = jest.fn();
|
|
55
|
-
const evt = new MapEvent('moveend', olMap);
|
|
56
|
-
|
|
57
|
-
// Test componentDidMount
|
|
58
|
-
const { rerender } = render(<BasicMap map={olMap} onMapMoved={spy} />);
|
|
59
|
-
olMap.dispatchEvent(evt);
|
|
60
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
61
|
-
expect(spy).toHaveBeenCalledWith(evt);
|
|
62
|
-
|
|
63
|
-
// Test componentDidUpdate
|
|
64
|
-
rerender(<BasicMap map={olMap} onMapMoved={spy2} />);
|
|
65
|
-
olMap.dispatchEvent(evt);
|
|
66
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
67
|
-
expect(spy2).toHaveBeenCalledTimes(1);
|
|
68
|
-
expect(spy2).toHaveBeenCalledWith(evt);
|
|
69
|
-
|
|
70
|
-
// Test componentDidUpdate
|
|
71
|
-
rerender(<BasicMap map={olMap} onMapMoved={null} />);
|
|
72
|
-
olMap.dispatchEvent(evt);
|
|
73
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
74
|
-
expect(spy2).toHaveBeenCalledTimes(1);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
test('uses onFeaturesClick function', () => {
|
|
78
|
-
const spy = jest.fn();
|
|
79
|
-
const spy2 = jest.fn();
|
|
80
|
-
const evt = new MapEvent('singleclick', olMap);
|
|
81
|
-
|
|
82
|
-
// Test componentDidMount
|
|
83
|
-
const { rerender } = render(<BasicMap map={olMap} onFeaturesClick={spy} />);
|
|
84
|
-
olMap.dispatchEvent(evt);
|
|
85
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
86
|
-
expect(spy).toHaveBeenCalledWith([], evt);
|
|
87
|
-
|
|
88
|
-
// Test componentDidUpdate
|
|
89
|
-
rerender(<BasicMap map={olMap} onFeaturesClick={spy2} />);
|
|
90
|
-
olMap.dispatchEvent(evt);
|
|
91
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
92
|
-
expect(spy2).toHaveBeenCalledTimes(1);
|
|
93
|
-
expect(spy2).toHaveBeenCalledWith([], evt);
|
|
94
|
-
|
|
95
|
-
// Test componentDidUpdate
|
|
96
|
-
rerender(<BasicMap map={olMap} onFeaturesClick={null} />);
|
|
97
|
-
olMap.dispatchEvent(evt);
|
|
98
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
99
|
-
expect(spy2).toHaveBeenCalledTimes(1);
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
test('uses onFeaturesHover function', () => {
|
|
103
|
-
const spy = jest.fn();
|
|
104
|
-
const spy2 = jest.fn();
|
|
105
|
-
const evt = new MapEvent('pointermove', olMap);
|
|
106
|
-
|
|
107
|
-
// Test componentDidMount
|
|
108
|
-
const { rerender } = render(
|
|
109
|
-
<BasicMap map={olMap} onFeaturesHover={spy} />,
|
|
110
|
-
{
|
|
111
|
-
lifecycleExperimental: true,
|
|
112
|
-
},
|
|
113
|
-
);
|
|
114
|
-
olMap.dispatchEvent(evt);
|
|
115
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
116
|
-
expect(spy).toHaveBeenCalledWith([], evt);
|
|
117
|
-
|
|
118
|
-
// Test componentDidUpdate
|
|
119
|
-
rerender(<BasicMap map={olMap} onFeaturesHover={spy2} />);
|
|
120
|
-
olMap.dispatchEvent(evt);
|
|
121
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
122
|
-
expect(spy2).toHaveBeenCalledTimes(1);
|
|
123
|
-
expect(spy2).toHaveBeenCalledWith([], evt);
|
|
124
|
-
|
|
125
|
-
// Test componentDidUpdate
|
|
126
|
-
rerender(<BasicMap map={olMap} onFeaturesHover={null} />);
|
|
127
|
-
olMap.dispatchEvent(evt);
|
|
128
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
129
|
-
expect(spy2).toHaveBeenCalledTimes(1);
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
test('should be rendered with a default map', () => {
|
|
133
|
-
const { container } = render(<BasicMap />);
|
|
134
|
-
expect(!!container.querySelector('.ol-viewport')).toBe(true);
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
test('should be rendered with layers and an extent', () => {
|
|
138
|
-
render(
|
|
139
|
-
<BasicMap
|
|
140
|
-
map={olMap}
|
|
141
|
-
layers={olLayers}
|
|
142
|
-
extent={extent}
|
|
143
|
-
viewOptions={{
|
|
144
|
-
minZoom: 16,
|
|
145
|
-
maxZoom: 22,
|
|
146
|
-
projection: 'EPSG:21781',
|
|
147
|
-
}}
|
|
148
|
-
/>,
|
|
149
|
-
);
|
|
150
|
-
expect(olMap.getLayers().getLength()).toBe(1);
|
|
151
|
-
expect(olMap.getView().calculateExtent()).toEqual([
|
|
152
|
-
380.70084231351245, 380.70084231351245, 619.2991576864875,
|
|
153
|
-
619.2991576864875,
|
|
154
|
-
]);
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
test('center shoud be set', () => {
|
|
158
|
-
const { rerender } = render(<BasicMap map={olMap} />);
|
|
159
|
-
const setCenter = jest.spyOn(olMap.getView(), 'setCenter');
|
|
160
|
-
rerender(<BasicMap map={olMap} center={[0, 0]} />);
|
|
161
|
-
expect(setCenter).toHaveBeenCalled();
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
test('zoom shoud be set', () => {
|
|
165
|
-
const { rerender } = render(<BasicMap map={olMap} zoom={5} />);
|
|
166
|
-
expect(olMap.getView().getZoom()).toBe(5);
|
|
167
|
-
rerender(<BasicMap map={olMap} zoom={2} />);
|
|
168
|
-
expect(olMap.getView().getZoom()).toBe(2);
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
test('resolution shoud be set', () => {
|
|
172
|
-
const { rerender } = render(<BasicMap map={olMap} resolution={100} />);
|
|
173
|
-
expect(olMap.getView().getResolution()).toBe(100);
|
|
174
|
-
rerender(<BasicMap map={olMap} resolution={5} />);
|
|
175
|
-
expect(olMap.getView().getResolution()).toBe(5);
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
test('animation shoud be set', () => {
|
|
179
|
-
const obj = {
|
|
180
|
-
zoom: 4,
|
|
181
|
-
};
|
|
182
|
-
const { rerender } = render(<BasicMap map={olMap} />);
|
|
183
|
-
const spy = jest.spyOn(olMap.getView(), 'animate');
|
|
184
|
-
rerender(<BasicMap map={olMap} animationOptions={obj} />);
|
|
185
|
-
expect(spy).toHaveBeenCalledWith(obj);
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
test('layers shoud be updated', () => {
|
|
189
|
-
const addLayer = jest.spyOn(olMap, 'addLayer');
|
|
190
|
-
const { rerender } = render(<BasicMap map={olMap} />);
|
|
191
|
-
const layer = new Layer({ name: 'test', olLayer: new OLLayer() });
|
|
192
|
-
rerender(<BasicMap map={olMap} layers={[layer]} />);
|
|
193
|
-
expect(addLayer).toHaveBeenCalled();
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
test('should be fitted if extent is updated', () => {
|
|
197
|
-
const fitExtent = jest.spyOn(OLView.prototype, 'fit');
|
|
198
|
-
const { rerender } = render(<BasicMap map={olMap} />);
|
|
199
|
-
rerender(<BasicMap map={olMap} extent={[1, 2, 3, 4]} />);
|
|
200
|
-
expect(fitExtent).toHaveBeenCalled();
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
test('should be zoomed if zoom is updated', () => {
|
|
204
|
-
const setZoom = jest.spyOn(OLView.prototype, 'setZoom');
|
|
205
|
-
const { rerender } = render(<BasicMap map={olMap} />);
|
|
206
|
-
rerender(<BasicMap map={olMap} zoom={15} />);
|
|
207
|
-
expect(setZoom).toHaveBeenCalledWith(15);
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
test('should be observed by ResizeHandler', () => {
|
|
211
|
-
const spy = jest.spyOn(ResizeObserver.prototype, 'observe');
|
|
212
|
-
render(<BasicMap map={olMap} />);
|
|
213
|
-
expect(spy).toHaveBeenCalledWith(olMap.getTargetElement());
|
|
214
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
test('size is updated when div is resized', () => {
|
|
218
|
-
const spy = jest.spyOn(olMap, 'updateSize');
|
|
219
|
-
render(<BasicMap map={olMap} />);
|
|
220
|
-
expect(spy).toHaveBeenCalledTimes(2);
|
|
221
|
-
// The mock class set the onResize property, we just have to run it to
|
|
222
|
-
// simulate a resize
|
|
223
|
-
ResizeObserver.onResize([
|
|
224
|
-
{
|
|
225
|
-
target: olMap.getTargetElement(),
|
|
226
|
-
contentRect: {
|
|
227
|
-
width: 20,
|
|
228
|
-
height: 20,
|
|
229
|
-
},
|
|
230
|
-
},
|
|
231
|
-
]);
|
|
232
|
-
expect(spy).toHaveBeenCalledTimes(3);
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
describe('#setLayers()', () => {
|
|
236
|
-
test('init all layers and terminate al previous layer.', () => {
|
|
237
|
-
const layer0 = new Layer({ key: 'test1' });
|
|
238
|
-
const spyInit0 = jest.spyOn(layer0, 'attachToMap');
|
|
239
|
-
const spyTerminate0 = jest.spyOn(layer0, 'detachFromMap');
|
|
240
|
-
const layer1 = new Layer({ key: 'test1' });
|
|
241
|
-
const spyInit1 = jest.spyOn(layer1, 'attachToMap');
|
|
242
|
-
const spyTerminate1 = jest.spyOn(layer1, 'detachFromMap');
|
|
243
|
-
const layer2 = new Layer({ key: 'test2' });
|
|
244
|
-
const spyInit2 = jest.spyOn(layer2, 'attachToMap');
|
|
245
|
-
const spyTerminate2 = jest.spyOn(layer2, 'detachFromMap');
|
|
246
|
-
const layer3 = new Layer({ key: 'test3' });
|
|
247
|
-
const spyInit3 = jest.spyOn(layer3, 'attachToMap');
|
|
248
|
-
const spyTerminate3 = jest.spyOn(layer3, 'detachFromMap');
|
|
249
|
-
const layer4 = new Layer({ key: 'test4' });
|
|
250
|
-
const spyInit4 = jest.spyOn(layer4, 'attachToMap');
|
|
251
|
-
const spyTerminate4 = jest.spyOn(layer4, 'detachFromMap');
|
|
252
|
-
const startLayers = [layer1, layer3];
|
|
253
|
-
const { rerender } = render(
|
|
254
|
-
<BasicMap map={olMap} layers={startLayers} />,
|
|
255
|
-
);
|
|
256
|
-
expect(spyInit0).toHaveBeenCalledTimes(0);
|
|
257
|
-
expect(spyInit1).toHaveBeenCalledTimes(1);
|
|
258
|
-
expect(spyInit2).toHaveBeenCalledTimes(0);
|
|
259
|
-
expect(spyInit3).toHaveBeenCalledTimes(1);
|
|
260
|
-
expect(spyInit4).toHaveBeenCalledTimes(0);
|
|
261
|
-
expect(spyTerminate0).toHaveBeenCalledTimes(0);
|
|
262
|
-
expect(spyTerminate1).toHaveBeenCalledTimes(1);
|
|
263
|
-
expect(spyTerminate2).toHaveBeenCalledTimes(0);
|
|
264
|
-
expect(spyTerminate3).toHaveBeenCalledTimes(1);
|
|
265
|
-
expect(spyTerminate4).toHaveBeenCalledTimes(0);
|
|
266
|
-
|
|
267
|
-
const layers = [layer0, layer2, layer3, layer4];
|
|
268
|
-
rerender(<BasicMap map={olMap} layers={layers} />);
|
|
269
|
-
expect(spyInit0).toHaveBeenCalledTimes(1);
|
|
270
|
-
expect(spyInit1).toHaveBeenCalledTimes(1);
|
|
271
|
-
expect(spyInit2).toHaveBeenCalledTimes(1);
|
|
272
|
-
expect(spyInit3).toHaveBeenCalledTimes(2);
|
|
273
|
-
expect(spyInit4).toHaveBeenCalledTimes(1);
|
|
274
|
-
expect(spyTerminate0).toHaveBeenCalledTimes(1);
|
|
275
|
-
expect(spyTerminate1).toHaveBeenCalledTimes(2);
|
|
276
|
-
expect(spyTerminate2).toHaveBeenCalledTimes(1);
|
|
277
|
-
expect(spyTerminate3).toHaveBeenCalledTimes(3);
|
|
278
|
-
expect(spyTerminate4).toHaveBeenCalledTimes(1);
|
|
279
|
-
});
|
|
280
|
-
});
|
|
281
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
The following example demonstrates the use of BasicMap.
|
|
3
|
-
|
|
4
|
-
```jsx
|
|
5
|
-
import React from 'react';
|
|
6
|
-
import { MapboxLayer } from 'mobility-toolbox-js/ol';
|
|
7
|
-
import Tile from 'ol/layer/Tile';
|
|
8
|
-
import OSM from 'ol/source/OSM';
|
|
9
|
-
import BasicMap from 'react-spatial/components/BasicMap';
|
|
10
|
-
|
|
11
|
-
const layers = [
|
|
12
|
-
new MapboxLayer({
|
|
13
|
-
url: `https://maps.geops.io/styles/travic_v2/style.json?key=${apiKey}`,
|
|
14
|
-
})
|
|
15
|
-
];
|
|
16
|
-
|
|
17
|
-
<BasicMap layers={layers} tabIndex={0} />;
|
|
18
|
-
```
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from './BasicMap';
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import 'jest-canvas-mock';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import renderer from 'react-test-renderer';
|
|
4
|
-
import { configure, shallow } from 'enzyme';
|
|
5
|
-
import Adapter from '@cfaester/enzyme-adapter-react-18';
|
|
6
|
-
import Map from 'ol/Map';
|
|
7
|
-
import View from 'ol/View';
|
|
8
|
-
import { TiImage } from 'react-icons/ti';
|
|
9
|
-
import RenderEvent from 'ol/render/Event';
|
|
10
|
-
import CanvasSaveButton from './CanvasSaveButton';
|
|
11
|
-
|
|
12
|
-
configure({ adapter: new Adapter() });
|
|
13
|
-
|
|
14
|
-
describe('CanvasSaveButton', () => {
|
|
15
|
-
let olMap;
|
|
16
|
-
const conf = {
|
|
17
|
-
title: 'Karte als Bild speichern.',
|
|
18
|
-
icon: <TiImage focusable={false} />,
|
|
19
|
-
className: 'ta-example',
|
|
20
|
-
saveFormat: 'image/jpeg',
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
beforeEach(() => {
|
|
24
|
-
const target = document.createElement('div');
|
|
25
|
-
document.body.appendChild(target);
|
|
26
|
-
target.style.width = '100px';
|
|
27
|
-
target.style.height = '100px';
|
|
28
|
-
olMap = new Map({
|
|
29
|
-
target,
|
|
30
|
-
controls: [],
|
|
31
|
-
view: new View({
|
|
32
|
-
center: [0, 0],
|
|
33
|
-
zoom: 0,
|
|
34
|
-
}),
|
|
35
|
-
});
|
|
36
|
-
olMap.getView().setCenter([1000, 1000]);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
afterEach(() => {
|
|
40
|
-
if (olMap.getTargetElement()) {
|
|
41
|
-
document.body.removeChild(olMap.getTargetElement());
|
|
42
|
-
}
|
|
43
|
-
olMap.setTarget(null);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
test('should match snapshot.', () => {
|
|
47
|
-
const component = renderer.create(
|
|
48
|
-
<CanvasSaveButton format={conf.saveFormat} map={olMap}>
|
|
49
|
-
{conf.icon}
|
|
50
|
-
</CanvasSaveButton>,
|
|
51
|
-
);
|
|
52
|
-
const tree = component.toJSON();
|
|
53
|
-
expect(tree).toMatchSnapshot();
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
test('should match snapshot with a different attributes', () => {
|
|
57
|
-
const component = renderer.create(
|
|
58
|
-
// eslint-disable-next-line jsx-a11y/tabindex-no-positive
|
|
59
|
-
<CanvasSaveButton title={conf.title} className="foo" tabIndex="1">
|
|
60
|
-
{conf.icon}
|
|
61
|
-
</CanvasSaveButton>,
|
|
62
|
-
);
|
|
63
|
-
const tree = component.toJSON();
|
|
64
|
-
expect(tree).toMatchSnapshot();
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
test('should call onSaveBefore then download then onSaveEnd function on click.', async () => {
|
|
68
|
-
const saveStart = jest.fn((m) => {
|
|
69
|
-
return Promise.resolve(m);
|
|
70
|
-
});
|
|
71
|
-
const saveEnd = jest.fn();
|
|
72
|
-
const wrapper = shallow(
|
|
73
|
-
<CanvasSaveButton
|
|
74
|
-
className="ta-example"
|
|
75
|
-
map={olMap}
|
|
76
|
-
format={conf.saveFormat}
|
|
77
|
-
onSaveStart={saveStart}
|
|
78
|
-
onSaveEnd={saveEnd}
|
|
79
|
-
extraData={{
|
|
80
|
-
copyright: {
|
|
81
|
-
text: () => {
|
|
82
|
-
return (
|
|
83
|
-
'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +
|
|
84
|
-
'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +
|
|
85
|
-
'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +
|
|
86
|
-
'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +
|
|
87
|
-
'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +
|
|
88
|
-
'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)' +
|
|
89
|
-
'contributors, SRTM | map style: © OpenTopoMap (CC-BY-SA)'
|
|
90
|
-
);
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
}}
|
|
94
|
-
>
|
|
95
|
-
{conf.icon}
|
|
96
|
-
</CanvasSaveButton>,
|
|
97
|
-
);
|
|
98
|
-
const link = document.createElement('a');
|
|
99
|
-
link.click = jest.fn();
|
|
100
|
-
const div = document.createElement('div');
|
|
101
|
-
const canvas = document.createElement('canvas');
|
|
102
|
-
canvas.toBlob = jest.fn((callback) => {
|
|
103
|
-
return callback();
|
|
104
|
-
});
|
|
105
|
-
global.URL.createObjectURL = jest.fn(() => {
|
|
106
|
-
return 'fooblob';
|
|
107
|
-
});
|
|
108
|
-
// We use a spy here to be able to correctly restore the initial function
|
|
109
|
-
const spy3 = jest
|
|
110
|
-
.spyOn(global.document, 'createElement')
|
|
111
|
-
.mockImplementation((elt) => {
|
|
112
|
-
if (elt === 'canvas') {
|
|
113
|
-
return canvas;
|
|
114
|
-
}
|
|
115
|
-
if (elt === 'div') {
|
|
116
|
-
return div;
|
|
117
|
-
}
|
|
118
|
-
if (elt === 'a') {
|
|
119
|
-
return link;
|
|
120
|
-
}
|
|
121
|
-
return {};
|
|
122
|
-
});
|
|
123
|
-
const spy = jest.spyOn(CanvasSaveButton.prototype, 'createCanvasImage');
|
|
124
|
-
const spy2 = jest.spyOn(CanvasSaveButton.prototype, 'downloadCanvasImage');
|
|
125
|
-
jest
|
|
126
|
-
.spyOn(olMap.getTargetElement(), 'getElementsByTagName')
|
|
127
|
-
.mockReturnValue([canvas]);
|
|
128
|
-
await wrapper.find('.ta-example').simulate('click');
|
|
129
|
-
await olMap.dispatchEvent(
|
|
130
|
-
new RenderEvent('rendercomplete', undefined, undefined, {
|
|
131
|
-
canvas,
|
|
132
|
-
}),
|
|
133
|
-
);
|
|
134
|
-
await window.setTimeout(() => {
|
|
135
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
136
|
-
expect(saveStart).toHaveBeenCalledTimes(1);
|
|
137
|
-
expect(saveEnd).toHaveBeenCalledTimes(1);
|
|
138
|
-
expect(spy2.mock.calls[0][0]).toBe(canvas);
|
|
139
|
-
expect(spy2.mock.calls[0][0].toBlob).toHaveBeenCalledTimes(1);
|
|
140
|
-
expect(link.href).toBe('http://localhost/fooblob');
|
|
141
|
-
expect(link.download).toBe('.jpg');
|
|
142
|
-
expect(link.click).toHaveBeenCalledTimes(1);
|
|
143
|
-
spy.mockRestore();
|
|
144
|
-
spy2.mockRestore();
|
|
145
|
-
spy3.mockRestore();
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
});
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
The following example demonstrates the use of CanvasSaveButton.
|
|
2
|
-
|
|
3
|
-
```jsx
|
|
4
|
-
import React from 'react';
|
|
5
|
-
import { TiImage } from 'react-icons/ti';
|
|
6
|
-
import { geopsTheme, Header, Footer } from '@geops/geops-ui';
|
|
7
|
-
import { ThemeProvider } from '@material-ui/core/styles';
|
|
8
|
-
import Button from '@material-ui/core/Button';
|
|
9
|
-
import { Layer } from 'mobility-toolbox-js/ol';
|
|
10
|
-
import Tile from 'ol/layer/Tile';
|
|
11
|
-
import OSM from 'ol/source/OSM';
|
|
12
|
-
import Map from 'ol/Map';
|
|
13
|
-
import { toDegrees } from 'ol/math';
|
|
14
|
-
import CanvasSaveButton from 'react-spatial/components/CanvasSaveButton';
|
|
15
|
-
import BasicMap from 'react-spatial/components/BasicMap';
|
|
16
|
-
import geopsLogo from 'react-spatial/images/geops_logo.png';
|
|
17
|
-
import qrCode from 'react-spatial/images/geops_qr.png';
|
|
18
|
-
|
|
19
|
-
const map = new Map({ controls: [] });
|
|
20
|
-
|
|
21
|
-
const layers = [
|
|
22
|
-
new Layer({
|
|
23
|
-
olLayer: new Tile({
|
|
24
|
-
source: new OSM(),
|
|
25
|
-
}),
|
|
26
|
-
copyrights: '© layer-copyright',
|
|
27
|
-
}),
|
|
28
|
-
];
|
|
29
|
-
|
|
30
|
-
function CanvasSaveButtonExample() {
|
|
31
|
-
return (
|
|
32
|
-
<ThemeProvider theme={geopsTheme}>
|
|
33
|
-
<div className="rs-canvas-save-button-example">
|
|
34
|
-
<BasicMap
|
|
35
|
-
map={map}
|
|
36
|
-
layers={layers}
|
|
37
|
-
center={[874105.13, 6106172.77]}
|
|
38
|
-
zoom={10}
|
|
39
|
-
tabIndex={0}
|
|
40
|
-
/>
|
|
41
|
-
<CanvasSaveButton
|
|
42
|
-
map={map}
|
|
43
|
-
extraData={{
|
|
44
|
-
copyright: {
|
|
45
|
-
text: () => {
|
|
46
|
-
return layers[0].copyrights;
|
|
47
|
-
},
|
|
48
|
-
background: true,
|
|
49
|
-
},
|
|
50
|
-
northArrow: {
|
|
51
|
-
rotation: () => {
|
|
52
|
-
return toDegrees(map.getView().getRotation());
|
|
53
|
-
},
|
|
54
|
-
circled: true,
|
|
55
|
-
},
|
|
56
|
-
logo: {
|
|
57
|
-
src: geopsLogo,
|
|
58
|
-
height: 22,
|
|
59
|
-
width: 84,
|
|
60
|
-
},
|
|
61
|
-
qrCode: {
|
|
62
|
-
src: qrCode,
|
|
63
|
-
height: 50,
|
|
64
|
-
width: 50,
|
|
65
|
-
},
|
|
66
|
-
}}
|
|
67
|
-
>
|
|
68
|
-
<Button>Export Map</Button>
|
|
69
|
-
</CanvasSaveButton>
|
|
70
|
-
</div>
|
|
71
|
-
</ThemeProvider>
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
<CanvasSaveButtonExample />;
|
|
76
|
-
```
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`CanvasSaveButton should match snapshot with a different attributes 1`] = `
|
|
4
|
-
<div
|
|
5
|
-
className="foo"
|
|
6
|
-
onClick={[Function]}
|
|
7
|
-
onKeyPress={[Function]}
|
|
8
|
-
role="button"
|
|
9
|
-
tabIndex="1"
|
|
10
|
-
title="Karte als Bild speichern."
|
|
11
|
-
>
|
|
12
|
-
<svg
|
|
13
|
-
baseProfile="tiny"
|
|
14
|
-
fill="currentColor"
|
|
15
|
-
focusable={false}
|
|
16
|
-
height="1em"
|
|
17
|
-
stroke="currentColor"
|
|
18
|
-
strokeWidth="0"
|
|
19
|
-
style={
|
|
20
|
-
{
|
|
21
|
-
"color": undefined,
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
version="1.2"
|
|
25
|
-
viewBox="0 0 24 24"
|
|
26
|
-
width="1em"
|
|
27
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
28
|
-
>
|
|
29
|
-
<circle
|
|
30
|
-
cx="8.5"
|
|
31
|
-
cy="8.5"
|
|
32
|
-
r="2.5"
|
|
33
|
-
/>
|
|
34
|
-
<path
|
|
35
|
-
d="M16 10c-2 0-3 3-4.5 3s-1.499-1-3.5-1c-2 0-3.001 4-3.001 4h14.001s-1-6-3-6zM20 3h-16c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2v-12c0-1.103-.897-2-2-2zm0 14h-16v-12h16v12z"
|
|
36
|
-
/>
|
|
37
|
-
</svg>
|
|
38
|
-
</div>
|
|
39
|
-
`;
|
|
40
|
-
|
|
41
|
-
exports[`CanvasSaveButton should match snapshot. 1`] = `
|
|
42
|
-
<div
|
|
43
|
-
className="rs-canvas-save-button"
|
|
44
|
-
onClick={[Function]}
|
|
45
|
-
onKeyPress={[Function]}
|
|
46
|
-
role="button"
|
|
47
|
-
tabIndex={0}
|
|
48
|
-
>
|
|
49
|
-
<svg
|
|
50
|
-
baseProfile="tiny"
|
|
51
|
-
fill="currentColor"
|
|
52
|
-
focusable={false}
|
|
53
|
-
height="1em"
|
|
54
|
-
stroke="currentColor"
|
|
55
|
-
strokeWidth="0"
|
|
56
|
-
style={
|
|
57
|
-
{
|
|
58
|
-
"color": undefined,
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
version="1.2"
|
|
62
|
-
viewBox="0 0 24 24"
|
|
63
|
-
width="1em"
|
|
64
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
65
|
-
>
|
|
66
|
-
<circle
|
|
67
|
-
cx="8.5"
|
|
68
|
-
cy="8.5"
|
|
69
|
-
r="2.5"
|
|
70
|
-
/>
|
|
71
|
-
<path
|
|
72
|
-
d="M16 10c-2 0-3 3-4.5 3s-1.499-1-3.5-1c-2 0-3.001 4-3.001 4h14.001s-1-6-3-6zM20 3h-16c-1.103 0-2 .897-2 2v12c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2v-12c0-1.103-.897-2-2-2zm0 14h-16v-12h16v12z"
|
|
73
|
-
/>
|
|
74
|
-
</svg>
|
|
75
|
-
</div>
|
|
76
|
-
`;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from './CanvasSaveButton';
|