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