@mapcomponents/react-maplibre 0.1.61 → 0.1.63

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 (197) hide show
  1. package/.babelrc +21 -2
  2. package/.eslintrc.js +8 -1
  3. package/.storybook/main.js +0 -1
  4. package/.storybook/preview.js +0 -2
  5. package/CHANGELOG.md +23 -0
  6. package/coverage/clover.xml +265 -89
  7. package/coverage/coverage-final.json +14 -6
  8. package/coverage/lcov-report/favicon.png +0 -0
  9. package/coverage/lcov-report/index.html +84 -39
  10. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  11. package/coverage/lcov-report/src/components/MapLibreMap/MapLibreMap.tsx.html +1 -1
  12. package/coverage/lcov-report/src/components/MapLibreMap/index.html +1 -1
  13. package/coverage/lcov-report/src/components/MlCenterPosition/MlCenterPosition.tsx.html +1 -1
  14. package/coverage/lcov-report/src/components/MlCenterPosition/index.html +1 -1
  15. package/coverage/lcov-report/src/components/MlCreatePdfButton/MlCreatePdfButton.tsx.html +1 -1
  16. package/coverage/lcov-report/src/components/MlCreatePdfButton/index.html +1 -1
  17. package/coverage/lcov-report/src/components/MlCreatePdfForm/MlCreatePdfForm.cy.tsx.html +148 -0
  18. package/coverage/lcov-report/src/components/MlCreatePdfForm/MlCreatePdfForm.tsx.html +2 -8
  19. package/coverage/lcov-report/src/components/MlCreatePdfForm/index.html +22 -7
  20. package/coverage/lcov-report/src/components/MlFeatureEditor/MlFeatureEditor.tsx.html +73 -40
  21. package/coverage/lcov-report/src/components/MlFeatureEditor/index.html +15 -15
  22. package/coverage/lcov-report/src/components/MlFillExtrusionLayer/MlFillExtrusionLayer.tsx.html +1 -1
  23. package/coverage/lcov-report/src/components/MlFillExtrusionLayer/index.html +1 -1
  24. package/coverage/lcov-report/src/components/MlFollowGps/MlFollowGps.tsx.html +1 -1
  25. package/coverage/lcov-report/src/components/MlFollowGps/index.html +1 -1
  26. package/coverage/lcov-report/src/components/MlGPXViewer/MlGPXViewer.tsx.html +9 -3
  27. package/coverage/lcov-report/src/components/MlGPXViewer/gpxConverter.js.html +1 -1
  28. package/coverage/lcov-report/src/components/MlGPXViewer/index.html +1 -1
  29. package/coverage/lcov-report/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx.html +59 -29
  30. package/coverage/lcov-report/src/components/MlGeoJsonLayer/index.html +1 -1
  31. package/coverage/lcov-report/src/components/MlGeoJsonLayer/story_utils/MlGeoJsonLayer.lineStyler.js.html +652 -0
  32. package/coverage/lcov-report/src/components/MlGeoJsonLayer/story_utils/MlGeoJsonLayer.polygonStyler.js.html +649 -0
  33. package/coverage/lcov-report/src/components/MlGeoJsonLayer/story_utils/index.html +131 -0
  34. package/coverage/lcov-report/src/components/MlGeojsonLayerWithSource/MlGeojsonLayerWithSource.tsx.html +1 -1
  35. package/coverage/lcov-report/src/components/MlGeojsonLayerWithSource/index.html +1 -1
  36. package/coverage/lcov-report/src/components/MlImageMarkerLayer/MlImageMarkerLayer.tsx.html +1 -1
  37. package/coverage/lcov-report/src/components/MlImageMarkerLayer/index.html +1 -1
  38. package/coverage/lcov-report/src/components/MlLayer/MlLayer.tsx.html +1 -1
  39. package/coverage/lcov-report/src/components/MlLayer/index.html +1 -1
  40. package/coverage/lcov-report/src/components/MlLayerMagnify/MlLayerMagnify.tsx.html +1 -1
  41. package/coverage/lcov-report/src/components/MlLayerMagnify/index.html +1 -1
  42. package/coverage/lcov-report/src/components/MlLayerSwipe/MlLayerSwipe.tsx.html +1 -1
  43. package/coverage/lcov-report/src/components/MlLayerSwipe/index.html +1 -1
  44. package/coverage/lcov-report/src/components/MlLayerSwitcher/MlLayerSwitcher.js.html +1 -1
  45. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/LayerBox.js.html +1 -1
  46. package/coverage/lcov-report/src/components/MlLayerSwitcher/components/index.html +1 -1
  47. package/coverage/lcov-report/src/components/MlLayerSwitcher/index.html +1 -1
  48. package/coverage/lcov-report/src/components/MlMarker/MlMarker.tsx.html +1 -1
  49. package/coverage/lcov-report/src/components/MlMarker/index.html +1 -1
  50. package/coverage/lcov-report/src/components/MlMeasureTool/MlMeasureTool.tsx.html +1 -1
  51. package/coverage/lcov-report/src/components/MlMeasureTool/index.html +1 -1
  52. package/coverage/lcov-report/src/components/MlNavigationCompass/MlNavigationCompass.tsx.html +1 -1
  53. package/coverage/lcov-report/src/components/MlNavigationCompass/index.html +1 -1
  54. package/coverage/lcov-report/src/components/MlNavigationTools/MlNavigationTools.tsx.html +1 -1
  55. package/coverage/lcov-report/src/components/MlNavigationTools/index.html +1 -1
  56. package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.js.html +1 -1
  57. package/coverage/lcov-report/src/components/MlOsmLayer/MlOsmLayer.stories_.js.html +1 -1
  58. package/coverage/lcov-report/src/components/MlOsmLayer/index.html +1 -1
  59. package/coverage/lcov-report/src/components/MlScaleReference/MlScaleReference.js.html +1 -1
  60. package/coverage/lcov-report/src/components/MlScaleReference/index.html +1 -1
  61. package/coverage/lcov-report/src/components/MlShareMapState/MlShareMapState.js.html +1 -1
  62. package/coverage/lcov-report/src/components/MlShareMapState/index.html +1 -1
  63. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/ColorPicker.tsx.html +214 -0
  64. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/LayerList.tsx.html +121 -0
  65. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/LayerListItem.tsx.html +412 -0
  66. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/LayerPropertyForm.tsx.html +463 -0
  67. package/coverage/lcov-report/src/components/MlSketchTool/LayerList/index.html +161 -0
  68. package/coverage/lcov-report/src/components/MlSketchTool/MlSketchTool.tsx.html +898 -0
  69. package/coverage/lcov-report/src/components/MlSketchTool/index.html +116 -0
  70. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/MlSpatialElevationProfile.js.html +1 -1
  71. package/coverage/lcov-report/src/components/MlSpatialElevationProfile/index.html +1 -1
  72. package/coverage/lcov-report/src/components/MlThreeJsLayer/MlThreeJsLayer.js.html +1 -1
  73. package/coverage/lcov-report/src/components/MlThreeJsLayer/index.html +1 -1
  74. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.tsx.html +1 -1
  75. package/coverage/lcov-report/src/components/MlTransitionGeoJsonLayer/index.html +1 -1
  76. package/coverage/lcov-report/src/components/MlUseMapDebugger/MlUseMapDebugger.js.html +1 -1
  77. package/coverage/lcov-report/src/components/MlUseMapDebugger/index.html +1 -1
  78. package/coverage/lcov-report/src/components/MlVectorTileLayer/MlVectorTileLayer.tsx.html +1 -1
  79. package/coverage/lcov-report/src/components/MlVectorTileLayer/index.html +1 -1
  80. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/MlWmsFeatureInfoPopup.js.html +1 -1
  81. package/coverage/lcov-report/src/components/MlWmsFeatureInfoPopup/index.html +1 -1
  82. package/coverage/lcov-report/src/components/MlWmsLayer/MlWmsLayer.tsx.html +1 -1
  83. package/coverage/lcov-report/src/components/MlWmsLayer/index.html +1 -1
  84. package/coverage/lcov-report/src/components/MlWmsLoader/MlWmsLoader.tsx.html +1 -1
  85. package/coverage/lcov-report/src/components/MlWmsLoader/index.html +1 -1
  86. package/coverage/lcov-report/src/contexts/MapContext.tsx.html +1 -1
  87. package/coverage/lcov-report/src/contexts/SimpleDataContext.js.html +1 -1
  88. package/coverage/lcov-report/src/contexts/SimpleDataProvider.js.html +1 -1
  89. package/coverage/lcov-report/src/contexts/index.html +1 -1
  90. package/coverage/lcov-report/src/hooks/index.html +11 -11
  91. package/coverage/lcov-report/src/hooks/useCameraFollowPath/index.html +1 -1
  92. package/coverage/lcov-report/src/hooks/useCameraFollowPath/useCameraFollowPath.tsx.html +1 -1
  93. package/coverage/lcov-report/src/hooks/useExportMap/index.html +14 -14
  94. package/coverage/lcov-report/src/hooks/useExportMap/index.ts.html +1 -1
  95. package/coverage/lcov-report/src/hooks/useExportMap/lib.ts.html +21 -108
  96. package/coverage/lcov-report/src/hooks/useLayer.ts.html +1 -1
  97. package/coverage/lcov-report/src/hooks/useLayerEvent.js.html +9 -9
  98. package/coverage/lcov-report/src/hooks/useMap.ts.html +1 -1
  99. package/coverage/lcov-report/src/hooks/useMapState.ts.html +1 -1
  100. package/coverage/lcov-report/src/hooks/useSource.ts.html +1 -1
  101. package/coverage/lcov-report/src/hooks/useWms.js.html +1 -1
  102. package/coverage/lcov-report/src/index.html +1 -1
  103. package/coverage/lcov-report/src/index.ts.html +5 -2
  104. package/coverage/lcov.info +564 -161
  105. package/cypress/support/commands.ts +37 -0
  106. package/cypress/support/component-index.html +12 -0
  107. package/cypress/support/component.ts +46 -0
  108. package/cypress.config.ts +101 -0
  109. package/dist/components/MapLibreMap/MapLibreMap.d.ts +1 -1
  110. package/dist/components/MapLibreMap/lib/MapLibreGlWrapper.d.ts +3 -3
  111. package/dist/components/MlCreatePdfForm/MlCreatePdfForm.cy.d.ts +1 -0
  112. package/dist/components/MlCreatePdfForm/MlCreatePdfForm.stories.d.ts +1 -0
  113. package/dist/components/MlCreatePdfForm/lib/PdfContext.d.ts +3 -16
  114. package/dist/components/MlCreatePdfForm/lib/PdfPreview.d.ts +19 -6
  115. package/dist/components/MlCreatePdfForm/lib/_PdfPreview.d.ts +13 -0
  116. package/dist/components/MlFeatureEditor/MlFeatureEditor.d.ts +10 -4
  117. package/dist/components/MlFeatureEditor/lib/double_click_zoom.d.ts +0 -2
  118. package/dist/components/MlFeatureEditor/lib/theme.d.ts +1 -1
  119. package/dist/components/MlGPXViewer/util/GeoJsonContext.d.ts +1 -1
  120. package/dist/components/MlGPXViewer/util/MlGPXViewerInstructions.d.ts +1 -0
  121. package/dist/components/MlGPXViewer/util/SampleLayer.d.ts +0 -0
  122. package/dist/components/MlGPXViewer/util/demoViewer.d.ts +5 -0
  123. package/dist/components/MlGeoJsonLayer/MlGeoJsonLayer.d.ts +4 -4
  124. package/dist/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.d.ts +103 -11
  125. package/dist/components/MlGeoJsonLayer/story_utils/MlGeoJsonLayer.lineStyler.d.ts +2 -0
  126. package/dist/components/MlGeoJsonLayer/story_utils/MlGeoJsonLayer.polygonStyler.d.ts +2 -0
  127. package/dist/components/MlSketchTool/LayerList/ColorPicker.d.ts +9 -0
  128. package/dist/components/MlSketchTool/LayerList/LayerList.d.ts +5 -0
  129. package/dist/components/MlSketchTool/LayerList/LayerListItem.d.ts +11 -0
  130. package/dist/components/MlSketchTool/LayerList/LayerPropertyForm.d.ts +9 -0
  131. package/dist/components/MlSketchTool/MlSketchTool.d.ts +29 -0
  132. package/dist/components/MlSketchTool/MlSketchTool.stories.d.ts +10 -0
  133. package/dist/contexts/SimpleDataProvider.d.ts +1 -1
  134. package/dist/custom.d.d.ts +1 -1
  135. package/dist/hooks/useLayer.d.ts +1 -1
  136. package/dist/hooks/useMap.d.ts +1 -1
  137. package/dist/hooks/useMapState.d.ts +3 -3
  138. package/dist/hooks/useSource.d.ts +1 -1
  139. package/dist/index.d.ts +1 -0
  140. package/dist/index.esm.css +1 -1
  141. package/dist/index.esm.js +3473 -4386
  142. package/dist/index.esm.js.map +1 -1
  143. package/dist/ui_components/LoadingOverlayContext.d.ts +1 -1
  144. package/dist/ui_components/Sidebar.d.ts +9 -1
  145. package/dist/ui_components/TopToolbar.d.ts +6 -1
  146. package/package.json +22 -15
  147. package/public/assets/sample1.gpx +3003 -0
  148. package/public/assets/sample2.gpx +1264 -0
  149. package/public/assets/sample3.gpx +912 -0
  150. package/public/index.html +0 -4
  151. package/public/thumbnails/MlSketchTool.png +0 -0
  152. package/public/thumbnails/useCameraFollowPath.png +0 -0
  153. package/src/components/MlCreatePdfForm/MlCreatePdfForm.cy.tsx +21 -0
  154. package/src/components/MlCreatePdfForm/MlCreatePdfForm.stories.tsx +14 -1
  155. package/src/components/MlCreatePdfForm/MlCreatePdfForm.tsx +0 -2
  156. package/src/components/MlCreatePdfForm/lib/PdfContext.tsx +16 -18
  157. package/src/components/MlCreatePdfForm/lib/PdfForm.tsx +79 -6
  158. package/src/components/MlCreatePdfForm/lib/PdfPreview.tsx +285 -357
  159. package/src/components/MlCreatePdfForm/lib/_PdfPreview.tsx +399 -0
  160. package/src/components/MlCreatePdfForm/lib/pdfContext.d.ts +24 -0
  161. package/src/components/MlCreatePdfForm/lib/preview.css +114 -0
  162. package/src/components/MlFeatureEditor/MlFeatureEditor.meta.json +1 -1
  163. package/src/components/MlFeatureEditor/MlFeatureEditor.tsx +39 -28
  164. package/src/components/MlGPXViewer/MlGPXViewer.stories.js +75 -15
  165. package/src/components/MlGPXViewer/MlGPXViewer.tsx +3 -1
  166. package/src/components/MlGPXViewer/util/MlGPXViewerInstructions.js +145 -0
  167. package/src/components/MlGPXViewer/util/SampleLayer.js +2 -0
  168. package/src/components/MlGPXViewer/util/demoViewer.js +254 -0
  169. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.tsx +102 -0
  170. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.tsx +33 -23
  171. package/src/components/MlGeoJsonLayer/assets/sample_1.json +138 -24
  172. package/src/components/MlGeoJsonLayer/assets/sample_2.json +140 -20
  173. package/src/components/MlGeoJsonLayer/story_utils/MlGeoJsonLayer.lineStyler.js +189 -0
  174. package/src/components/MlGeoJsonLayer/story_utils/MlGeoJsonLayer.polygonStyler.js +188 -0
  175. package/src/components/MlSketchTool/LayerList/ColorPicker.tsx +43 -0
  176. package/src/components/MlSketchTool/LayerList/LayerList.tsx +12 -0
  177. package/src/components/MlSketchTool/LayerList/LayerListItem.tsx +109 -0
  178. package/src/components/MlSketchTool/LayerList/LayerPropertyForm.tsx +126 -0
  179. package/src/components/MlSketchTool/MlSketchTool.doc.de.md +3 -0
  180. package/src/components/MlSketchTool/MlSketchTool.meta.json +15 -0
  181. package/src/components/MlSketchTool/MlSketchTool.stories.js +26 -0
  182. package/src/components/MlSketchTool/MlSketchTool.tsx +271 -0
  183. package/src/components/MlTransitionGeoJsonLayer/MlTransitionGeoJsonLayer.meta.json +2 -2
  184. package/src/hooks/useExportMap/lib.ts +14 -43
  185. package/src/index.ts +1 -0
  186. package/src/ui_components/Sidebar.tsx +80 -0
  187. package/src/ui_components/TopToolbar.tsx +24 -0
  188. package/tsconfig.json +39 -58
  189. package/config/getHttpsConfig.js +0 -66
  190. package/config/modules.js +0 -134
  191. package/config/pnpTs.js +0 -35
  192. package/config/webpack.config.js +0 -757
  193. package/config/webpackDevServer.config.js +0 -130
  194. package/scripts/start.js +0 -166
  195. package/src/components/MlGeoJsonLayer/MlGeoJsonLayer.stories.js +0 -66
  196. package/src/ui_components/Sidebar.js +0 -100
  197. package/src/ui_components/TopToolbar.js +0 -29
