@atlaskit/editor-plugin-insert-block
Version:
Insert block plugin for @atlaskit/editor-core
93 lines (92 loc) • 5.06 kB
JavaScript
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
};
};