@portabletext/editor
Version:
Portable Text Editor made in React
2,081 lines (2,061 loc) • 360 kB
text/typescript
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'