@portabletext/editor 1.46.0 → 1.47.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) 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 +411 -327
  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 +412 -328
  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 +590 -28
  19. package/lib/behaviors/index.d.ts +590 -28
  20. package/lib/behaviors/index.js.map +1 -1
  21. package/lib/index.cjs +4 -4
  22. package/lib/index.cjs.map +1 -1
  23. package/lib/index.d.cts +71 -3
  24. package/lib/index.d.ts +71 -3
  25. package/lib/index.js +4 -4
  26. package/lib/index.js.map +1 -1
  27. package/lib/plugins/index.cjs.map +1 -1
  28. package/lib/plugins/index.d.cts +78 -23
  29. package/lib/plugins/index.d.ts +78 -23
  30. package/lib/plugins/index.js.map +1 -1
  31. package/lib/selectors/index.d.cts +79 -27
  32. package/lib/selectors/index.d.ts +79 -27
  33. package/lib/utils/index.d.cts +84 -29
  34. package/lib/utils/index.d.ts +84 -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.move.backward.ts +12 -0
  38. package/src/behavior-actions/behavior.action.move.forward.ts +11 -0
  39. package/src/behavior-actions/behavior.action.split.block.ts +1 -1
  40. package/src/behavior-actions/behavior.actions.ts +18 -0
  41. package/src/behavior-actions/behavior.guards.ts +1 -1
  42. package/src/behaviors/behavior.core.decorators.ts +4 -4
  43. package/src/behaviors/behavior.core.insert-break.ts +4 -4
  44. package/src/behaviors/behavior.decorator-pair.ts +1 -1
  45. package/src/behaviors/behavior.links.ts +1 -1
  46. package/src/behaviors/behavior.markdown.ts +1 -1
  47. package/src/behaviors/behavior.perform-event.ts +1 -1
  48. package/src/behaviors/behavior.types.event.ts +10 -0
  49. package/src/converters/converter.portable-text.deserialize.test.ts +2 -3
  50. package/src/converters/converter.text-html.deserialize.test.ts +62 -5
  51. package/src/converters/converter.text-html.serialize.test.ts +9 -5
  52. package/src/converters/converter.text-html.ts +66 -64
  53. package/src/converters/converter.text-plain.test.ts +9 -4
  54. package/src/converters/converter.text-plain.ts +91 -87
  55. package/src/converters/converters.core.ts +13 -8
  56. package/src/editor/Editable.tsx +10 -5
  57. package/src/editor/PortableTextEditor.tsx +5 -5
  58. package/src/editor/__tests__/PortableTextEditorTester.tsx +4 -3
  59. package/src/editor/__tests__/insert-block.test.tsx +10 -10
  60. package/src/editor/__tests__/self-solving.test.tsx +2 -2
  61. package/src/editor/components/Synchronizer.tsx +1 -1
  62. package/src/editor/create-editor.ts +51 -18
  63. package/src/editor/editor-machine.ts +1 -1
  64. package/src/editor/{define-schema.ts → editor-schema.ts} +114 -5
  65. package/src/editor/editor-snapshot.ts +1 -1
  66. package/src/editor/get-active-decorators.ts +2 -2
  67. package/src/editor/{create-editor-schema.ts → legacy-schema.ts} +3 -3
  68. package/src/editor/mutation-machine.ts +1 -1
  69. package/src/editor/plugins/createWithObjectKeys.ts +6 -9
  70. package/src/editor/plugins/createWithPatches.ts +12 -11
  71. package/src/editor/plugins/createWithPortableTextBlockStyle.ts +2 -6
  72. package/src/editor/plugins/createWithPortableTextMarkModel.ts +15 -12
  73. package/src/editor/plugins/createWithSchemaTypes.ts +24 -16
  74. package/src/editor/plugins/createWithUndoRedo.ts +3 -4
  75. package/src/editor/plugins/createWithUtils.ts +12 -10
  76. package/src/editor/plugins/with-plugins.ts +5 -15
  77. package/src/editor/range-decorations-machine.ts +1 -1
  78. package/src/editor/sync-machine.ts +1 -1
  79. package/src/index.ts +2 -2
  80. package/src/internal-utils/__tests__/operationToPatches.test.ts +12 -10
  81. package/src/internal-utils/__tests__/patchToOperations.test.ts +3 -2
  82. package/src/internal-utils/__tests__/values.test.ts +3 -2
  83. package/src/internal-utils/applyPatch.ts +7 -9
  84. package/src/internal-utils/create-test-snapshot.ts +1 -1
  85. package/src/internal-utils/drag-selection.test.ts +1 -1
  86. package/src/internal-utils/operationToPatches.ts +4 -6
  87. package/src/internal-utils/parse-blocks.test.ts +1 -1
  88. package/src/internal-utils/parse-blocks.ts +8 -7
  89. package/src/internal-utils/slate-children-to-blocks.ts +1 -1
  90. package/src/internal-utils/slate-utils.ts +1 -1
  91. package/src/internal-utils/validateValue.ts +4 -6
  92. package/src/internal-utils/values.ts +5 -5
  93. package/src/plugins/plugin.decorator-shortcut.ts +1 -1
  94. package/src/plugins/plugin.markdown.test.tsx +1 -1
  95. package/src/plugins/plugin.markdown.tsx +1 -1
  96. package/src/selectors/selector.get-selection-text.test.ts +1 -1
  97. package/src/selectors/selector.get-trimmed-selection.test.ts +1 -1
