UNPKG

@atlaskit/renderer

Version:
103 lines (101 loc) 4.47 kB
"use strict"; var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.MarkElement = void 0; var _react = _interopRequireWildcard(require("react")); var _adfSchema = require("@atlaskit/adf-schema"); var _types = require("@atlaskit/editor-common/types"); var _mark = require("./mark"); var _useInlineCommentsFilter = require("../hooks/use-inline-comments-filter"); var _useInlineCommentSubscriber = require("../hooks/use-inline-comment-subscriber"); var _useEvents = require("../hooks/use-events"); var _context = require("../context"); var _AnnotationManagerContext = require("../contexts/AnnotationManagerContext"); 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 MarkElement = exports.MarkElement = function MarkElement(_ref) { var annotationParentIds = _ref.annotationParentIds, children = _ref.children, dataAttributes = _ref.dataAttributes, id = _ref.id, useBlockLevel = _ref.useBlockLevel; var updateSubscriber = (0, _useInlineCommentSubscriber.useInlineCommentSubscriberContext)(); var states = (0, _react.useContext)(_context.InlineCommentsStateContext); var _useHasFocusEvent = (0, _useEvents.useHasFocusEvent)({ id: id, updateSubscriber: updateSubscriber }), hasFocus = _useHasFocusEvent.hasFocus, isHovered = _useHasFocusEvent.isHovered; var dataAttributesMemorized = (0, _react.useMemo)(function () { return dataAttributes; }, [dataAttributes]); var _useAnnotationManager = (0, _AnnotationManagerContext.useAnnotationManagerDispatch)(), dispatch = _useAnnotationManager.dispatch, annotationManager = _useAnnotationManager.annotationManager; var onClick = (0, _react.useCallback)(function (props) { if (!updateSubscriber) { return; } if (useBlockLevel) { return; } var eventTarget = props.eventTarget, annotationIds = props.annotationIds; if (annotationManager) { if (hasFocus) { dispatch({ type: 'resetSelectedAnnotation' }); return; } annotationManager.checkPreemptiveGate().then(function (canSelect) { if (canSelect) { // if there is a draft, clear it first annotationManager === null || annotationManager === void 0 || annotationManager.clearDraft(); // use setIsAnnotationSelected won't work here if there is a draft in progress // so we need to use dispatch to update the state directly dispatch({ type: 'updateAnnotation', data: { id: annotationIds[0], selected: true } }); dispatch({ type: 'setSelectedMarkRef', data: { markRef: eventTarget } }); } else { // TODO: EDITOR-595 - If the preemptive gate returns false, should we track the analytics event? } }).catch(function (_error) { // TODO: EDITOR-595 - An error occurred while checking the preemptive gate. We should report this error. }); } else { updateSubscriber.emit(_types.AnnotationUpdateEvent.ON_ANNOTATION_CLICK, { annotationIds: annotationIds, eventTarget: eventTarget }); } }, [updateSubscriber, useBlockLevel, dispatch, annotationManager, hasFocus]); var activeParentIds = (0, _useInlineCommentsFilter.useInlineCommentsFilter)({ annotationIds: annotationParentIds, filter: { state: _adfSchema.AnnotationMarkStates.ACTIVE } }); return /*#__PURE__*/_react.default.createElement(_mark.MarkComponent, { id: id, dataAttributes: dataAttributesMemorized, annotationParentIds: activeParentIds, onClick: onClick, hasFocus: hasFocus, isHovered: isHovered, state: states[id], useBlockLevel: useBlockLevel }, children); };