UNPKG

@atlaskit/renderer

Version:
47 lines (45 loc) 2.06 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import React, { useContext } from 'react'; import { useUserSelectionRange } from '../hooks/user-selection'; import { SelectionInlineCommentMounter } from './mounter'; import { RendererContext as ActionsContext } from '../../RendererActionsContext'; export var SelectionRangeValidator = function SelectionRangeValidator(props) { var selectionComponent = props.selectionComponent, rendererRef = props.rendererRef, createAnalyticsEvent = props.createAnalyticsEvent; var actions = useContext(ActionsContext); var _useUserSelectionRang = useUserSelectionRange({ rendererRef: rendererRef }), _useUserSelectionRang2 = _slicedToArray(_useUserSelectionRang, 4), type = _useUserSelectionRang2[0], range = _useUserSelectionRang2[1], draftRange = _useUserSelectionRang2[2], clearRange = _useUserSelectionRang2[3]; var selectionRange = type === 'selection' ? range : null; // !!! the draft range will become invalid after the mark DOM is inserted if (!selectionRange && !draftRange) { return null; } var documentPosition = actions.getPositionFromRange(range); // This property is drilled down to consumers when a new range is selected to test it's validity var isAnnotationAllowedOnRange = false; try { isAnnotationAllowedOnRange = documentPosition && actions.isValidAnnotationPosition(documentPosition); } catch (_unused) { isAnnotationAllowedOnRange = false; } return /*#__PURE__*/React.createElement(SelectionInlineCommentMounter, { range: selectionRange, draftRange: draftRange, wrapperDOM: rendererRef, component: selectionComponent, onClose: clearRange, documentPosition: documentPosition, isAnnotationAllowed: isAnnotationAllowedOnRange, applyAnnotation: actions.applyAnnotation.bind(actions), generateIndexMatch: actions.generateAnnotationIndexMatch.bind(actions), createAnalyticsEvent: createAnalyticsEvent }); }; SelectionRangeValidator.displayName = 'SelectionRangeValidator';