@portabletext/toolbar 2.2.24 → 2.2.26
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.
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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 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 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 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 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 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","on","getSnapshot","readOnly","type","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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"}
|
|
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 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 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 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 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 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","on","getSnapshot","readOnly","type","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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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","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 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 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 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 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 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","on","getSnapshot","readOnly","type","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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"}
|
|
1
|
+
{"version":3,"file":"index.js","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 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 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 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 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 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","on","getSnapshot","readOnly","type","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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@portabletext/toolbar",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.26",
|
|
4
4
|
"description": "Utilities for building a toolbar for the Portable Text Editor",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"portabletext",
|
|
@@ -37,24 +37,24 @@
|
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@xstate/react": "^6.0.0",
|
|
40
|
-
"react-compiler-runtime": "
|
|
40
|
+
"react-compiler-runtime": "1.0.0",
|
|
41
41
|
"xstate": "^5.23.0",
|
|
42
42
|
"@portabletext/keyboard-shortcuts": "^1.1.1"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@sanity/pkg-utils": "^8.1.14",
|
|
46
46
|
"@types/react": "^19.2.0",
|
|
47
|
-
"babel-plugin-react-compiler": "
|
|
48
|
-
"eslint": "^9.
|
|
47
|
+
"babel-plugin-react-compiler": "1.0.0",
|
|
48
|
+
"eslint": "^9.38.0",
|
|
49
49
|
"eslint-formatter-gha": "^1.6.0",
|
|
50
|
-
"eslint-plugin-react-hooks": "
|
|
50
|
+
"eslint-plugin-react-hooks": "7.0.0",
|
|
51
51
|
"react": "^19.2.0",
|
|
52
52
|
"typescript": "5.9.3",
|
|
53
|
-
"typescript-eslint": "^8.
|
|
54
|
-
"@portabletext/editor": "2.14.
|
|
53
|
+
"typescript-eslint": "^8.46.1",
|
|
54
|
+
"@portabletext/editor": "2.14.4"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
|
-
"@portabletext/editor": "^2.14.
|
|
57
|
+
"@portabletext/editor": "^2.14.4",
|
|
58
58
|
"react": "^19.2.0"
|
|
59
59
|
},
|
|
60
60
|
"scripts": {
|