@portabletext/editor 1.47.0 → 1.47.2

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.
Files changed (93) hide show
  1. package/lib/_chunks-cjs/behavior.core.cjs +7 -7
  2. package/lib/_chunks-cjs/behavior.core.cjs.map +1 -1
  3. package/lib/_chunks-cjs/behavior.markdown.cjs.map +1 -1
  4. package/lib/_chunks-cjs/editor-provider.cjs +379 -326
  5. package/lib/_chunks-cjs/editor-provider.cjs.map +1 -1
  6. package/lib/_chunks-cjs/parse-blocks.cjs +4 -4
  7. package/lib/_chunks-cjs/parse-blocks.cjs.map +1 -1
  8. package/lib/_chunks-cjs/selector.is-overlapping-selection.cjs.map +1 -1
  9. package/lib/_chunks-es/behavior.core.js +7 -7
  10. package/lib/_chunks-es/behavior.core.js.map +1 -1
  11. package/lib/_chunks-es/behavior.markdown.js.map +1 -1
  12. package/lib/_chunks-es/editor-provider.js +380 -327
  13. package/lib/_chunks-es/editor-provider.js.map +1 -1
  14. package/lib/_chunks-es/parse-blocks.js +4 -4
  15. package/lib/_chunks-es/parse-blocks.js.map +1 -1
  16. package/lib/_chunks-es/selector.is-overlapping-selection.js.map +1 -1
  17. package/lib/behaviors/index.cjs.map +1 -1
  18. package/lib/behaviors/index.d.cts +70 -28
  19. package/lib/behaviors/index.d.ts +70 -28
  20. package/lib/behaviors/index.js.map +1 -1
  21. package/lib/index.cjs +12 -14
  22. package/lib/index.cjs.map +1 -1
  23. package/lib/index.d.cts +61 -3
  24. package/lib/index.d.ts +61 -3
  25. package/lib/index.js +12 -14
  26. package/lib/index.js.map +1 -1
  27. package/lib/plugins/index.cjs.map +1 -1
  28. package/lib/plugins/index.d.cts +68 -23
  29. package/lib/plugins/index.d.ts +68 -23
  30. package/lib/plugins/index.js.map +1 -1
  31. package/lib/selectors/index.d.cts +69 -27
  32. package/lib/selectors/index.d.ts +69 -27
  33. package/lib/utils/index.d.cts +74 -29
  34. package/lib/utils/index.d.ts +74 -29
  35. package/package.json +6 -6
  36. package/src/behavior-actions/behavior.action.insert.block.ts +1 -1
  37. package/src/behavior-actions/behavior.action.split.block.ts +1 -1
  38. package/src/behavior-actions/behavior.guards.ts +1 -1
  39. package/src/behaviors/behavior.core.decorators.ts +4 -4
  40. package/src/behaviors/behavior.core.insert-break.ts +4 -4
  41. package/src/behaviors/behavior.decorator-pair.ts +1 -1
  42. package/src/behaviors/behavior.links.ts +1 -1
  43. package/src/behaviors/behavior.markdown.ts +1 -1
  44. package/src/behaviors/behavior.perform-event.ts +1 -1
  45. package/src/converters/converter.portable-text.deserialize.test.ts +2 -3
  46. package/src/converters/converter.text-html.deserialize.test.ts +62 -5
  47. package/src/converters/converter.text-html.serialize.test.ts +9 -5
  48. package/src/converters/converter.text-html.ts +66 -64
  49. package/src/converters/converter.text-plain.test.ts +9 -4
  50. package/src/converters/converter.text-plain.ts +91 -87
  51. package/src/converters/converters.core.ts +13 -8
  52. package/src/editor/Editable.tsx +18 -13
  53. package/src/editor/PortableTextEditor.tsx +5 -5
  54. package/src/editor/__tests__/PortableTextEditorTester.tsx +4 -3
  55. package/src/editor/__tests__/insert-block.test.tsx +10 -10
  56. package/src/editor/__tests__/self-solving.test.tsx +2 -2
  57. package/src/editor/components/Synchronizer.tsx +1 -1
  58. package/src/editor/create-editor.ts +51 -18
  59. package/src/editor/editor-machine.ts +1 -1
  60. package/src/editor/{define-schema.ts → editor-schema.ts} +114 -5
  61. package/src/editor/editor-snapshot.ts +1 -1
  62. package/src/editor/get-active-decorators.ts +2 -2
  63. package/src/editor/{create-editor-schema.ts → legacy-schema.ts} +3 -3
  64. package/src/editor/mutation-machine.ts +1 -1
  65. package/src/editor/plugins/createWithObjectKeys.ts +6 -9
  66. package/src/editor/plugins/createWithPatches.ts +12 -11
  67. package/src/editor/plugins/createWithPortableTextBlockStyle.ts +2 -6
  68. package/src/editor/plugins/createWithPortableTextMarkModel.ts +15 -12
  69. package/src/editor/plugins/createWithSchemaTypes.ts +24 -16
  70. package/src/editor/plugins/createWithUndoRedo.ts +3 -4
  71. package/src/editor/plugins/createWithUtils.ts +12 -10
  72. package/src/editor/plugins/with-plugins.ts +5 -15
  73. package/src/editor/range-decorations-machine.ts +1 -1
  74. package/src/editor/sync-machine.ts +1 -1
  75. package/src/index.ts +2 -2
  76. package/src/internal-utils/__tests__/operationToPatches.test.ts +12 -10
  77. package/src/internal-utils/__tests__/patchToOperations.test.ts +3 -2
  78. package/src/internal-utils/__tests__/values.test.ts +3 -2
  79. package/src/internal-utils/applyPatch.ts +7 -9
  80. package/src/internal-utils/create-test-snapshot.ts +1 -1
  81. package/src/internal-utils/drag-selection.test.ts +1 -1
  82. package/src/internal-utils/operationToPatches.ts +4 -6
  83. package/src/internal-utils/parse-blocks.test.ts +1 -1
  84. package/src/internal-utils/parse-blocks.ts +8 -7
  85. package/src/internal-utils/slate-children-to-blocks.ts +1 -1
  86. package/src/internal-utils/slate-utils.ts +1 -1
  87. package/src/internal-utils/validateValue.ts +4 -6
  88. package/src/internal-utils/values.ts +5 -5
  89. package/src/plugins/plugin.decorator-shortcut.ts +1 -1
  90. package/src/plugins/plugin.markdown.test.tsx +1 -1
  91. package/src/plugins/plugin.markdown.tsx +1 -1
  92. package/src/selectors/selector.get-selection-text.test.ts +1 -1
  93. package/src/selectors/selector.get-trimmed-selection.test.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/plugins/plugin.behavior.tsx","../../src/plugins/plugin.core.tsx","../../src/internal-utils/get-text-to-emphasize.ts","../../src/behaviors/behavior.decorator-pair.ts","../../src/plugins/plugin.decorator-shortcut.ts","../../src/plugins/plugin.editor-ref.tsx","../../src/plugins/plugin.event-listener.tsx","../../src/plugins/plugin.markdown.tsx","../../src/plugins/plugin.one-line.tsx"],"sourcesContent":["import {useEffect} from 'react'\nimport type {Behavior} from '../behaviors'\nimport {useEditor} from '../editor/editor-provider'\n\n/**\n * @beta\n */\nexport function BehaviorPlugin(props: {behaviors: Array<Behavior>}) {\n const editor = useEditor()\n\n useEffect(() => {\n const unregisterBehaviors = props.behaviors.map((behavior) =>\n editor.registerBehavior({behavior}),\n )\n\n return () => {\n unregisterBehaviors.forEach((unregister) => unregister())\n }\n }, [editor, props.behaviors])\n\n return null\n}\n","import {coreBehaviors} from '../behaviors'\nimport {BehaviorPlugin} from './plugin.behavior'\n\n/**\n * @beta\n */\nexport function CoreBehaviorsPlugin() {\n return <BehaviorPlugin behaviors={coreBehaviors} />\n}\n","export function createPairRegex(char: string, amount: number) {\n // Negative lookbehind: Ensures that the matched sequence is not preceded by the same character\n const prePrefix = `(?<!\\\\${char})`\n\n // Repeats the character `amount` times\n const prefix = `\\\\${char}`.repeat(Math.max(amount, 1))\n\n // Negative lookahead: Ensures that the opening pair (**, *, etc.) is not followed by a space\n const postPrefix = `(?!\\\\s)`\n\n // Captures the content inside the pair\n const content = `([^${char}\\\\n]+?)`\n\n // Negative lookbehind: Ensures that the content is not followed by a space\n const preSuffix = `(?<!\\\\s)`\n\n // Repeats the character `amount` times\n const suffix = `\\\\${char}`.repeat(Math.max(amount, 1))\n\n // Negative lookahead: Ensures that the matched sequence is not followed by the same character\n const postSuffix = `(?!\\\\${char})`\n\n return `${prePrefix}${prefix}${postPrefix}${content}${preSuffix}${suffix}${postSuffix}`\n}\n\nconst italicRegex = new RegExp(\n `(${createPairRegex('*', 1)}|${createPairRegex('_', 1)})$`,\n)\n\nconst boldRegex = new RegExp(\n `(${createPairRegex('*', 2)}|${createPairRegex('_', 2)})$`,\n)\n\nexport function getTextToItalic(text: string) {\n return text.match(italicRegex)?.at(0)\n}\n\nexport function getTextToBold(text: string) {\n return text.match(boldRegex)?.at(0)\n}\n","import type {EditorSchema} from '../editor/define-schema'\nimport {createPairRegex} from '../internal-utils/get-text-to-emphasize'\nimport * as selectors from '../selectors'\nimport type {BlockOffset} from '../types/block-offset'\nimport * as utils from '../utils'\nimport {effect, execute} from './behavior.types.action'\nimport {defineBehavior} from './behavior.types.behavior'\n\nexport function createDecoratorPairBehavior(config: {\n decorator: ({schema}: {schema: EditorSchema}) => string | undefined\n pair: {char: string; amount: number}\n onDecorate: (offset: BlockOffset) => void\n}) {\n if (config.pair.amount < 1) {\n console.warn(\n `The amount of characters in the pair should be greater than 0`,\n )\n }\n\n const pairRegex = createPairRegex(config.pair.char, config.pair.amount)\n const regEx = new RegExp(`(${pairRegex})$`)\n\n return defineBehavior({\n on: 'insert.text',\n guard: ({snapshot, event}) => {\n if (config.pair.amount < 1) {\n return false\n }\n\n const decorator = config.decorator({schema: snapshot.context.schema})\n\n if (decorator === undefined) {\n return false\n }\n\n const focusTextBlock = selectors.getFocusTextBlock(snapshot)\n const selectionStartPoint = selectors.getSelectionStartPoint(snapshot)\n const selectionStartOffset = selectionStartPoint\n ? utils.spanSelectionPointToBlockOffset({\n value: snapshot.context.value,\n selectionPoint: selectionStartPoint,\n })\n : undefined\n\n if (!focusTextBlock || !selectionStartOffset) {\n return false\n }\n\n const textBefore = selectors.getBlockTextBefore(snapshot)\n const newText = `${textBefore}${event.text}`\n const textToDecorate = newText.match(regEx)?.at(0)\n\n if (textToDecorate === undefined) {\n return false\n }\n\n const prefixOffsets = {\n anchor: {\n path: focusTextBlock.path,\n // Example: \"foo **bar**\".length - \"**bar**\".length = 4\n offset: newText.length - textToDecorate.length,\n },\n focus: {\n path: focusTextBlock.path,\n // Example: \"foo **bar**\".length - \"**bar**\".length + \"*\".length * 2 = 6\n offset:\n newText.length -\n textToDecorate.length +\n config.pair.char.length * config.pair.amount,\n },\n }\n\n const suffixOffsets = {\n anchor: {\n path: focusTextBlock.path,\n // Example: \"foo **bar*|\" (10) + \"*\".length - 2 = 9\n offset:\n selectionStartOffset.offset +\n event.text.length -\n config.pair.char.length * config.pair.amount,\n },\n focus: {\n path: focusTextBlock.path,\n // Example: \"foo **bar*|\" (10) + \"*\".length = 11\n offset: selectionStartOffset.offset + event.text.length,\n },\n }\n\n // If the prefix is more than one character, then we need to check if\n // there is an inline object inside it\n if (prefixOffsets.focus.offset - prefixOffsets.anchor.offset > 1) {\n const prefixSelection = utils.blockOffsetsToSelection({\n value: snapshot.context.value,\n offsets: prefixOffsets,\n })\n const inlineObjectBeforePrefixFocus = selectors.getPreviousInlineObject(\n {\n ...snapshot,\n context: {\n ...snapshot.context,\n selection: prefixSelection\n ? {\n anchor: prefixSelection.focus,\n focus: prefixSelection.focus,\n }\n : null,\n },\n },\n )\n const inlineObjectBeforePrefixFocusOffset =\n inlineObjectBeforePrefixFocus\n ? utils.childSelectionPointToBlockOffset({\n value: snapshot.context.value,\n selectionPoint: {\n path: inlineObjectBeforePrefixFocus.path,\n offset: 0,\n },\n })\n : undefined\n\n if (\n inlineObjectBeforePrefixFocusOffset &&\n inlineObjectBeforePrefixFocusOffset.offset >\n prefixOffsets.anchor.offset &&\n inlineObjectBeforePrefixFocusOffset.offset <\n prefixOffsets.focus.offset\n ) {\n return false\n }\n }\n\n // If the suffix is more than one character, then we need to check if\n // there is an inline object inside it\n if (suffixOffsets.focus.offset - suffixOffsets.anchor.offset > 1) {\n const previousInlineObject = selectors.getPreviousInlineObject(snapshot)\n const previousInlineObjectOffset = previousInlineObject\n ? utils.childSelectionPointToBlockOffset({\n value: snapshot.context.value,\n selectionPoint: {\n path: previousInlineObject.path,\n offset: 0,\n },\n })\n : undefined\n\n if (\n previousInlineObjectOffset &&\n previousInlineObjectOffset.offset > suffixOffsets.anchor.offset &&\n previousInlineObjectOffset.offset < suffixOffsets.focus.offset\n ) {\n return false\n }\n }\n\n return {\n prefixOffsets,\n suffixOffsets,\n decorator,\n }\n },\n actions: [\n // Insert the text as usual in its own undo step\n ({event}) => [execute(event)],\n (_, {prefixOffsets, suffixOffsets, decorator}) => [\n // Decorate the text between the prefix and suffix\n execute({\n type: 'decorator.add',\n decorator,\n at: {\n anchor: prefixOffsets.focus,\n focus: suffixOffsets.anchor,\n },\n }),\n // Delete the suffix\n execute({\n type: 'delete.text',\n at: suffixOffsets,\n }),\n // Delete the prefix\n execute({\n type: 'delete.text',\n at: prefixOffsets,\n }),\n // Toggle the decorator off so the next inserted text isn't emphasized\n execute({\n type: 'decorator.remove',\n decorator,\n }),\n effect(() => {\n config.onDecorate({\n ...suffixOffsets.anchor,\n offset:\n suffixOffsets.anchor.offset -\n (prefixOffsets.focus.offset - prefixOffsets.anchor.offset),\n })\n }),\n ],\n ],\n })\n}\n","import {useActorRef} from '@xstate/react'\nimport {isEqual} from 'lodash'\nimport {\n assign,\n fromCallback,\n setup,\n type AnyEventObject,\n type CallbackLogicFunction,\n} from 'xstate'\nimport {createDecoratorPairBehavior} from '../behaviors/behavior.decorator-pair'\nimport {effect, execute} from '../behaviors/behavior.types.action'\nimport {defineBehavior} from '../behaviors/behavior.types.behavior'\nimport type {Editor} from '../editor/create-editor'\nimport type {EditorSchema} from '../editor/define-schema'\nimport {useEditor} from '../editor/editor-provider'\nimport type {BlockOffset} from '../types/block-offset'\nimport * as utils from '../utils'\n\n/**\n * @beta\n */\nexport function DecoratorShortcutPlugin(config: {\n decorator: ({schema}: {schema: EditorSchema}) => string | undefined\n pair: {char: string; amount: number}\n}) {\n const editor = useEditor()\n\n useActorRef(decoratorPairMachine, {\n input: {\n editor,\n decorator: config.decorator,\n pair: config.pair,\n },\n })\n\n return null\n}\n\ntype MarkdownEmphasisEvent =\n | {\n type: 'emphasis.add'\n blockOffset: BlockOffset\n }\n | {\n type: 'selection'\n blockOffsets?: {\n anchor: BlockOffset\n focus: BlockOffset\n }\n }\n | {\n type: 'delete.backward'\n }\n\nconst emphasisListener: CallbackLogicFunction<\n AnyEventObject,\n MarkdownEmphasisEvent,\n {\n decorator: ({schema}: {schema: EditorSchema}) => string | undefined\n editor: Editor\n pair: {char: string; amount: number}\n }\n> = ({sendBack, input}) => {\n const unregister = input.editor.registerBehavior({\n behavior: createDecoratorPairBehavior({\n decorator: input.decorator,\n pair: input.pair,\n onDecorate: (offset) => {\n sendBack({type: 'emphasis.add', blockOffset: offset})\n },\n }),\n })\n\n return unregister\n}\n\nconst selectionListenerCallback: CallbackLogicFunction<\n AnyEventObject,\n MarkdownEmphasisEvent,\n {editor: Editor}\n> = ({sendBack, input}) => {\n const unregister = input.editor.registerBehavior({\n behavior: defineBehavior({\n on: 'select',\n guard: ({snapshot, event}) => {\n if (!event.at) {\n return {blockOffsets: undefined}\n }\n\n const anchor = utils.spanSelectionPointToBlockOffset({\n value: snapshot.context.value,\n selectionPoint: event.at.anchor,\n })\n const focus = utils.spanSelectionPointToBlockOffset({\n value: snapshot.context.value,\n selectionPoint: event.at.focus,\n })\n\n if (!anchor || !focus) {\n return {blockOffsets: undefined}\n }\n\n return {\n blockOffsets: {\n anchor,\n focus,\n },\n }\n },\n actions: [\n (_, {blockOffsets}) => [\n {\n type: 'effect',\n effect: () => {\n sendBack({type: 'selection', blockOffsets})\n },\n },\n ],\n ],\n }),\n })\n\n return unregister\n}\n\nconst deleteBackwardListenerCallback: CallbackLogicFunction<\n AnyEventObject,\n MarkdownEmphasisEvent,\n {editor: Editor}\n> = ({sendBack, input}) => {\n const unregister = input.editor.registerBehavior({\n behavior: defineBehavior({\n on: 'delete.backward',\n actions: [\n () => [\n execute({\n type: 'history.undo',\n }),\n effect(() => {\n sendBack({type: 'delete.backward'})\n }),\n ],\n ],\n }),\n })\n\n return unregister\n}\n\nconst decoratorPairMachine = setup({\n types: {\n context: {} as {\n decorator: ({schema}: {schema: EditorSchema}) => string | undefined\n editor: Editor\n offsetAfterEmphasis?: BlockOffset\n pair: {char: string; amount: number}\n },\n input: {} as {\n decorator: ({schema}: {schema: EditorSchema}) => string | undefined\n editor: Editor\n pair: {char: string; amount: number}\n },\n events: {} as MarkdownEmphasisEvent,\n },\n actors: {\n 'emphasis listener': fromCallback(emphasisListener),\n 'delete.backward listener': fromCallback(deleteBackwardListenerCallback),\n 'selection listener': fromCallback(selectionListenerCallback),\n },\n}).createMachine({\n id: 'decorator pair',\n context: ({input}) => ({\n decorator: input.decorator,\n editor: input.editor,\n pair: input.pair,\n }),\n initial: 'idle',\n states: {\n 'idle': {\n invoke: [\n {\n src: 'emphasis listener',\n input: ({context}) => ({\n decorator: context.decorator,\n editor: context.editor,\n pair: context.pair,\n }),\n },\n ],\n on: {\n 'emphasis.add': {\n target: 'emphasis added',\n actions: assign({\n offsetAfterEmphasis: ({event}) => event.blockOffset,\n }),\n },\n },\n },\n 'emphasis added': {\n exit: [\n assign({\n offsetAfterEmphasis: undefined,\n }),\n ],\n invoke: [\n {\n src: 'selection listener',\n input: ({context}) => ({editor: context.editor}),\n },\n {\n src: 'delete.backward listener',\n input: ({context}) => ({editor: context.editor}),\n },\n ],\n on: {\n 'selection': {\n target: 'idle',\n guard: ({context, event}) => {\n const selectionChanged = !isEqual(\n {\n anchor: context.offsetAfterEmphasis,\n focus: context.offsetAfterEmphasis,\n },\n event.blockOffsets,\n )\n\n return selectionChanged\n },\n },\n 'delete.backward': {\n target: 'idle',\n },\n },\n },\n },\n})\n","import React from 'react'\nimport type {Editor} from '../editor/create-editor'\nimport {useEditor} from '../editor/editor-provider'\n\n/**\n * @beta\n */\nexport const EditorRefPlugin = React.forwardRef<Editor | null>((_, ref) => {\n const editor = useEditor()\n\n const portableTextEditorRef = React.useRef(editor)\n\n React.useImperativeHandle(ref, () => portableTextEditorRef.current, [])\n\n return null\n})\nEditorRefPlugin.displayName = 'EditorRefPlugin'\n","import {useEffect} from 'react'\nimport {useEffectEvent} from 'use-effect-event'\nimport type {EditorEmittedEvent} from '../editor/editor-machine'\nimport {useEditor} from '../editor/editor-provider'\n\n/**\n * @public\n * Listen for events emitted by the editor. Must be used inside `EditorProvider`. Events available include:\n * - 'blurred'\n * - 'done loading'\n * - 'editable'\n * - 'error'\n * - 'focused'\n * - 'invalid value'\n * - 'loading'\n * - 'mutation'\n * - 'patch'\n * - 'read only'\n * - 'ready'\n * - 'selection'\n * - 'value changed'\n *\n * @example\n * Listen and log events.\n * ```tsx\n * import {EditorProvider} from '@portabletext/editor'\n * import {EventListenerPlugin} from '@portabletext/editor/plugins'\n *\n * function MyComponent() {\n * return (\n * <EditorProvider>\n * <EventListenerPlugin\n * on={(event) => {\n * console.log(event)\n * }\n * } />\n * { ... }\n * </EditorProvider>\n * )\n * }\n * ```\n * @example\n * Handle events when there is a mutation.\n * ```tsx\n * <EventListenerPlugin\n * on={(event) => {\n * if (event.type === 'mutation') {\n * console.log('Value changed:', event.snapshot)\n * }\n * }}\n * />\n * ```\n * @group Components\n */\nexport function EventListenerPlugin(props: {\n on: (event: EditorEmittedEvent) => void\n}) {\n const editor = useEditor()\n const on = useEffectEvent(props.on)\n\n useEffect(() => {\n const subscription = editor.on('*', on)\n\n return () => {\n subscription.unsubscribe()\n }\n }, [editor])\n\n return null\n}\n","import {useEffect} from 'react'\nimport {\n createMarkdownBehaviors,\n type MarkdownBehaviorsConfig,\n} from '../behaviors/behavior.markdown'\nimport type {EditorSchema} from '../editor/define-schema'\nimport {useEditor} from '../editor/editor-provider'\nimport {DecoratorShortcutPlugin} from './plugin.decorator-shortcut'\n\n/**\n * @beta\n */\nexport type MarkdownPluginConfig = MarkdownBehaviorsConfig & {\n boldDecorator?: ({schema}: {schema: EditorSchema}) => string | undefined\n codeDecorator?: ({schema}: {schema: EditorSchema}) => string | undefined\n italicDecorator?: ({schema}: {schema: EditorSchema}) => string | undefined\n strikeThroughDecorator?: ({\n schema,\n }: {\n schema: EditorSchema\n }) => string | undefined\n}\n\n/**\n * @beta\n * Add markdown behaviors for common markdown actions such as converting ### to headings, --- to HRs, and more.\n *\n * @example\n * Configure the bundled markdown behaviors\n * ```ts\n * import {EditorProvider} from '@portabletext/editor'\n * import {MarkdownPlugin} from '@portabletext/editor/plugins'\n *\n * function App() {\n * return (\n * <EditorProvider>\n * <MarkdownPlugin\n * config={{\n * boldDecorator: ({schema}) =>\n * schema.decorators.find((decorator) => decorator.value === 'strong')?.value,\n * codeDecorator: ({schema}) =>\n * schema.decorators.find((decorator) => decorator.value === 'code')?.value,\n * italicDecorator: ({schema}) =>\n * schema.decorators.find((decorator) => decorator.value === 'em')?.value,\n * strikeThroughDecorator: ({schema}) =>\n * schema.decorators.find((decorator) => decorator.value === 'strike-through')?.value,\n * horizontalRuleObject: ({schema}) => {\n * const name = schema.blockObjects.find(\n * (object) => object.name === 'break',\n * )?.name\n * return name ? {name} : undefined\n * },\n * defaultStyle: ({schema}) => schema.styles[0].value,\n * headingStyle: ({schema, level}) =>\n * schema.styles.find((style) => style.value === `h${level}`)\n * ?.value,\n * blockquoteStyle: ({schema}) =>\n * schema.styles.find((style) => style.value === 'blockquote')\n * ?.value,\n * unorderedListStyle: ({schema}) =>\n * schema.lists.find((list) => list.value === 'bullet')?.value,\n * orderedListStyle: ({schema}) =>\n * schema.lists.find((list) => list.value === 'number')?.value,\n * }}\n * />\n * {...}\n * </EditorProvider>\n * )\n * }\n * ```\n */\nexport function MarkdownPlugin(props: {config: MarkdownPluginConfig}) {\n const editor = useEditor()\n\n useEffect(() => {\n const behaviors = createMarkdownBehaviors(props.config)\n\n const unregisterBehaviors = behaviors.map((behavior) =>\n editor.registerBehavior({behavior}),\n )\n\n return () => {\n for (const unregisterBehavior of unregisterBehaviors) {\n unregisterBehavior()\n }\n }\n }, [editor, props.config])\n\n return (\n <>\n {props.config.boldDecorator ? (\n <>\n <DecoratorShortcutPlugin\n decorator={props.config.boldDecorator}\n pair={{char: '*', amount: 2}}\n />\n <DecoratorShortcutPlugin\n decorator={props.config.boldDecorator}\n pair={{char: '_', amount: 2}}\n />\n </>\n ) : null}\n {props.config.codeDecorator ? (\n <DecoratorShortcutPlugin\n decorator={props.config.codeDecorator}\n pair={{char: '`', amount: 1}}\n />\n ) : null}\n {props.config.italicDecorator ? (\n <>\n <DecoratorShortcutPlugin\n decorator={props.config.italicDecorator}\n pair={{char: '*', amount: 1}}\n />\n <DecoratorShortcutPlugin\n decorator={props.config.italicDecorator}\n pair={{char: '_', amount: 1}}\n />\n </>\n ) : null}\n {props.config.strikeThroughDecorator ? (\n <DecoratorShortcutPlugin\n decorator={props.config.strikeThroughDecorator}\n pair={{char: '~', amount: 2}}\n />\n ) : null}\n </>\n )\n}\n","import {defineBehavior, execute, raise} from '../behaviors'\nimport * as selectors from '../selectors'\nimport * as utils from '../utils'\nimport {BehaviorPlugin} from './plugin.behavior'\n\nconst oneLineBehaviors = [\n /**\n * Hitting Enter on an expanded selection should just delete that selection\n * without causing a line break.\n */\n defineBehavior({\n on: 'insert.break',\n guard: ({snapshot}) =>\n snapshot.context.selection && selectors.isSelectionExpanded(snapshot)\n ? {selection: snapshot.context.selection}\n : false,\n actions: [(_, {selection}) => [execute({type: 'delete', at: selection})]],\n }),\n /**\n * All other cases of `insert.break` should be aborted.\n */\n defineBehavior({\n on: 'insert.break',\n actions: [() => [{type: 'noop'}]],\n }),\n /**\n * `split.block`s as well.\n */\n defineBehavior({\n on: 'split.block',\n actions: [() => [{type: 'noop'}]],\n }),\n /**\n * `insert.block` `before` or `after` is not allowed in a one-line editor.\n */\n defineBehavior({\n on: 'insert.block',\n guard: ({event}) =>\n event.placement === 'before' || event.placement === 'after',\n actions: [() => [{type: 'noop'}]],\n }),\n /**\n * An ordinary `insert.block` is acceptable if it's a text block. In that\n * case it will get merged into the existing text block.\n */\n defineBehavior({\n on: 'insert.block',\n guard: ({snapshot, event}) => {\n const focusTextBlock = selectors.getFocusTextBlock(snapshot)\n\n if (\n !focusTextBlock ||\n !utils.isTextBlock(snapshot.context, event.block)\n ) {\n return false\n }\n\n return true\n },\n actions: [\n ({event}) => [\n execute({\n type: 'insert.block',\n block: event.block,\n placement: 'auto',\n select: 'end',\n }),\n ],\n ],\n }),\n /**\n * Fallback Behavior to avoid `insert.block` in case the Behaviors above all\n * end up with a falsy guard.\n */\n defineBehavior({\n on: 'insert.block',\n actions: [() => [{type: 'noop'}]],\n }),\n /**\n * If multiple blocks are inserted, then the non-text blocks are filtered out\n * and the text blocks are merged into one block\n */\n defineBehavior({\n on: 'insert.blocks',\n guard: ({snapshot, event}) => {\n return event.blocks\n .filter((block) => utils.isTextBlock(snapshot.context, block))\n .reduce((targetBlock, incomingBlock) => {\n return utils.mergeTextBlocks({\n context: snapshot.context,\n targetBlock,\n incomingBlock,\n })\n })\n },\n actions: [\n // `insert.block` is raised so the Behavior above can handle the\n // insertion\n (_, block) => [raise({type: 'insert.block', block, placement: 'auto'})],\n ],\n }),\n]\n\n/**\n * @beta\n * Restrict the editor to one line. The plugin takes care of blocking\n * `insert.break` events and smart handling of other `insert.*` events.\n *\n * Place it with as high priority as possible to make sure other plugins don't\n * overwrite `insert.*` events before this plugin gets a chance to do so.\n */\nexport function OneLinePlugin() {\n return <BehaviorPlugin behaviors={oneLineBehaviors} />\n}\n"],"names":["BehaviorPlugin","props","$","_c","editor","useEditor","t0","t1","behaviors","unregisterBehaviors","map","behavior","registerBehavior","forEach","_temp","useEffect","unregister","CoreBehaviorsPlugin","Symbol","for","coreBehaviors","createPairRegex","char","amount","prePrefix","prefix","repeat","Math","max","postPrefix","content","preSuffix","suffix","postSuffix","createDecoratorPairBehavior","config","pair","console","warn","pairRegex","regEx","RegExp","defineBehavior","on","guard","snapshot","event","decorator","schema","context","undefined","focusTextBlock","selectors","selectionStartPoint","selectionStartOffset","utils","value","selectionPoint","newText","text","textToDecorate","match","at","prefixOffsets","anchor","path","offset","length","focus","suffixOffsets","prefixSelection","offsets","inlineObjectBeforePrefixFocus","selection","inlineObjectBeforePrefixFocusOffset","previousInlineObject","previousInlineObjectOffset","actions","execute","_","type","effect","onDecorate","DecoratorShortcutPlugin","input","useActorRef","decoratorPairMachine","emphasisListener","sendBack","blockOffset","selectionListenerCallback","blockOffsets","deleteBackwardListenerCallback","setup","types","events","actors","fromCallback","createMachine","id","initial","states","invoke","src","target","assign","offsetAfterEmphasis","exit","isEqual","EditorRefPlugin","React","forwardRef","ref","portableTextEditorRef","useRef","current","useImperativeHandle","displayName","EventListenerPlugin","useEffectEvent","subscription","unsubscribe","MarkdownPlugin","createMarkdownBehaviors","unregisterBehavior","t2","boldDecorator","t3","codeDecorator","t4","italicDecorator","t5","strikeThroughDecorator","t6","oneLineBehaviors","placement","block","select","blocks","filter","reduce","targetBlock","incomingBlock","raise","OneLinePlugin"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/plugins/plugin.behavior.tsx","../../src/plugins/plugin.core.tsx","../../src/internal-utils/get-text-to-emphasize.ts","../../src/behaviors/behavior.decorator-pair.ts","../../src/plugins/plugin.decorator-shortcut.ts","../../src/plugins/plugin.editor-ref.tsx","../../src/plugins/plugin.event-listener.tsx","../../src/plugins/plugin.markdown.tsx","../../src/plugins/plugin.one-line.tsx"],"sourcesContent":["import {useEffect} from 'react'\nimport type {Behavior} from '../behaviors'\nimport {useEditor} from '../editor/editor-provider'\n\n/**\n * @beta\n */\nexport function BehaviorPlugin(props: {behaviors: Array<Behavior>}) {\n const editor = useEditor()\n\n useEffect(() => {\n const unregisterBehaviors = props.behaviors.map((behavior) =>\n editor.registerBehavior({behavior}),\n )\n\n return () => {\n unregisterBehaviors.forEach((unregister) => unregister())\n }\n }, [editor, props.behaviors])\n\n return null\n}\n","import {coreBehaviors} from '../behaviors'\nimport {BehaviorPlugin} from './plugin.behavior'\n\n/**\n * @beta\n */\nexport function CoreBehaviorsPlugin() {\n return <BehaviorPlugin behaviors={coreBehaviors} />\n}\n","export function createPairRegex(char: string, amount: number) {\n // Negative lookbehind: Ensures that the matched sequence is not preceded by the same character\n const prePrefix = `(?<!\\\\${char})`\n\n // Repeats the character `amount` times\n const prefix = `\\\\${char}`.repeat(Math.max(amount, 1))\n\n // Negative lookahead: Ensures that the opening pair (**, *, etc.) is not followed by a space\n const postPrefix = `(?!\\\\s)`\n\n // Captures the content inside the pair\n const content = `([^${char}\\\\n]+?)`\n\n // Negative lookbehind: Ensures that the content is not followed by a space\n const preSuffix = `(?<!\\\\s)`\n\n // Repeats the character `amount` times\n const suffix = `\\\\${char}`.repeat(Math.max(amount, 1))\n\n // Negative lookahead: Ensures that the matched sequence is not followed by the same character\n const postSuffix = `(?!\\\\${char})`\n\n return `${prePrefix}${prefix}${postPrefix}${content}${preSuffix}${suffix}${postSuffix}`\n}\n\nconst italicRegex = new RegExp(\n `(${createPairRegex('*', 1)}|${createPairRegex('_', 1)})$`,\n)\n\nconst boldRegex = new RegExp(\n `(${createPairRegex('*', 2)}|${createPairRegex('_', 2)})$`,\n)\n\nexport function getTextToItalic(text: string) {\n return text.match(italicRegex)?.at(0)\n}\n\nexport function getTextToBold(text: string) {\n return text.match(boldRegex)?.at(0)\n}\n","import type {EditorSchema} from '../editor/editor-schema'\nimport {createPairRegex} from '../internal-utils/get-text-to-emphasize'\nimport * as selectors from '../selectors'\nimport type {BlockOffset} from '../types/block-offset'\nimport * as utils from '../utils'\nimport {effect, execute} from './behavior.types.action'\nimport {defineBehavior} from './behavior.types.behavior'\n\nexport function createDecoratorPairBehavior(config: {\n decorator: ({schema}: {schema: EditorSchema}) => string | undefined\n pair: {char: string; amount: number}\n onDecorate: (offset: BlockOffset) => void\n}) {\n if (config.pair.amount < 1) {\n console.warn(\n `The amount of characters in the pair should be greater than 0`,\n )\n }\n\n const pairRegex = createPairRegex(config.pair.char, config.pair.amount)\n const regEx = new RegExp(`(${pairRegex})$`)\n\n return defineBehavior({\n on: 'insert.text',\n guard: ({snapshot, event}) => {\n if (config.pair.amount < 1) {\n return false\n }\n\n const decorator = config.decorator({schema: snapshot.context.schema})\n\n if (decorator === undefined) {\n return false\n }\n\n const focusTextBlock = selectors.getFocusTextBlock(snapshot)\n const selectionStartPoint = selectors.getSelectionStartPoint(snapshot)\n const selectionStartOffset = selectionStartPoint\n ? utils.spanSelectionPointToBlockOffset({\n value: snapshot.context.value,\n selectionPoint: selectionStartPoint,\n })\n : undefined\n\n if (!focusTextBlock || !selectionStartOffset) {\n return false\n }\n\n const textBefore = selectors.getBlockTextBefore(snapshot)\n const newText = `${textBefore}${event.text}`\n const textToDecorate = newText.match(regEx)?.at(0)\n\n if (textToDecorate === undefined) {\n return false\n }\n\n const prefixOffsets = {\n anchor: {\n path: focusTextBlock.path,\n // Example: \"foo **bar**\".length - \"**bar**\".length = 4\n offset: newText.length - textToDecorate.length,\n },\n focus: {\n path: focusTextBlock.path,\n // Example: \"foo **bar**\".length - \"**bar**\".length + \"*\".length * 2 = 6\n offset:\n newText.length -\n textToDecorate.length +\n config.pair.char.length * config.pair.amount,\n },\n }\n\n const suffixOffsets = {\n anchor: {\n path: focusTextBlock.path,\n // Example: \"foo **bar*|\" (10) + \"*\".length - 2 = 9\n offset:\n selectionStartOffset.offset +\n event.text.length -\n config.pair.char.length * config.pair.amount,\n },\n focus: {\n path: focusTextBlock.path,\n // Example: \"foo **bar*|\" (10) + \"*\".length = 11\n offset: selectionStartOffset.offset + event.text.length,\n },\n }\n\n // If the prefix is more than one character, then we need to check if\n // there is an inline object inside it\n if (prefixOffsets.focus.offset - prefixOffsets.anchor.offset > 1) {\n const prefixSelection = utils.blockOffsetsToSelection({\n value: snapshot.context.value,\n offsets: prefixOffsets,\n })\n const inlineObjectBeforePrefixFocus = selectors.getPreviousInlineObject(\n {\n ...snapshot,\n context: {\n ...snapshot.context,\n selection: prefixSelection\n ? {\n anchor: prefixSelection.focus,\n focus: prefixSelection.focus,\n }\n : null,\n },\n },\n )\n const inlineObjectBeforePrefixFocusOffset =\n inlineObjectBeforePrefixFocus\n ? utils.childSelectionPointToBlockOffset({\n value: snapshot.context.value,\n selectionPoint: {\n path: inlineObjectBeforePrefixFocus.path,\n offset: 0,\n },\n })\n : undefined\n\n if (\n inlineObjectBeforePrefixFocusOffset &&\n inlineObjectBeforePrefixFocusOffset.offset >\n prefixOffsets.anchor.offset &&\n inlineObjectBeforePrefixFocusOffset.offset <\n prefixOffsets.focus.offset\n ) {\n return false\n }\n }\n\n // If the suffix is more than one character, then we need to check if\n // there is an inline object inside it\n if (suffixOffsets.focus.offset - suffixOffsets.anchor.offset > 1) {\n const previousInlineObject = selectors.getPreviousInlineObject(snapshot)\n const previousInlineObjectOffset = previousInlineObject\n ? utils.childSelectionPointToBlockOffset({\n value: snapshot.context.value,\n selectionPoint: {\n path: previousInlineObject.path,\n offset: 0,\n },\n })\n : undefined\n\n if (\n previousInlineObjectOffset &&\n previousInlineObjectOffset.offset > suffixOffsets.anchor.offset &&\n previousInlineObjectOffset.offset < suffixOffsets.focus.offset\n ) {\n return false\n }\n }\n\n return {\n prefixOffsets,\n suffixOffsets,\n decorator,\n }\n },\n actions: [\n // Insert the text as usual in its own undo step\n ({event}) => [execute(event)],\n (_, {prefixOffsets, suffixOffsets, decorator}) => [\n // Decorate the text between the prefix and suffix\n execute({\n type: 'decorator.add',\n decorator,\n at: {\n anchor: prefixOffsets.focus,\n focus: suffixOffsets.anchor,\n },\n }),\n // Delete the suffix\n execute({\n type: 'delete.text',\n at: suffixOffsets,\n }),\n // Delete the prefix\n execute({\n type: 'delete.text',\n at: prefixOffsets,\n }),\n // Toggle the decorator off so the next inserted text isn't emphasized\n execute({\n type: 'decorator.remove',\n decorator,\n }),\n effect(() => {\n config.onDecorate({\n ...suffixOffsets.anchor,\n offset:\n suffixOffsets.anchor.offset -\n (prefixOffsets.focus.offset - prefixOffsets.anchor.offset),\n })\n }),\n ],\n ],\n })\n}\n","import {useActorRef} from '@xstate/react'\nimport {isEqual} from 'lodash'\nimport {\n assign,\n fromCallback,\n setup,\n type AnyEventObject,\n type CallbackLogicFunction,\n} from 'xstate'\nimport {createDecoratorPairBehavior} from '../behaviors/behavior.decorator-pair'\nimport {effect, execute} from '../behaviors/behavior.types.action'\nimport {defineBehavior} from '../behaviors/behavior.types.behavior'\nimport type {Editor} from '../editor/create-editor'\nimport {useEditor} from '../editor/editor-provider'\nimport type {EditorSchema} from '../editor/editor-schema'\nimport type {BlockOffset} from '../types/block-offset'\nimport * as utils from '../utils'\n\n/**\n * @beta\n */\nexport function DecoratorShortcutPlugin(config: {\n decorator: ({schema}: {schema: EditorSchema}) => string | undefined\n pair: {char: string; amount: number}\n}) {\n const editor = useEditor()\n\n useActorRef(decoratorPairMachine, {\n input: {\n editor,\n decorator: config.decorator,\n pair: config.pair,\n },\n })\n\n return null\n}\n\ntype MarkdownEmphasisEvent =\n | {\n type: 'emphasis.add'\n blockOffset: BlockOffset\n }\n | {\n type: 'selection'\n blockOffsets?: {\n anchor: BlockOffset\n focus: BlockOffset\n }\n }\n | {\n type: 'delete.backward'\n }\n\nconst emphasisListener: CallbackLogicFunction<\n AnyEventObject,\n MarkdownEmphasisEvent,\n {\n decorator: ({schema}: {schema: EditorSchema}) => string | undefined\n editor: Editor\n pair: {char: string; amount: number}\n }\n> = ({sendBack, input}) => {\n const unregister = input.editor.registerBehavior({\n behavior: createDecoratorPairBehavior({\n decorator: input.decorator,\n pair: input.pair,\n onDecorate: (offset) => {\n sendBack({type: 'emphasis.add', blockOffset: offset})\n },\n }),\n })\n\n return unregister\n}\n\nconst selectionListenerCallback: CallbackLogicFunction<\n AnyEventObject,\n MarkdownEmphasisEvent,\n {editor: Editor}\n> = ({sendBack, input}) => {\n const unregister = input.editor.registerBehavior({\n behavior: defineBehavior({\n on: 'select',\n guard: ({snapshot, event}) => {\n if (!event.at) {\n return {blockOffsets: undefined}\n }\n\n const anchor = utils.spanSelectionPointToBlockOffset({\n value: snapshot.context.value,\n selectionPoint: event.at.anchor,\n })\n const focus = utils.spanSelectionPointToBlockOffset({\n value: snapshot.context.value,\n selectionPoint: event.at.focus,\n })\n\n if (!anchor || !focus) {\n return {blockOffsets: undefined}\n }\n\n return {\n blockOffsets: {\n anchor,\n focus,\n },\n }\n },\n actions: [\n (_, {blockOffsets}) => [\n {\n type: 'effect',\n effect: () => {\n sendBack({type: 'selection', blockOffsets})\n },\n },\n ],\n ],\n }),\n })\n\n return unregister\n}\n\nconst deleteBackwardListenerCallback: CallbackLogicFunction<\n AnyEventObject,\n MarkdownEmphasisEvent,\n {editor: Editor}\n> = ({sendBack, input}) => {\n const unregister = input.editor.registerBehavior({\n behavior: defineBehavior({\n on: 'delete.backward',\n actions: [\n () => [\n execute({\n type: 'history.undo',\n }),\n effect(() => {\n sendBack({type: 'delete.backward'})\n }),\n ],\n ],\n }),\n })\n\n return unregister\n}\n\nconst decoratorPairMachine = setup({\n types: {\n context: {} as {\n decorator: ({schema}: {schema: EditorSchema}) => string | undefined\n editor: Editor\n offsetAfterEmphasis?: BlockOffset\n pair: {char: string; amount: number}\n },\n input: {} as {\n decorator: ({schema}: {schema: EditorSchema}) => string | undefined\n editor: Editor\n pair: {char: string; amount: number}\n },\n events: {} as MarkdownEmphasisEvent,\n },\n actors: {\n 'emphasis listener': fromCallback(emphasisListener),\n 'delete.backward listener': fromCallback(deleteBackwardListenerCallback),\n 'selection listener': fromCallback(selectionListenerCallback),\n },\n}).createMachine({\n id: 'decorator pair',\n context: ({input}) => ({\n decorator: input.decorator,\n editor: input.editor,\n pair: input.pair,\n }),\n initial: 'idle',\n states: {\n 'idle': {\n invoke: [\n {\n src: 'emphasis listener',\n input: ({context}) => ({\n decorator: context.decorator,\n editor: context.editor,\n pair: context.pair,\n }),\n },\n ],\n on: {\n 'emphasis.add': {\n target: 'emphasis added',\n actions: assign({\n offsetAfterEmphasis: ({event}) => event.blockOffset,\n }),\n },\n },\n },\n 'emphasis added': {\n exit: [\n assign({\n offsetAfterEmphasis: undefined,\n }),\n ],\n invoke: [\n {\n src: 'selection listener',\n input: ({context}) => ({editor: context.editor}),\n },\n {\n src: 'delete.backward listener',\n input: ({context}) => ({editor: context.editor}),\n },\n ],\n on: {\n 'selection': {\n target: 'idle',\n guard: ({context, event}) => {\n const selectionChanged = !isEqual(\n {\n anchor: context.offsetAfterEmphasis,\n focus: context.offsetAfterEmphasis,\n },\n event.blockOffsets,\n )\n\n return selectionChanged\n },\n },\n 'delete.backward': {\n target: 'idle',\n },\n },\n },\n },\n})\n","import React from 'react'\nimport type {Editor} from '../editor/create-editor'\nimport {useEditor} from '../editor/editor-provider'\n\n/**\n * @beta\n */\nexport const EditorRefPlugin = React.forwardRef<Editor | null>((_, ref) => {\n const editor = useEditor()\n\n const portableTextEditorRef = React.useRef(editor)\n\n React.useImperativeHandle(ref, () => portableTextEditorRef.current, [])\n\n return null\n})\nEditorRefPlugin.displayName = 'EditorRefPlugin'\n","import {useEffect} from 'react'\nimport {useEffectEvent} from 'use-effect-event'\nimport type {EditorEmittedEvent} from '../editor/editor-machine'\nimport {useEditor} from '../editor/editor-provider'\n\n/**\n * @public\n * Listen for events emitted by the editor. Must be used inside `EditorProvider`. Events available include:\n * - 'blurred'\n * - 'done loading'\n * - 'editable'\n * - 'error'\n * - 'focused'\n * - 'invalid value'\n * - 'loading'\n * - 'mutation'\n * - 'patch'\n * - 'read only'\n * - 'ready'\n * - 'selection'\n * - 'value changed'\n *\n * @example\n * Listen and log events.\n * ```tsx\n * import {EditorProvider} from '@portabletext/editor'\n * import {EventListenerPlugin} from '@portabletext/editor/plugins'\n *\n * function MyComponent() {\n * return (\n * <EditorProvider>\n * <EventListenerPlugin\n * on={(event) => {\n * console.log(event)\n * }\n * } />\n * { ... }\n * </EditorProvider>\n * )\n * }\n * ```\n * @example\n * Handle events when there is a mutation.\n * ```tsx\n * <EventListenerPlugin\n * on={(event) => {\n * if (event.type === 'mutation') {\n * console.log('Value changed:', event.snapshot)\n * }\n * }}\n * />\n * ```\n * @group Components\n */\nexport function EventListenerPlugin(props: {\n on: (event: EditorEmittedEvent) => void\n}) {\n const editor = useEditor()\n const on = useEffectEvent(props.on)\n\n useEffect(() => {\n const subscription = editor.on('*', on)\n\n return () => {\n subscription.unsubscribe()\n }\n }, [editor])\n\n return null\n}\n","import {useEffect} from 'react'\nimport {\n createMarkdownBehaviors,\n type MarkdownBehaviorsConfig,\n} from '../behaviors/behavior.markdown'\nimport {useEditor} from '../editor/editor-provider'\nimport type {EditorSchema} from '../editor/editor-schema'\nimport {DecoratorShortcutPlugin} from './plugin.decorator-shortcut'\n\n/**\n * @beta\n */\nexport type MarkdownPluginConfig = MarkdownBehaviorsConfig & {\n boldDecorator?: ({schema}: {schema: EditorSchema}) => string | undefined\n codeDecorator?: ({schema}: {schema: EditorSchema}) => string | undefined\n italicDecorator?: ({schema}: {schema: EditorSchema}) => string | undefined\n strikeThroughDecorator?: ({\n schema,\n }: {\n schema: EditorSchema\n }) => string | undefined\n}\n\n/**\n * @beta\n * Add markdown behaviors for common markdown actions such as converting ### to headings, --- to HRs, and more.\n *\n * @example\n * Configure the bundled markdown behaviors\n * ```ts\n * import {EditorProvider} from '@portabletext/editor'\n * import {MarkdownPlugin} from '@portabletext/editor/plugins'\n *\n * function App() {\n * return (\n * <EditorProvider>\n * <MarkdownPlugin\n * config={{\n * boldDecorator: ({schema}) =>\n * schema.decorators.find((decorator) => decorator.value === 'strong')?.value,\n * codeDecorator: ({schema}) =>\n * schema.decorators.find((decorator) => decorator.value === 'code')?.value,\n * italicDecorator: ({schema}) =>\n * schema.decorators.find((decorator) => decorator.value === 'em')?.value,\n * strikeThroughDecorator: ({schema}) =>\n * schema.decorators.find((decorator) => decorator.value === 'strike-through')?.value,\n * horizontalRuleObject: ({schema}) => {\n * const name = schema.blockObjects.find(\n * (object) => object.name === 'break',\n * )?.name\n * return name ? {name} : undefined\n * },\n * defaultStyle: ({schema}) => schema.styles[0].value,\n * headingStyle: ({schema, level}) =>\n * schema.styles.find((style) => style.value === `h${level}`)\n * ?.value,\n * blockquoteStyle: ({schema}) =>\n * schema.styles.find((style) => style.value === 'blockquote')\n * ?.value,\n * unorderedListStyle: ({schema}) =>\n * schema.lists.find((list) => list.value === 'bullet')?.value,\n * orderedListStyle: ({schema}) =>\n * schema.lists.find((list) => list.value === 'number')?.value,\n * }}\n * />\n * {...}\n * </EditorProvider>\n * )\n * }\n * ```\n */\nexport function MarkdownPlugin(props: {config: MarkdownPluginConfig}) {\n const editor = useEditor()\n\n useEffect(() => {\n const behaviors = createMarkdownBehaviors(props.config)\n\n const unregisterBehaviors = behaviors.map((behavior) =>\n editor.registerBehavior({behavior}),\n )\n\n return () => {\n for (const unregisterBehavior of unregisterBehaviors) {\n unregisterBehavior()\n }\n }\n }, [editor, props.config])\n\n return (\n <>\n {props.config.boldDecorator ? (\n <>\n <DecoratorShortcutPlugin\n decorator={props.config.boldDecorator}\n pair={{char: '*', amount: 2}}\n />\n <DecoratorShortcutPlugin\n decorator={props.config.boldDecorator}\n pair={{char: '_', amount: 2}}\n />\n </>\n ) : null}\n {props.config.codeDecorator ? (\n <DecoratorShortcutPlugin\n decorator={props.config.codeDecorator}\n pair={{char: '`', amount: 1}}\n />\n ) : null}\n {props.config.italicDecorator ? (\n <>\n <DecoratorShortcutPlugin\n decorator={props.config.italicDecorator}\n pair={{char: '*', amount: 1}}\n />\n <DecoratorShortcutPlugin\n decorator={props.config.italicDecorator}\n pair={{char: '_', amount: 1}}\n />\n </>\n ) : null}\n {props.config.strikeThroughDecorator ? (\n <DecoratorShortcutPlugin\n decorator={props.config.strikeThroughDecorator}\n pair={{char: '~', amount: 2}}\n />\n ) : null}\n </>\n )\n}\n","import {defineBehavior, execute, raise} from '../behaviors'\nimport * as selectors from '../selectors'\nimport * as utils from '../utils'\nimport {BehaviorPlugin} from './plugin.behavior'\n\nconst oneLineBehaviors = [\n /**\n * Hitting Enter on an expanded selection should just delete that selection\n * without causing a line break.\n */\n defineBehavior({\n on: 'insert.break',\n guard: ({snapshot}) =>\n snapshot.context.selection && selectors.isSelectionExpanded(snapshot)\n ? {selection: snapshot.context.selection}\n : false,\n actions: [(_, {selection}) => [execute({type: 'delete', at: selection})]],\n }),\n /**\n * All other cases of `insert.break` should be aborted.\n */\n defineBehavior({\n on: 'insert.break',\n actions: [() => [{type: 'noop'}]],\n }),\n /**\n * `split.block`s as well.\n */\n defineBehavior({\n on: 'split.block',\n actions: [() => [{type: 'noop'}]],\n }),\n /**\n * `insert.block` `before` or `after` is not allowed in a one-line editor.\n */\n defineBehavior({\n on: 'insert.block',\n guard: ({event}) =>\n event.placement === 'before' || event.placement === 'after',\n actions: [() => [{type: 'noop'}]],\n }),\n /**\n * An ordinary `insert.block` is acceptable if it's a text block. In that\n * case it will get merged into the existing text block.\n */\n defineBehavior({\n on: 'insert.block',\n guard: ({snapshot, event}) => {\n const focusTextBlock = selectors.getFocusTextBlock(snapshot)\n\n if (\n !focusTextBlock ||\n !utils.isTextBlock(snapshot.context, event.block)\n ) {\n return false\n }\n\n return true\n },\n actions: [\n ({event}) => [\n execute({\n type: 'insert.block',\n block: event.block,\n placement: 'auto',\n select: 'end',\n }),\n ],\n ],\n }),\n /**\n * Fallback Behavior to avoid `insert.block` in case the Behaviors above all\n * end up with a falsy guard.\n */\n defineBehavior({\n on: 'insert.block',\n actions: [() => [{type: 'noop'}]],\n }),\n /**\n * If multiple blocks are inserted, then the non-text blocks are filtered out\n * and the text blocks are merged into one block\n */\n defineBehavior({\n on: 'insert.blocks',\n guard: ({snapshot, event}) => {\n return event.blocks\n .filter((block) => utils.isTextBlock(snapshot.context, block))\n .reduce((targetBlock, incomingBlock) => {\n return utils.mergeTextBlocks({\n context: snapshot.context,\n targetBlock,\n incomingBlock,\n })\n })\n },\n actions: [\n // `insert.block` is raised so the Behavior above can handle the\n // insertion\n (_, block) => [raise({type: 'insert.block', block, placement: 'auto'})],\n ],\n }),\n]\n\n/**\n * @beta\n * Restrict the editor to one line. The plugin takes care of blocking\n * `insert.break` events and smart handling of other `insert.*` events.\n *\n * Place it with as high priority as possible to make sure other plugins don't\n * overwrite `insert.*` events before this plugin gets a chance to do so.\n */\nexport function OneLinePlugin() {\n return <BehaviorPlugin behaviors={oneLineBehaviors} />\n}\n"],"names":["BehaviorPlugin","props","$","_c","editor","useEditor","t0","t1","behaviors","unregisterBehaviors","map","behavior","registerBehavior","forEach","_temp","useEffect","unregister","CoreBehaviorsPlugin","Symbol","for","coreBehaviors","createPairRegex","char","amount","prePrefix","prefix","repeat","Math","max","postPrefix","content","preSuffix","suffix","postSuffix","createDecoratorPairBehavior","config","pair","console","warn","pairRegex","regEx","RegExp","defineBehavior","on","guard","snapshot","event","decorator","schema","context","undefined","focusTextBlock","selectors","selectionStartPoint","selectionStartOffset","utils","value","selectionPoint","newText","text","textToDecorate","match","at","prefixOffsets","anchor","path","offset","length","focus","suffixOffsets","prefixSelection","offsets","inlineObjectBeforePrefixFocus","selection","inlineObjectBeforePrefixFocusOffset","previousInlineObject","previousInlineObjectOffset","actions","execute","_","type","effect","onDecorate","DecoratorShortcutPlugin","input","useActorRef","decoratorPairMachine","emphasisListener","sendBack","blockOffset","selectionListenerCallback","blockOffsets","deleteBackwardListenerCallback","setup","types","events","actors","fromCallback","createMachine","id","initial","states","invoke","src","target","assign","offsetAfterEmphasis","exit","isEqual","EditorRefPlugin","React","forwardRef","ref","portableTextEditorRef","useRef","current","useImperativeHandle","displayName","EventListenerPlugin","useEffectEvent","subscription","unsubscribe","MarkdownPlugin","createMarkdownBehaviors","unregisterBehavior","t2","boldDecorator","t3","codeDecorator","t4","italicDecorator","t5","strikeThroughDecorator","t6","oneLineBehaviors","placement","block","select","blocks","filter","reduce","targetBlock","incomingBlock","raise","OneLinePlugin"],"mappings":"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"}
@@ -1,13 +1,4 @@
1
1
  import type {KeyedSegment as KeyedSegment_2, Patch} from '@portabletext/patches'
2
- import type {
3
- ArraySchemaType,
4
- BlockDecoratorDefinition,
5
- BlockListDefinition,
6
- BlockStyleDefinition,
7
- ObjectSchemaType,
8
- Path,
9
- PortableTextChild,
10
- } from '@sanity/types'
11
2
  import {
12
3
  KeyedSegment,
13
4
  PortableTextBlock,
@@ -16,6 +7,7 @@ import {
16
7
  PortableTextSpan,
17
8
  PortableTextTextBlock,
18
9
  } from '@sanity/types'
10
+ import type {Path, PortableTextChild} from '@sanity/types'
19
11
  import type {
20
12
  FocusEvent as FocusEvent_2,
21
13
  KeyboardEvent as KeyboardEvent_2,
@@ -44,7 +36,6 @@ import {
44
36
  Values,
45
37
  } from 'xstate'
46
38
  import {GuardArgs} from 'xstate/guards'
47
- import {PortableTextMemberSchemaTypes as PortableTextMemberSchemaTypes_2} from '..'
48
39
 
49
40
  declare type AbstractBehaviorEvent =
50
41
  | {
@@ -219,6 +210,14 @@ declare const abstractBehaviorEventTypes: readonly [
219
210
  'style.toggle',
220
211
  ]
221
212
 
213
+ /**
214
+ * @public
215
+ */
216
+ declare type BaseDefinition = {
217
+ name: string
218
+ title?: string
219
+ }
220
+
222
221
  /**
223
222
  * @beta
224
223
  */
@@ -1153,7 +1152,7 @@ declare const editorMachine: StateMachine<
1153
1152
  converters: Set<Converter>
1154
1153
  keyGenerator: () => string
1155
1154
  pendingEvents: never[]
1156
- schema: PortableTextMemberSchemaTypes_2
1155
+ schema: EditorSchema
1157
1156
  selection: null
1158
1157
  initialReadOnly: boolean
1159
1158
  maxBlocks: number | undefined
@@ -4633,7 +4632,65 @@ declare const editorMachine: StateMachine<
4633
4632
  /**
4634
4633
  * @public
4635
4634
  */
4636
- declare type EditorSchema = PortableTextMemberSchemaTypes
4635
+ declare type EditorSchema = {
4636
+ annotations: ReadonlyArray<
4637
+ BaseDefinition & {
4638
+ fields: ReadonlyArray<{
4639
+ name: string
4640
+ type: string
4641
+ }>
4642
+ }
4643
+ >
4644
+ block: {
4645
+ name: string
4646
+ }
4647
+ blockObjects: ReadonlyArray<
4648
+ BaseDefinition & {
4649
+ fields: ReadonlyArray<{
4650
+ name: string
4651
+ type: string
4652
+ }>
4653
+ }
4654
+ >
4655
+ decorators: ReadonlyArray<
4656
+ BaseDefinition & {
4657
+ /**
4658
+ * @deprecated
4659
+ * Use `name` instead
4660
+ */
4661
+ value: string
4662
+ }
4663
+ >
4664
+ inlineObjects: ReadonlyArray<
4665
+ BaseDefinition & {
4666
+ fields: ReadonlyArray<{
4667
+ name: string
4668
+ type: string
4669
+ }>
4670
+ }
4671
+ >
4672
+ span: {
4673
+ name: string
4674
+ }
4675
+ styles: ReadonlyArray<
4676
+ BaseDefinition & {
4677
+ /**
4678
+ * @deprecated
4679
+ * Use `name` instead
4680
+ */
4681
+ value: string
4682
+ }
4683
+ >
4684
+ lists: ReadonlyArray<
4685
+ BaseDefinition & {
4686
+ /**
4687
+ * @deprecated
4688
+ * Use `name` instead
4689
+ */
4690
+ value: string
4691
+ }
4692
+ >
4693
+ }
4637
4694
 
4638
4695
  /** @public */
4639
4696
  declare type EditorSelection = {
@@ -5262,21 +5319,6 @@ declare type PickFromUnion<
5262
5319
  TPickedTags extends TUnion[TTagKey],
5263
5320
  > = TUnion extends Record<TTagKey, TPickedTags> ? TUnion : never
5264
5321
 
5265
- /** @beta */
5266
- declare type PortableTextMemberSchemaTypes = {
5267
- annotations: (ObjectSchemaType & {
5268
- i18nTitleKey?: string
5269
- })[]
5270
- block: ObjectSchemaType
5271
- blockObjects: ObjectSchemaType[]
5272
- decorators: BlockDecoratorDefinition[]
5273
- inlineObjects: ObjectSchemaType[]
5274
- portableText: ArraySchemaType<PortableTextBlock>
5275
- span: ObjectSchemaType
5276
- styles: BlockStyleDefinition[]
5277
- lists: BlockListDefinition[]
5278
- }
5279
-
5280
5322
  declare interface PortableTextSlateEditor extends ReactEditor {
5281
5323
  _key: 'editor'
5282
5324
  _type: 'editor'
@@ -1,13 +1,4 @@
1
1
  import type {KeyedSegment as KeyedSegment_2, Patch} from '@portabletext/patches'
2
- import type {
3
- ArraySchemaType,
4
- BlockDecoratorDefinition,
5
- BlockListDefinition,
6
- BlockStyleDefinition,
7
- ObjectSchemaType,
8
- Path,
9
- PortableTextChild,
10
- } from '@sanity/types'
11
2
  import {
12
3
  KeyedSegment,
13
4
  PortableTextBlock,
@@ -16,6 +7,7 @@ import {
16
7
  PortableTextSpan,
17
8
  PortableTextTextBlock,
18
9
  } from '@sanity/types'
10
+ import type {Path, PortableTextChild} from '@sanity/types'
19
11
  import type {
20
12
  FocusEvent as FocusEvent_2,
21
13
  KeyboardEvent as KeyboardEvent_2,
@@ -44,7 +36,6 @@ import {
44
36
  Values,
45
37
  } from 'xstate'
46
38
  import {GuardArgs} from 'xstate/guards'
47
- import {PortableTextMemberSchemaTypes as PortableTextMemberSchemaTypes_2} from '..'
48
39
 
49
40
  declare type AbstractBehaviorEvent =
50
41
  | {
@@ -219,6 +210,14 @@ declare const abstractBehaviorEventTypes: readonly [
219
210
  'style.toggle',
220
211
  ]
221
212
 
213
+ /**
214
+ * @public
215
+ */
216
+ declare type BaseDefinition = {
217
+ name: string
218
+ title?: string
219
+ }
220
+
222
221
  /**
223
222
  * @beta
224
223
  */
@@ -1153,7 +1152,7 @@ declare const editorMachine: StateMachine<
1153
1152
  converters: Set<Converter>
1154
1153
  keyGenerator: () => string
1155
1154
  pendingEvents: never[]
1156
- schema: PortableTextMemberSchemaTypes_2
1155
+ schema: EditorSchema
1157
1156
  selection: null
1158
1157
  initialReadOnly: boolean
1159
1158
  maxBlocks: number | undefined
@@ -4633,7 +4632,65 @@ declare const editorMachine: StateMachine<
4633
4632
  /**
4634
4633
  * @public
4635
4634
  */
4636
- declare type EditorSchema = PortableTextMemberSchemaTypes
4635
+ declare type EditorSchema = {
4636
+ annotations: ReadonlyArray<
4637
+ BaseDefinition & {
4638
+ fields: ReadonlyArray<{
4639
+ name: string
4640
+ type: string
4641
+ }>
4642
+ }
4643
+ >
4644
+ block: {
4645
+ name: string
4646
+ }
4647
+ blockObjects: ReadonlyArray<
4648
+ BaseDefinition & {
4649
+ fields: ReadonlyArray<{
4650
+ name: string
4651
+ type: string
4652
+ }>
4653
+ }
4654
+ >
4655
+ decorators: ReadonlyArray<
4656
+ BaseDefinition & {
4657
+ /**
4658
+ * @deprecated
4659
+ * Use `name` instead
4660
+ */
4661
+ value: string
4662
+ }
4663
+ >
4664
+ inlineObjects: ReadonlyArray<
4665
+ BaseDefinition & {
4666
+ fields: ReadonlyArray<{
4667
+ name: string
4668
+ type: string
4669
+ }>
4670
+ }
4671
+ >
4672
+ span: {
4673
+ name: string
4674
+ }
4675
+ styles: ReadonlyArray<
4676
+ BaseDefinition & {
4677
+ /**
4678
+ * @deprecated
4679
+ * Use `name` instead
4680
+ */
4681
+ value: string
4682
+ }
4683
+ >
4684
+ lists: ReadonlyArray<
4685
+ BaseDefinition & {
4686
+ /**
4687
+ * @deprecated
4688
+ * Use `name` instead
4689
+ */
4690
+ value: string
4691
+ }
4692
+ >
4693
+ }
4637
4694
 
4638
4695
  /** @public */
4639
4696
  declare type EditorSelection = {
@@ -5262,21 +5319,6 @@ declare type PickFromUnion<
5262
5319
  TPickedTags extends TUnion[TTagKey],
5263
5320
  > = TUnion extends Record<TTagKey, TPickedTags> ? TUnion : never
5264
5321
 
5265
- /** @beta */
5266
- declare type PortableTextMemberSchemaTypes = {
5267
- annotations: (ObjectSchemaType & {
5268
- i18nTitleKey?: string
5269
- })[]
5270
- block: ObjectSchemaType
5271
- blockObjects: ObjectSchemaType[]
5272
- decorators: BlockDecoratorDefinition[]
5273
- inlineObjects: ObjectSchemaType[]
5274
- portableText: ArraySchemaType<PortableTextBlock>
5275
- span: ObjectSchemaType
5276
- styles: BlockStyleDefinition[]
5277
- lists: BlockListDefinition[]
5278
- }
5279
-
5280
5322
  declare interface PortableTextSlateEditor extends ReactEditor {
5281
5323
  _key: 'editor'
5282
5324
  _type: 'editor'
@@ -1,21 +1,16 @@
1
1
  import type {Patch} from '@portabletext/patches'
2
- import type {
3
- ArraySchemaType,
4
- BlockDecoratorDefinition,
5
- BlockListDefinition,
6
- BlockStyleDefinition,
7
- ObjectSchemaType,
8
- Path,
9
- PortableTextChild,
10
- PortableTextListBlock,
11
- PortableTextTextBlock,
12
- } from '@sanity/types'
13
2
  import {
14
3
  KeyedSegment,
15
4
  PortableTextBlock,
16
5
  PortableTextObject,
17
6
  PortableTextSpan,
18
7
  } from '@sanity/types'
8
+ import type {
9
+ Path,
10
+ PortableTextChild,
11
+ PortableTextListBlock,
12
+ PortableTextTextBlock,
13
+ } from '@sanity/types'
19
14
  import type {
20
15
  FocusEvent as FocusEvent_2,
21
16
  KeyboardEvent as KeyboardEvent_2,
@@ -44,7 +39,6 @@ import {
44
39
  Values,
45
40
  } from 'xstate'
46
41
  import {GuardArgs} from 'xstate/guards'
47
- import {PortableTextMemberSchemaTypes as PortableTextMemberSchemaTypes_2} from '..'
48
42
 
49
43
  declare type AbstractBehaviorEvent =
50
44
  | {
@@ -219,6 +213,14 @@ declare const abstractBehaviorEventTypes: readonly [
219
213
  'style.toggle',
220
214
  ]
221
215
 
216
+ /**
217
+ * @public
218
+ */
219
+ declare type BaseDefinition = {
220
+ name: string
221
+ title?: string
222
+ }
223
+
222
224
  /**
223
225
  * @beta
224
226
  */
@@ -1222,7 +1224,7 @@ declare const editorMachine: StateMachine<
1222
1224
  converters: Set<Converter>
1223
1225
  keyGenerator: () => string
1224
1226
  pendingEvents: never[]
1225
- schema: PortableTextMemberSchemaTypes_2
1227
+ schema: EditorSchema
1226
1228
  selection: null
1227
1229
  initialReadOnly: boolean
1228
1230
  maxBlocks: number | undefined
@@ -4702,7 +4704,65 @@ declare const editorMachine: StateMachine<
4702
4704
  /**
4703
4705
  * @public
4704
4706
  */
4705
- declare type EditorSchema = PortableTextMemberSchemaTypes
4707
+ declare type EditorSchema = {
4708
+ annotations: ReadonlyArray<
4709
+ BaseDefinition & {
4710
+ fields: ReadonlyArray<{
4711
+ name: string
4712
+ type: string
4713
+ }>
4714
+ }
4715
+ >
4716
+ block: {
4717
+ name: string
4718
+ }
4719
+ blockObjects: ReadonlyArray<
4720
+ BaseDefinition & {
4721
+ fields: ReadonlyArray<{
4722
+ name: string
4723
+ type: string
4724
+ }>
4725
+ }
4726
+ >
4727
+ decorators: ReadonlyArray<
4728
+ BaseDefinition & {
4729
+ /**
4730
+ * @deprecated
4731
+ * Use `name` instead
4732
+ */
4733
+ value: string
4734
+ }
4735
+ >
4736
+ inlineObjects: ReadonlyArray<
4737
+ BaseDefinition & {
4738
+ fields: ReadonlyArray<{
4739
+ name: string
4740
+ type: string
4741
+ }>
4742
+ }
4743
+ >
4744
+ span: {
4745
+ name: string
4746
+ }
4747
+ styles: ReadonlyArray<
4748
+ BaseDefinition & {
4749
+ /**
4750
+ * @deprecated
4751
+ * Use `name` instead
4752
+ */
4753
+ value: string
4754
+ }
4755
+ >
4756
+ lists: ReadonlyArray<
4757
+ BaseDefinition & {
4758
+ /**
4759
+ * @deprecated
4760
+ * Use `name` instead
4761
+ */
4762
+ value: string
4763
+ }
4764
+ >
4765
+ }
4706
4766
 
4707
4767
  /** @public */
4708
4768
  declare type EditorSelection = {
@@ -5038,21 +5098,6 @@ declare type PickFromUnion<
5038
5098
  TPickedTags extends TUnion[TTagKey],
5039
5099
  > = TUnion extends Record<TTagKey, TPickedTags> ? TUnion : never
5040
5100
 
5041
- /** @beta */
5042
- declare type PortableTextMemberSchemaTypes = {
5043
- annotations: (ObjectSchemaType & {
5044
- i18nTitleKey?: string
5045
- })[]
5046
- block: ObjectSchemaType
5047
- blockObjects: ObjectSchemaType[]
5048
- decorators: BlockDecoratorDefinition[]
5049
- inlineObjects: ObjectSchemaType[]
5050
- portableText: ArraySchemaType<PortableTextBlock>
5051
- span: ObjectSchemaType
5052
- styles: BlockStyleDefinition[]
5053
- lists: BlockListDefinition[]
5054
- }
5055
-
5056
5101
  declare interface PortableTextSlateEditor extends ReactEditor {
5057
5102
  _key: 'editor'
5058
5103
  _type: 'editor'