@atlaskit/editor-plugin-insert-block
Version:
Insert block plugin for @atlaskit/editor-core
62 lines (61 loc) • 4.46 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.RegisteredInsertMenuContent = void 0;
var _react = _interopRequireWildcard(require("react"));
var _keys = require("@atlaskit/editor-common/quick-insert/keys");
var _ui = require("@atlaskit/editor-common/ui");
var _withOuterListeners = _interopRequireDefault(require("@atlaskit/editor-common/with-outer-listeners"));
var _RegisteredInsertMenu = require("./RegisteredInsertMenu");
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 EMPTY_COMPONENTS = [];
var subscribeToNothing = function subscribeToNothing() {
return function () {};
};
var RegisteredInsertMenuContainer = function RegisteredInsertMenuContainer(_ref) {
var children = _ref.children;
var setOutsideClickTargetRef = (0, _react.useContext)(_ui.PlainOutsideClickTargetRefContext);
return /*#__PURE__*/_react.default.createElement("div", {
ref: setOutsideClickTargetRef
}, children);
};
var RegisteredInsertMenuWithListeners = (0, _withOuterListeners.default)(RegisteredInsertMenuContainer);
var RegisteredInsertMenuContent = exports.RegisteredInsertMenuContent = function RegisteredInsertMenuContent(_ref2) {
var _api$uiControlRegistr2, _api$uiControlRegistr3, _api$quickInsert, _api$analytics, _api$quickInsert2;
var api = _ref2.api,
editorView = _ref2.editorView,
isOffline = _ref2.isOffline,
maxHeight = _ref2.maxHeight,
onClose = _ref2.onClose,
onDismiss = _ref2.onDismiss,
onSelect = _ref2.onSelect,
target = _ref2.target;
var getComponents = (0, _react.useCallback)(function () {
var _api$uiControlRegistr;
var components = api === null || api === void 0 || (_api$uiControlRegistr = api.uiControlRegistry) === null || _api$uiControlRegistr === void 0 ? void 0 : _api$uiControlRegistr.actions.getComponents(_keys.MENU.key);
return components !== null && components !== void 0 && components.length ? components : EMPTY_COMPONENTS;
}, [api]);
var components = (0, _react.useSyncExternalStore)((_api$uiControlRegistr2 = api === null || api === void 0 || (_api$uiControlRegistr3 = api.uiControlRegistry) === null || _api$uiControlRegistr3 === void 0 ? void 0 : _api$uiControlRegistr3.actions.subscribe) !== null && _api$uiControlRegistr2 !== void 0 ? _api$uiControlRegistr2 : subscribeToNothing, getComponents, getComponents);
var onClickOutside = (0, _react.useCallback)(function (event) {
if (event.target instanceof Node && target !== null && target !== void 0 && target.contains(event.target)) {
return;
}
onDismiss();
}, [onDismiss, target]);
return /*#__PURE__*/_react.default.createElement(RegisteredInsertMenuWithListeners, {
handleClickOutside: onClickOutside
}, /*#__PURE__*/_react.default.createElement(_RegisteredInsertMenu.RegisteredInsertMenu, {
components: components,
editorView: editorView,
emptyStateHandler: api === null || api === void 0 || (_api$quickInsert = api.quickInsert) === null || _api$quickInsert === void 0 || (_api$quickInsert = _api$quickInsert.sharedState.currentState()) === null || _api$quickInsert === void 0 ? void 0 : _api$quickInsert.emptyStateHandler,
fireAnalyticsEvent: api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions.fireAnalyticsEvent,
getItemRank: api === null || api === void 0 || (_api$quickInsert2 = api.quickInsert) === null || _api$quickInsert2 === void 0 || (_api$quickInsert2 = _api$quickInsert2.sharedState.currentState()) === null || _api$quickInsert2 === void 0 ? void 0 : _api$quickInsert2.getItemRank,
isOffline: isOffline,
maxHeight: maxHeight,
onClose: onClose,
onSelect: onSelect
}));
};