@atlaskit/editor-plugin-insert-block
Version:
Insert block plugin for @atlaskit/editor-core
106 lines (105 loc) • 5 kB
TypeScript
import type { PluginToolbarComponentConfig } from '@atlaskit/editor-common/toolbar';
import type { EditorAppearance, OptionalPlugin } from '@atlaskit/editor-common/types';
import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
import type { BlockTypePlugin } from '@atlaskit/editor-plugin-block-type';
import type { CodeBlockPlugin } from '@atlaskit/editor-plugin-code-block';
import type { ConnectivityPlugin } from '@atlaskit/editor-plugin-connectivity';
import type { ContextPanelPlugin } from '@atlaskit/editor-plugin-context-panel';
import type { DatePlugin } from '@atlaskit/editor-plugin-date';
import type { EmojiPlugin } from '@atlaskit/editor-plugin-emoji';
import type { ExpandPlugin } from '@atlaskit/editor-plugin-expand';
import type { ExtensionPlugin } from '@atlaskit/editor-plugin-extension';
import type { FeatureFlagsPlugin } from '@atlaskit/editor-plugin-feature-flags';
import type { HyperlinkPlugin } from '@atlaskit/editor-plugin-hyperlink';
import type { ImageUploadPlugin } from '@atlaskit/editor-plugin-image-upload';
import type { LayoutPlugin } from '@atlaskit/editor-plugin-layout';
import type { MediaPlugin } from '@atlaskit/editor-plugin-media';
import type { MediaInsertPlugin } from '@atlaskit/editor-plugin-media-insert';
import type { MentionsPlugin } from '@atlaskit/editor-plugin-mentions';
import type { MetricsPlugin } from '@atlaskit/editor-plugin-metrics';
import type { PanelPlugin } from '@atlaskit/editor-plugin-panel';
import type { PlaceholderTextPlugin } from '@atlaskit/editor-plugin-placeholder-text';
import type { PrimaryToolbarPlugin } from '@atlaskit/editor-plugin-primary-toolbar';
import type { QuickInsertPlugin } from '@atlaskit/editor-plugin-quick-insert';
import type { RulePlugin } from '@atlaskit/editor-plugin-rule';
import type { StatusPlugin } from '@atlaskit/editor-plugin-status';
import type { TablePlugin } from '@atlaskit/editor-plugin-table';
import type { TasksAndDecisionsPlugin } from '@atlaskit/editor-plugin-tasks-and-decisions';
import type { ToolbarPlugin } from '@atlaskit/editor-plugin-toolbar';
import type { TypeAheadPlugin } from '@atlaskit/editor-plugin-type-ahead';
export type InsertBlockPluginDependencies = [
TypeAheadPlugin,
OptionalPlugin<TablePlugin>,
OptionalPlugin<HyperlinkPlugin>,
OptionalPlugin<DatePlugin>,
OptionalPlugin<BlockTypePlugin>,
OptionalPlugin<AnalyticsPlugin>,
OptionalPlugin<ImageUploadPlugin>,
OptionalPlugin<EmojiPlugin>,
OptionalPlugin<QuickInsertPlugin>,
OptionalPlugin<RulePlugin>,
OptionalPlugin<CodeBlockPlugin>,
OptionalPlugin<PanelPlugin>,
OptionalPlugin<MediaPlugin>,
OptionalPlugin<MediaInsertPlugin>,
OptionalPlugin<MentionsPlugin>,
OptionalPlugin<MetricsPlugin>,
OptionalPlugin<StatusPlugin>,
OptionalPlugin<LayoutPlugin>,
OptionalPlugin<ExpandPlugin>,
OptionalPlugin<PlaceholderTextPlugin>,
OptionalPlugin<ExtensionPlugin>,
OptionalPlugin<TasksAndDecisionsPlugin>,
OptionalPlugin<PrimaryToolbarPlugin>,
OptionalPlugin<FeatureFlagsPlugin>,
OptionalPlugin<ContextPanelPlugin>,
OptionalPlugin<ConnectivityPlugin>,
OptionalPlugin<ToolbarPlugin>
];
type PluginToolbarComponentsConfig<T extends string> = {
[componentName in T]?: PluginToolbarComponentConfig;
};
export type ToolbarInsertBlockButtonsConfig = PluginToolbarComponentsConfig<'codeBlock' | 'emoji' | 'insert' | 'layout' | 'media' | 'mention' | 'table' | 'taskList'>;
export interface InsertBlockPluginOptions {
allowExpand?: boolean;
allowTables?: boolean;
appearance?: EditorAppearance;
horizontalRuleEnabled?: boolean;
insertMenuItems?: any;
nativeStatusSupported?: boolean;
/**
* To hide the element browser "view more" button in the
* overflow dropdown menu
* @default undefined Does not show the view more by default
*/
showElementBrowserLink?: boolean;
tableSelectorSupported?: boolean;
/**
* Configure which toolbar buttons should be visible
* @default undefined - shows all available buttons (current behaviour)
*
* Only applies when platform_editor_toolbar_aifc is enabled
*/
toolbarButtons?: ToolbarInsertBlockButtonsConfig;
/**
* To hide the individual insert block buttons in the toolbar
* and only show the plus button
* @default undefined Shows the insert block buttons and the plus button
*
* Only applies when platform_editor_toolbar_aifc is enabled
*
* @warning Use {@link toolbarButtons} instead to configure the insert block toolbar buttons
* @see https://product-fabric.atlassian.net/browse/ED-29426
*/
toolbarShowPlusInsertOnly?: boolean;
}
/**
* @private
* @deprecated Use {@link InsertBlockPluginOptions} instead
* @see https://product-fabric.atlassian.net/browse/ED-27496
*/
export type InsertBlockOptions = InsertBlockPluginOptions;
export interface InsertBlockPluginState {
showElementBrowser: boolean;
}
export {};