import { FC, useCallback, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import Terria from "../../../../Models/Terria"; import ViewState from "../../../../ReactViewModels/ViewState"; import Box from "../../../../Styled/Box"; import Spacing from "../../../../Styled/Spacing"; import Text, { TextSpan } from "../../../../Styled/Text"; import { useCallbackRef } from "../../../useCallbackRef"; import { canShorten } from "./BuildShareLink"; import { PrintSection } from "./Print/PrintSection"; import { shouldShorten as shouldShortenDefault } from "./SharePanel"; import { IShareUrlRef, ShareUrl, ShareUrlBookmark } from "./ShareUrl"; import Checkbox from "../../../../Styled/Checkbox"; import { EmbedSection } from "./Embed/EmbedSection"; interface ISharePanelContentProps { terria: Terria; viewState: ViewState; closePanel: () => void; } export const SharePanelContent: FC = ({ terria, viewState, closePanel }) => { const { t } = useTranslation(); const canShortenUrl = useMemo(() => !!canShorten(terria), [terria]); const [includeStoryInShare, setIncludeStoryInShare] = useState(true); const [shouldShorten, setShouldShorten] = useState( shouldShortenDefault(terria) ); const [_, update] = useState(); const shareUrlRef = useCallbackRef(null, () => update({})); const includeStoryInShareOnChange = useCallback(() => { setIncludeStoryInShare((prevState) => !prevState); }, []); const shouldShortenOnChange = useCallback(() => { setShouldShorten((prevState) => { terria.setLocalProperty("shortenShareUrls", !prevState); return !prevState; }); }, [terria]); return ( {t("clipboard.shareURL")} {terria.stories && terria.stories.length > 0 && ( <> {t("includeStory.message")} )} {t("share.shortenUsingService")} ); };