/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
import React, { useEffect, MouseEvent } from "react";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faLink } from "@fortawesome/free-solid-svg-icons";
import { useHistory, useLocation } from "react-router-dom";
import { useTranslation } from "react-i18next";
import styles from "./ShareButton.module.scss";
interface Props {
id: string;
title: string;
className?: string;
}
const scrollElementIntoView = (element: HTMLElement | null) => {
if (element) {
element.scrollIntoView({ block: "start", behavior: "smooth" });
const top = element.getBoundingClientRect().top;
if (top <= 0 && top >= window.innerHeight) {
setTimeout(() => scrollElementIntoView(element), 100);
}
}
};
function ShareButton(props: Props) {
const history = useHistory();
const { t } = useTranslation();
const { pathname, hash, key } = useLocation();
useEffect(() => {
// if not a hash link, scroll to top
if (hash === `#${props.id}`) {
const element = document.getElementById(props.id);
setTimeout(() => {
scrollElementIntoView(element);
}, 500);
setTimeout(() => {
scrollElementIntoView(element);
}, 1000);
}
}, [pathname, hash, key, props.id]);
function getWidgetUrl() {
const widgetUrl = `${window.location.href.replace(window.location.hash, "")}#${props.id}`;
return widgetUrl;
}
function copyWidgetUrlToClipboard(event: MouseEvent) {
navigator.clipboard.writeText(getWidgetUrl());
history.replace(window.location.pathname, {
alert: {
type: "success",
message: t("LinkCopied", { title: props.title }),
},
});
event.preventDefault();
}
return (
<>
>
);
}
export default ShareButton;