// Storybook
import { ComponentStory, ComponentMeta } from '@storybook/react';
// React
import React from "react";
//Leaflet
import { LatLngBoundsLiteral } from 'leaflet';
// Geovisto
import { ISidebarTabProps } from 'geovisto-sidebar';
// Internal imports
import { SidebarTab, SidebarTool, CustomTool } from '../react/components';
import { ISidebarTabDataProps } from '../react/types';
// Styles
import '../styles/common.scss';
// Stories internal helper components
import { ExportMapWrapper } from '../storiesHelpers/ExportMapWrapper';
import { IImageLayerToolProps, ImageLayerTool } from '../storiesHelpers/imageLayerTool';
// Config
import imgDefaultMapPosition from '../../static/config/defaultPosition/config-imgDefaultPosition.json';
const CustomToolDemo = (props: ICustomToolDemoProps) : JSX.Element => {
const extendedProps = {
mapId: 'geovisto-map-custom-demo',
config: props.defaultMapPosition ? imgDefaultMapPosition : undefined,
...props
};
return (
new ImageLayerTool(props)}
/>
);
};
export default {
component: CustomToolDemo,
title: 'Tools/Custom Tool',
argTypes: {
sidebarToolEnabled: {
name: "SidebarTool: Enabled",
description: "Enabled property of the SidebarTool instance.",
},
sidebarTabTool: {
name: "SidebarTab - CustomTool",
description: "Properties of the sidebar tab of the CustomTool",
},
showBaseTileLayerMap: {
name: "Base tile layer: Enabled",
description: "Toggles the base tiles layer.",
},
toolId: {
name: "Id",
description: "Id property of the CustomTool instance.",
},
toolName: {
name: "Name",
description: "Name property of the CustomTool instance.",
},
toolLabel: {
name: "Label",
description: "Label property of the CustomTool instance.",
},
toolEnabled: {
name: "Enabled",
description: "Enabled property of the CustomTool instance.",
},
toolUrl: {
name: "Url",
description: "Url property of the CustomTool instance.",
},
toolBounds: {
name: "Boundaries",
description: "Bounds property of the CustomTool instance.",
},
defaultMapPosition: {
name: "Default map position:",
description: "Enables/Disables config with the position of the map set to the image.",
}
},
} as ComponentMeta;
export type ICustomToolDemoProps = {
defaultMapPosition: boolean,
toolId: string;
toolEnabled: boolean;
toolName: string;
toolLabel: string;
toolUrl: string;
toolBounds: LatLngBoundsLiteral;
sidebarToolEnabled: boolean;
sidebarTabTool: ISidebarTabDataProps;
showBaseTileLayerMap: boolean;
}
const Template : ComponentStory = args =>
export const GeovistoCustomToolStory = Template.bind({});
GeovistoCustomToolStory.storyName = 'Custom Tool';
GeovistoCustomToolStory.args = {
defaultMapPosition: true,
toolEnabled: true,
toolId: 'geovisto-custom-tool-map',
toolName: 'Custom Tool',
toolLabel: 'Custom Tool label',
toolUrl: 'https://i.pinimg.com/originals/26/13/9a/26139ad9e6bea6aa53b3a8ff493082d7.jpg',
toolBounds: [[13.518693995129324, -67.5347243454669], [41.72278746545008, -18.140193331169666]],
sidebarToolEnabled: true,
sidebarTabTool: {
tool: 'geovisto-custom-tool-map',
enabled: true,
name: 'Custom image tool settings',
icon: '',
checkButton: true
},
showBaseTileLayerMap: true
}