UNPKG

@atlaskit/editor-plugin-insert-block

Version:

Insert block plugin for @atlaskit/editor-core

100 lines (98 loc) 5.86 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useInsertButtonState = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _reactIntl = require("react-intl"); var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector"); var _editorPluginConnectivity = require("@atlaskit/editor-plugin-connectivity"); var _createItems = require("../../ToolbarInsertBlock/create-items"); var _filterDropdownItems = require("./filterDropdownItems"); var useInsertButtonState = exports.useInsertButtonState = function useInsertButtonState(_ref) { var api = _ref.api, breakpoint = _ref.breakpoint, editorView = _ref.editorView, horizontalRuleEnabled = _ref.horizontalRuleEnabled, insertMenuItems = _ref.insertMenuItems, nativeStatusSupported = _ref.nativeStatusSupported, numberOfButtons = _ref.numberOfButtons, tableSelectorSupported = _ref.tableSelectorSupported, expandEnabled = _ref.expandEnabled, showElementBrowserLink = _ref.showElementBrowserLink, toolbarConfig = _ref.toolbarConfig; var _useIntl = (0, _reactIntl.useIntl)(), formatMessage = _useIntl.formatMessage; var isTypeAheadAllowed = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'typeAhead.isAllowed'); var imageUploadEnabled = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'imageUpload.enabled'); var mentionsSupported = !!(0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'mention.mentionProvider'); var canInsertMention = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'mention.canInsertMention'); var dateEnabled = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'date.isInitialised'); var placeholderTextEnabled = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'placeholderText.allowInserting'); var mediaAllowsUploads = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.allowsUploads'); var canInsertLink = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'hyperlink.canInsertLink'); var activeLinkMark = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'hyperlink.activeLinkMark'); var connectivityMode = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'connectivity.mode'); var emojiProvider = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'emoji.emojiProvider'); var availableWrapperBlockTypes = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockType.availableWrapperBlockTypes'); // Computed values var mediaUploadsEnabled = mediaAllowsUploads; var mediaSupported = mediaAllowsUploads !== undefined; var isEditorOffline = (0, _editorPluginConnectivity.isOfflineMode)(connectivityMode); var imageUploadSupported = !!(api !== null && api !== void 0 && api.imageUpload); var mentionsDisabled = !canInsertMention; var linkSupported = canInsertLink !== undefined; var linkDisabled = !canInsertLink || !!activeLinkMark; var emojiDisabled = !emojiProvider; var actionSupported = !!(editorView !== null && editorView !== void 0 && editorView.state.schema.nodes.taskItem); var decisionSupported = !!(editorView !== null && editorView !== void 0 && editorView.state.schema.nodes.decisionItem); var layoutSectionEnabled = !!(api !== null && api !== void 0 && api.layout); var _ref2 = editorView !== null && editorView !== void 0 && editorView.state.schema ? (0, _createItems.createItems)({ isTypeAheadAllowed: isTypeAheadAllowed, tableSupported: !!(editorView !== null && editorView !== void 0 && editorView.state.schema.nodes.table), tableSelectorSupported: tableSelectorSupported, mediaUploadsEnabled: mediaUploadsEnabled, mediaSupported: mediaSupported, isEditorOffline: isEditorOffline, imageUploadSupported: imageUploadSupported, imageUploadEnabled: imageUploadEnabled, mentionsSupported: mentionsSupported, mentionsDisabled: mentionsDisabled, actionSupported: actionSupported, decisionSupported: decisionSupported, linkSupported: linkSupported, linkDisabled: linkDisabled, emojiDisabled: emojiDisabled, hasEmojiPlugin: !!(api !== null && api !== void 0 && api.emoji), hasMentionsPlugin: !!(api !== null && api !== void 0 && api.mention), hasMediaPlugin: !!(api !== null && api !== void 0 && api.media), nativeStatusSupported: nativeStatusSupported, dateEnabled: dateEnabled, placeholderTextEnabled: placeholderTextEnabled, horizontalRuleEnabled: horizontalRuleEnabled, layoutSectionEnabled: layoutSectionEnabled, expandEnabled: expandEnabled, showElementBrowserLink: showElementBrowserLink, emojiProvider: emojiProvider, availableWrapperBlockTypes: availableWrapperBlockTypes, insertMenuItems: insertMenuItems, schema: editorView === null || editorView === void 0 ? void 0 : editorView.state.schema, numberOfButtons: numberOfButtons || 0, formatMessage: formatMessage }) : [, []], _ref3 = (0, _slicedToArray2.default)(_ref2, 2), allDropdownItems = _ref3[1]; var dropdownItems = (0, _react.useMemo)(function () { if (!breakpoint || !toolbarConfig) { return allDropdownItems; } return (0, _filterDropdownItems.filterDropdownItemsByBreakpoint)(allDropdownItems, breakpoint, toolbarConfig); }, [allDropdownItems, breakpoint, toolbarConfig]); return { dropdownItems: dropdownItems, emojiProvider: emojiProvider, isTypeAheadAllowed: isTypeAheadAllowed }; };