HintOnLockedItem.jsx 912 B

123456789101112131415161718192021222324252627282930313233343536
  1. import React from "react";
  2. import { toast } from "react-toastify";
  3. import { useTranslation } from "react-i18next";
  4. import { hasClass } from "../../utils";
  5. import { useItemActions } from "react-sync-board";
  6. const HintOnLockedItem = () => {
  7. const { findElementUnderPointer } = useItemActions();
  8. const { t } = useTranslation();
  9. const onDblClick = React.useCallback(
  10. async (e) => {
  11. const foundElement = await findElementUnderPointer(e, {
  12. returnLocked: true,
  13. });
  14. if (foundElement && hasClass(foundElement, "locked")) {
  15. toast.info(t("Long click to select locked elements"));
  16. }
  17. },
  18. [findElementUnderPointer, t]
  19. );
  20. React.useEffect(() => {
  21. document.addEventListener("dblclick", onDblClick);
  22. return () => {
  23. document.removeEventListener("dblclick", onDblClick);
  24. };
  25. }, [onDblClick]);
  26. return null;
  27. };
  28. export default HintOnLockedItem;