UNPKG

@atlaskit/editor-plugin-insert-block

Version:

Insert block plugin for @atlaskit/editor-core

93 lines (92 loc) 5.06 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import { useMemo } from 'react'; import { useIntl } from 'react-intl'; import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector'; import { isOfflineMode } from '@atlaskit/editor-plugin-connectivity'; import { createItems } from '../../ToolbarInsertBlock/create-items'; import { filterDropdownItemsByBreakpoint } from './filterDropdownItems'; export var 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 = useIntl(), formatMessage = _useIntl.formatMessage; var isTypeAheadAllowed = useSharedPluginStateSelector(api, 'typeAhead.isAllowed'); var imageUploadEnabled = useSharedPluginStateSelector(api, 'imageUpload.enabled'); var mentionsSupported = !!useSharedPluginStateSelector(api, 'mention.mentionProvider'); var canInsertMention = useSharedPluginStateSelector(api, 'mention.canInsertMention'); var dateEnabled = useSharedPluginStateSelector(api, 'date.isInitialised'); var placeholderTextEnabled = useSharedPluginStateSelector(api, 'placeholderText.allowInserting'); var mediaAllowsUploads = useSharedPluginStateSelector(api, 'media.allowsUploads'); var canInsertLink = useSharedPluginStateSelector(api, 'hyperlink.canInsertLink'); var activeLinkMark = useSharedPluginStateSelector(api, 'hyperlink.activeLinkMark'); var connectivityMode = useSharedPluginStateSelector(api, 'connectivity.mode'); var emojiProvider = useSharedPluginStateSelector(api, 'emoji.emojiProvider'); var availableWrapperBlockTypes = useSharedPluginStateSelector(api, 'blockType.availableWrapperBlockTypes'); // Computed values var mediaUploadsEnabled = mediaAllowsUploads; var mediaSupported = mediaAllowsUploads !== undefined; var isEditorOffline = 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 ? 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 = _slicedToArray(_ref2, 2), allDropdownItems = _ref3[1]; var dropdownItems = useMemo(function () { if (!breakpoint || !toolbarConfig) { return allDropdownItems; } return filterDropdownItemsByBreakpoint(allDropdownItems, breakpoint, toolbarConfig); }, [allDropdownItems, breakpoint, toolbarConfig]); return { dropdownItems: dropdownItems, emojiProvider: emojiProvider, isTypeAheadAllowed: isTypeAheadAllowed }; };