package/public/index.html CHANGED
@@ -5,10 +5,6 @@
5
5
  <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
7
7
  <meta name="theme-color" content="#000000" />
8
- <meta
9
- name="description"
10
- content="Web site created using create-react-app"
11
- />
12
8
  <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
13
9
  <!--
14
10
  manifest.json provides metadata used when your web app is installed on a
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import { composeStories } from '@storybook/testing-react';
3
+ import { mount } from '@cypress/react';
4
+ import * as stories from "./MlCreatePdfForm.stories";
5
+
6
+ // compile the "Primary" story with the library
7
+ const {ExampleConfig } = composeStories(stories);
8
+
9
+ describe('MlCreatePdfForm Tests', () => {
10
+ it('Should generate and download a PDF export of the current map preview', () => {
11
+ // and mount the story using @cypress/react library
12
+ mount(<ExampleConfig />);
13
+
14
+ cy.get(".pdfFormButton").click();
15
+
16
+ cy.wait(1000)
17
+ cy.get(".createPdfButton").click();
18
+ cy.wait(2000)
19
+ cy.readFile("./cypress/downloads/Map.pdf").should('contain', 'WhereGroup')
20
+ });
21
+ });
@@ -10,7 +10,9 @@ import Draggable from 'react-draggable';
10
10
 
