@atlaskit/editor-plugin-layout
Version:
Layout plugin for @atlaskit/editor-core
76 lines (75 loc) • 4.63 kB
TypeScript
import type { Valign } from '@atlaskit/adf-schema/layout-column';
import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
import type { Command, EditorCommand, ExtractInjectionAPI, TOOLBAR_MENU_TYPE } from '@atlaskit/editor-common/types';
import type { Node } from '@atlaskit/editor-prosemirror/model';
import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
import type { LayoutPlugin } from '../layoutPluginType';
import type { Change, PresetLayout } from '../types';
export declare const ONE_COL_LAYOUTS: PresetLayout[];
export declare const TWO_COL_LAYOUTS: PresetLayout[];
export declare const THREE_COL_LAYOUTS: PresetLayout[];
/**
* Finds layout preset based on the width attrs of all the layoutColumn nodes
* inside the layoutSection node
*/
export declare const getPresetLayout: (section: Node) => PresetLayout | undefined;
export declare const getSelectedLayout: (maybeLayoutSection: Node | undefined, current: PresetLayout) => PresetLayout;
export declare const createMultiColumnLayoutSection: (state: EditorState, numberOfColumns?: number) => Node;
export declare const createDefaultLayoutSection: (state: EditorState) => Node;
export declare const insertLayoutColumns: Command;
export type InsertLayoutColumnsInputMethod = TOOLBAR_MENU_TYPE | INPUT_METHOD.QUICK_INSERT | INPUT_METHOD.ELEMENT_BROWSER;
export declare const insertLayoutColumnsWithAnalytics: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => (inputMethod: InsertLayoutColumnsInputMethod) => Command;
/**
* Forces a layout section node to match the given preset layout by adjusting
* its column structure and widths, then restoring the original selection.
*/
export declare function forceSectionToPresetLayout(state: EditorState, node: Node, pos: number, presetLayout: PresetLayout): Transaction;
export declare const setPresetLayout: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => (layout: PresetLayout) => Command;
export declare const fixColumnSizes: (changedTr: Transaction, state: EditorState) => Change | undefined;
export declare const fixColumnStructure: (state: EditorState) => Transaction | undefined;
export declare const deleteActiveLayoutNode: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined, inputMethod?: INPUT_METHOD.FLOATING_TB) => Command;
export type InsertLayoutColumnSide = 'left' | 'right';
export declare const LAYOUT_COLUMN_INSERT_META = "layoutColumnInsert";
export type LayoutColumnInsertMeta = {
insertedColumnNodeSize: number;
insertedColumnPos: number;
side: InsertLayoutColumnSide;
};
type LayoutPluginAPI = ExtractInjectionAPI<LayoutPlugin> | undefined;
export type LayoutColumnActionInputMethod = INPUT_METHOD.LAYOUT_COLUMN_MENU | INPUT_METHOD.SHORTCUT;
/**
* Returns the active maximum layout column count for the current advanced layouts experiment state.
*/
export declare function getEffectiveMaxLayoutColumns(): number;
export type InsertLayoutColumnOptions = {
inputMethod?: LayoutColumnActionInputMethod;
side: InsertLayoutColumnSide;
};
export declare const insertLayoutColumn: ({ side, inputMethod }: InsertLayoutColumnOptions, editorAnalyticsAPI?: EditorAnalyticsAPI, api?: LayoutPluginAPI) => EditorCommand;
export type SetLayoutColumnValignOptions = {
inputMethod?: INPUT_METHOD.LAYOUT_COLUMN_MENU;
valign: Valign;
};
export declare const setLayoutColumnValign: ({ valign, inputMethod }: SetLayoutColumnValignOptions, editorAnalyticsAPI?: EditorAnalyticsAPI, api?: LayoutPluginAPI) => EditorCommand;
export type DistributeLayoutColumnsOptions = {
inputMethod?: INPUT_METHOD.LAYOUT_COLUMN_MENU | INPUT_METHOD.FLOATING_TB;
target?: 'selectedColumns' | 'allColumns';
};
export declare const distributeLayoutColumns: (editorAnalyticsAPI?: EditorAnalyticsAPI, api?: LayoutPluginAPI) => ({ inputMethod, target, }?: DistributeLayoutColumnsOptions) => EditorCommand;
export type ToggleLayoutColumnMenuOptions = {
anchorPos: number;
isOpen?: undefined;
openedViaKeyboard?: boolean;
} | {
anchorPos?: number;
isOpen: boolean;
openedViaKeyboard?: boolean;
};
export declare const toggleLayoutColumnMenu: (options: ToggleLayoutColumnMenuOptions) => EditorCommand;
export declare const setLayoutColumnDangerPreview: (show: boolean) => EditorCommand;
export type DeleteLayoutColumnOptions = {
inputMethod?: LayoutColumnActionInputMethod;
};
export declare const deleteLayoutColumn: ({ inputMethod }?: DeleteLayoutColumnOptions, editorAnalyticsAPI?: EditorAnalyticsAPI, api?: LayoutPluginAPI) => EditorCommand;
export {};