UNPKG

@atlaskit/renderer

Version:
160 lines (157 loc) • 7.54 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getAnnotationIndex = exports.applyAnnotationOnText = exports.TextWithAnnotationDraft = exports.AnnotationDraft = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _react2 = require("@emotion/react"); var _types = require("../types"); var _text = require("./text"); var _position = require("./position"); var _dom = require("./dom"); var _segmentText = require("../../../react/utils/segment-text"); var _renderTextSegments = require("../../../react/utils/render-text-segments"); var _AnnotationManagerContext = require("../contexts/AnnotationManagerContext"); var _AnnotationRangeContext = require("../contexts/AnnotationRangeContext"); 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); } /** * @jsxRuntime classic * @jsx jsx */ // eslint-disable-next-line @typescript-eslint/consistent-type-imports, @atlaskit/ui-styling-standard/use-compiled -- emotion jsx pragma; go/DSP-18766 // oxlint-ignore @typescript-eslint/consistent-type-imports -- classic @jsx jsx factory + jsx.JSX.Element types // Localized AnnotationSharedCSSByState().common and AnnotationSharedCSSByState().focus var markStyles = (0, _react2.css)({ color: 'inherit', backgroundColor: 'unset', WebkitTapHighlightColor: 'transparent', borderBottom: "var(--ds-border-width-selected, 2px)".concat(" solid transparent"), cursor: 'pointer', padding: '1px 0 2px', // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors '&:has(.card), &:has([data-inline-card])': { padding: '5px 0 3px 0' }, // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors '&:has(.date-lozenger-container)': { paddingTop: "var(--ds-space-025, 2px)" }, background: "var(--ds-background-accent-yellow-subtlest-pressed, #EFDD4E)", borderBottomColor: "var(--ds-border-accent-yellow, #B38600)", boxShadow: "var(--ds-shadow-overlay, 0px 8px 12px #1E1F2126, 0px 0px 1px #1E1F214f)" }); var AnnotationDraft = exports.AnnotationDraft = function AnnotationDraft(_ref) { var draftPosition = _ref.draftPosition, children = _ref.children; var _useAnnotationManager = (0, _AnnotationManagerContext.useAnnotationManagerDispatch)(), dispatch = _useAnnotationManager.dispatch; var markRef = (0, _react.useCallback)(function (node) { dispatch({ type: 'setDraftMarkRef', data: { draftMarkRef: node !== null && node !== void 0 ? node : undefined } }); }, [dispatch]); return (0, _react2.jsx)("mark", (0, _extends2.default)({ "data-renderer-mark": true // Ignored via go/ees005 // eslint-disable-next-line react/jsx-props-no-spreading }, (0, _dom.dataAttributes)(draftPosition), { css: markStyles, ref: markRef }), children); }; var getAnnotationIndex = exports.getAnnotationIndex = function getAnnotationIndex(annotationPosition, fragmentCount) { if (annotationPosition === _types.InsertDraftPosition.START) { return 0; } if (annotationPosition === _types.InsertDraftPosition.END) { return fragmentCount - 1; } if (annotationPosition === _types.InsertDraftPosition.INSIDE && fragmentCount === 3) { return 1; } return -1; }; var applyAnnotationOnText = exports.applyAnnotationOnText = function applyAnnotationOnText(_ref2) { var texts = _ref2.texts, shouldApplyAnnotationAt = _ref2.shouldApplyAnnotationAt, draftPosition = _ref2.draftPosition, textHighlighter = _ref2.textHighlighter, marks = _ref2.marks; var annotateIndex = getAnnotationIndex(shouldApplyAnnotationAt, texts.length); return texts.map(function (value, index) { var segments = (0, _segmentText.segmentText)(value, textHighlighter); if (annotateIndex === index) { return ( // Ignored via go/ees005 // eslint-disable-next-line react/no-array-index-key (0, _react2.jsx)(AnnotationDraft, { key: index, draftPosition: draftPosition }, (0, _renderTextSegments.renderTextSegments)(segments, textHighlighter, marks || [], draftPosition.from)) ); } return ( // Ignored via go/ees005 // eslint-disable-next-line react/no-array-index-key (0, _react2.jsx)(_react.default.Fragment, { key: index }, (0, _renderTextSegments.renderTextSegments)(segments, textHighlighter, marks || [], draftPosition.from)) ); }); }; var TextWithAnnotationDraft = exports.TextWithAnnotationDraft = function TextWithAnnotationDraft(_ref3) { var startPos = _ref3.startPos, endPos = _ref3.endPos, children = _ref3.children, textHighlighter = _ref3.textHighlighter, marks = _ref3.marks; var textPosition = _react.default.useMemo(function () { return { start: startPos, end: endPos }; }, [endPos, startPos]); var _useAnnotationRangeSt = (0, _AnnotationRangeContext.useAnnotationRangeState)(), nextDraftPosition = _useAnnotationRangeSt.selectionDraftDocumentPosition; var shouldApplyAnnotationAt = _react.default.useMemo(function () { if (!nextDraftPosition) { return false; } return (0, _position.calcInsertDraftPositionOnText)(textPosition, nextDraftPosition); }, [nextDraftPosition, textPosition]); var textString = (0, _text.findTextString)(children); if (!textString) { return (0, _react2.jsx)(_react.Fragment, null, children); } if (shouldApplyAnnotationAt === false || !nextDraftPosition) { var segments = (0, _segmentText.segmentText)(textString, textHighlighter); return (0, _react2.jsx)(_react.Fragment, null, (0, _renderTextSegments.renderTextSegments)(segments, textHighlighter, marks || [], startPos)); } if (shouldApplyAnnotationAt === _types.InsertDraftPosition.AROUND_TEXT) { var _segments = (0, _segmentText.segmentText)(textString, textHighlighter); return (0, _react2.jsx)(AnnotationDraft, { key: 0, draftPosition: nextDraftPosition }, (0, _renderTextSegments.renderTextSegments)(_segments, textHighlighter, marks || [], startPos)); } var offsets = (0, _text.calcTextSplitOffset)(nextDraftPosition, textPosition, textString); var texts = (0, _text.splitText)(textString, offsets); if (!texts) { var _segments2 = (0, _segmentText.segmentText)(textString, textHighlighter); return (0, _react2.jsx)(_react.Fragment, null, (0, _renderTextSegments.renderTextSegments)(_segments2, textHighlighter, marks || [], startPos)); } var components = applyAnnotationOnText({ texts: texts, shouldApplyAnnotationAt: shouldApplyAnnotationAt, draftPosition: nextDraftPosition, textHighlighter: textHighlighter, marks: marks }); return (0, _react2.jsx)(_react.Fragment, null, components); };