import React, { useRef, useState, useEffect, useCallback } from 'react'; import PropTypes from 'prop-types'; import { usePopup } from '../../../utils/hooks/'; import { PageStore } from '../../../utils/stores/'; import { PopupMain } from '../../_shared'; import { MaterialIcon } from '../../_shared/material-icon/MaterialIcon.jsx'; import { ManageItemDate } from './ManageMediaItem'; function ManageItemName(props) { if (void 0 !== props.url) { if (null !== props.name && '' !== props.name) { return ( {props.name} ); } } else if (null !== props.name && '' !== props.name) { return props.name; } return N/A; } function ManageItemUsername(props) { if (void 0 !== props.url) { if (null !== props.username && '' !== props.username) { return ( {props.username} ); } } else if (null !== props.username && '' !== props.username) { return props.username; } return N/A; } function ManageItemCommentActions(props) { const [popupContentRef, PopupContent, PopupTrigger] = usePopup(); const [isOpenPopup, setIsOpenPopup] = useState(false); function onPopupShow() { setIsOpenPopup(true); } function onPopupHide() { setIsOpenPopup(false); } function onCancel() { popupContentRef.current.tryToHide(); if ('function' === typeof props.onCancel) { props.onCancel(); } } function onProceed() { popupContentRef.current.tryToHide(); if ('function' === typeof props.onProceed) { props.onProceed(); } } const positionState = { updating: false, pending: 0 }; const onWindowResize = useCallback(function () { if (positionState.updating) { positionState.pending = positionState.pending + 1; } else { positionState.updating = true; const popupElem = props.containerRef.current.querySelector('.popup'); if (popupElem) { const containerClientRect = props.containerRef.current.getBoundingClientRect(); popupElem.style.position = 'fixed'; popupElem.style.left = containerClientRect.x + 'px'; if (document.body.offsetHeight < 32 + popupElem.offsetHeight + window.scrollY + containerClientRect.top) { popupElem.style.top = containerClientRect.y - popupElem.offsetHeight + 'px'; } else { popupElem.style.top = containerClientRect.y + containerClientRect.height + 'px'; } } setTimeout(() => { positionState.updating = false; if (positionState.pending) { positionState.pending = 0; onWindowResize(); } }, 8); } }, []); useEffect(() => { if (isOpenPopup) { PageStore.on('window_scroll', onWindowResize); PageStore.on('window_resize', onWindowResize); onWindowResize(); } else { PageStore.removeListener('window_scroll', onWindowResize); PageStore.removeListener('window_resize', onWindowResize); } }, [isOpenPopup]); return (