@portabletext/toolbar 2.2.36 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/use-toolbar-schema.ts","../src/disable-listener.ts","../src/use-mutually-exclusive-annotation.ts","../src/use-annotation-button.ts","../src/use-annotation-popover.ts","../src/use-block-object-button.ts","../src/use-block-object-popover.ts","../src/use-decorator-keyboard-shortcut.ts","../src/use-mutually-exclusive-decorator.ts","../src/use-decorator-button.ts","../src/use-history-buttons.ts","../src/use-inline-object-button.ts","../src/use-inline-object-popover.ts","../src/use-list-button.ts","../src/use-style-keyboard-shortcuts.ts","../src/use-style-selector.ts"],"sourcesContent":["import {\n useEditor,\n useEditorSelector,\n type AnnotationDefinition,\n type AnnotationSchemaType,\n type BlockObjectSchemaType,\n type DecoratorDefinition,\n type DecoratorSchemaType,\n type InlineObjectSchemaType,\n type ListSchemaType,\n type StyleSchemaType,\n} from '@portabletext/editor'\nimport type {KeyboardShortcut} from '@portabletext/keyboard-shortcuts'\n\n/**\n * @beta\n */\nexport type ExtendDecoratorSchemaType = (\n decorator: DecoratorSchemaType,\n) => ToolbarDecoratorSchemaType\n\n/**\n * @beta\n */\nexport type ExtendAnnotationSchemaType = (\n annotation: AnnotationSchemaType,\n) => ToolbarAnnotationSchemaType\n\n/**\n * @beta\n */\nexport type ExtendListSchemaType = (\n list: ListSchemaType,\n) => ToolbarListSchemaType\n\n/**\n * @beta\n */\nexport type ExtendBlockObjectSchemaType = (\n blockObject: BlockObjectSchemaType,\n) => ToolbarBlockObjectSchemaType\n\n/**\n * @beta\n */\nexport type ExtendInlineObjectSchemaType = (\n inlineObject: InlineObjectSchemaType,\n) => ToolbarInlineObjectSchemaType\n\n/**\n * @beta\n */\nexport type ExtendStyleSchemaType = (\n style: StyleSchemaType,\n) => ToolbarStyleSchemaType\n\n/**\n * @beta\n * Extend the editor's schema with default values, icons, shortcuts and more.\n * This makes it easier to use the schema to render toolbars, forms and other\n * UI components.\n */\nexport function useToolbarSchema(props: {\n extendDecorator?: (\n decorator: DecoratorSchemaType,\n ) => ToolbarDecoratorSchemaType\n extendAnnotation?: (\n annotation: AnnotationSchemaType,\n ) => ToolbarAnnotationSchemaType\n extendList?: (list: ListSchemaType) => ToolbarListSchemaType\n extendBlockObject?: (\n blockObject: BlockObjectSchemaType,\n ) => ToolbarBlockObjectSchemaType\n extendInlineObject?: (\n inlineObject: InlineObjectSchemaType,\n ) => ToolbarInlineObjectSchemaType\n extendStyle?: (style: StyleSchemaType) => ToolbarStyleSchemaType\n}): ToolbarSchema {\n const editor = useEditor()\n const schema = useEditorSelector(\n editor,\n (snapshot) => snapshot.context.schema,\n )\n\n return {\n decorators: schema.decorators.map(\n (decorator) => props.extendDecorator?.(decorator) ?? decorator,\n ),\n annotations: schema.annotations.map(\n (annotation) => props.extendAnnotation?.(annotation) ?? annotation,\n ),\n lists: schema.lists.map((list) => props.extendList?.(list) ?? list),\n blockObjects: schema.blockObjects.map(\n (blockObject) => props.extendBlockObject?.(blockObject) ?? blockObject,\n ),\n inlineObjects: schema.inlineObjects.map(\n (inlineObject) =>\n props.extendInlineObject?.(inlineObject) ?? inlineObject,\n ),\n styles: schema.styles.map((style) => props.extendStyle?.(style) ?? style),\n }\n}\n\n/**\n * @beta\n */\nexport type ToolbarSchema = {\n decorators?: ReadonlyArray<ToolbarDecoratorSchemaType>\n annotations?: ReadonlyArray<ToolbarAnnotationSchemaType>\n lists?: ReadonlyArray<ToolbarListSchemaType>\n blockObjects?: ReadonlyArray<ToolbarBlockObjectSchemaType>\n inlineObjects?: ReadonlyArray<ToolbarInlineObjectSchemaType>\n styles?: ReadonlyArray<ToolbarStyleSchemaType>\n}\n\n/**\n * @beta\n */\nexport type ToolbarDecoratorSchemaType = DecoratorSchemaType & {\n icon?: React.ComponentType\n shortcut?: KeyboardShortcut\n mutuallyExclusive?: ReadonlyArray<DecoratorDefinition['name']>\n}\n\n/**\n * @beta\n */\nexport type ToolbarAnnotationSchemaType = AnnotationSchemaType & {\n icon?: React.ComponentType\n defaultValues?: Record<string, unknown>\n shortcut?: KeyboardShortcut\n mutuallyExclusive?: ReadonlyArray<AnnotationDefinition['name']>\n}\n\n/**\n * @beta\n */\nexport type ToolbarListSchemaType = ListSchemaType & {\n icon?: React.ComponentType\n}\n\n/**\n * @beta\n */\nexport type ToolbarBlockObjectSchemaType = BlockObjectSchemaType & {\n icon?: React.ComponentType\n defaultValues?: Record<string, unknown>\n shortcut?: KeyboardShortcut\n}\n\n/**\n * @beta\n */\nexport type ToolbarInlineObjectSchemaType = InlineObjectSchemaType & {\n icon?: React.ComponentType\n defaultValues?: Record<string, unknown>\n shortcut?: KeyboardShortcut\n}\n\n/**\n * @beta\n */\nexport type ToolbarStyleSchemaType = StyleSchemaType & {\n icon?: React.ComponentType\n shortcut?: KeyboardShortcut\n}\n","import type {Editor} from '@portabletext/editor'\nimport {fromCallback, type AnyEventObject} from 'xstate'\n\nexport type DisableListenerEvent = {type: 'enable'} | {type: 'disable'}\n\nexport const disableListener = fromCallback<\n AnyEventObject,\n {editor: Editor},\n DisableListenerEvent\n>(({input, sendBack}) => {\n // Send back the initial state\n if (input.editor.getSnapshot().context.readOnly) {\n sendBack({type: 'disable'})\n } else {\n sendBack({type: 'enable'})\n }\n\n return input.editor.on('*', () => {\n if (input.editor.getSnapshot().context.readOnly) {\n sendBack({type: 'disable'})\n } else {\n sendBack({type: 'enable'})\n }\n }).unsubscribe\n})\n","import {useEditor} from '@portabletext/editor'\nimport {defineBehavior, execute, raise} from '@portabletext/editor/behaviors'\nimport {isActiveAnnotation} from '@portabletext/editor/selectors'\nimport {useEffect} from 'react'\nimport type {ToolbarAnnotationSchemaType} from './use-toolbar-schema'\n\nexport function useMutuallyExclusiveAnnotation(props: {\n schemaType: ToolbarAnnotationSchemaType\n}) {\n const editor = useEditor()\n\n useEffect(() => {\n const mutuallyExclusive = props.schemaType.mutuallyExclusive\n\n if (!mutuallyExclusive) {\n return\n }\n\n return editor.registerBehavior({\n behavior: defineBehavior({\n on: 'annotation.add',\n guard: ({snapshot, event}) => {\n if (event.annotation.name !== props.schemaType.name) {\n return false\n }\n\n const activeMutuallyExclusive = mutuallyExclusive.filter(\n (annotation) =>\n isActiveAnnotation(annotation, {mode: 'partial'})(snapshot),\n )\n\n return {activeMutuallyExclusive}\n },\n actions: [\n ({event}, {activeMutuallyExclusive}) => [\n ...activeMutuallyExclusive.map((annotation) =>\n raise({\n type: 'annotation.remove',\n annotation: {name: annotation},\n }),\n ),\n execute(event),\n ],\n ],\n }),\n })\n }, [editor, props.schemaType.name, props.schemaType.mutuallyExclusive])\n}\n","import {useEditor, type Editor} from '@portabletext/editor'\nimport {defineBehavior, effect, raise} from '@portabletext/editor/behaviors'\nimport * as selectors from '@portabletext/editor/selectors'\nimport {useActor} from '@xstate/react'\nimport {fromCallback, setup, type AnyEventObject} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\nimport {useMutuallyExclusiveAnnotation} from './use-mutually-exclusive-annotation'\nimport type {ToolbarAnnotationSchemaType} from './use-toolbar-schema'\n\nconst activeListener = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaType: ToolbarAnnotationSchemaType},\n {type: 'set active'} | {type: 'set inactive'}\n>(({input, sendBack}) => {\n // Send back the initial state\n if (\n selectors.isActiveAnnotation(input.schemaType.name)(\n input.editor.getSnapshot(),\n )\n ) {\n sendBack({type: 'set active'})\n } else {\n sendBack({type: 'set inactive'})\n }\n\n return input.editor.on('*', () => {\n const snapshot = input.editor.getSnapshot()\n\n if (selectors.isActiveAnnotation(input.schemaType.name)(snapshot)) {\n sendBack({type: 'set active'})\n } else {\n sendBack({type: 'set inactive'})\n }\n }).unsubscribe\n})\n\nconst keyboardShortcutRemove = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaType: ToolbarAnnotationSchemaType}\n>(({input}) => {\n const shortcut = input.schemaType.shortcut\n\n if (!shortcut) {\n return\n }\n\n return input.editor.registerBehavior({\n behavior: defineBehavior({\n on: 'keyboard.keydown',\n guard: ({event}) => shortcut.guard(event.originEvent),\n actions: [\n () => [\n raise({\n type: 'annotation.remove',\n annotation: {\n name: input.schemaType.name,\n },\n }),\n effect(() => {\n input.editor.send({type: 'focus'})\n }),\n ],\n ],\n }),\n })\n})\n\nconst keyboardShortcutShowInsertDialog = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaType: ToolbarAnnotationSchemaType},\n {type: 'open dialog'}\n>(({input, sendBack}) => {\n const shortcut = input.schemaType.shortcut\n\n if (!shortcut) {\n return\n }\n\n return input.editor.registerBehavior({\n behavior: defineBehavior({\n on: 'keyboard.keydown',\n guard: ({event}) => shortcut.guard(event.originEvent),\n actions: [\n () => [\n effect(() => {\n sendBack({type: 'open dialog'})\n }),\n ],\n ],\n }),\n })\n})\n\nconst annotationButtonMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n schemaType: ToolbarAnnotationSchemaType\n },\n input: {} as {\n editor: Editor\n schemaType: ToolbarAnnotationSchemaType\n },\n events: {} as\n | AnnotationButtonEvent\n | DisableListenerEvent\n | {type: 'set active'}\n | {type: 'set inactive'},\n },\n actions: {\n 'add annotation': ({context, event}) => {\n if (event.type !== 'add') {\n return\n }\n\n context.editor.send({\n type: 'annotation.add',\n annotation: {\n name: context.schemaType.name,\n value: event.annotation.value,\n },\n })\n context.editor.send({type: 'focus'})\n },\n 'remove annotation': ({context}) => {\n context.editor.send({\n type: 'annotation.remove',\n annotation: {\n name: context.schemaType.name,\n },\n })\n context.editor.send({type: 'focus'})\n },\n },\n actors: {\n 'active listener': activeListener,\n 'disable listener': disableListener,\n 'keyboard shortcut.remove': keyboardShortcutRemove,\n 'keyboard shortcut.show insert dialog': keyboardShortcutShowInsertDialog,\n },\n}).createMachine({\n id: 'annotation button',\n context: ({input}) => ({\n editor: input.editor,\n schemaType: input.schemaType,\n }),\n invoke: [\n {\n src: 'active listener',\n input: ({context}) => ({\n editor: context.editor,\n schemaType: context.schemaType,\n }),\n },\n {\n src: 'disable listener',\n input: ({context}) => ({\n editor: context.editor,\n schemaType: context.schemaType,\n }),\n },\n ],\n initial: 'disabled',\n states: {\n disabled: {\n initial: 'inactive',\n states: {\n inactive: {\n on: {\n 'enable': {\n target: '#annotation button.enabled.inactive',\n },\n 'set active': {\n target: 'active',\n },\n },\n },\n active: {\n on: {\n 'enable': {\n target: '#annotation button.enabled.active',\n },\n 'set inactive': {\n target: 'inactive',\n },\n },\n },\n },\n },\n enabled: {\n initial: 'inactive',\n states: {\n inactive: {\n initial: 'idle',\n on: {\n 'disable': {\n target: '#annotation button.disabled.inactive',\n },\n 'set active': {\n target: '#annotation button.enabled.active',\n },\n 'add': {\n actions: 'add annotation',\n },\n },\n states: {\n 'idle': {\n invoke: {\n src: 'keyboard shortcut.show insert dialog',\n input: ({context}) => ({\n editor: context.editor,\n schemaType: context.schemaType,\n }),\n },\n on: {\n 'open dialog': {\n target: 'showing dialog',\n },\n },\n },\n 'showing dialog': {\n on: {\n 'close dialog': {\n target: 'idle',\n },\n },\n },\n },\n },\n active: {\n invoke: {\n src: 'keyboard shortcut.remove',\n input: ({context}) => ({\n editor: context.editor,\n schemaType: context.schemaType,\n }),\n },\n on: {\n 'set inactive': {\n target: '#annotation button.enabled.inactive',\n },\n 'disable': {\n target: '#annotation button.disabled.active',\n },\n 'remove': {\n actions: 'remove annotation',\n },\n },\n },\n },\n },\n },\n})\n\n/**\n * @beta\n */\nexport type AnnotationButtonEvent =\n | {type: 'close dialog'}\n | {type: 'open dialog'}\n | {\n type: 'add'\n annotation: {\n value: Record<string, unknown>\n }\n }\n | {type: 'remove'}\n\n/**\n * @beta\n */\nexport type AnnotationButton = {\n snapshot: {\n matches: (\n state:\n | 'disabled'\n | 'enabled'\n | {disabled: 'inactive'}\n | {disabled: 'active'}\n | {enabled: 'inactive'}\n | {enabled: {inactive: 'idle'}}\n | {enabled: {inactive: 'showing dialog'}}\n | {enabled: 'active'},\n ) => boolean\n }\n send: (event: AnnotationButtonEvent) => void\n}\n\n/**\n * @beta\n * Manages the state, keyboard shortcut and available events for an annotation\n * button.\n *\n * Note: This hook assumes that the button triggers a dialog for inputting\n * the annotation value.\n */\nexport function useAnnotationButton(props: {\n schemaType: ToolbarAnnotationSchemaType\n}): AnnotationButton {\n const editor = useEditor()\n const [snapshot, send] = useActor(annotationButtonMachine, {\n input: {\n editor,\n schemaType: props.schemaType,\n },\n })\n\n useMutuallyExclusiveAnnotation(props)\n\n return {\n snapshot: {\n matches: (state) => snapshot.matches(state),\n },\n send,\n }\n}\n","import {\n useEditor,\n type AnnotationPath,\n type AnnotationSchemaType,\n type Editor,\n type PortableTextObject,\n} from '@portabletext/editor'\nimport * as selectors from '@portabletext/editor/selectors'\nimport {useActor} from '@xstate/react'\nimport * as React from 'react'\nimport type {RefObject} from 'react'\nimport {assign, fromCallback, setup, type AnyEventObject} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\nimport type {ToolbarAnnotationSchemaType} from './use-toolbar-schema'\n\ntype ActiveContext = {\n annotations: Array<{\n value: PortableTextObject\n schemaType: ToolbarAnnotationSchemaType\n at: AnnotationPath\n }>\n elementRef: RefObject<Element | null>\n}\n\ntype ActiveListenerEvent =\n | ({\n type: 'set active'\n } & ActiveContext)\n | {\n type: 'set inactive'\n }\n\nconst activeListener = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaTypes: ReadonlyArray<ToolbarAnnotationSchemaType>},\n ActiveListenerEvent\n>(({input, sendBack}) => {\n return input.editor.on('*', () => {\n const snapshot = input.editor.getSnapshot()\n const activeAnnotations = selectors.getActiveAnnotations(snapshot)\n const focusBlock = selectors.getFocusBlock(snapshot)\n\n if (activeAnnotations.length === 0 || !focusBlock) {\n sendBack({type: 'set inactive'})\n return\n }\n\n const selectedChildren = input.editor.dom.getChildNodes(snapshot)\n const firstSelectedChild = selectedChildren.at(0)\n\n if (!firstSelectedChild || !(firstSelectedChild instanceof Element)) {\n sendBack({type: 'set inactive'})\n return\n }\n\n const elementRef = React.createRef<Element>()\n elementRef.current = firstSelectedChild\n\n sendBack({\n type: 'set active',\n annotations: activeAnnotations.flatMap((annotation) => {\n const schemaType = input.schemaTypes.find(\n (schemaType) => schemaType.name === annotation._type,\n )\n\n if (!schemaType) {\n return []\n }\n\n return {\n value: annotation,\n schemaType,\n at: [\n {_key: focusBlock.node._key},\n 'markDefs',\n {_key: annotation._key},\n ],\n }\n }),\n elementRef,\n })\n }).unsubscribe\n})\n\nconst annotationPopoverMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n schemaTypes: ReadonlyArray<ToolbarAnnotationSchemaType>\n } & ActiveContext,\n input: {} as {\n editor: Editor\n schemaTypes: ReadonlyArray<ToolbarAnnotationSchemaType>\n },\n events: {} as\n | DisableListenerEvent\n | ActiveListenerEvent\n | AnnotationPopoverEvent,\n },\n actions: {\n reset: assign({\n annotations: [],\n elementRef: React.createRef<Element>(),\n }),\n remove: ({context, event}) => {\n if (event.type !== 'remove') {\n return\n }\n\n context.editor.send({\n type: 'annotation.remove',\n annotation: {\n name: event.schemaType.name,\n },\n })\n context.editor.send({type: 'focus'})\n },\n },\n actors: {\n 'disable listener': disableListener,\n 'active listener': activeListener,\n },\n}).createMachine({\n id: 'annotation popover',\n context: ({input}) => ({\n editor: input.editor,\n schemaTypes: input.schemaTypes,\n annotations: [],\n elementRef: React.createRef<Element>(),\n }),\n invoke: [\n {src: 'disable listener', input: ({context}) => ({editor: context.editor})},\n ],\n initial: 'disabled',\n states: {\n disabled: {\n initial: 'inactive',\n states: {\n inactive: {\n entry: ['reset'],\n on: {\n 'set active': {\n actions: assign({\n annotations: ({event}) => event.annotations,\n elementRef: ({event}) => event.elementRef,\n }),\n target: 'active',\n },\n 'enable': {\n target: '#annotation popover.enabled.inactive',\n },\n },\n },\n active: {\n on: {\n 'set inactive': {\n target: 'inactive',\n },\n 'enable': {\n target: '#annotation popover.enabled.active',\n },\n },\n },\n },\n },\n enabled: {\n invoke: [\n {\n src: 'active listener',\n input: ({context}) => ({\n editor: context.editor,\n schemaTypes: context.schemaTypes,\n }),\n },\n ],\n initial: 'inactive',\n states: {\n inactive: {\n entry: ['reset'],\n on: {\n 'set active': {\n target: 'active',\n actions: assign({\n annotations: ({event}) => event.annotations,\n elementRef: ({event}) => event.elementRef,\n }),\n },\n 'disable': {\n target: '#annotation popover.disabled.inactive',\n },\n },\n },\n active: {\n on: {\n 'set inactive': {\n target: 'inactive',\n },\n 'disable': {\n target: '#annotation popover.disabled.active',\n },\n 'set active': {\n actions: assign({\n annotations: ({event}) => event.annotations,\n elementRef: ({event}) => event.elementRef,\n }),\n },\n 'edit': {\n actions: ({context, event}) => {\n context.editor.send({\n type: 'annotation.set',\n at: event.at,\n props: event.props,\n })\n context.editor.send({type: 'focus'})\n },\n },\n 'remove': {\n actions: ({context, event}) => {\n context.editor.send({\n type: 'annotation.remove',\n annotation: {\n name: event.schemaType.name,\n },\n })\n context.editor.send({type: 'focus'})\n },\n },\n 'close': {\n actions: ({context}) => {\n context.editor.send({type: 'focus'})\n },\n target: 'inactive',\n },\n },\n },\n },\n },\n },\n})\n\n/**\n * @beta\n */\nexport type AnnotationPopoverEvent =\n | {\n type: 'remove'\n schemaType: AnnotationSchemaType\n }\n | {\n type: 'edit'\n at: AnnotationPath\n props: {[key: string]: unknown}\n }\n | {\n type: 'close'\n }\n\n/**\n * @beta\n */\nexport type AnnotationPopover = {\n snapshot: {\n context: ActiveContext\n matches: (\n state:\n | 'disabled'\n | 'enabled'\n | {\n enabled: 'inactive' | 'active'\n },\n ) => boolean\n }\n send: (event: AnnotationPopoverEvent) => void\n}\n\n/**\n * @beta\n * Manages the state and available events for an annotation popover.\n */\nexport function useAnnotationPopover(props: {\n schemaTypes: ReadonlyArray<ToolbarAnnotationSchemaType>\n}): AnnotationPopover {\n const editor = useEditor()\n const [actorSnapshot, send] = useActor(annotationPopoverMachine, {\n input: {\n editor,\n schemaTypes: props.schemaTypes,\n },\n })\n\n return {\n snapshot: {\n context: {\n annotations: actorSnapshot.context.annotations,\n elementRef: actorSnapshot.context.elementRef,\n },\n matches: (state) => actorSnapshot.matches(state),\n },\n send,\n }\n}\n","import {useEditor, type Editor} from '@portabletext/editor'\nimport {\n defineBehavior,\n effect,\n type InsertPlacement,\n} from '@portabletext/editor/behaviors'\nimport {useActor} from '@xstate/react'\nimport {fromCallback, setup, type AnyEventObject} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\nimport type {ToolbarBlockObjectSchemaType} from './use-toolbar-schema'\n\nconst keyboardShortcutListener = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaType: ToolbarBlockObjectSchemaType},\n BlockObjectButtonEvent\n>(({input, sendBack}) => {\n const shortcut = input.schemaType.shortcut\n\n if (!shortcut) {\n return\n }\n\n return input.editor.registerBehavior({\n behavior: defineBehavior({\n on: 'keyboard.keydown',\n guard: ({event}) => shortcut.guard(event.originEvent),\n actions: [\n () => [\n effect(() => {\n sendBack({type: 'open dialog'})\n }),\n ],\n ],\n }),\n })\n})\n\nconst blockObjectButtonMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n schemaType: ToolbarBlockObjectSchemaType\n },\n input: {} as {\n editor: Editor\n schemaType: ToolbarBlockObjectSchemaType\n },\n events: {} as DisableListenerEvent | BlockObjectButtonEvent,\n },\n actions: {\n insert: ({context, event}) => {\n if (event.type !== 'insert') {\n return\n }\n\n context.editor.send({\n type: 'insert.block object',\n blockObject: {\n name: context.schemaType.name,\n value: event.value,\n },\n placement: event.placement ?? 'auto',\n })\n context.editor.send({type: 'focus'})\n },\n },\n actors: {\n 'disable listener': disableListener,\n 'keyboard shortcut listener': keyboardShortcutListener,\n },\n}).createMachine({\n id: 'block object button',\n context: ({input}) => ({\n editor: input.editor,\n schemaType: input.schemaType,\n }),\n invoke: [\n {\n src: 'disable listener',\n input: ({context}) => ({editor: context.editor}),\n },\n ],\n initial: 'disabled',\n states: {\n disabled: {\n on: {\n enable: {\n target: 'enabled',\n },\n },\n },\n enabled: {\n on: {\n disable: {\n target: 'disabled',\n },\n },\n initial: 'idle',\n states: {\n 'idle': {\n invoke: [\n {\n src: 'keyboard shortcut listener',\n input: ({context}) => ({\n editor: context.editor,\n schemaType: context.schemaType,\n }),\n },\n ],\n on: {\n 'open dialog': {\n target: 'showing dialog',\n },\n },\n },\n 'showing dialog': {\n on: {\n 'close dialog': {\n target: 'idle',\n },\n 'insert': {\n actions: ['insert'],\n target: 'idle',\n },\n },\n },\n },\n },\n },\n})\n\n/**\n * @beta\n */\nexport type BlockObjectButtonEvent =\n | {\n type: 'close dialog'\n }\n | {\n type: 'open dialog'\n }\n | {\n type: 'insert'\n value: {[key: string]: unknown}\n placement: InsertPlacement | undefined\n }\n\n/**\n * @beta\n */\nexport type BlockObjectButton = {\n snapshot: {\n matches: (\n state:\n | 'disabled'\n | 'enabled'\n | {enabled: 'idle'}\n | {enabled: 'showing dialog'},\n ) => boolean\n }\n send: (event: BlockObjectButtonEvent) => void\n}\n\n/**\n * @beta\n * Manages the state, keyboard shortcut and available events for a block\n * object button.\n *\n * Note: This hook assumes that the button triggers a dialog for inputting\n * the block object value.\n */\nexport function useBlockObjectButton(props: {\n schemaType: ToolbarBlockObjectSchemaType\n}): BlockObjectButton {\n const editor = useEditor()\n const [actorSnapshot, send] = useActor(blockObjectButtonMachine, {\n input: {\n editor,\n schemaType: props.schemaType,\n },\n })\n\n return {\n snapshot: {\n matches: (state) => actorSnapshot.matches(state),\n },\n send,\n }\n}\n","import {\n useEditor,\n type BlockPath,\n type Editor,\n type PortableTextObject,\n} from '@portabletext/editor'\nimport * as selectors from '@portabletext/editor/selectors'\nimport {useActor} from '@xstate/react'\nimport * as React from 'react'\nimport type {RefObject} from 'react'\nimport {assign, fromCallback, setup, type AnyEventObject} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\nimport type {ToolbarBlockObjectSchemaType} from './use-toolbar-schema'\n\ntype ActiveContext = {\n blockObjects: Array<{\n value: PortableTextObject\n schemaType: ToolbarBlockObjectSchemaType\n at: BlockPath\n }>\n elementRef: RefObject<Element | null>\n}\n\ntype ActiveListenerEvent =\n | ({\n type: 'set active'\n } & ActiveContext)\n | {\n type: 'set inactive'\n }\n\nconst activeListener = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaTypes: ReadonlyArray<ToolbarBlockObjectSchemaType>},\n ActiveListenerEvent\n>(({input, sendBack}) => {\n return input.editor.on('selection', () => {\n const snapshot = input.editor.getSnapshot()\n\n if (!selectors.isSelectionCollapsed(snapshot)) {\n sendBack({type: 'set inactive'})\n return\n }\n\n const focusBlockObject = selectors.getFocusBlockObject(snapshot)\n\n if (!focusBlockObject) {\n sendBack({type: 'set inactive'})\n return\n }\n\n const schemaType = input.schemaTypes.find(\n (schemaType) => schemaType.name === focusBlockObject.node._type,\n )\n\n if (!schemaType) {\n sendBack({type: 'set inactive'})\n return\n }\n\n const selectedNodes = input.editor.dom.getBlockNodes(snapshot)\n const firstSelectedNode = selectedNodes.at(0)\n\n if (!firstSelectedNode || !(firstSelectedNode instanceof Element)) {\n sendBack({type: 'set inactive'})\n return\n }\n\n const elementRef = React.createRef<Element>()\n elementRef.current = firstSelectedNode\n\n sendBack({\n type: 'set active',\n blockObjects: [\n {\n value: focusBlockObject.node,\n schemaType,\n at: focusBlockObject.path,\n },\n ],\n elementRef,\n })\n }).unsubscribe\n})\n\nconst blockObjectPopoverMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n schemaTypes: ReadonlyArray<ToolbarBlockObjectSchemaType>\n } & ActiveContext,\n input: {} as {\n editor: Editor\n schemaTypes: ReadonlyArray<ToolbarBlockObjectSchemaType>\n },\n events: {} as\n | DisableListenerEvent\n | ActiveListenerEvent\n | BlockObjectPopoverEvent,\n },\n actions: {\n reset: assign({\n blockObjects: [],\n elementRef: React.createRef<Element>(),\n }),\n },\n actors: {\n 'disable listener': disableListener,\n 'active listener': activeListener,\n },\n}).createMachine({\n id: 'block object popover',\n context: ({input}) => ({\n editor: input.editor,\n schemaTypes: input.schemaTypes,\n blockObjects: [],\n elementRef: React.createRef<Element>(),\n }),\n invoke: [\n {src: 'disable listener', input: ({context}) => ({editor: context.editor})},\n {\n src: 'active listener',\n input: ({context}) => ({\n editor: context.editor,\n schemaTypes: context.schemaTypes,\n }),\n },\n ],\n initial: 'disabled',\n states: {\n disabled: {\n initial: 'inactive',\n states: {\n inactive: {\n entry: ['reset'],\n on: {\n 'set active': {\n actions: assign({\n blockObjects: ({event}) => event.blockObjects,\n elementRef: ({event}) => event.elementRef,\n }),\n target: 'active',\n },\n 'enable': {\n target: '#block object popover.enabled.inactive',\n },\n },\n },\n active: {\n on: {\n 'set inactive': {\n target: 'inactive',\n },\n 'enable': {\n target: '#block object popover.enabled.active',\n },\n },\n },\n },\n },\n enabled: {\n initial: 'inactive',\n states: {\n inactive: {\n entry: ['reset'],\n on: {\n 'set active': {\n target: 'active',\n actions: assign({\n blockObjects: ({event}) => event.blockObjects,\n elementRef: ({event}) => event.elementRef,\n }),\n },\n 'disable': {\n target: '#block object popover.disabled.inactive',\n },\n },\n },\n active: {\n on: {\n 'set inactive': {\n target: 'inactive',\n },\n 'disable': {\n target: '#block object popover.disabled.active',\n },\n 'set active': {\n actions: assign({\n blockObjects: ({event}) => event.blockObjects,\n elementRef: ({event}) => event.elementRef,\n }),\n },\n 'edit': {\n actions: ({context, event}) => {\n context.editor.send({\n type: 'block.set',\n at: event.at,\n props: event.props,\n })\n context.editor.send({type: 'focus'})\n },\n },\n 'remove': {\n actions: ({context, event}) => {\n context.editor.send({\n type: 'delete.block',\n at: event.at,\n })\n context.editor.send({type: 'focus'})\n },\n },\n 'close': {\n actions: ({context}) => {\n context.editor.send({type: 'focus'})\n },\n target: 'inactive',\n },\n },\n },\n },\n },\n },\n})\n\n/**\n * @beta\n */\nexport type BlockObjectPopoverEvent =\n | {\n type: 'remove'\n at: BlockPath\n }\n | {\n type: 'edit'\n at: BlockPath\n props: {[key: string]: unknown}\n }\n | {\n type: 'close'\n }\n\n/**\n * @beta\n */\nexport type BlockObjectPopover = {\n snapshot: {\n context: ActiveContext\n matches: (\n state:\n | 'disabled'\n | 'enabled'\n | {\n enabled: 'inactive' | 'active'\n },\n ) => boolean\n }\n send: (event: BlockObjectPopoverEvent) => void\n}\n\n/**\n * @beta\n * Manages the state and available events for a block object popover.\n */\nexport function useBlockObjectPopover(props: {\n schemaTypes: ReadonlyArray<ToolbarBlockObjectSchemaType>\n}): BlockObjectPopover {\n const editor = useEditor()\n const [actorSnapshot, send] = useActor(blockObjectPopoverMachine, {\n input: {\n editor,\n schemaTypes: props.schemaTypes,\n },\n })\n\n return {\n snapshot: {\n context: {\n blockObjects: actorSnapshot.context.blockObjects,\n elementRef: actorSnapshot.context.elementRef,\n },\n matches: (state) => actorSnapshot.matches(state),\n },\n send,\n }\n}\n","import {useEditor, type Editor} from '@portabletext/editor'\nimport {defineBehavior, raise} from '@portabletext/editor/behaviors'\nimport {useActorRef} from '@xstate/react'\nimport {fromCallback, setup, type AnyEventObject} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\nimport type {ToolbarDecoratorSchemaType} from './use-toolbar-schema'\n\nconst keyboardShortcutListener = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaType: ToolbarDecoratorSchemaType}\n>(({input}) => {\n const shortcut = input.schemaType.shortcut\n\n if (!shortcut) {\n return\n }\n\n return input.editor.registerBehavior({\n behavior: defineBehavior({\n on: 'keyboard.keydown',\n guard: ({event}) => shortcut.guard(event.originEvent),\n actions: [\n () => [\n raise({\n type: 'decorator.toggle',\n decorator: input.schemaType.name,\n }),\n ],\n ],\n }),\n })\n})\n\nconst decoratorKeyboardShortcutMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n schemaType: ToolbarDecoratorSchemaType\n },\n input: {} as {\n editor: Editor\n schemaType: ToolbarDecoratorSchemaType\n },\n events: {} as DisableListenerEvent | {type: 'decorator.toggle'},\n },\n actors: {\n 'disable listener': disableListener,\n 'keyboard shortcut listener': keyboardShortcutListener,\n },\n}).createMachine({\n id: 'decorator keyboard shortcut',\n context: ({input}) => ({\n editor: input.editor,\n schemaType: input.schemaType,\n }),\n invoke: {\n src: 'disable listener',\n input: ({context}) => ({editor: context.editor}),\n },\n initial: 'disabled',\n states: {\n disabled: {\n on: {\n enable: {\n target: 'enabled',\n },\n },\n },\n enabled: {\n invoke: {\n src: 'keyboard shortcut listener',\n input: ({context}) => ({\n editor: context.editor,\n schemaType: context.schemaType,\n }),\n },\n on: {\n disable: {\n target: 'disabled',\n },\n },\n },\n },\n})\n\nexport function useDecoratorKeyboardShortcut(props: {\n schemaType: ToolbarDecoratorSchemaType\n}) {\n const editor = useEditor()\n useActorRef(decoratorKeyboardShortcutMachine, {\n input: {\n editor,\n schemaType: props.schemaType,\n },\n })\n}\n","import {useEditor} from '@portabletext/editor'\nimport {defineBehavior, forward, raise} from '@portabletext/editor/behaviors'\nimport {useEffect} from 'react'\nimport type {ToolbarDecoratorSchemaType} from './use-toolbar-schema'\n\nexport function useMutuallyExclusiveDecorator(props: {\n schemaType: ToolbarDecoratorSchemaType\n}) {\n const editor = useEditor()\n\n useEffect(() => {\n const mutuallyExclusive = props.schemaType.mutuallyExclusive\n\n if (!mutuallyExclusive) {\n return\n }\n\n return editor.registerBehavior({\n behavior: defineBehavior({\n on: 'decorator.add',\n guard: ({event}) => event.decorator === props.schemaType.name,\n actions: [\n ({event}) => [\n forward(event),\n ...mutuallyExclusive.map((decorator) =>\n raise({\n type: 'decorator.remove',\n decorator,\n }),\n ),\n ],\n ],\n }),\n })\n }, [editor, props.schemaType.name, props.schemaType.mutuallyExclusive])\n}\n","import {\n useEditor,\n type DecoratorSchemaType,\n type Editor,\n} from '@portabletext/editor'\nimport * as selectors from '@portabletext/editor/selectors'\nimport {useActor} from '@xstate/react'\nimport {fromCallback, setup, type AnyEventObject} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\nimport {useDecoratorKeyboardShortcut} from './use-decorator-keyboard-shortcut'\nimport {useMutuallyExclusiveDecorator} from './use-mutually-exclusive-decorator'\nimport type {ToolbarDecoratorSchemaType} from './use-toolbar-schema'\n\nconst activeListener = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaType: DecoratorSchemaType},\n {type: 'set active'} | {type: 'set inactive'}\n>(({input, sendBack}) => {\n // Send back the initial state\n if (\n selectors.isActiveDecorator(input.schemaType.name)(\n input.editor.getSnapshot(),\n )\n ) {\n sendBack({type: 'set active'})\n } else {\n sendBack({type: 'set inactive'})\n }\n\n return input.editor.on('*', () => {\n const snapshot = input.editor.getSnapshot()\n\n if (selectors.isActiveDecorator(input.schemaType.name)(snapshot)) {\n sendBack({type: 'set active'})\n } else {\n sendBack({type: 'set inactive'})\n }\n }).unsubscribe\n})\n\nconst decoratorButtonMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n schemaType: DecoratorSchemaType\n },\n input: {} as {\n editor: Editor\n schemaType: DecoratorSchemaType\n },\n events: {} as DisableListenerEvent | DecoratorButtonEvent,\n },\n actions: {\n toggle: ({context, event}) => {\n if (event.type !== 'toggle') {\n return\n }\n\n context.editor.send({\n type: 'decorator.toggle',\n decorator: context.schemaType.name,\n })\n context.editor.send({type: 'focus'})\n },\n },\n actors: {\n 'disable listener': disableListener,\n 'active listener': activeListener,\n },\n}).createMachine({\n id: 'decorator button',\n context: ({input}) => ({\n editor: input.editor,\n schemaType: input.schemaType,\n }),\n invoke: [\n {src: 'disable listener', input: ({context}) => ({editor: context.editor})},\n {\n src: 'active listener',\n input: ({context}) => ({\n editor: context.editor,\n schemaType: context.schemaType,\n }),\n },\n ],\n initial: 'disabled',\n states: {\n disabled: {\n initial: 'inactive',\n states: {\n inactive: {\n on: {\n 'enable': {\n target: '#decorator button.enabled.inactive',\n },\n 'set active': {\n target: 'active',\n },\n },\n },\n active: {\n on: {\n 'enable': {\n target: '#decorator button.enabled.active',\n },\n 'set inactive': {\n target: 'inactive',\n },\n },\n },\n },\n },\n enabled: {\n on: {\n toggle: {\n actions: ['toggle'],\n },\n },\n initial: 'inactive',\n states: {\n inactive: {\n on: {\n 'disable': {\n target: '#decorator button.disabled.inactive',\n },\n 'set active': {\n target: 'active',\n },\n },\n },\n active: {\n on: {\n 'disable': {\n target: '#decorator button.disabled.active',\n },\n 'set inactive': {\n target: 'inactive',\n },\n },\n },\n },\n },\n },\n})\n\n/**\n * @beta\n */\nexport type DecoratorButtonEvent = {\n type: 'toggle'\n}\n\n/**\n * @beta\n */\nexport type DecoratorButton = {\n snapshot: {\n matches: (\n state:\n | 'disabled'\n | 'enabled'\n | {disabled: 'inactive'}\n | {disabled: 'active'}\n | {enabled: 'inactive'}\n | {enabled: 'active'},\n ) => boolean\n }\n send: (event: DecoratorButtonEvent) => void\n}\n\n/**\n * @beta\n * Manages the state, keyboard shortcuts and available events for a decorator\n * button and sets up mutually exclusive decorator behaviors.\n */\nexport function useDecoratorButton(props: {\n schemaType: ToolbarDecoratorSchemaType\n}): DecoratorButton {\n const editor = useEditor()\n const [actorSnapshot, send] = useActor(decoratorButtonMachine, {\n input: {\n editor,\n schemaType: props.schemaType,\n },\n })\n\n useDecoratorKeyboardShortcut(props)\n useMutuallyExclusiveDecorator(props)\n\n return {\n snapshot: {\n matches: (state) => actorSnapshot.matches(state),\n },\n send,\n }\n}\n","import {useEditor, type Editor} from '@portabletext/editor'\nimport {useActor} from '@xstate/react'\nimport {setup} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\n\nconst historyButtonsMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n },\n input: {} as {\n editor: Editor\n },\n events: {} as DisableListenerEvent | HistoryButtonsEvent,\n },\n actors: {\n 'disable listener': disableListener,\n },\n}).createMachine({\n id: 'history buttons',\n context: ({input}) => ({\n editor: input.editor,\n }),\n invoke: {\n src: 'disable listener',\n input: ({context}) => ({editor: context.editor}),\n },\n initial: 'disabled',\n states: {\n disabled: {\n on: {\n enable: {\n target: 'enabled',\n },\n },\n },\n enabled: {\n on: {\n 'disable': {\n target: 'disabled',\n },\n 'history.undo': {\n actions: ({context}) => {\n context.editor.send({type: 'history.undo'})\n context.editor.send({type: 'focus'})\n },\n },\n 'history.redo': {\n actions: ({context}) => {\n context.editor.send({type: 'history.redo'})\n context.editor.send({type: 'focus'})\n },\n },\n },\n },\n },\n})\n\n/**\n * @beta\n */\nexport type HistoryButtonsEvent =\n | {\n type: 'history.undo'\n }\n | {\n type: 'history.redo'\n }\n\n/**\n * @beta\n */\nexport type HistoryButtons = {\n snapshot: {\n matches: (state: 'disabled' | 'enabled') => boolean\n }\n send: (event: HistoryButtonsEvent) => void\n}\n\n/**\n * @beta\n */\nexport function useHistoryButtons(): HistoryButtons {\n const editor = useEditor()\n const [actorSnapshot, send] = useActor(historyButtonsMachine, {\n input: {\n editor,\n },\n })\n\n return {\n snapshot: {\n matches: (state) => actorSnapshot.matches(state),\n },\n send,\n }\n}\n","import {useEditor, type Editor} from '@portabletext/editor'\nimport {defineBehavior, effect} from '@portabletext/editor/behaviors'\nimport {useActor} from '@xstate/react'\nimport {fromCallback, setup, type AnyEventObject} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\nimport type {ToolbarInlineObjectSchemaType} from './use-toolbar-schema'\n\nconst keyboardShortcutListener = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaType: ToolbarInlineObjectSchemaType},\n InlineObjectButtonEvent\n>(({input, sendBack}) => {\n const shortcut = input.schemaType.shortcut\n\n if (!shortcut) {\n return\n }\n\n return input.editor.registerBehavior({\n behavior: defineBehavior({\n on: 'keyboard.keydown',\n guard: ({event}) => shortcut.guard(event.originEvent),\n actions: [\n () => [\n effect(() => {\n sendBack({type: 'open dialog'})\n }),\n ],\n ],\n }),\n })\n})\n\nconst inlineObjectButtonMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n schemaType: ToolbarInlineObjectSchemaType\n },\n input: {} as {\n editor: Editor\n schemaType: ToolbarInlineObjectSchemaType\n },\n events: {} as DisableListenerEvent | InlineObjectButtonEvent,\n },\n actions: {\n insert: ({context, event}) => {\n if (event.type !== 'insert') {\n return\n }\n\n context.editor.send({\n type: 'insert.inline object',\n inlineObject: {\n name: context.schemaType.name,\n value: event.value,\n },\n })\n context.editor.send({type: 'focus'})\n },\n },\n actors: {\n 'disable listener': disableListener,\n 'keyboard shortcut listener': keyboardShortcutListener,\n },\n}).createMachine({\n id: 'inline object button',\n context: ({input}) => ({\n editor: input.editor,\n schemaType: input.schemaType,\n }),\n invoke: [\n {\n src: 'disable listener',\n input: ({context}) => ({editor: context.editor}),\n },\n ],\n initial: 'disabled',\n states: {\n disabled: {\n on: {\n enable: {\n target: 'enabled',\n },\n },\n },\n enabled: {\n on: {\n disable: {\n target: 'disabled',\n },\n },\n initial: 'idle',\n states: {\n 'idle': {\n invoke: [\n {\n src: 'keyboard shortcut listener',\n input: ({context}) => ({\n editor: context.editor,\n schemaType: context.schemaType,\n }),\n },\n ],\n on: {\n 'open dialog': {\n target: 'showing dialog',\n },\n },\n },\n 'showing dialog': {\n on: {\n 'close dialog': {\n target: 'idle',\n },\n 'insert': {\n actions: ['insert'],\n target: 'idle',\n },\n },\n },\n },\n },\n },\n})\n\n/**\n * @beta\n */\nexport type InlineObjectButtonEvent =\n | {\n type: 'close dialog'\n }\n | {\n type: 'open dialog'\n }\n | {\n type: 'insert'\n value: {[key: string]: unknown}\n }\n\n/**\n * @beta\n */\nexport type InlineObjectButton = {\n snapshot: {\n matches: (\n state:\n | 'disabled'\n | 'enabled'\n | {enabled: 'idle'}\n | {enabled: 'showing dialog'},\n ) => boolean\n }\n send: (event: InlineObjectButtonEvent) => void\n}\n\n/**\n * @beta\n * Manages the state, keyboard shortcut and available events for an inline\n * object button.\n *\n * Note: This hook assumes that the button triggers a dialog for inputting\n * the inline object value.\n */\nexport function useInlineObjectButton(props: {\n schemaType: ToolbarInlineObjectSchemaType\n}): InlineObjectButton {\n const editor = useEditor()\n const [actorSnapshot, send] = useActor(inlineObjectButtonMachine, {\n input: {\n editor,\n schemaType: props.schemaType,\n },\n })\n\n return {\n snapshot: {\n matches: (state) => actorSnapshot.matches(state),\n },\n send,\n }\n}\n","import {\n useEditor,\n type ChildPath,\n type Editor,\n type PortableTextObject,\n} from '@portabletext/editor'\nimport * as selectors from '@portabletext/editor/selectors'\nimport {useActor} from '@xstate/react'\nimport * as React from 'react'\nimport type {RefObject} from 'react'\nimport {assign, fromCallback, setup, type AnyEventObject} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\nimport type {ToolbarInlineObjectSchemaType} from './use-toolbar-schema'\n\ntype ActiveContext = {\n inlineObjects: Array<{\n value: PortableTextObject\n schemaType: ToolbarInlineObjectSchemaType\n at: ChildPath\n }>\n elementRef: RefObject<Element | null>\n}\n\ntype ActiveListenerEvent =\n | ({\n type: 'set active'\n } & ActiveContext)\n | {\n type: 'set inactive'\n }\n\nconst activeListener = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaTypes: ReadonlyArray<ToolbarInlineObjectSchemaType>},\n ActiveListenerEvent\n>(({input, sendBack}) => {\n return input.editor.on('selection', () => {\n const snapshot = input.editor.getSnapshot()\n\n if (!selectors.isSelectionCollapsed(snapshot)) {\n sendBack({type: 'set inactive'})\n return\n }\n\n const focusInlineObject = selectors.getFocusInlineObject(snapshot)\n\n if (!focusInlineObject) {\n sendBack({type: 'set inactive'})\n return\n }\n\n const schemaType = input.schemaTypes.find(\n (schemaType) => schemaType.name === focusInlineObject.node._type,\n )\n\n if (!schemaType) {\n sendBack({type: 'set inactive'})\n return\n }\n\n const selectedNodes = input.editor.dom.getChildNodes(snapshot)\n const firstSelectedNode = selectedNodes.at(0)\n\n if (!firstSelectedNode || !(firstSelectedNode instanceof Element)) {\n sendBack({type: 'set inactive'})\n return\n }\n\n const elementRef = React.createRef<Element>()\n elementRef.current = firstSelectedNode\n\n sendBack({\n type: 'set active',\n inlineObjects: [\n {\n value: focusInlineObject.node,\n schemaType,\n at: focusInlineObject.path,\n },\n ],\n elementRef,\n })\n }).unsubscribe\n})\n\nconst inlineObjectPopoverMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n schemaTypes: ReadonlyArray<ToolbarInlineObjectSchemaType>\n } & ActiveContext,\n input: {} as {\n editor: Editor\n schemaTypes: ReadonlyArray<ToolbarInlineObjectSchemaType>\n },\n events: {} as\n | DisableListenerEvent\n | ActiveListenerEvent\n | InlineObjectPopoverEvent,\n },\n actions: {\n reset: assign({\n inlineObjects: [],\n elementRef: React.createRef<Element>(),\n }),\n },\n actors: {\n 'disable listener': disableListener,\n 'active listener': activeListener,\n },\n}).createMachine({\n id: 'inline object popover',\n context: ({input}) => ({\n editor: input.editor,\n schemaTypes: input.schemaTypes,\n inlineObjects: [],\n elementRef: React.createRef<Element>(),\n }),\n invoke: [\n {src: 'disable listener', input: ({context}) => ({editor: context.editor})},\n {\n src: 'active listener',\n input: ({context}) => ({\n editor: context.editor,\n schemaTypes: context.schemaTypes,\n }),\n },\n ],\n initial: 'disabled',\n states: {\n disabled: {\n initial: 'inactive',\n states: {\n inactive: {\n entry: ['reset'],\n on: {\n 'set active': {\n actions: assign({\n inlineObjects: ({event}) => event.inlineObjects,\n elementRef: ({event}) => event.elementRef,\n }),\n target: 'active',\n },\n 'enable': {\n target: '#inline object popover.enabled.inactive',\n },\n },\n },\n active: {\n on: {\n 'set inactive': {\n target: 'inactive',\n },\n 'enable': {\n target: '#inline object popover.enabled.active',\n },\n },\n },\n },\n },\n enabled: {\n initial: 'inactive',\n states: {\n inactive: {\n entry: ['reset'],\n on: {\n 'set active': {\n target: 'active',\n actions: assign({\n inlineObjects: ({event}) => event.inlineObjects,\n elementRef: ({event}) => event.elementRef,\n }),\n },\n 'disable': {\n target: '#inline object popover.disabled.inactive',\n },\n },\n },\n active: {\n on: {\n 'set inactive': {\n target: 'inactive',\n },\n 'disable': {\n target: '#inline object popover.disabled.active',\n },\n 'set active': {\n actions: assign({\n inlineObjects: ({event}) => event.inlineObjects,\n elementRef: ({event}) => event.elementRef,\n }),\n },\n 'edit': {\n actions: ({context, event}) => {\n context.editor.send({\n type: 'child.set',\n at: event.at,\n props: event.props,\n })\n context.editor.send({type: 'focus'})\n },\n },\n 'remove': {\n actions: ({context, event}) => {\n context.editor.send({\n type: 'delete.child',\n at: event.at,\n })\n context.editor.send({type: 'focus'})\n },\n },\n 'close': {\n actions: ({context}) => {\n context.editor.send({type: 'focus'})\n },\n target: 'inactive',\n },\n },\n },\n },\n },\n },\n})\n\n/**\n * @beta\n */\nexport type InlineObjectPopoverEvent =\n | {\n type: 'remove'\n at: ChildPath\n }\n | {\n type: 'edit'\n at: ChildPath\n props: {[key: string]: unknown}\n }\n | {\n type: 'close'\n }\n\n/**\n * @beta\n */\nexport type InlineObjectPopover = {\n snapshot: {\n context: ActiveContext\n matches: (\n state:\n | 'disabled'\n | 'enabled'\n | {\n enabled: 'inactive' | 'active'\n },\n ) => boolean\n }\n send: (event: InlineObjectPopoverEvent) => void\n}\n\n/**\n * @beta\n * Manages the state and available events for an inline object popover.\n */\nexport function useInlineObjectPopover(props: {\n schemaTypes: ReadonlyArray<ToolbarInlineObjectSchemaType>\n}): InlineObjectPopover {\n const editor = useEditor()\n const [actorSnapshot, send] = useActor(inlineObjectPopoverMachine, {\n input: {\n editor,\n schemaTypes: props.schemaTypes,\n },\n })\n\n return {\n snapshot: {\n context: {\n inlineObjects: actorSnapshot.context.inlineObjects,\n elementRef: actorSnapshot.context.elementRef,\n },\n matches: (state) => actorSnapshot.matches(state),\n },\n send,\n }\n}\n","import {useEditor, type Editor, type ListSchemaType} from '@portabletext/editor'\nimport * as selectors from '@portabletext/editor/selectors'\nimport {useActor} from '@xstate/react'\nimport {fromCallback, setup, type AnyEventObject} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\nimport type {ToolbarListSchemaType} from './use-toolbar-schema'\n\nconst activeListener = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaType: ListSchemaType},\n {type: 'set active'} | {type: 'set inactive'}\n>(({input, sendBack}) => {\n // Send back the initial state\n if (\n selectors.isActiveListItem(input.schemaType.name)(\n input.editor.getSnapshot(),\n )\n ) {\n sendBack({type: 'set active'})\n } else {\n sendBack({type: 'set inactive'})\n }\n\n return input.editor.on('*', () => {\n const snapshot = input.editor.getSnapshot()\n\n if (selectors.isActiveListItem(input.schemaType.name)(snapshot)) {\n sendBack({type: 'set active'})\n } else {\n sendBack({type: 'set inactive'})\n }\n }).unsubscribe\n})\n\nconst listButtonMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n schemaType: ListSchemaType\n },\n input: {} as {\n editor: Editor\n schemaType: ListSchemaType\n },\n events: {} as DisableListenerEvent | ListButtonEvent,\n },\n actions: {\n toggle: ({context, event}) => {\n if (event.type !== 'toggle') {\n return\n }\n\n context.editor.send({\n type: 'list item.toggle',\n listItem: context.schemaType.name,\n })\n context.editor.send({type: 'focus'})\n },\n },\n actors: {\n 'disable listener': disableListener,\n 'active listener': activeListener,\n },\n}).createMachine({\n id: 'list button',\n context: ({input}) => ({\n editor: input.editor,\n schemaType: input.schemaType,\n }),\n invoke: [\n {src: 'disable listener', input: ({context}) => ({editor: context.editor})},\n {\n src: 'active listener',\n input: ({context}) => ({\n editor: context.editor,\n schemaType: context.schemaType,\n }),\n },\n ],\n initial: 'disabled',\n states: {\n disabled: {\n initial: 'inactive',\n states: {\n inactive: {\n on: {\n 'enable': {\n target: '#list button.enabled.inactive',\n },\n 'set active': {\n target: 'active',\n },\n },\n },\n active: {\n on: {\n 'enable': {\n target: '#list button.enabled.active',\n },\n 'set inactive': {\n target: 'inactive',\n },\n },\n },\n },\n },\n enabled: {\n on: {\n toggle: {\n actions: ['toggle'],\n },\n },\n initial: 'inactive',\n states: {\n inactive: {\n on: {\n 'disable': {\n target: '#list button.disabled.inactive',\n },\n 'set active': {\n target: 'active',\n },\n },\n },\n active: {\n on: {\n 'disable': {\n target: '#list button.disabled.active',\n },\n 'set inactive': {\n target: 'inactive',\n },\n },\n },\n },\n },\n },\n})\n\n/**\n * @beta\n */\nexport type ListButtonEvent = {\n type: 'toggle'\n}\n\n/**\n * @beta\n */\nexport type ListButton = {\n snapshot: {\n matches: (\n state:\n | 'disabled'\n | 'enabled'\n | {disabled: 'inactive'}\n | {disabled: 'active'}\n | {enabled: 'inactive'}\n | {enabled: 'active'},\n ) => boolean\n }\n send: (event: ListButtonEvent) => void\n}\n\n/**\n * @beta\n * Manages the state, keyboard shortcuts and available events for a list button.\n */\nexport function useListButton(props: {\n schemaType: ToolbarListSchemaType\n}): ListButton {\n const editor = useEditor()\n const [actorSnapshot, send] = useActor(listButtonMachine, {\n input: {\n editor,\n schemaType: props.schemaType,\n },\n })\n\n return {\n snapshot: {\n matches: (state) => actorSnapshot.matches(state),\n },\n send,\n }\n}\n","import {useEditor, type Editor} from '@portabletext/editor'\nimport {defineBehavior, raise} from '@portabletext/editor/behaviors'\nimport {useActorRef} from '@xstate/react'\nimport {fromCallback, setup, type AnyEventObject} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\nimport type {ToolbarStyleSchemaType} from './use-toolbar-schema'\n\nconst styleKeyboardShortcutsListener = fromCallback<\n AnyEventObject,\n {editor: Editor; schemaTypes: ReadonlyArray<ToolbarStyleSchemaType>}\n>(({input}) => {\n const unregisterBehaviors = input.schemaTypes.flatMap((schemaType) => {\n const shortcut = schemaType.shortcut\n\n if (!shortcut) {\n return []\n }\n\n return [\n input.editor.registerBehavior({\n behavior: defineBehavior({\n on: 'keyboard.keydown',\n guard: ({event}) => shortcut.guard(event.originEvent),\n actions: [\n () => [raise({type: 'style.toggle', style: schemaType.name})],\n ],\n }),\n }),\n ]\n })\n\n return () => {\n for (const unregisterBehavior of unregisterBehaviors) {\n unregisterBehavior()\n }\n }\n})\n\nconst styleKeyboardShortcutsMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n schemaTypes: ReadonlyArray<ToolbarStyleSchemaType>\n },\n input: {} as {\n editor: Editor\n schemaTypes: ReadonlyArray<ToolbarStyleSchemaType>\n },\n events: {} as DisableListenerEvent | {type: 'style.toggle'},\n },\n actors: {\n 'disable listener': disableListener,\n 'style keyboard shortcuts listener': styleKeyboardShortcutsListener,\n },\n}).createMachine({\n id: 'style keyboard shortcuts',\n context: ({input}) => ({\n editor: input.editor,\n schemaTypes: input.schemaTypes,\n }),\n invoke: {\n src: 'disable listener',\n input: ({context}) => ({editor: context.editor}),\n },\n initial: 'disabled',\n states: {\n disabled: {\n on: {\n enable: {\n target: 'enabled',\n },\n },\n },\n enabled: {\n invoke: {\n src: 'style keyboard shortcuts listener',\n input: ({context}) => ({\n editor: context.editor,\n schemaTypes: context.schemaTypes,\n }),\n },\n on: {\n disable: {\n target: 'disabled',\n },\n },\n },\n },\n})\n\n/**\n * @beta\n * Registers keyboard shortcuts for a set of style schema types.\n */\nexport function useStyleKeyboardShortcuts(props: {\n schemaTypes: ReadonlyArray<ToolbarStyleSchemaType>\n}) {\n const editor = useEditor()\n useActorRef(styleKeyboardShortcutsMachine, {\n input: {\n editor,\n schemaTypes: props.schemaTypes,\n },\n })\n}\n","import {\n useEditor,\n type Editor,\n type StyleSchemaType,\n} from '@portabletext/editor'\nimport * as selectors from '@portabletext/editor/selectors'\nimport {useActor} from '@xstate/react'\nimport {assign, fromCallback, setup, type AnyEventObject} from 'xstate'\nimport {disableListener, type DisableListenerEvent} from './disable-listener'\nimport {useStyleKeyboardShortcuts} from './use-style-keyboard-shortcuts'\nimport type {ToolbarStyleSchemaType} from './use-toolbar-schema'\n\ntype ActiveStyleListenerEvent = {\n type: 'set active style'\n style: StyleSchemaType['name'] | undefined\n}\n\nconst activeListener = fromCallback<\n AnyEventObject,\n {editor: Editor},\n ActiveStyleListenerEvent\n>(({input, sendBack}) => {\n // Send back the initial state\n const activeStyle = selectors.getActiveStyle(input.editor.getSnapshot())\n sendBack({type: 'set active style', style: activeStyle})\n\n return input.editor.on('*', () => {\n const snapshot = input.editor.getSnapshot()\n const activeStyle = selectors.getActiveStyle(snapshot)\n\n sendBack({type: 'set active style', style: activeStyle})\n }).unsubscribe\n})\n\nconst styleSelectorMachine = setup({\n types: {\n context: {} as {\n editor: Editor\n activeStyle: StyleSchemaType['name'] | undefined\n },\n input: {} as {\n editor: Editor\n },\n events: {} as\n | StyleSelectorEvent\n | DisableListenerEvent\n | ActiveStyleListenerEvent,\n },\n actors: {\n 'disable listener': disableListener,\n 'active listener': activeListener,\n },\n}).createMachine({\n id: 'style selector',\n context: ({input}) => ({\n editor: input.editor,\n activeStyle: undefined,\n }),\n invoke: [\n {\n src: 'disable listener',\n input: ({context}) => ({\n editor: context.editor,\n }),\n },\n {\n src: 'active listener',\n input: ({context}) => ({\n editor: context.editor,\n }),\n },\n ],\n on: {\n 'set active style': {\n guard: ({context, event}) => context.activeStyle !== event.style,\n actions: assign({\n activeStyle: ({event}) => event.style,\n }),\n },\n },\n initial: 'disabled',\n states: {\n disabled: {\n on: {\n enable: {\n target: 'enabled',\n },\n },\n },\n enabled: {\n on: {\n disable: {\n target: 'disabled',\n },\n toggle: {\n actions: [\n ({context, event}) => {\n context.editor.send({type: 'style.toggle', style: event.style})\n context.editor.send({type: 'focus'})\n },\n ],\n },\n },\n },\n },\n})\n\n/**\n * @beta\n */\nexport type StyleSelectorEvent = {\n type: 'toggle'\n style: StyleSchemaType['name']\n}\n\n/**\n * @beta\n */\nexport type StyleSelector = {\n snapshot: {\n matches: (state: 'disabled' | 'enabled') => boolean\n context: {\n activeStyle: StyleSchemaType['name'] | undefined\n }\n }\n send: (event: StyleSelectorEvent) => void\n}\n\n/**\n * @beta\n * Manages the state, keyboard shortcuts and available events for a style\n * selector.\n */\nexport function useStyleSelector(props: {\n schemaTypes: ReadonlyArray<ToolbarStyleSchemaType>\n}): StyleSelector {\n const editor = useEditor()\n const [actorSnapshot, send] = useActor(styleSelectorMachine, {\n input: {\n editor,\n },\n })\n useStyleKeyboardShortcuts(props)\n\n return {\n snapshot: {\n matches: (state) => actorSnapshot.matches(state),\n context: {\n activeStyle: actorSnapshot.context.activeStyle,\n },\n },\n send,\n }\n}\n"],"names":["useToolbarSchema","props","$","_c","editor","useEditor","schema","useEditorSelector","_temp","t0","decorators","t1","decorator","extendDecorator","map","annotations","t2","annotation","extendAnnotation","lists","t3","list","extendList","blockObjects","t4","blockObject","extendBlockObject","inlineObjects","t5","inlineObject","extendInlineObject","styles","t6","style","extendStyle","snapshot","context","disableListener","fromCallback","input","sendBack","getSnapshot","readOnly","type","on","unsubscribe","useMutuallyExclusiveAnnotation","schemaType","mutuallyExclusive","name","registerBehavior","behavior","defineBehavior","guard","event","activeMutuallyExclusive","filter","isActiveAnnotation","mode","actions","_temp2","useEffect","event_0","activeMutuallyExclusive_0","execute","annotation_0","raise","activeListener","selectors","keyboardShortcutRemove","shortcut","originEvent","effect","send","keyboardShortcutShowInsertDialog","annotationButtonMachine","setup","types","events","add annotation","value","remove annotation","actors","createMachine","id","invoke","src","initial","states","disabled","inactive","target","active","enabled","useAnnotationButton","useActor","matches","state","activeAnnotations","getActiveAnnotations","focusBlock","getFocusBlock","length","firstSelectedChild","dom","getChildNodes","at","Element","elementRef","React","createRef","current","flatMap","schemaTypes","find","_type","_key","node","annotationPopoverMachine","reset","assign","remove","entry","useAnnotationPopover","actorSnapshot","keyboardShortcutListener","blockObjectButtonMachine","insert","placement","enable","disable","useBlockObjectButton","isSelectionCollapsed","focusBlockObject","getFocusBlockObject","firstSelectedNode","getBlockNodes","path","blockObjectPopoverMachine","useBlockObjectPopover","decoratorKeyboardShortcutMachine","useDecoratorKeyboardShortcut","useActorRef","useMutuallyExclusiveDecorator","forward","isActiveDecorator","decoratorButtonMachine","toggle","useDecoratorButton","historyButtonsMachine","useHistoryButtons","inlineObjectButtonMachine","useInlineObjectButton","focusInlineObject","getFocusInlineObject","inlineObjectPopoverMachine","useInlineObjectPopover","isActiveListItem","listButtonMachine","listItem","useListButton","styleKeyboardShortcutsListener","unregisterBehaviors","unregisterBehavior","styleKeyboardShortcutsMachine","useStyleKeyboardShortcuts","activeStyle","getActiveStyle","styleSelectorMachine","undefined","useStyleSelector"],"mappings":"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"}