UNPKG

@portabletext/editor

Version:

Portable Text Editor made in React

2,081 lines (2,061 loc) 360 kB
import type {Patch} from '@portabletext/patches' import type { ArraySchemaType, BlockDecoratorDefinition, BlockListDefinition, BlockStyleDefinition, ObjectSchemaType, Path, PortableTextChild, PortableTextListBlock, PortableTextObject, PortableTextSpan, PortableTextTextBlock, } from '@sanity/types' import {KeyedSegment, PortableTextBlock} from '@sanity/types' import type { FocusEvent as FocusEvent_2, KeyboardEvent as KeyboardEvent_2, } from 'react' import type {Descendant, Operation} from 'slate' import {TextUnit} from 'slate' import type {DOMNode} from 'slate-dom' import type {ReactEditor} from 'slate-react' import { ActionArgs, ActionFunction, ActorRef, ActorRefFrom, ActorRefFromLogic, AnyActorLogic, AnyActorRef, AnyEventObject, ConditionalRequired, InputFrom, IsNotNever, MachineSnapshot, MetaObject, NonReducibleUnknown, RequiredLogicInput, StateMachine, StateValue, Values, } from 'xstate' import {GuardArgs} from 'xstate/guards' import {BlockOffset, EditorSelection} from '..' import {EventPosition} from '../internal-utils/event-position' import {MIMEType} from '../internal-utils/mime-type' import {PickFromUnion, StrictExtract} from '../type-utils' import {BlockWithOptionalKey} from '../types/block-with-optional-key' import {Behavior as Behavior_2} from './behavior.types.behavior' import { CustomBehaviorEvent as CustomBehaviorEvent_2, InputBehaviorEvent, InsertPlacement, MouseBehaviorEvent, NativeBehaviorEvent as NativeBehaviorEvent_2, } from './behavior.types.event' declare type AbstractBehaviorEvent = | { type: StrictExtract_2<AbstractBehaviorEventType, 'annotation.toggle'> annotation: { name: string value: { [prop: string]: unknown } } } | { type: StrictExtract_2<AbstractBehaviorEventType, 'decorator.toggle'> decorator: string at?: { anchor: BlockOffset_2 focus: BlockOffset_2 } } | { type: StrictExtract_2<AbstractBehaviorEventType, 'delete.text'> at: { anchor: BlockOffset_2 focus: BlockOffset_2 } } | { type: StrictExtract_2<AbstractBehaviorEventType, 'deserialize'> originEvent: | PickFromUnion_2< NativeBehaviorEvent, 'type', 'drag.drop' | 'clipboard.paste' > | InputBehaviorEvent_2 } | { type: StrictExtract_2<AbstractBehaviorEventType, 'serialize'> originEvent: PickFromUnion_2< NativeBehaviorEvent, 'type', 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' > } | { type: StrictExtract_2< AbstractBehaviorEventType, 'deserialization.success' > mimeType: MIMEType_2 data: Array<PortableTextBlock> originEvent: | PickFromUnion_2< NativeBehaviorEvent, 'type', 'drag.drop' | 'clipboard.paste' > | InputBehaviorEvent_2 } | { type: StrictExtract_2< AbstractBehaviorEventType, 'deserialization.failure' > mimeType: MIMEType_2 reason: string originEvent: | PickFromUnion_2< NativeBehaviorEvent, 'type', 'drag.drop' | 'clipboard.paste' > | InputBehaviorEvent_2 } | { type: StrictExtract_2<AbstractBehaviorEventType, 'serialization.success'> mimeType: MIMEType_2 data: string originEvent: PickFromUnion_2< NativeBehaviorEvent, 'type', 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' > } | { type: StrictExtract_2<AbstractBehaviorEventType, 'serialization.failure'> mimeType: MIMEType_2 reason: string originEvent: PickFromUnion_2< NativeBehaviorEvent, 'type', 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' > } | { type: StrictExtract_2<AbstractBehaviorEventType, 'insert.blocks'> blocks: Array<PortableTextBlock> placement: InsertPlacement_2 } | { type: StrictExtract_2<AbstractBehaviorEventType, 'insert.break'> } | { type: StrictExtract_2<AbstractBehaviorEventType, 'insert.soft break'> } | { type: StrictExtract_2<AbstractBehaviorEventType, 'list item.add'> listItem: string } | { type: StrictExtract_2<AbstractBehaviorEventType, 'list item.remove'> listItem: string } | { type: StrictExtract_2<AbstractBehaviorEventType, 'list item.toggle'> listItem: string } | { type: StrictExtract_2<AbstractBehaviorEventType, 'move.block down'> at: [KeyedSegment] } | { type: StrictExtract_2<AbstractBehaviorEventType, 'move.block up'> at: [KeyedSegment] } | { type: StrictExtract_2<AbstractBehaviorEventType, 'select.previous block'> select?: 'start' | 'end' } | { type: StrictExtract_2<AbstractBehaviorEventType, 'select.next block'> select?: 'start' | 'end' } | { type: StrictExtract_2<AbstractBehaviorEventType, 'style.add'> style: string } | { type: StrictExtract_2<AbstractBehaviorEventType, 'style.remove'> style: string } | { type: StrictExtract_2<AbstractBehaviorEventType, 'style.toggle'> style: string } declare type AbstractBehaviorEventNamespace = ExtractNamespace<AbstractBehaviorEventType> declare type AbstractBehaviorEventType = (typeof abstractBehaviorEventTypes)[number] /************************************** * Abstract events **************************************/ declare const abstractBehaviorEventTypes: readonly [ 'annotation.toggle', 'decorator.toggle', 'delete.text', 'deserialize', 'deserialization.success', 'deserialization.failure', 'insert.blocks', 'insert.break', 'insert.soft break', 'list item.add', 'list item.remove', 'list item.toggle', 'move.block down', 'move.block up', 'select.previous block', 'select.next block', 'serialize', 'serialization.success', 'serialization.failure', 'style.add', 'style.remove', 'style.toggle', ] /** * @public */ declare type BaseDefinition = { name: string title?: string } /** * @beta */ export declare type Behavior< TBehaviorEventType extends | '*' | `${BehaviorEventTypeNamespace}.*` | BehaviorEvent['type'] = | '*' | `${BehaviorEventTypeNamespace}.*` | BehaviorEvent['type'], TGuardResponse = true, TBehaviorEvent extends ResolveBehaviorEvent<TBehaviorEventType> = ResolveBehaviorEvent<TBehaviorEventType>, > = { /** * Editor Event that triggers this Behavior. */ on: TBehaviorEventType /** * Predicate function that determines if the Behavior should be executed. * Returning a non-nullable value from the guard will pass the value to the * actions and execute them. */ guard?: BehaviorGuard<TBehaviorEvent, TGuardResponse> /** * Array of Behavior Action sets. * Each set represents a step in the history stack. */ actions: Array<BehaviorActionSet<TBehaviorEvent, TGuardResponse>> } /** * @beta */ export declare type BehaviorAction = | { type: 'execute' event: | AbstractBehaviorEvent | SyntheticBehaviorEvent | CustomBehaviorEvent } | { type: 'raise' event: | AbstractBehaviorEvent | SyntheticBehaviorEvent | CustomBehaviorEvent } | { type: 'noop' } | { type: 'effect' effect: () => void } /** * @beta */ export declare type BehaviorActionSet<TBehaviorEvent, TGuardResponse> = ( payload: { snapshot: EditorSnapshot event: TBehaviorEvent }, guardResponse: TGuardResponse, ) => Array<BehaviorAction> /** * @beta */ export declare type BehaviorEvent = | SyntheticBehaviorEvent | AbstractBehaviorEvent | NativeBehaviorEvent | CustomBehaviorEvent declare type BehaviorEventTypeNamespace = | SyntheticBehaviorEventNamespace | AbstractBehaviorEventNamespace | NativeBehaviorEventNamespace | CustomBehaviorEventNamespace /** * @beta */ export declare type BehaviorGuard<TBehaviorEvent, TGuardResponse> = (payload: { snapshot: EditorSnapshot event: TBehaviorEvent }) => TGuardResponse | false /** * @beta */ declare type BlockOffset_2 = { path: [KeyedSegment] offset: number } declare type BlockWithOptionalKey_2 = | TextBlockWithOptionalKey | ObjectBlockWithOptionalKey declare type ClipboardBehaviorEvent = | { type: StrictExtract_2<NativeBehaviorEventType, 'clipboard.copy'> originEvent: { dataTransfer: DataTransfer } position: Pick<EventPosition_2, 'selection'> } | { type: StrictExtract_2<NativeBehaviorEventType, 'clipboard.cut'> originEvent: { dataTransfer: DataTransfer } position: Pick<EventPosition_2, 'selection'> } | { type: StrictExtract_2<NativeBehaviorEventType, 'clipboard.paste'> originEvent: { dataTransfer: DataTransfer } position: Pick<EventPosition_2, 'selection'> } /** * @beta */ export declare type CodeEditorBehaviorsConfig = { moveBlockUpShortcut: string moveBlockDownShortcut: string } declare type Converter<TMIMEType extends MIMEType_2 = MIMEType_2> = { mimeType: TMIMEType serialize: Serializer<TMIMEType> deserialize: Deserializer<TMIMEType> } declare type ConverterEvent<TMIMEType extends MIMEType_2 = MIMEType_2> = | { type: 'serialize' originEvent: 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' } | { type: 'serialization.failure' mimeType: TMIMEType originEvent: 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' reason: string } | { type: 'serialization.success' data: string mimeType: TMIMEType originEvent: 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' } | { type: 'deserialize' data: string } | { type: 'deserialization.failure' mimeType: TMIMEType reason: string } | { type: 'deserialization.success' data: Array<PortableTextBlock> mimeType: TMIMEType } /** * @beta */ export declare const coreBehaviors: Behavior_2< | 'serialize' | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'delete' | 'select' | '*' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click' | 'serialize.*' | 'deserialize.*' | 'split.*' | 'style.*' | 'block.*' | 'delete.*' | 'move.*' | 'select.*' | 'history.*' | 'annotation.*' | 'decorator.*' | 'insert.*' | 'serialization.*' | 'deserialization.*' | 'list item.*' | 'clipboard.*' | 'drag.*' | 'keyboard.*' | 'mouse.*' | `custom.${string}`, true, | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'annotation.add' > annotation: { name: string value: { [prop: string]: unknown } } } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'annotation.remove' > annotation: { name: string } } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'block.set' > at: [KeyedSegment] props: Record<string, unknown> } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'block.unset' > at: [KeyedSegment] props: Array<string> } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'decorator.add' > decorator: string at?: { anchor: BlockOffset focus: BlockOffset } } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'decorator.remove' > decorator: string } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'delete' > at: NonNullable<EditorSelection> } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'delete.backward' > unit: TextUnit } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'delete.block' > at: [KeyedSegment] } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'delete.forward' > unit: TextUnit } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'history.redo' > } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'history.undo' > } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'insert.inline object' > inlineObject: { name: string value?: { [prop: string]: unknown } } } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'insert.block' > block: BlockWithOptionalKey placement: InsertPlacement select?: 'start' | 'end' | 'none' } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'insert.span' > text: string annotations?: Array<{ name: string value: { [prop: string]: unknown } }> decorators?: Array<string> } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'insert.text' > text: string } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'move.backward' > distance: number } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'move.block' > at: [KeyedSegment] to: [KeyedSegment] } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'move.forward' > distance: number } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'select' > at: EditorSelection } | { type: StrictExtract< | 'delete' | 'select' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block', 'split.block' > } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'annotation.toggle' > annotation: { name: string value: { [prop: string]: unknown } } } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'decorator.toggle' > decorator: string at?: { anchor: BlockOffset focus: BlockOffset } } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'delete.text' > at: { anchor: BlockOffset focus: BlockOffset } } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'deserialize' > originEvent: | PickFromUnion< NativeBehaviorEvent_2, 'type', 'drag.drop' | 'clipboard.paste' > | InputBehaviorEvent } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'serialize' > originEvent: PickFromUnion< NativeBehaviorEvent_2, 'type', 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' > } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'deserialization.success' > mimeType: MIMEType data: Array<PortableTextBlock> originEvent: | PickFromUnion< NativeBehaviorEvent_2, 'type', 'drag.drop' | 'clipboard.paste' > | InputBehaviorEvent } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'deserialization.failure' > mimeType: MIMEType reason: string originEvent: | PickFromUnion< NativeBehaviorEvent_2, 'type', 'drag.drop' | 'clipboard.paste' > | InputBehaviorEvent } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'serialization.success' > mimeType: MIMEType data: string originEvent: PickFromUnion< NativeBehaviorEvent_2, 'type', 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' > } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'serialization.failure' > mimeType: MIMEType reason: string originEvent: PickFromUnion< NativeBehaviorEvent_2, 'type', 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' > } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'insert.blocks' > blocks: Array<PortableTextBlock> placement: InsertPlacement } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'insert.break' > } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'insert.soft break' > } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'list item.add' > listItem: string } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'list item.remove' > listItem: string } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'list item.toggle' > listItem: string } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'move.block down' > at: [KeyedSegment] } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'move.block up' > at: [KeyedSegment] } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'select.previous block' > select?: 'start' | 'end' } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'select.next block' > select?: 'start' | 'end' } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'style.add' > style: string } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'style.remove' > style: string } | { type: StrictExtract< | 'serialize' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add' | 'list item.remove' | 'list item.toggle' | 'move.block down' | 'move.block up' | 'select.previous block' | 'select.next block' | 'style.add' | 'style.remove' | 'style.toggle', 'style.toggle' > style: string } | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'clipboard.copy' > originEvent: { dataTransfer: DataTransfer } position: Pick<EventPosition, 'selection'> } | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'clipboard.cut' > originEvent: { dataTransfer: DataTransfer } position: Pick<EventPosition, 'selection'> } | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'clipboard.paste' > originEvent: { dataTransfer: DataTransfer } position: Pick<EventPosition, 'selection'> } | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'drag.dragstart' > originEvent: { dataTransfer: DataTransfer } position: Pick<EventPosition, 'selection'> } | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'drag.drag' > originEvent: { dataTransfer: DataTransfer } } | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'drag.dragend' > originEvent: { dataTransfer: DataTransfer } } | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'drag.dragenter' > originEvent: { dataTransfer: DataTransfer } position: EventPosition } | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'drag.dragover' > originEvent: { dataTransfer: DataTransfer } position: EventPosition } | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'drag.drop' > originEvent: { dataTransfer: DataTransfer } position: EventPosition } | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'drag.dragleave' > originEvent: { dataTransfer: DataTransfer } } | InputBehaviorEvent | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'keyboard.keydown' > originEvent: Pick< KeyboardEvent, 'key' | 'code' | 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey' > } | { type: StrictExtract< | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'clipboard.paste' | 'drag.drag' | 'drag.dragend' | 'drag.dragenter' | 'drag.dragover' | 'drag.dragleave' | 'drag.drop' | 'input.*' | 'keyboard.keydown' | 'keyboard.keyup' | 'mouse.click', 'keyboard.keyup' > originEvent: Pick< KeyboardEvent, 'key' | 'code' | 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey' > } | MouseBehaviorEvent | CustomBehaviorEvent_2<Record<string, unknown>, string, `custom.${string}`> >[] /** * @beta */ export declare function createCodeEditorBehaviors( config: CodeEditorBehaviorsConfig, ): Behavior_2< | 'serialize' | 'clipboard.copy' | 'clipboard.cut' | 'drag.dragstart' | 'serialization.failure' | 'serialization.success' | 'deserialize' | 'deserialization.failure' | 'deserialization.success' | 'delete' | 'select' | '*' | 'annotation.add' | 'annotation.remove' | 'block.set' | 'block.unset' | 'decorator.add' | 'decorator.remove' | 'delete.backward' | 'delete.block' | 'delete.forward' | 'history.redo' | 'history.undo' | 'insert.inline object' | 'insert.block' | 'insert.span' | 'insert.text' | 'move.backward' | 'move.block' | 'move.forward' | 'split.block' | 'annotation.toggle' | 'decorator.toggle' | 'delete.text' | 'insert.blocks' | 'insert.break' | 'insert.soft break' | 'list item.add'