UNPKG

@atlaskit/editor-plugin-hyperlink

Version:

Hyperlink plugin for @atlaskit/editor-core

55 lines (53 loc) 2.08 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.ButtonWrapper = void 0; var _react = _interopRequireDefault(require("react")); var _reactDom = require("react-dom"); var _client = require("react-dom/client"); var _reactIntl = require("react-intl"); var _link = require("@atlaskit/editor-common/link"); var _platformFeatureFlags = require("@atlaskit/platform-feature-flags"); var reactRoots = new WeakMap(); /** Mounts `element` into `mountPoint`: uses the React 18/19 `createRoot` API when `nike_r19_render_unmount` is on, else the legacy render path. */ var renderToMountPoint = function renderToMountPoint(element, mountPoint) { if ((0, _platformFeatureFlags.fg)('nike_r19_render_unmount')) { var root = reactRoots.get(mountPoint); if (!root) { root = (0, _client.createRoot)(mountPoint); reactRoots.set(mountPoint, root); } root.render(element); } else { (0, _reactDom.render)(element, mountPoint); } }; var ButtonWrapper = exports.ButtonWrapper = function ButtonWrapper(_ref) { var editorView = _ref.editorView, pos = _ref.pos, stateKey = _ref.stateKey, intl = _ref.intl, onOpenLinkClick = _ref.onOpenLinkClick; var wrapper = document.createElement('span'); wrapper.style.position = 'relative'; var nonBreakingCharacter = "\u2060"; var onDropdownChange = function onDropdownChange(isOpen) { editorView.dispatch(editorView.state.tr.setMeta(stateKey, { type: _link.LinkAction.SET_CONFIGURE_DROPDOWN_OPEN, isOpen: isOpen })); }; renderToMountPoint( /*#__PURE__*/_react.default.createElement(_reactIntl.IntlProvider, { locale: intl.locale || 'en', messages: intl.messages, formats: intl.formats }, /*#__PURE__*/_react.default.createElement(_link.OverlayButton, { targetElementPos: pos, editorView: editorView, onDropdownChange: onDropdownChange, onOpenLinkClick: onOpenLinkClick }), nonBreakingCharacter), wrapper); return wrapper; };