@atlaskit/renderer
Version:
Renderer component
56 lines (53 loc) • 3.09 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SelectionRangeValidator = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = _interopRequireWildcard(require("react"));
var _userSelection = require("../hooks/user-selection");
var _mounter = require("./mounter");
var _RendererActionsContext = require("../../RendererActionsContext");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
var SelectionRangeValidator = exports.SelectionRangeValidator = function SelectionRangeValidator(props) {
var selectionComponent = props.selectionComponent,
rendererRef = props.rendererRef,
createAnalyticsEvent = props.createAnalyticsEvent;
var actions = (0, _react.useContext)(_RendererActionsContext.RendererContext);
var _useUserSelectionRang = (0, _userSelection.useUserSelectionRange)({
rendererRef: rendererRef
}),
_useUserSelectionRang2 = (0, _slicedToArray2.default)(_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.default.createElement(_mounter.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';