UNPKG

roosterjs

Version:

A simple facade for all roosterjs code

854 lines (739 loc) 32.5 kB
/// <reference path="./rooster" /> /// <reference types="react" /> import * as FluentUIReact from '@fluentui/react/dist/react'; // Type definitions for roosterjs (Version 9.0.2) // Generated by dts tool from roosterjs // Project: https://github.com/Microsoft/roosterjs declare namespace roosterjsReact { /** * Represents a localized string map from the string key to the localized string or a function returns localized string */ type LocalizedStrings<T extends string, V extends string = string> = { [key in T]?: V | (() => V); }; /** * Localized string key for OK button */ type OkButtonStringKey = 'buttonNameOK'; /** * Localized string key for Cancel button */ type CancelButtonStringKey = 'buttonNameCancel'; /** * Localized string key for Cancel button menu splitter. * No need to localize this one as it will be replaced with a horizontal line */ type MenuItemSplitterKey0 = '-'; /** * A set of UI Utilities to help render additional UI element from a plugin */ interface UIUtilities { /** * Render additional react component from a plugin, with correlated theme and window context of Rooster * @param element The UI element (JSX object) to render * @returns A disposer function to help unmount this element */ renderComponent(element: JSX.Element): () => void; /** * Check if editor is rendered in Right-to-left mode */ isRightToLeft(): boolean; } /** * A sub interface of roosterjs.EditorPlugin to provide additional functionalities for rendering react component from the plugin */ interface ReactEditorPlugin extends roosterjs.EditorPlugin { /** * Set the UI utilities objects to this plugin to help render additional UI elements * @param uiUtilities The UI utilities object to set */ setUIUtilities(uiUtilities: UIUtilities): void; } /** * Create the UI Utilities object for plugins to render additional react components * @param container Container DIV of editor * @param theme Current theme used by editor * @returns A UIUtilities object */ function createUIUtilities(container: HTMLDivElement, theme: FluentUIReact.PartialTheme): UIUtilities; /** * Get a localized string * @param strings The LocalizedStrings map * @param key Key of the string * @param defaultString Default unlocalized string, will be used if strings is not specified or the give key doesn't exist in strings * @returns A localized string from the string map, or defaultString */ function getLocalizedString<T extends string, R extends string | null | undefined>(strings: LocalizedStrings<T> | undefined, key: T, defaultString: R): string | R; /** * Properties for Rooster react component */ interface RoosterProps extends roosterjs.EditorOptions, React.HTMLAttributes<HTMLDivElement> { /** * Creator function used for creating the instance of roosterjs editor. * Use this callback when you have your own sub class of roosterjs Editor or force trigging a reset of editor */ editorCreator?: (div: HTMLDivElement, options: roosterjs.EditorOptions) => roosterjs.IEditor; /** * Whether editor should get focus once it is created * Changing of this value after editor is created will not reset editor */ focusOnInit?: boolean; } /** * Main component of react wrapper for roosterjs * @param props Properties of this component * @returns The react component */ function Rooster(props: RoosterProps): JSX.Element; /** * Represents a plugin to connect format ribbon component and the editor */ interface RibbonPlugin extends ReactEditorPlugin { /** * Register a callback to be invoked when format state of editor is changed, returns a disposer function. */ registerFormatChangedCallback: (callback: (formatState: roosterjs.ContentModelFormatState) => void) => () => void; /** * When user clicks on a button, call this method to let the plugin to handle this click event * @param button The button that is clicked * @param key Key of child menu item that is clicked if any * @param strings The localized string map for this button */ onButtonClick: <T extends string>(button: RibbonButton<T>, key: T, strings?: LocalizedStrings<T>) => void; /** * Enter live preview state (shadow edit) of editor if there is a non-collapsed selection * @param button The button that triggered this action * @param key Key of the hovered button sub item * @param strings The localized string map for this button */ startLivePreview: <T extends string>(button: RibbonButton<T>, key: T, strings?: LocalizedStrings<T>) => void; /** * Leave live preview state (shadow edit) of editor */ stopLivePreview: () => void; } /** * Represents a button on format ribbon */ interface RibbonButton<T extends string> { /** * key of this button, needs to be unique */ key: T; /** * Name of button icon. See https://developer.microsoft.com/en-us/fluentui#/styles/web/icons for all icons */ iconName: string; /** * True if we need to flip the icon when render in Right-to-left page */ flipWhenRtl?: boolean; /** * Text of the button. This text is not localized. To show a localized text, pass a dictionary to Ribbon component via RibbonProps.strings. */ unlocalizedText: string; /** * Click handler of this button. * @param editor the editor instance * @param key key of the button that is clicked * @param strings localized strings used by any UI element of this click handler * @param uiUtilities a utilities object to help render addition UI elements */ onClick: (editor: roosterjs.IEditor, key: T, strings: LocalizedStrings<T> | undefined, uiUtilities: UIUtilities) => void; /** * Get if the current button should be checked * @param formatState The current formatState of editor * @returns True to show the button in a checked state, otherwise false * @default False When not specified, it is treated as always returning false */ isChecked?: (formatState: roosterjs.ContentModelFormatState) => boolean; /** * Get if the current button should be disabled * @param formatState The current formatState of editor * @returns True to show the button in a disabled state, otherwise false * @default False When not specified, it is treated as always returning false */ isDisabled?: (formatState: roosterjs.ContentModelFormatState) => boolean; /** * A drop down menu of this button. When set this value, the button will has a "v" icon to let user * know it will open a drop down menu. And the onClick handler will only be triggered when user click * a menu item of the drop down. */ dropDownMenu?: RibbonButtonDropDown; /** * Use this property to pass in Fluent UI CommandBar property directly. It will overwrite the values of other conflict properties * * Do not use FluentUIReact.ICommandBarItemProps.subMenuProps here since it will be overwritten. * If need, specify its value using RibbonButton.dropDownMenu.commandBarSubMenuProperties. */ commandBarProperties?: Partial<FluentUIReact.ICommandBarItemProps>; } /** * Represent a drop down menu of a ribbon button */ interface RibbonButtonDropDown { /** * A key-value map for child items. * When click on a child item, onClick handler will be triggered with the key of the clicked child item passed in as the second parameter */ items: Record<string, string>; /** * CSS class name for drop down menu item */ itemClassName?: string; /** * Whether live preview feature is enabled for this plugin. * When live preview is enabled, hovering on a sub item will show the format result immediately in editor. * This option needs dropDownItems to have values */ allowLivePreview?: boolean; /** * Custom render of drop down item * @param item This menu item * @param onClick click handler of this menu item */ itemRender?: (item: FluentUIReact.IContextualMenuItem, onClick: (e: React.MouseEvent<Element> | React.KeyboardEvent<Element>, item: FluentUIReact.IContextualMenuItem) => void) => React.ReactNode; /** * Get the key of current selected item * @param formatState The current formatState of editor * @returns the key of selected item, it needs to be the same with the key in dropDownItems */ getSelectedItemKey?: (formatState: roosterjs.ContentModelFormatState) => string | null; /** * Use this property to pass in Fluent UI ContextMenu property directly. It will overwrite the values of other conflict properties */ commandBarSubMenuProperties?: Partial<FluentUIReact.IContextualMenuProps>; } /** * Properties of Ribbon component */ interface RibbonProps<T extends string> extends Partial<FluentUIReact.ICommandBarProps> { /** * The ribbon plugin used for connect editor and the ribbon */ plugin: RibbonPlugin; /** * Buttons in this ribbon */ buttons: RibbonButton<T>[]; /** * A dictionary of localized strings for all buttons. * Key of the dictionary is the key of each button, value will be the string or a function to return the string */ strings?: LocalizedStrings<T>; } /** * Key of localized strings of Bold button */ type BoldButtonStringKey = 'buttonNameBold'; /** * Key of localized strings of Italic button */ type ItalicButtonStringKey = 'buttonNameItalic'; /** * Key of localized strings of Underline button */ type UnderlineButtonStringKey = 'buttonNameUnderline'; /** * Key of localized strings of Font button */ type FontButtonStringKey = 'buttonNameFont'; /** * Key of localized strings of Font size button */ type FontSizeButtonStringKey = 'buttonNameFontSize'; /** * Key of localized strings of Increase font size button */ type IncreaseFontSizeButtonStringKey = 'buttonNameIncreaseFontSize'; /** * Key of localized strings of Decrease font size button */ type DecreaseFontSizeButtonStringKey = 'buttonNameDecreaseFontSize'; /** * Key of localized strings of Text color button */ type TextColorButtonStringKey = 'buttonNameTextColor' | TextColorKeys; /** * Key of localized strings of Background color button */ type BackgroundColorButtonStringKey = 'buttonNameBackgroundColor' | BackgroundColorKeys; /** * Key of localized strings of Bulleted list button */ type BulletedListButtonStringKey = 'buttonNameBulletedList'; /** * Key of localized strings of Numbered list button */ type NumberedListButtonStringKey = 'buttonNameNumberedList'; /** * Key of localized strings of More commands (overflow) button */ type MoreCommandsButtonStringKey = 'buttonNameMoreCommands'; /** * Key of localized strings of Decrease indent size button */ type DecreaseIndentButtonStringKey = 'buttonNameDecreaseIndent'; /** * Key of localized strings of Increase indent size button */ type IncreaseIndentButtonStringKey = 'buttonNameIncreaseIndent'; /** * Key of localized strings of Quote button */ type QuoteButtonStringKey = 'buttonNameQuote'; /** * Key of localized strings of Align left button */ type AlignLeftButtonStringKey = 'buttonNameAlignLeft'; /** * Key of localized strings of Align center button */ type AlignCenterButtonStringKey = 'buttonNameAlignCenter'; /** * Key of localized strings of Align right button */ type AlignRightButtonStringKey = 'buttonNameAlignRight'; /** * Key of localized strings of Align justify button */ type AlignJustifyButtonStringKey = 'buttonNameAlignJustify'; /** * Key of localized strings of Insert link button */ type InsertLinkButtonStringKey = 'buttonNameInsertLink' | 'insertLinkTitle' | 'insertLinkDialogUrl' | 'insertLinkDialogDisplayAs' | OkButtonStringKey | CancelButtonStringKey; /** * Key of localized strings of Remove link button */ type RemoveLinkButtonStringKey = 'buttonNameRemoveLink'; /** * Key of localized strings of Insert table button */ type InsertTableButtonStringKey = 'buttonNameInsertTable' | 'insertTablePane'; /** * Key of localized strings of Insert image button */ type InsertImageButtonStringKey = 'buttonNameInsertImage'; /** * Key of localized strings of Superscript button */ type SuperscriptButtonStringKey = 'buttonNameSuperscript'; /** * Key of localized strings of Subscript button */ type SubscriptButtonStringKey = 'buttonNameSubscript'; /** * Key of localized strings of Strikethrough button */ type StrikethroughButtonStringKey = 'buttonNameStrikethrough'; /** * Key of localized strings of Heading button */ type HeadingButtonStringKey = 'buttonNameHeading' | 'buttonNameHeading1' | 'buttonNameHeading2' | 'buttonNameHeading3' | 'buttonNameHeading4' | 'buttonNameHeading5' | 'buttonNameHeading6' | 'buttonNameNoHeading' | MenuItemSplitterKey0; /** * @deprecated Use HeadingButtonStringKey instead */ type HeaderButtonStringKey = 'buttonNameHeader' | 'buttonNameHeader1' | 'buttonNameHeader2' | 'buttonNameHeader3' | 'buttonNameHeader4' | 'buttonNameHeader5' | 'buttonNameHeader6' | 'buttonNameNoHeader' | HeadingButtonStringKey; /** * Key of localized strings of Code button */ type CodeButtonStringKey = 'buttonNameCode'; /** * Key of localized strings of Left to right button */ type LtrButtonStringKey = 'buttonNameLtr'; /** * Key of localized strings of Right to left button */ type RtlButtonStringKey = 'buttonNameRtl'; /** * Key of localized strings of Undo button */ type UndoButtonStringKey = 'buttonNameUndo'; /** * Key of localized strings of Redo button */ type RedoButtonStringKey = 'buttonNameRedo'; /** * Key of localized strings of Clear format button */ type ClearFormatButtonStringKey = 'buttonNameClearFormat'; /** * A public type for localized string keys of all buttons */ type AllButtonStringKeys = AlignLeftButtonStringKey | AlignCenterButtonStringKey | AlignRightButtonStringKey | AlignJustifyButtonStringKey | BackgroundColorButtonStringKey | BoldButtonStringKey | BulletedListButtonStringKey | ClearFormatButtonStringKey | CodeButtonStringKey | DecreaseFontSizeButtonStringKey | DecreaseIndentButtonStringKey | FontButtonStringKey | FontSizeButtonStringKey | HeaderButtonStringKey | HeadingButtonStringKey | IncreaseFontSizeButtonStringKey | IncreaseIndentButtonStringKey | InsertImageButtonStringKey | InsertLinkButtonStringKey | InsertTableButtonStringKey | ItalicButtonStringKey | LtrButtonStringKey | MoreCommandsButtonStringKey | NumberedListButtonStringKey | QuoteButtonStringKey | RedoButtonStringKey | RemoveLinkButtonStringKey | RtlButtonStringKey | StrikethroughButtonStringKey | SubscriptButtonStringKey | SuperscriptButtonStringKey | TextColorButtonStringKey | UnderlineButtonStringKey | UndoButtonStringKey | CellShadeButtonStringKey; /** * @deprecated * Key of localized strings of Cell shade button */ type CellShadeButtonStringKey = 'buttonNameCellShade' | BackgroundColorKeys; /** * The format ribbon component of roosterjs-react * @param props Properties of format ribbon component * @returns The format ribbon component */ function Ribbon<T extends string>(props: RibbonProps<T>): JSX.Element; /** * Create a new instance of RibbonPlugin object * @param delayUpdateTime The time to wait before refresh the button when user do some editing operation in editor */ function createRibbonPlugin(delayUpdateTime?: number): RibbonPlugin; /** * "Undo" button on the format ribbon */ const redoButton: RibbonButton<RedoButtonStringKey>; /** * "Undo" button on the format ribbon */ const undoButton: RibbonButton<UndoButtonStringKey>; /** * "Align center" button on the format ribbon */ const alignCenterButton: RibbonButton<AlignCenterButtonStringKey>; /** * "Align justify" button on the format ribbon */ const alignJustifyButton: RibbonButton<'buttonNameAlignJustify'>; /** * "Align left" button on the format ribbon */ const alignLeftButton: RibbonButton<AlignLeftButtonStringKey>; /** * "Align right" button on the format ribbon */ const alignRightButton: RibbonButton<AlignRightButtonStringKey>; /** * "Background color" button on the format ribbon */ const backgroundColorButton: RibbonButton<BackgroundColorButtonStringKey>; /** * "Block quote" button on the format ribbon */ const blockQuoteButton: RibbonButton<QuoteButtonStringKey>; /** * "Bold" button on the format ribbon */ const boldButton: RibbonButton<BoldButtonStringKey>; /** * "Bulleted list" button on the format ribbon */ const bulletedListButton: RibbonButton<BulletedListButtonStringKey>; /** * "Clear format" button on the format ribbon */ const clearFormatButton: RibbonButton<ClearFormatButtonStringKey>; /** * "Code" button on the format ribbon */ const codeButton: RibbonButton<CodeButtonStringKey>; /** * "Decrease font size" button on the format ribbon */ const decreaseFontSizeButton: RibbonButton<DecreaseFontSizeButtonStringKey>; /** * "Decrease indent" button on the format ribbon */ const decreaseIndentButton: RibbonButton<DecreaseIndentButtonStringKey>; /** * "Font" button on the format ribbon */ const fontButton: RibbonButton<FontButtonStringKey>; /** * "Font Size" button on the format ribbon */ const fontSizeButton: RibbonButton<FontSizeButtonStringKey>; /** * "Increase font size" button on the format ribbon */ const increaseFontSizeButton: RibbonButton<IncreaseFontSizeButtonStringKey>; /** * "Increase indent" button on the format ribbon */ const increaseIndentButton: RibbonButton<IncreaseIndentButtonStringKey>; /** * "Insert image" button on the format ribbon */ const insertImageButton: RibbonButton<InsertImageButtonStringKey>; /** * "Insert link" button on the format ribbon */ const insertLinkButton: RibbonButton<InsertLinkButtonStringKey>; /** * "Insert table" button on the format ribbon */ const insertTableButton: RibbonButton<InsertTableButtonStringKey>; /** * "Italic" button on the format ribbon */ const italicButton: RibbonButton<ItalicButtonStringKey>; /** * "Left to right" button on the format ribbon */ const ltrButton: RibbonButton<LtrButtonStringKey>; /** * "Numbering list" button on the format ribbon */ const numberedListButton: RibbonButton<NumberedListButtonStringKey>; /** * "Remove link" button on the format ribbon */ const removeLinkButton: RibbonButton<RemoveLinkButtonStringKey>; /** * "Right to left" button on the format ribbon */ const rtlButton: RibbonButton<RtlButtonStringKey>; /** * "Set header level" button on the format ribbon */ const setHeadingLevelButton: RibbonButton<HeadingButtonStringKey>; /** * "Strikethrough" button on the format ribbon */ const strikethroughButton: RibbonButton<StrikethroughButtonStringKey>; /** * "Subscript" button on the format ribbon */ const subscriptButton: RibbonButton<SubscriptButtonStringKey>; /** * "Superscript" button on the format ribbon */ const superscriptButton: RibbonButton<SuperscriptButtonStringKey>; /** * "Text color" button on the format ribbon */ const textColorButton: RibbonButton<TextColorButtonStringKey>; /** * "Underline" button on the format ribbon */ const underlineButton: RibbonButton<UnderlineButtonStringKey>; /** * Create a new instance of ContextMenu plugin with context menu implementation based on FluentUI. */ function createContextMenuPlugin(): roosterjs.ContextMenuPluginBase<FluentUIReact.IContextualMenuItem>; /** * Create a new instance of ContextMenuProviderImpl class * @param menuName Name of this group of menus * @param items Menu items that will be show * @param strings Localized strings of these menu items * @param shouldAddMenuItems A general checker to decide if we should add this group of menu items */ function createContextMenuProvider<TString extends string, TContext>(menuName: string, items: ContextMenuItem<TString, TContext>[], strings?: LocalizedStrings<TString>, shouldAddMenuItems?: (editor: roosterjs.IEditor, node: Node) => boolean, context?: TContext): roosterjs.EditorPlugin; /** * Create a new instance of ContextMenuProvider to support list number editing functionalities in context menu * @returns A new ContextMenuProvider */ function createListEditMenuProvider(strings?: LocalizedStrings<ListNumberMenuItemStringKey>): roosterjs.EditorPlugin; /** * Create a new instance of ContextMenuProvider to support image editing functionalities in context menu * @returns A new ContextMenuProvider */ function createImageEditMenuProvider(imageEditor?: roosterjs.ImageEditor, strings?: LocalizedStrings<ImageEditMenuItemStringKey>): roosterjs.EditorPlugin; /** * Create a new instance of ContextMenuProvider to support table editing functionalities in context menu * @returns A new ContextMenuProvider */ function createTableEditMenuProvider(strings?: LocalizedStrings<TableEditMenuItemStringKey>): roosterjs.EditorPlugin; /** * Represent a context menu item */ interface ContextMenuItem<TString extends string, TContext = never> { /** * key of this button, needs to be unique */ key: TString; /** * Text of the button. This text is not localized. To show a localized text, pass a dictionary to Ribbon component via RibbonProps.strings. */ unlocalizedText: string; /** * Click event handler * @param key Key of the menu item that is clicked * @param editor The editor object that triggers this event * @param targetNode The node that user is clicking onto * @param strings The strings object used by getLocalizedString() function * @param uiUtilities UI Utilities to help render additional react component from this click event * @param context A context object that passed in from context menu provider, can be anything */ onClick: (key: TString, editor: roosterjs.IEditor, targetNode: Node, strings: LocalizedStrings<TString> | undefined, uiUtilities: UIUtilities, context?: TContext) => void; /** * A callback function to check whether this menu item should show now * @param editor The editor object that triggers this event * @param targetNode The node that user is clicking onto * @param context A context object that passed in from context menu provider, can be anything */ shouldShow?: (editor: roosterjs.IEditor, targetNode: Node, context?: TContext) => boolean; /** * A callback function to verify which subitem ID should have a checkmark * @param editor The editor object that triggers this event * @param targetNode The node that user is clicking onto * @returns ID to be shown as selected, null for none */ getSelectedId?: (editor: roosterjs.IEditor, targetNode: Node) => TString | null; /** * A key-value map for sub menu items, key is the key of menu item, value is unlocalized string * When click on a child item, onClick handler will be triggered with the key of the clicked child item passed in as the second parameter */ subItems?: { [key in TString]?: string; }; /** * Custom render of drop down item * @param item This menu item * @param onClick click handler of this menu item */ itemRender?: (item: FluentUIReact.IContextualMenuItem, onClick: (e: React.MouseEvent<Element> | React.KeyboardEvent<Element>, item: FluentUIReact.IContextualMenuItem) => void) => React.ReactNode; /** * CSS class name for drop down menu item */ itemClassName?: string; /** * Icon props for the context menu item */ iconProps?: FluentUIReact.IIconProps; /** * Use this property to pass in Fluent UI ContextMenu property directly. It will overwrite the values of other conflict properties */ commandBarSubMenuProperties?: Partial<FluentUIReact.IContextualMenuProps>; } /** * Key of localized strings of List Number menu items and its dialog. * Including: * - Menu item "Set numbering value" * - Menu item "Restart at 1" * - Dialog text "Set value to" * - Ok button * - Cancel button */ type ListNumberMenuItemStringKey = 'menuNameListNumberEdit' | 'menuNameListNumberReset' | 'dialogTextSetListNumber' | OkButtonStringKey | CancelButtonStringKey; /** * Key of localized strings of Image Alt Text menu item. * Including: * - Menu item "Add alternate text" * - Menu item "Size" and sub menus" * - Menu item "Crop image" * - Menu item "Remove image" * - Ok button * - Cancel button */ type ImageEditMenuItemStringKey = 'menuNameImageAltText' | 'menuNameImageResize' | 'menuNameImageCrop' | 'menuNameImageRotate' | 'menuNameImageRemove' | 'menuNameImageFlip' | 'menuNameImageSizeBestFit' | 'menuNameImageSizeSmall' | 'menuNameImageSizeMedium' | 'menuNameImageSizeOriginal' | 'menuNameImageRotateLeft' | 'menuNameImageRotateRight' | 'menuNameImageRotateFlipHorizontally' | 'menuNameImageRotateFlipVertically' | 'menuNameImageCopy' | 'menuNameImageCut' | OkButtonStringKey | CancelButtonStringKey; /** * Key of localized strings of Table Edit Insert menu item. */ type TableEditInsertMenuItemStringKey = 'menuNameTableInsert' | 'menuNameTableInsertAbove' | 'menuNameTableInsertBelow' | 'menuNameTableInsertLeft' | 'menuNameTableInsertRight'; /** * Key of localized strings of Table Edit Delete menu item. */ type TableEditDeleteMenuItemStringKey = 'menuNameTableDelete' | 'menuNameTableDeleteTable' | 'menuNameTableDeleteColumn' | 'menuNameTableDeleteRow'; /** * Key of localized strings of Table Edit Merge menu item. */ type TableEditMergeMenuItemStringKey = 'menuNameTableMerge' | 'menuNameTableMergeAbove' | 'menuNameTableMergeBelow' | 'menuNameTableMergeLeft' | 'menuNameTableMergeRight' | 'menuNameTableMergeCells' | MenuItemSplitterKey0; /** * Key of localized strings of Table Edit Split menu item. */ type TableEditSplitMenuItemStringKey = 'menuNameTableSplit' | 'menuNameTableSplitHorizontally' | 'menuNameTableSplitVertically'; /** * Key of localized strings of Table Edit Align menu item. */ type TableEditAlignMenuItemStringKey = 'menuNameTableAlign' | 'menuNameTableAlignLeft' | 'menuNameTableAlignCenter' | 'menuNameTableAlignRight' | 'menuNameTableAlignTop' | 'menuNameTableAlignMiddle' | 'menuNameTableAlignBottom' | MenuItemSplitterKey0; /** * Key of localized strings of Table Edit Cell Shade menu item. */ type TableEditShadeMenuItemStringKey = 'menuNameTableCellShade' | BackgroundColorKeys; /** * Key of localized strings of Table Edit menu item. * Including: * - Menu item "Insert" * - Menu item "Delete" * - Menu item "Merge" * - Menu item "Split" * - Menu item "Align cell" */ type TableEditMenuItemStringKey = TableEditInsertMenuItemStringKey | TableEditDeleteMenuItemStringKey | TableEditMergeMenuItemStringKey | TableEditSplitMenuItemStringKey | TableEditAlignMenuItemStringKey | TableEditShadeMenuItemStringKey | TableEditAlignTableMenuItemStringKey; /** * Key of localized strings of Table Edit Align table menu item. */ type TableEditAlignTableMenuItemStringKey = 'menuNameTableAlignTable' | 'menuNameTableAlignTableLeft' | 'menuNameTableAlignTableCenter' | 'menuNameTableAlignTableRight'; /** * keys for Paste Option buttons */ type PasteOptionButtonKeys = 'pasteOptionPasteAsIs' | 'pasteOptionPasteText' | 'pasteOptionMergeFormat' | 'pasteOptionPasteAsImage'; /** * Localized string keys for Paste Option buttons and its UI component */ type PasteOptionStringKeys = PasteOptionButtonKeys | 'pasteOptionPaneText'; /** * Create a new instance of PasteOption plugin to show an option pane when paste, so that user can choose * an option to change the paste result, including: * - Paste as is * - Paste as text * - Paste and merge format * @param strings Localized string for this plugin * @returns A paste option plugin */ function createPasteOptionPlugin(strings?: LocalizedStrings<PasteOptionStringKeys>): ReactEditorPlugin; /** * Localized string keys for background colors */ type BackgroundColorKeys = 'backgroundColorCyan' | 'backgroundColorGreen' | 'backgroundColorYellow' | 'backgroundColorOrange' | 'backgroundColorRed' | 'backgroundColorMagenta' | 'backgroundColorLightCyan' | 'backgroundColorLightGreen' | 'backgroundColorLightYellow' | 'backgroundColorLightOrange' | 'backgroundColorLightRed' | 'backgroundColorLightMagenta' | 'backgroundColorWhite' | 'backgroundColorLightGray' | 'backgroundColorGray' | 'backgroundColorDarkGray' | 'backgroundColorDarkerGray' | 'backgroundColorBlack'; /** * Localized string keys for text colors */ type TextColorKeys = 'textColorLightBlue' | 'textColorLightGreen' | 'textColorLightYellow' | 'textColorLightOrange' | 'textColorLightRed' | 'textColorLightPurple' | 'textColorBlue' | 'textColorGreen' | 'textColorYellow' | 'textColorOrange' | 'textColorRed' | 'textColorPurple' | 'textColorDarkBlue' | 'textColorDarkGreen' | 'textColorDarkYellow' | 'textColorDarkOrange' | 'textColorDarkRed' | 'textColorDarkPurple' | 'textColorDarkerBlue' | 'textColorDarkerGreen' | 'textColorDarkerYellow' | 'textColorDarkerOrange' | 'textColorDarkerRed' | 'textColorDarkerPurple' | 'textColorWhite' | 'textColorLightGray' | 'textColorGray' | 'textColorDarkGray' | 'textColorDarkerGray' | 'textColorBlack'; /** * Get mode independent color value of background color from the given color key * @param key The key to get color from * @returns A model independent color value of the given key */ function getBackgroundColorValue(key: BackgroundColorKeys): roosterjs.Colors; /** * Get mode independent color value of text color from the given color key * @param key The key to get color from * @returns A model independent color value of the given key */ function getTextColorValue(key: TextColorKeys): roosterjs.Colors; /** * Get a drop down data object of color picker used by drop down button * @param colorSet The set of color, text or background * @returns The color picker drop down for ribbon button */ function getColorPickerDropDown(colorSet: 'text' | 'background'): RibbonButtonDropDown; /** * Create a new instance of Emoji plugin with FluentUI components. */ function createEmojiPlugin(searchBoxStrings?: LocalizedStrings<EmojiStringKeys>): ReactEditorPlugin; /** * Localized string keys for Emoji UI component */ type EmojiStringKeys = 'emojiSearchPlaceholder' | 'emojiSearchInputAriaLabel'; /** * Show a dialog with input items * @param uiUtilities UI utilities to help render the dialog * @param dialogTitleKey Localized string key for title of this dialog * @param unlocalizedTitle Unlocalized title string of this dialog. It will be used if a valid localized string is not found using dialogTitleKey * @param items Input items in this dialog * @param strings Localized strings * @param onChange An optional callback that will be invoked when input item value is changed */ function showInputDialog<Strings extends string, ItemNames extends string>(uiUtilities: UIUtilities, dialogTitleKey: Strings, unlocalizedTitle: string, items: Record<ItemNames, DialogItem<Strings>>, strings?: LocalizedStrings<Strings | OkButtonStringKey | CancelButtonStringKey>, onChange?: (changedItemName: ItemNames, newValue: string, currentValues: Record<ItemNames, string>) => Record<ItemNames, string> | null, rows?: number): Promise<Record<ItemNames, string> | null>; /** * Item of input dialog */ interface DialogItem<Strings extends string> { /** * Localized string key of the input item name */ labelKey: Strings | null; /** * Unlocalized string for the label text. This will be used when a valid localized string is not found using the given string key */ unlocalizedLabel: string | null; /** * Initial value of this item */ initValue: string; /** * Whether focus should be put into this item automatically */ autoFocus?: boolean; } }