11
11
  import TopToolbar from '../../ui_components/TopToolbar';
12
12
 
13
+ import './lib/preview.css';
13
14
  import mapContextDecorator from '../../decorators/MapContextDecorator';
15
+
14
16
  const PaperComponent = (props: object) => {
15
17
  return (
16
18
  <Draggable handle="#draggable-dialog-title" cancel={'[class*="MuiDialogContent-root"]'}>
@@ -50,10 +52,11 @@ export default storyoptions;
50
52
  const Template = () => {
51
53
  const [showCreatePdfForm, setShowCreatePdfForm] = useState(false);
52
54
 
55
+ // <MlWmsLayer url='https://geo.stat.fi/geoserver/vaestoruutu/wms' urlParameters={{layers:'vaki2005_1km_kp'}}/>
53
56
  return (
54
57
  <>
55
58
  <TopToolbar>
56
- <Button variant="contained" onClick={() => setShowCreatePdfForm(true)}>
59
+ <Button variant="contained" className='pdfFormButton' onClick={() => setShowCreatePdfForm(!showCreatePdfForm)}>
57
60
  PDF
58
61
  </Button>
59
62
  </TopToolbar>
@@ -150,3 +153,13 @@ const Template = () => {
150
153
  export const ExampleConfig = Template.bind({});
151
154
  ExampleConfig.parameters = {};
152
155
  ExampleConfig.args = {};
156
+
157
+
158
+ //const SidebarTemplate = function() {
159
+ //
160
+ // return <>
161
+ // </>;
162
+ //}
163
+ //export const SidebarExample = SidebarTemplate.bind({});
164
+ //SidebarExample.parameters = {};
165
+ //SidebarExample.args = {};
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
- import PdfPreview from './lib/PdfPreview';
3
2
  import PdfForm from './lib/PdfForm';
4
3
  import { PdfContextProvider } from './lib/PdfContext';
5
4
  import { createPdfResolverParams } from '../../hooks/useExportMap/lib';
@@ -27,7 +26,6 @@ const MlCreatePdfForm = (props: MlCreatePdfFormProps) => {
27
26
  <>
28
27
  <PdfContextProvider>
29
28
  <PdfForm {...props} />
30
- <PdfPreview />
31
29
  </PdfContextProvider>
32
30
  </>
33
31
  );
@@ -1,31 +1,29 @@
1
- import React, { useState, useRef, useMemo, MutableRefObject } from 'react';
1
+ import React, { useState, useRef, useMemo } from 'react';
2
2
  import templates from './pdf.templates';
3
- import { Feature } from '@turf/turf';
3
+ import { PdfContextInterface, PdfPreviewOptions } from './pdfContext';
4
4
 
5
- interface PdfContextInterface {
6
- format: string;
7
- setFormat: (format: string) => void;
8
- quality: string;
9
- setQuality: (quality: string) => void;
10
- orientation: string;
11
- setOrientation: (orientation: string) => void;
12
- geojsonRef: MutableRefObject<Feature | undefined>;
13
- template: { width: number; height: number };
14
- }
15
5
 
16
- const PdfContext = React.createContext<Partial<PdfContextInterface>>({});
6
+ const PdfContext = React.createContext<PdfContextInterface>({} as PdfContextInterface);
17
7
 
18
8
  const defaultTemplate = templates['A4']['72dpi'];
19
9
  const PdfContextProvider = ({ children }: { children: React.ReactNode }) => {
20
10
  const [format, setFormat] = useState('A4');
21
11
  const [quality, setQuality] = useState('72dpi');
22
- const [orientation, setOrientation] = useState('portrait');
12
+ const [options, setOptions] = useState<PdfPreviewOptions>({
13
+ center: undefined,
14
+ scale: undefined,
15
+ rotate: 0,
16
+ width: 210,
17
+ height: 297,
18
+ orientation: 'portrait',
19
+ fixedScale: 0,
20
+ });
23
21
 
24
22
  const geojsonRef = useRef();
25
23
 
26
24
  const template = useMemo(() => {
27
25
  if (typeof templates[format][quality] !== 'undefined') {
28
- return orientation === 'portrait'
26
+ return options.orientation === 'portrait'
29
27
  ? templates[format][quality]
30
28
  : {
31
29
  width: templates[format][quality].height,
@@ -33,15 +31,15 @@ const PdfContextProvider = ({ children }: { children: React.ReactNode }) => {
33
31
  };
34
32
  }
35
33
  return defaultTemplate;
36
- }, [format, quality, orientation]);
34
+ }, [format, quality, options.orientation]);
37
35
 
38
36
  const value = {
37
+ options,
38
+ setOptions,
39
39
  format,
40
40
  setFormat,
41
41
  quality,
42
42
  setQuality,
43
- orientation,
44
- setOrientation,
45
43
  geojsonRef,
46
44
  template,
47
45
  };
@@ -1,5 +1,6 @@
1
1
  import React, { useContext, useMemo, useCallback } from 'react';
2
2
  import PdfContext from './PdfContext';
3
+ import PdfPreview from './PdfPreview';
3
4
  import {
4
5
  FormControl,
5
6
  MenuItem,
@@ -19,7 +20,46 @@ import { createPdfResolverParams } from '../../../hooks/useExportMap/lib';
19
20
  import * as turf from '@turf/turf';
20
21
 
21
22
  import templates from './pdf.templates';
23
+ import { PdfPreviewOptions } from './pdfContext';
22
24
 
25
+ const scaleOptions = [
26
+ {
27
+ value: 0,
28
+ label: 'free scale',
29
+ },
30
+ {
31
+ value: 250,
32
+ label: '1/250',
33
+ },
34
+ {
35
+ value: 500,
36
+ label: '1/500',
37
+ },
38
+ {
39
+ value: 750,
40
+ label: '1/750',
41
+ },
42
+ {
43
+ value: 1000,
44
+ label: '1/1000',
45
+ },
46
+ {
47
+ value: 1500,
48
+ label: '1/1500',
49
+ },
50
+ {
51
+ value: 2000,
52
+ label: '1/2000',
53
+ },
54
+ {
55
+ value: 10000,
56
+ label: '1/10000',
57
+ },
58
+ {
59
+ value: 100000,
60
+ label: '1/100000',
61
+ },
62
+ ];
23
63
  const qualityOptions = [
24
64
  {
25
65
  value: '72dpi',
@@ -57,7 +97,7 @@ export default function PdfForm(props: PdfFormProps) {
57
97
  mapExporter.createExport &&
58
98
  pdfContext.template &&
59
99
  pdfContext.format &&
60
- pdfContext.orientation &&
100
+ pdfContext.options?.orientation &&
61
101
  pdfContext.geojsonRef?.current?.bbox &&
62
102
  pdfContext.geojsonRef?.current
63
103
  ) {
@@ -69,9 +109,9 @@ export default function PdfForm(props: PdfFormProps) {
69
109
  height: pdfContext.template.height,
70
110
  bbox: bbox,
71
111
  bboxUnrotated: pdfContext.geojsonRef.current.bbox,
72
- bearing: pdfContext.geojsonRef.current?.properties?.bearing || 0,
112
+ bearing: (pdfContext.geojsonRef.current?.properties?.bearing as number) || 0,
73
113
  format: pdfContext.format.toLowerCase(),
74
- orientation: pdfContext.orientation,
114
+ orientation: pdfContext.options.orientation,
75
115
  })
76
116
  .then((res) => res.createPdf())
77
117
  .then((res) => {
@@ -124,9 +164,14 @@ export default function PdfForm(props: PdfFormProps) {
124
164
  row
125
165
  aria-labelledby="orientation-radio-buttons-group-label"
126
166
  name="orientation-radio-buttons-group"
127
- value={pdfContext.orientation}
167
+ value={pdfContext.options?.orientation}
128
168
  onChange={(event) => {
129
- pdfContext.setOrientation?.(event.target.value);
169
+ if (!pdfContext.setOptions) return;
170
+
171
+ pdfContext.setOptions((val: PdfPreviewOptions) => ({
172
+ ...val,
173
+ orientation: event.target.value as 'landscape' | 'portrait',
174
+ }));
130
175
  }}
131
176
  >
132
177
  <FormControlLabel value="portrait" control={<Radio />} label="Portrait" />
@@ -152,10 +197,38 @@ export default function PdfForm(props: PdfFormProps) {
152
197
  </Select>
153
198
  </FormControl>
154
199
  <FormControl fullWidth sx={formControlStyles}>
155
- <Button variant="contained" onClick={createPdfHandler}>
200
+ <InputLabel id="quality-select-label">Scale</InputLabel>
201
+ <Select
202
+ labelId="quality-select-label"
203
+ id="quality-select"
204
+ label="Qualität"
205
+ value={pdfContext?.options?.fixedScale}
206
+ onChange={(event) => {
207
+ pdfContext.setOptions?.((val) => ({
208
+ ...val,
209
+ fixedScale: event.target.value as number,
210
+ }));
211
+ }}
212
+ >
213
+ {scaleOptions.map((el, idx) => (
214
+ <MenuItem key={idx} value={el.value}>
215
+ {el.label}
216
+ </MenuItem>
217
+ ))}
218
+ </Select>
219
+ </FormControl>
220
+ <FormControl fullWidth sx={formControlStyles}>
221
+ <Button variant="contained" className='createPdfButton' onClick={createPdfHandler}>
156
222
  PDF erstellen
157
223
  </Button>
158
224
  </FormControl>
225
+ {pdfContext.options && pdfContext.setOptions && (
226
+ <PdfPreview
227
+ options={pdfContext.options}
228
+ setOptions={pdfContext.setOptions}
229
+ geojsonRef={pdfContext.geojsonRef}
230
+ />
231
+ )}
159
232
  </>
160
233
  );
161
234
  }