// Storybook import { ComponentStory, ComponentMeta } from '@storybook/react'; // React import React, { useMemo } from "react"; // Geovisto import { IMapTilesModel } from 'geovisto'; import { ISidebarTabProps } from 'geovisto-sidebar'; // Internal imports import { SidebarTab, SidebarTool, TilesLayerTool } from '../react/components/'; import { ISidebarTabDataProps } from '../react/types'; // Styles import '../styles/common.scss'; // Stories internal helper components import { ExportMapWrapper } from '../storiesHelpers/ExportMapWrapper'; const TilesLayerToolDemo = (props: ITilesLayerToolDemoProps) : JSX.Element => { const extendedProps = { mapId: 'geovisto-map-tiles-demo', showBaseTileLayerMap: false, ...props }; const baseMap = useMemo((): IMapTilesModel => { return { url: props.toolBaseMap, maxZoom: 20, maxNativeZoom: 19 }; }, [props.toolBaseMap]); return ( ); }; export default { component: TilesLayerToolDemo, title: 'Tools/Tiles Layer Tool', argTypes: { sidebarToolEnabled: { name: "SidebarTool: Enabled", description: "Enabled property of the SidebarTool instance.", defaultValue: false }, sidebarTabTool: { name: "SidebarTab - TilesLayerTool", description: "Properties of the sidebar tab of the TilesLayerTool", defaultValue: false }, toolId: { name: "TilesLayerTool: id", description: "Id property of the TilesLayerTool instance.", }, toolName: { name: "TilesLayerTool: name", description: "Name property of the TilesLayerTool instance.", }, toolLabel: { name: "TilesLayerTool: label", description: "Label property of the TilesLayerTool instance.", }, toolEnabled: { name: "TilesLayerTool: enabled", description: "Enabled property of the TilesLayerTool instance.", defaultValue: false }, toolBaseMap: { name: "TilesLayerTool: BaseMap Url", description: "Url source for the base map tiles.", options: ["mapycz", "openstreetmap"], mapping: { mapycz: 'https://mapserver.mapy.cz/turist-m/{z}-{x}-{y}', openstreetmap: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' }, control: { type: "select", defaultValue: 'mapycz', labels: { mapycz: "Mapy.cz", openstreetmap: "Openstreetmap", }, }, }, }, } as ComponentMeta; export type ITilesLayerToolDemoProps = { toolId: string; toolEnabled: boolean; toolName: string; toolLabel: string; toolBaseMap: string; sidebarToolEnabled: boolean; sidebarTabTool: ISidebarTabDataProps; } const Template : ComponentStory = args => export const GeovistoTilesLayerToolStory = Template.bind({}); GeovistoTilesLayerToolStory.storyName = 'Tiles Layer Tool'; GeovistoTilesLayerToolStory.args = { toolEnabled: true, toolBaseMap: 'mapycz', toolId: 'geovisto-tool-layer-map', toolName: 'Tiles Layer Tool', toolLabel: 'Label of the TilesLayerTool.', sidebarToolEnabled: true, sidebarTabTool: { tool: 'geovisto-tool-layer-map', enabled: true, name: 'Map layer settings', icon: '', checkButton: true } }