UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

110 lines (108 loc) 5.53 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createPluginsList; exports.getDefaultPresetOptionsFromEditorProps = getDefaultPresetOptionsFromEditorProps; exports.getScrollGutterOptions = getScrollGutterOptions; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _featureFlagsFromProps = require("../utils/feature-flags-from-props"); var _isFullPage = require("../utils/is-full-page"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var isCodeBlockAllowed = function isCodeBlockAllowed(options) { var exclude = options && options.allowBlockType && options.allowBlockType.exclude ? options.allowBlockType.exclude : []; return exclude.indexOf('codeBlock') === -1; }; function getScrollGutterOptions(props) { var appearance = props.appearance; if ((0, _isFullPage.isFullPage)(appearance)) { // Full Page appearance uses a scrollable div wrapper. return { getScrollElement: function getScrollElement() { return document.querySelector('.fabric-editor-popup-scroll-parent'); } }; } return undefined; } function getDefaultPresetOptionsFromEditorProps(props, createAnalyticsEvent // Omit placeholder since it's an existing prop in `DefaultPresetPluginOptions` and will get overridden there ) { var _props$linking, _props$textFormatting, _props$linking2, _props$linking3; var appearance = props.appearance; var cardOptions = ((_props$linking = props.linking) === null || _props$linking === void 0 ? void 0 : _props$linking.smartLinks) || props.smartLinks || props.UNSAFE_cards; return _objectSpread(_objectSpread({}, props), {}, { createAnalyticsEvent: createAnalyticsEvent, typeAhead: { isMobile: false }, featureFlags: (0, _featureFlagsFromProps.createFeatureFlagsFromProps)(props.featureFlags), paste: { cardOptions: cardOptions, sanitizePrivateContent: props.sanitizePrivateContent, pasteWarningOptions: props.pasteWarningOptions }, base: { allowInlineCursorTarget: true, allowScrollGutter: getScrollGutterOptions(props) }, blockType: { lastNodeMustBeParagraph: appearance === 'comment' || appearance === 'chromeless', allowBlockType: props.allowBlockType, isUndoRedoButtonsEnabled: props.allowUndoRedoButtons }, placeholder: { placeholder: props.placeholder, placeholderBracketHint: props.placeholderBracketHint }, textFormatting: _objectSpread(_objectSpread({}, props.textFormatting || {}), {}, { responsiveToolbarMenu: ((_props$textFormatting = props.textFormatting) === null || _props$textFormatting === void 0 ? void 0 : _props$textFormatting.responsiveToolbarMenu) != null ? props.textFormatting.responsiveToolbarMenu : props.allowUndoRedoButtons }), submitEditor: props.onSave, quickInsert: { enableElementBrowser: props.elementBrowser && props.elementBrowser.showModal, elementBrowserHelpUrl: props.elementBrowser && props.elementBrowser.helpUrl, disableDefaultItems: props.quickInsert && typeof props.quickInsert !== 'boolean' && props.quickInsert.disableDefaultItems || false, headless: false, emptyStateHandler: props.elementBrowser && props.elementBrowser.emptyStateHandler, prioritySortingFn: props.quickInsert && typeof props.quickInsert !== 'boolean' && props.quickInsert.prioritySortingFn || undefined, onInsert: props.quickInsert && typeof props.quickInsert !== 'boolean' && props.quickInsert.onInsert || undefined }, selection: { useLongPressSelection: false }, hyperlinkOptions: { editorAppearance: props.appearance, linkPicker: (_props$linking2 = props.linking) === null || _props$linking2 === void 0 ? void 0 : _props$linking2.linkPicker, onClickCallback: cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.onClickCallback, platform: 'web', autoLinkOnBlur: (_props$linking3 = props.linking) === null || _props$linking3 === void 0 ? void 0 : _props$linking3.autoLinkOnBlur }, codeBlock: _objectSpread(_objectSpread({}, props.codeBlock), {}, { useLongPressSelection: false, allowCompositionInputOverride: false }) }); } /** * Maps EditorProps to EditorPlugins * * Note: The order that presets are added determines * their placement in the editor toolbar. */ function createPluginsList( // eslint-disable-next-line @typescript-eslint/no-explicit-any preset, props, pluginInjectionAPI) { var excludes = new Set(); if (!isCodeBlockAllowed({ allowBlockType: props.allowBlockType })) { excludes.add('codeBlock'); } return preset.build({ pluginInjectionAPI: pluginInjectionAPI, excludePlugins: excludes }); }