import { Ref } from "react"; import { Trans, useTranslation } from "react-i18next"; import { DefaultTheme } from "styled-components"; import triggerResize from "../../../../Core/triggerResize"; import Terria from "../../../../Models/Terria"; import ViewState from "../../../../ReactViewModels/ViewState"; import Icon from "../../../../Styled/Icon"; import Text from "../../../../Styled/Text"; import Prompt from "../../../Generic/Prompt"; import { useRefForTerria } from "../../../Hooks/useRefForTerria"; import Styles from "./story-button.scss"; interface Props { terria: Terria; theme: DefaultTheme; viewState: ViewState; animationDuration: number; } interface ButtonProps extends Props { ["aria-expanded"]: boolean; } const STORY_BUTTON_NAME = "MenuBarStoryButton"; export const onStoryButtonClick = (props: Props) => () => { props.viewState.toggleStoryBuilder(); props.terria.currentViewer.notifyRepaintRequired(); // Allow any animations to finish, then trigger a resize. setTimeout(function () { triggerResize(); }, props.animationDuration || 1); props.viewState.toggleFeaturePrompt("story", false, true); }; const promptHtml = (hasStories: boolean) => ( {hasStories ? ( You can view and create stories at any time by clicking here. ) : (
INTRODUCING Data Stories Create and share interactive stories directly from your map.
)}
); const StoryButton = (props: Props) => { const storyButtonRef: Ref = useRefForTerria( STORY_BUTTON_NAME, props.viewState ); const storyEnabled = props.terria.configParameters.storyEnabled; const dismissAction = () => { props.viewState.toggleFeaturePrompt("story", false, true); }; const delayTime = storyEnabled && props.terria.stories.length > 0 ? 1000 : 2000; const { t } = useTranslation(); return (
= 0 } content={promptHtml(props.terria.stories.length > 0)} displayDelay={delayTime} dismissText={t("story.dismissText")} dismissAction={dismissAction} />
); }; export default StoryButton;