UNPKG

@atlaskit/editor-plugin-help-dialog

Version:

Help Dialog plugin for @atlaskit/editor-core

134 lines (132 loc) 5.29 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.helpDialogPlugin = void 0; var _react = _interopRequireDefault(require("react")); var _analytics = require("@atlaskit/editor-common/analytics"); var _coreUtils = require("@atlaskit/editor-common/core-utils"); var _keymaps = require("@atlaskit/editor-common/keymaps"); var _messages = require("@atlaskit/editor-common/messages"); var _questionCircle = _interopRequireDefault(require("@atlaskit/icon/core/question-circle")); var _actions = require("./pm-plugins/actions"); var _commands = require("./pm-plugins/commands"); var _keymap = require("./pm-plugins/keymap"); var _main = require("./pm-plugins/main"); var _pluginKey = require("./pm-plugins/plugin-key"); var _HelpDialogLoader = require("./ui/HelpDialogLoader"); /** * Normalise the caller-supplied config into a single, predictable shape. * – Boolean → "image uploads on/off", AI always off * – Object → pick the two feature flags with sane defaults (both false) */ function parseFeatureConfig(config) { if (typeof config === 'boolean') { return { imageUploadProviderExists: config, aiEnabled: false }; } // Object path – ensure we never return undefined var _ref = config !== null && config !== void 0 ? config : {}, _ref$imageUploadProvi = _ref.imageUploadProviderExists, imageUploadProviderExists = _ref$imageUploadProvi === void 0 ? false : _ref$imageUploadProvi, _ref$aiEnabled = _ref.aiEnabled, aiEnabled = _ref$aiEnabled === void 0 ? false : _ref$aiEnabled; return { imageUploadProviderExists: imageUploadProviderExists, aiEnabled: aiEnabled }; } var helpDialogPlugin = exports.helpDialogPlugin = function helpDialogPlugin(_ref2) { var config = _ref2.config, api = _ref2.api; var _parseFeatureConfig = parseFeatureConfig(config), imageUploadProviderExists = _parseFeatureConfig.imageUploadProviderExists, aiEnabled = _parseFeatureConfig.aiEnabled; return { name: 'helpDialog', pmPlugins: function pmPlugins() { return [{ name: 'helpDialog', plugin: function plugin(_ref3) { var dispatch = _ref3.dispatch; return (0, _main.createPlugin)(dispatch, imageUploadProviderExists, aiEnabled); } }, { name: 'helpDialogKeymap', plugin: function plugin() { var _api$analytics; return (0, _keymap.keymapPlugin)(api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions); } }]; }, pluginsOptions: { quickInsert: function quickInsert(_ref4) { var formatMessage = _ref4.formatMessage; return [{ id: 'helpdialog', title: formatMessage(_messages.toolbarInsertBlockMessages.help), description: formatMessage(_messages.toolbarInsertBlockMessages.helpDescription), keywords: ['?'], priority: 4000, keyshortcut: (0, _keymaps.tooltip)(_keymaps.openHelp), icon: function icon() { return /*#__PURE__*/_react.default.createElement(_questionCircle.default, { label: "", color: "currentColor", spacing: "spacious" }); }, action: function action(insert) { var _api$analytics2; var tr = insert(''); (0, _commands.openHelpCommand)(tr); api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 || _api$analytics2.actions.attachAnalyticsEvent({ action: _analytics.ACTION.HELP_OPENED, actionSubject: _analytics.ACTION_SUBJECT.HELP, actionSubjectId: _analytics.ACTION_SUBJECT_ID.HELP_QUICK_INSERT, attributes: { inputMethod: _analytics.INPUT_METHOD.QUICK_INSERT }, eventType: _analytics.EVENT_TYPE.UI })(tr); return tr; } }]; } }, contentComponent: function contentComponent(_ref5) { var editorView = _ref5.editorView; if (!editorView || (0, _coreUtils.isSSR)()) { return null; } return /*#__PURE__*/_react.default.createElement(_HelpDialogLoader.HelpDialogLoader, { pluginInjectionApi: api, editorView: editorView, quickInsertEnabled: !!(api !== null && api !== void 0 && api.quickInsert) }); }, getSharedState: function getSharedState(editorState) { if (!editorState) { return null; } return _pluginKey.pluginKey.getState(editorState) || null; }, actions: { openHelp: function openHelp() { return api === null || api === void 0 ? void 0 : api.core.actions.execute(function (_ref6) { var tr = _ref6.tr; return (0, _actions.openHelpAction)(tr); }); }, closeHelp: function closeHelp() { return api === null || api === void 0 ? void 0 : api.core.actions.execute(function (_ref7) { var tr = _ref7.tr; return (0, _actions.closeHelpAction)(tr); }); } } }; };