package/lib/index.d.cts CHANGED
@@ -64,7 +64,6 @@ import {
64
64
  Values,
65
65
  } from 'xstate'
66
66
  import {GuardArgs} from 'xstate/guards'
67
- import {PortableTextMemberSchemaTypes as PortableTextMemberSchemaTypes_2} from '..'
68
67
 
69
68
  declare type AbstractBehaviorEvent =
70
69
  | {
@@ -1455,7 +1454,7 @@ declare const editorMachine: StateMachine<
1455
1454
  converters: Set<Converter>
1456
1455
  keyGenerator: () => string
1457
1456
  pendingEvents: never[]
1458
- schema: PortableTextMemberSchemaTypes_2
1457
+ schema: EditorSchema
1459
1458
  selection: null
1460
1459
  initialReadOnly: boolean
1461
1460
  maxBlocks: number | undefined
@@ -4965,7 +4964,65 @@ export declare type EditorProviderProps = {
4965
4964
  /**
4966
4965
  * @public
4967
4966
  */
4968
- export declare type EditorSchema = PortableTextMemberSchemaTypes
4967
+ export declare type EditorSchema = {
4968
+ annotations: ReadonlyArray<
4969
+ BaseDefinition & {
4970
+ fields: ReadonlyArray<{
4971
+ name: string
4972
+ type: string
4973
+ }>
4974
+ }
4975
+ >
4976
+ block: {
4977
+ name: string
4978
+ }
4979
+ blockObjects: ReadonlyArray<
4980
+ BaseDefinition & {
4981
+ fields: ReadonlyArray<{
4982
+ name: string
4983
+ type: string
4984
+ }>
4985
+ }
4986
+ >
4987
+ decorators: ReadonlyArray<
4988
+ BaseDefinition & {
4989
+ /**
4990
+ * @deprecated
4991
+ * Use `name` instead
4992
+ */
4993
+ value: string
4994
+ }
4995
+ >
4996
+ inlineObjects: ReadonlyArray<
4997
+ BaseDefinition & {
4998
+ fields: ReadonlyArray<{
4999
+ name: string
5000
+ type: string
5001
+ }>
5002
+ }
5003
+ >
5004
+ span: {
5005
+ name: string
5006
+ }
5007
+ styles: ReadonlyArray<
5008
+ BaseDefinition & {
5009
+ /**
5010
+ * @deprecated
5011
+ * Use `name` instead
5012
+ */
5013
+ value: string
5014
+ }
5015
+ >
5016
+ lists: ReadonlyArray<
5017
+ BaseDefinition & {
5018
+ /**
5019
+ * @deprecated
5020
+ * Use `name` instead
5021
+ */
5022
+ value: string
5023
+ }
5024
+ >
5025
+ }
4969
5026
 
4970
5027
  /** @public */
4971
5028
  export declare type EditorSelection = {
@@ -5153,6 +5210,7 @@ declare type InternalEditor = Editor & {
5153
5210
  editable: EditableAPI
5154
5211
  editorActor: EditorActor
5155
5212
  slateEditor: SlateEditor
5213
+ legacySchema: PortableTextMemberSchemaTypes
5156
5214
  }
5157
5215
  }
5158
5216
 
@@ -6273,11 +6331,19 @@ declare type SyntheticBehaviorEvent =
6273
6331
  type: StrictExtract<SyntheticBehaviorEventType, 'insert.text'>
6274
6332
  text: string
6275
6333
  }
6334
+ | {
6335
+ type: StrictExtract<SyntheticBehaviorEventType, 'move.backward'>
6336
+ distance: number
6337
+ }
6276
6338
  | {
6277
6339
  type: StrictExtract<SyntheticBehaviorEventType, 'move.block'>
6278
6340
  at: [KeyedSegment]
6279
6341
  to: [KeyedSegment]
6280
6342
  }
6343
+ | {
6344
+ type: StrictExtract<SyntheticBehaviorEventType, 'move.forward'>
6345
+ distance: number
6346
+ }
6281
6347
  | {
6282
6348
  type: StrictExtract<SyntheticBehaviorEventType, 'select'>
6283
6349
  at: EditorSelection
@@ -6314,7 +6380,9 @@ declare const syntheticBehaviorEventTypes: readonly [
6314
6380
  'insert.block',
6315
6381
  'insert.span',
6316
6382
  'insert.text',
6383
+ 'move.backward',
6317
6384
  'move.block',
6385
+ 'move.forward',
6318
6386
  'select',
6319
6387
  'split.block',
6320
6388
  ]
package/lib/index.d.ts CHANGED
@@ -64,7 +64,6 @@ import {
64
64
  Values,
65
65
  } from 'xstate'
66
66
  import {GuardArgs} from 'xstate/guards'
67
- import {PortableTextMemberSchemaTypes as PortableTextMemberSchemaTypes_2} from '..'
68
67
 
69
68
  declare type AbstractBehaviorEvent =
70
69
  | {
@@ -1455,7 +1454,7 @@ declare const editorMachine: StateMachine<
1455
1454
  converters: Set<Converter>
1456
1455
  keyGenerator: () => string
1457
1456
  pendingEvents: never[]
1458
- schema: PortableTextMemberSchemaTypes_2
1457
+ schema: EditorSchema
1459
1458
  selection: null
1460
1459
  initialReadOnly: boolean
1461
1460
  maxBlocks: number | undefined
@@ -4965,7 +4964,65 @@ export declare type EditorProviderProps = {
4965
4964
  /**
4966
4965
  * @public
4967
4966
  */
4968
- export declare type EditorSchema = PortableTextMemberSchemaTypes
4967
+ export declare type EditorSchema = {
4968
+ annotations: ReadonlyArray<
4969
+ BaseDefinition & {
4970
+ fields: ReadonlyArray<{
4971
+ name: string
4972
+ type: string
4973
+ }>
4974
+ }
4975
+ >
4976
+ block: {
4977
+ name: string
4978
+ }
4979
+ blockObjects: ReadonlyArray<
4980
+ BaseDefinition & {
4981
+ fields: ReadonlyArray<{
4982
+ name: string
4983
+ type: string
4984
+ }>
4985
+ }
4986
+ >
4987
+ decorators: ReadonlyArray<
4988
+ BaseDefinition & {
4989
+ /**
4990
+ * @deprecated
4991
+ * Use `name` instead
4992
+ */
4993
+ value: string
4994
+ }
4995
+ >
4996
+ inlineObjects: ReadonlyArray<
4997
+ BaseDefinition & {
4998
+ fields: ReadonlyArray<{
4999
+ name: string
5000
+ type: string
5001
+ }>
5002
+ }
5003
+ >
5004
+ span: {
5005
+ name: string
5006
+ }
5007
+ styles: ReadonlyArray<
5008
+ BaseDefinition & {
5009
+ /**
5010
+ * @deprecated
5011
+ * Use `name` instead
5012
+ */
5013
+ value: string
5014
+ }
5015
+ >
5016
+ lists: ReadonlyArray<
5017
+ BaseDefinition & {
5018
+ /**
5019
+ * @deprecated
5020
+ * Use `name` instead
5021
+ */
5022
+ value: string
5023
+ }
5024
+ >
5025
+ }
4969
5026
 
4970
5027
  /** @public */
4971
5028
  export declare type EditorSelection = {
@@ -5153,6 +5210,7 @@ declare type InternalEditor = Editor & {
5153
5210
  editable: EditableAPI
5154
5211
  editorActor: EditorActor
5155
5212
  slateEditor: SlateEditor
5213
+ legacySchema: PortableTextMemberSchemaTypes
5156
5214
  }
5157
5215
  }
5158
5216
 
@@ -6273,11 +6331,19 @@ declare type SyntheticBehaviorEvent =
6273
6331
  type: StrictExtract<SyntheticBehaviorEventType, 'insert.text'>
6274
6332
  text: string
6275
6333
  }
6334
+ | {
6335
+ type: StrictExtract<SyntheticBehaviorEventType, 'move.backward'>
6336
+ distance: number
6337
+ }
6276
6338
  | {
6277
6339
  type: StrictExtract<SyntheticBehaviorEventType, 'move.block'>
6278
6340
  at: [KeyedSegment]
6279
6341
  to: [KeyedSegment]
6280
6342
  }
6343
+ | {
6344
+ type: StrictExtract<SyntheticBehaviorEventType, 'move.forward'>
6345
+ distance: number
6346
+ }
6281
6347
  | {
6282
6348
  type: StrictExtract<SyntheticBehaviorEventType, 'select'>
6283
6349
  at: EditorSelection
@@ -6314,7 +6380,9 @@ declare const syntheticBehaviorEventTypes: readonly [
6314
6380
  'insert.block',
6315
6381
  'insert.span',
6316
6382
  'insert.text',
6383
+ 'move.backward',
6317
6384
  'move.block',
6385
+ 'move.forward',
6318
6386
  'select',
6319
6387
  'split.block',
6320
6388
  ]
package/lib/index.js CHANGED
@@ -1081,9 +1081,9 @@ const debug = debugWithName("component:Editable"), PLACEHOLDER_STYLE = {
1081
1081
  const withHotKeys = createWithHotkeys(editorActor, portableTextEditor, hotkeys);
1082
1082
  return debug("Editable is in edit mode"), withHotKeys(slateEditor);
1083
1083
  }, [editorActor, hotkeys, portableTextEditor, readOnly, slateEditor]);
1084
- const renderElement = useCallback((eProps) => /* @__PURE__ */ jsx(Element$1, { ...eProps, readOnly, renderBlock, renderChild, renderListItem, renderStyle, schemaTypes, spellCheck }), [schemaTypes, spellCheck, readOnly, renderBlock, renderChild, renderListItem, renderStyle]), renderLeaf = useCallback((lProps) => {
1084
+ const renderElement = useCallback((eProps) => /* @__PURE__ */ jsx(Element$1, { ...eProps, readOnly, renderBlock, renderChild, renderListItem, renderStyle, schemaTypes: portableTextEditor.schemaTypes, spellCheck }), [portableTextEditor, spellCheck, readOnly, renderBlock, renderChild, renderListItem, renderStyle]), renderLeaf = useCallback((lProps) => {
1085
1085
  if (lProps.leaf._type === "span") {
1086
- let rendered = /* @__PURE__ */ jsx(Leaf, { ...lProps, editorActor, schemaTypes, renderAnnotation, renderChild, renderDecorator, readOnly });
1086
+ let rendered = /* @__PURE__ */ jsx(Leaf, { ...lProps, editorActor, schemaTypes: portableTextEditor.schemaTypes, renderAnnotation, renderChild, renderDecorator, readOnly });
1087
1087
  if (renderPlaceholder && lProps.leaf.placeholder && lProps.text.text === "")
1088
1088
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1089
1089
  /* @__PURE__ */ jsx("span", { style: PLACEHOLDER_STYLE, contentEditable: !1, children: renderPlaceholder() }),
@@ -1095,7 +1095,7 @@ const debug = debugWithName("component:Editable"), PLACEHOLDER_STYLE = {
1095
1095
  })), rendered;
1096
1096
  }
1097
1097
  return lProps.children;
1098
- }, [editorActor, readOnly, renderAnnotation, renderChild, renderDecorator, renderPlaceholder, schemaTypes]), restoreSelectionFromProps = useCallback(() => {
1098
+ }, [editorActor, portableTextEditor.schemaTypes, readOnly, renderAnnotation, renderChild, renderDecorator, renderPlaceholder]), restoreSelectionFromProps = useCallback(() => {
1099
1099
  if (propsSelection) {
1100
1100
  debug(`Selection from props ${JSON.stringify(propsSelection)}`);
1101
1101
  const normalizedSelection = normalizeSelection(propsSelection, fromSlateValue(slateEditor.children, blockTypeName));
@@ -1188,7 +1188,7 @@ const debug = debugWithName("component:Editable"), PLACEHOLDER_STYLE = {
1188
1188
  event: event_1,
1189
1189
  value,
1190
1190
  path,
1191
- schemaTypes
1191
+ schemaTypes: portableTextEditor.schemaTypes
1192
1192
  });
1193
1193
  if (onPasteResult || !slateEditor.selection)
1194
1194
  event_1.preventDefault(), editorActor.send({