@atlaskit/renderer
Version:
Renderer component
40 lines • 1.33 kB
JavaScript
import React, { useContext } from 'react';
import { Mounter } from './mounter';
import { RendererContext as ActionsContext } from '../../RendererActionsContext';
import { useAnnotationRangeDispatch, useAnnotationRangeState } from '../contexts/AnnotationRangeContext';
import { useAnnotationHoverContext } from '../contexts/AnnotationHoverContext';
export const RangeValidator = props => {
const {
component,
rendererRef,
createAnalyticsEvent
} = props;
const actions = useContext(ActionsContext);
const {
clearHoverRange
} = useAnnotationRangeDispatch();
const {
range,
type
} = useAnnotationRangeState();
const {
isWithinRange
} = useAnnotationHoverContext();
if (!range || type !== 'hover') {
return null;
}
const documentPosition = actions.getPositionFromRange(range);
return /*#__PURE__*/React.createElement(Mounter, {
isWithinRange: isWithinRange,
range: range,
wrapperDOM: rendererRef,
component: component,
onClose: clearHoverRange,
documentPosition: documentPosition,
isAnnotationAllowed: true,
applyAnnotation: actions.applyAnnotation.bind(actions),
generateIndexMatch: actions.generateAnnotationIndexMatch.bind(actions),
createAnalyticsEvent: createAnalyticsEvent
});
};
RangeValidator.displayName = 'HoverRangeValidator';