-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathMapLibreMap.stories.tsx
More file actions
124 lines (111 loc) · 2.92 KB
/
MapLibreMap.stories.tsx
File metadata and controls
124 lines (111 loc) · 2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import React, { useState } from 'react';
import MapLibreMap, { MapLibreMapProps } from './MapLibreMap';
import MlGeoJsonLayer from '../MlGeoJsonLayer/MlGeoJsonLayer';
import { Button } from '@mui/material';
import TopToolbar from '../../ui_components/TopToolbar';
import sample_geojson_1 from '../MlGeoJsonLayer/assets/sample_1.json';
import { FeatureCollection } from 'geojson';
import themeDecorator from '../../decorators/ThemeDecorator';
const storyoptions = {
title: 'Core/MapLibreMap',
component: MapLibreMap,
argTypes: {
options: {
control: {
type: 'object',
},
},
},
decorators: themeDecorator,
parameters: {
sourceLink: 'components/MapLibreMap/MapLibreMap.tsx',
},
};
export default storyoptions;
const Template = (args: MapLibreMapProps) => {
return <MapLibreMap options={{ ...args.options }} />;
};
export const ExampleConfig = Template.bind({});
ExampleConfig.args = {
options: {
style: 'https://wms.wheregroup.com/tileserver/style/osm-bright.json',
center: [8.607, 53.1409349],
zoom: 14,
},
};
const styles = [
{ name: 'OSM-Bright', url: 'https://wms.wheregroup.com/tileserver/style/osm-bright.json' },
{
name: 'OSM-Fiord-Color',
url: 'https://wms.wheregroup.com/tileserver/style/osm-fiord-color.json',
},
];
const StyleChangeTemplate = (args: MapLibreMapProps) => {
const [activeStyle, setActiveStyle] = useState(styles[1].url);
return (
<>
<TopToolbar
buttons={
<>
{styles.map((style) => (
<Button
key={style.name}
variant={activeStyle === style.url ? 'contained' : 'outlined'}
onClick={() => {
setActiveStyle(style.url);
}}
sx={{
marginRight: '10px',
marginTop: { xs: '10px', sm: '0px' },
}}
>
{style.name}
</Button>
))}
</>
}
/>
<MapLibreMap options={{ ...args.options, style: activeStyle }} />
<MlGeoJsonLayer type="line" geojson={sample_geojson_1 as FeatureCollection} />
</>
);
};
export const StyleChangeConfig = StyleChangeTemplate.bind({});
StyleChangeConfig.args = {
options: {
zoom: 14.5,
center: [7.0851268, 50.73884],
},
};
StyleChangeConfig.parameters = {};
const AddMaplibreInstanceTemplate = (args: MapLibreMapProps) => {
const [isMap, setIsMap] = useState(false);
const toggleMap = () => {
setIsMap((prev) => !prev);
};
return (
<>
<TopToolbar
buttons={
<Button
variant="contained"
onClick={toggleMap}
sx={{ marginRight: '10px', marginTop: { xs: '10px', sm: '0px' } }}
>
{isMap ? 'Remove Map' : 'Add Map'}
</Button>
}
></TopToolbar>
{isMap && <MapLibreMap options={{ ...args.options }}></MapLibreMap>}
</>
);
};
export const AddMaplibreInstance = AddMaplibreInstanceTemplate.bind({});
AddMaplibreInstance.args = {
options: {
style: 'https://wms.wheregroup.com/tileserver/style/osm-bright.json',
center: [8.607, 53.1409349],
zoom: 14,
},
};
AddMaplibreInstance.parameters = {};