@atlaskit/editor-plugin-hyperlink
Version:
Hyperlink plugin for @atlaskit/editor-core
55 lines (53 loc) • 2.08 kB
JavaScript
;
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;
};