@portabletext/editor 1.44.10 → 1.44.12

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 (32) hide show
  1. package/lib/_chunks-cjs/behavior.core.cjs +38 -8
  2. package/lib/_chunks-cjs/behavior.core.cjs.map +1 -1
  3. package/lib/_chunks-cjs/editor-provider.cjs +2 -2
  4. package/lib/_chunks-cjs/editor-provider.cjs.map +1 -1
  5. package/lib/_chunks-es/behavior.core.js +38 -8
  6. package/lib/_chunks-es/behavior.core.js.map +1 -1
  7. package/lib/_chunks-es/editor-provider.js +2 -2
  8. package/lib/_chunks-es/editor-provider.js.map +1 -1
  9. package/lib/index.cjs +20 -16
  10. package/lib/index.cjs.map +1 -1
  11. package/lib/index.js +20 -16
  12. package/lib/index.js.map +1 -1
  13. package/package.json +2 -2
  14. package/src/behaviors/behavior.core.block-objects.ts +56 -8
  15. package/src/editor/Editable.tsx +24 -21
  16. package/src/editor/__tests__/PortableTextEditor.test.tsx +10 -0
  17. package/src/editor/__tests__/PortableTextEditorTester.tsx +3 -17
  18. package/src/editor/__tests__/RangeDecorations.test.tsx +6 -0
  19. package/src/editor/__tests__/pteWarningsSelfSolving.test.tsx +12 -5
  20. package/src/editor/__tests__/sync-value.test.tsx +5 -0
  21. package/src/editor/editor-machine.ts +1 -0
  22. package/src/editor/plugins/__tests__/withEditableAPIDelete.test.tsx +8 -3
  23. package/src/editor/plugins/__tests__/withEditableAPIGetFragment.test.tsx +3 -0
  24. package/src/editor/plugins/__tests__/withEditableAPIInsert.test.tsx +20 -12
  25. package/src/editor/plugins/__tests__/withEditableAPISelectionsOverlapping.test.tsx +5 -0
  26. package/src/editor/plugins/__tests__/withPortableTextLists.test.tsx +2 -0
  27. package/src/editor/plugins/__tests__/withPortableTextMarkModel.test.tsx +10 -289
  28. package/src/editor/plugins/__tests__/withPortableTextSelections.test.tsx +2 -0
  29. package/src/editor/plugins/__tests__/withUndoRedo.test.tsx +3 -0
  30. package/src/editor/sync-machine.ts +8 -6
  31. package/src/internal-utils/__tests__/valueNormalization.test.tsx +2 -0
  32. package/src/internal-utils/event-position.ts +9 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@portabletext/editor",
3
- "version": "1.44.10",
3
+ "version": "1.44.12",
4
4
  "description": "Portable Text Editor made in React",
5
5
  "keywords": [
6
6
  "sanity",
@@ -89,7 +89,7 @@
89
89
  "@sanity/schema": "^3.82.0",
90
90
  "@sanity/types": "^3.82.0",
91
91
  "@testing-library/jest-dom": "^6.6.3",
92
- "@testing-library/react": "^16.2.0",
92
+ "@testing-library/react": "^16.3.0",
93
93
  "@types/debug": "^4.1.12",
94
94
  "@types/lodash": "^4.17.13",
95
95
  "@types/lodash.startcase": "^4.4.9",
@@ -95,12 +95,31 @@ const breakingBlockObject = defineBehavior({
95
95
  const clickingAboveLonelyBlockObject = defineBehavior({
96
96
  on: 'mouse.click',
97
97
  guard: ({snapshot, event}) => {
98
- if (!selectors.isSelectionCollapsed(snapshot)) {
98
+ if (snapshot.context.readOnly) {
99
99
  return false
100
100
  }
101
101
 
102
- const focusBlockObject = selectors.getFocusBlockObject(snapshot)
103
- const previousBlock = selectors.getPreviousBlock(snapshot)
102
+ if (
103
+ snapshot.context.selection &&
104
+ !selectors.isSelectionCollapsed(snapshot)
105
+ ) {
106
+ return false
107
+ }
108
+
109
+ const focusBlockObject = selectors.getFocusBlockObject({
110
+ ...snapshot,
111
+ context: {
112
+ ...snapshot.context,
113
+ selection: event.position.selection,
114
+ },
115
+ })
116
+ const previousBlock = selectors.getPreviousBlock({
117
+ ...snapshot,
118
+ context: {
119
+ ...snapshot.context,
120
+ selection: event.position.selection,
121
+ },
122
+ })
104
123
 
105
124
  return (
106
125
  event.position.isEditor &&
@@ -110,13 +129,18 @@ const clickingAboveLonelyBlockObject = defineBehavior({
110
129
  )
111
130
  },
112
131
  actions: [
113
- ({snapshot}) => [
132
+ ({snapshot, event}) => [
133
+ raise({
134
+ type: 'select',
135
+ selection: event.position.selection,
136
+ }),
114
137
  raise({
115
138
  type: 'insert.block',
116
139
  block: {
117
140
  _type: snapshot.context.schema.block.name,
118
141
  },
119
142
  placement: 'before',
143
+ select: 'start',
120
144
  }),
121
145
  ],
122
146
  ],
@@ -125,12 +149,31 @@ const clickingAboveLonelyBlockObject = defineBehavior({
125
149
  const clickingBelowLonelyBlockObject = defineBehavior({
126
150
  on: 'mouse.click',
127
151
  guard: ({snapshot, event}) => {
128
- if (!selectors.isSelectionCollapsed(snapshot)) {
152
+ if (snapshot.context.readOnly) {
129
153
  return false
130
154
  }
131
155
 
132
- const focusBlockObject = selectors.getFocusBlockObject(snapshot)
133
- const nextBlock = selectors.getNextBlock(snapshot)
156
+ if (
157
+ snapshot.context.selection &&
158
+ !selectors.isSelectionCollapsed(snapshot)
159
+ ) {
160
+ return false
161
+ }
162
+
163
+ const focusBlockObject = selectors.getFocusBlockObject({
164
+ ...snapshot,
165
+ context: {
166
+ ...snapshot.context,
167
+ selection: event.position.selection,
168
+ },
169
+ })
170
+ const nextBlock = selectors.getNextBlock({
171
+ ...snapshot,
172
+ context: {
173
+ ...snapshot.context,
174
+ selection: event.position.selection,
175
+ },
176
+ })
134
177
 
135
178
  return (
136
179
  event.position.isEditor &&
@@ -140,13 +183,18 @@ const clickingBelowLonelyBlockObject = defineBehavior({
140
183
  )
141
184
  },
142
185
  actions: [
143
- ({snapshot}) => [
186
+ ({snapshot, event}) => [
187
+ raise({
188
+ type: 'select',
189
+ selection: event.position.selection,
190
+ }),
144
191
  raise({
145
192
  type: 'insert.block',
146
193
  block: {
147
194
  _type: snapshot.context.schema.block.name,
148
195
  },
149
196
  placement: 'after',
197
+ select: 'start',
150
198
  }),
151
199
  ],
152
200
  ],
@@ -372,7 +372,13 @@ export const PortableTextEditable = forwardRef<
372
372
  event.stopPropagation()
373
373
  event.preventDefault()
374
374
 
375
- const selection = editorActor.getSnapshot().context.selection
375
+ const selection = slateEditor.selection
376
+ ? slateRangeToSelection({
377
+ schema: editorActor.getSnapshot().context.schema,
378
+ editor: slateEditor,
379
+ range: slateEditor.selection,
380
+ })
381
+ : undefined
376
382
  const position = selection ? {selection} : undefined
377
383
 
378
384
  if (!position) {
@@ -586,25 +592,22 @@ export const PortableTextEditable = forwardRef<
586
592
  }
587
593
 
588
594
  const position = getEventPosition({
589
- schema: editorActor.getSnapshot().context.schema,
595
+ editorActor,
590
596
  slateEditor,
591
597
  event: event.nativeEvent,
592
598
  })
593
599
 
594
- if (!position) {
595
- console.warn('Could not find EventPosition for MouseEvent')
596
- return
600
+ if (position) {
601
+ editorActor.send({
602
+ type: 'behavior event',
603
+ behaviorEvent: {
604
+ type: 'mouse.click',
605
+ position,
606
+ },
607
+ editor: slateEditor,
608
+ nativeEvent: event,
609
+ })
597
610
  }
598
-
599
- editorActor.send({
600
- type: 'behavior event',
601
- behaviorEvent: {
602
- type: 'mouse.click',
603
- position,
604
- },
605
- editor: slateEditor,
606
- nativeEvent: event,
607
- })
608
611
  },
609
612
  [onClick, editorActor, slateEditor],
610
613
  )
@@ -819,7 +822,7 @@ export const PortableTextEditable = forwardRef<
819
822
  }
820
823
 
821
824
  const position = getEventPosition({
822
- schema: editorActor.getSnapshot().context.schema,
825
+ editorActor,
823
826
  slateEditor,
824
827
  event: event.nativeEvent,
825
828
  })
@@ -985,7 +988,7 @@ export const PortableTextEditable = forwardRef<
985
988
  }
986
989
 
987
990
  const position = getEventPosition({
988
- schema: editorActor.getSnapshot().context.schema,
991
+ editorActor,
989
992
  slateEditor,
990
993
  event: event.nativeEvent,
991
994
  })
@@ -1045,7 +1048,7 @@ export const PortableTextEditable = forwardRef<
1045
1048
  }
1046
1049
 
1047
1050
  const position = getEventPosition({
1048
- schema: editorActor.getSnapshot().context.schema,
1051
+ editorActor,
1049
1052
  slateEditor,
1050
1053
  event: event.nativeEvent,
1051
1054
  })
@@ -1081,7 +1084,7 @@ export const PortableTextEditable = forwardRef<
1081
1084
  }
1082
1085
 
1083
1086
  const position = getEventPosition({
1084
- schema: editorActor.getSnapshot().context.schema,
1087
+ editorActor,
1085
1088
  slateEditor,
1086
1089
  event: event.nativeEvent,
1087
1090
  })
@@ -1118,7 +1121,7 @@ export const PortableTextEditable = forwardRef<
1118
1121
  }
1119
1122
 
1120
1123
  const position = getEventPosition({
1121
- schema: editorActor.getSnapshot().context.schema,
1124
+ editorActor,
1122
1125
  slateEditor,
1123
1126
  event: event.nativeEvent,
1124
1127
  })
@@ -1156,7 +1159,7 @@ export const PortableTextEditable = forwardRef<
1156
1159
  }
1157
1160
 
1158
1161
  const position = getEventPosition({
1159
- schema: editorActor.getSnapshot().context.schema,
1162
+ editorActor,
1160
1163
  slateEditor,
1161
1164
  event: event.nativeEvent,
1162
1165
  })
@@ -3,6 +3,7 @@ import {render, waitFor} from '@testing-library/react'
3
3
  import {createRef, type RefObject} from 'react'
4
4
  import {describe, expect, it, vi} from 'vitest'
5
5
  import type {EditorSelection} from '../..'
6
+ import {createTestKeyGenerator} from '../../internal-utils/test-key-generator'
6
7
  import {PortableTextEditor} from '../PortableTextEditor'
7
8
  import {PortableTextEditorTester, schemaType} from './PortableTextEditorTester'
8
9
 
@@ -21,6 +22,7 @@ describe('initialization', () => {
21
22
  const onChange = vi.fn()
22
23
  const {container} = render(
23
24
  <PortableTextEditorTester
25
+ keyGenerator={createTestKeyGenerator()}
24
26
  onChange={onChange}
25
27
  renderPlaceholder={renderPlaceholder}
26
28
  ref={editorRef}
@@ -87,6 +89,7 @@ describe('initialization', () => {
87
89
  const editorRef = createRef<PortableTextEditor>()
88
90
  render(
89
91
  <PortableTextEditorTester
92
+ keyGenerator={createTestKeyGenerator()}
90
93
  ref={editorRef}
91
94
  onChange={onChange}
92
95
  schemaType={schemaType}
@@ -118,6 +121,7 @@ describe('initialization', () => {
118
121
  const onChange = vi.fn()
119
122
  render(
120
123
  <PortableTextEditorTester
124
+ keyGenerator={createTestKeyGenerator()}
121
125
  onChange={onChange}
122
126
  ref={editorRef}
123
127
  selection={initialSelection}
@@ -162,6 +166,7 @@ describe('initialization', () => {
162
166
  const onChange = vi.fn()
163
167
  const {rerender} = render(
164
168
  <PortableTextEditorTester
169
+ keyGenerator={createTestKeyGenerator()}
165
170
  onChange={onChange}
166
171
  ref={editorRef}
167
172
  selection={initialSelection}
@@ -195,6 +200,7 @@ describe('initialization', () => {
195
200
  })
196
201
  rerender(
197
202
  <PortableTextEditorTester
203
+ keyGenerator={createTestKeyGenerator()}
198
204
  onChange={onChange}
199
205
  ref={editorRef}
200
206
  selection={newSelection}
@@ -221,6 +227,7 @@ describe('initialization', () => {
221
227
  const onChange = vi.fn()
222
228
  render(
223
229
  <PortableTextEditorTester
230
+ keyGenerator={createTestKeyGenerator()}
224
231
  onChange={onChange}
225
232
  ref={editorRef}
226
233
  selection={initialSelection}
@@ -266,6 +273,7 @@ describe('initialization', () => {
266
273
  await waitFor(() => {
267
274
  render(
268
275
  <PortableTextEditorTester
276
+ keyGenerator={createTestKeyGenerator()}
269
277
  onChange={onChange}
270
278
  ref={editorRef}
271
279
  selection={initialSelection}
@@ -298,6 +306,7 @@ describe('initialization', () => {
298
306
  const newOnChange = vi.fn()
299
307
  _rerender(
300
308
  <PortableTextEditorTester
309
+ keyGenerator={createTestKeyGenerator()}
301
310
  onChange={newOnChange}
302
311
  ref={editorRef}
303
312
  selection={initialSelection}
@@ -350,6 +359,7 @@ describe('initialization', () => {
350
359
  const onChange = vi.fn()
351
360
  render(
352
361
  <PortableTextEditorTester
362
+ keyGenerator={createTestKeyGenerator()}
353
363
  onChange={onChange}
354
364
  ref={editorRef}
355
365
  selection={initialSelection}
@@ -1,12 +1,6 @@
1
1
  import {Schema} from '@sanity/schema'
2
2
  import {defineArrayMember, defineField} from '@sanity/types'
3
- import {
4
- forwardRef,
5
- useCallback,
6
- useEffect,
7
- useMemo,
8
- type ForwardedRef,
9
- } from 'react'
3
+ import {forwardRef, useMemo, type ForwardedRef} from 'react'
10
4
  import {vi} from 'vitest'
11
5
  import {
12
6
  PortableTextEditable,
@@ -77,8 +71,6 @@ const schema = Schema.compile({
77
71
  types: [portableTextType, colorAndLink],
78
72
  })
79
73
 
80
- let key = 0
81
-
82
74
  export const PortableTextEditorTester = forwardRef(
83
75
  function PortableTextEditorTester(
84
76
  props: Partial<
@@ -90,23 +82,17 @@ export const PortableTextEditorTester = forwardRef(
90
82
  schemaType: PortableTextEditorProps['schemaType']
91
83
  selection?: PortableTextEditableProps['selection']
92
84
  value?: PortableTextEditorProps['value']
85
+ keyGenerator: PortableTextEditorProps['keyGenerator']
93
86
  },
94
87
  ref: ForwardedRef<PortableTextEditor>,
95
88
  ) {
96
- useEffect(() => {
97
- key = 0
98
- }, [])
99
- const _keyGenerator = useCallback(() => {
100
- key++
101
- return `${key}`
102
- }, [])
103
89
  const onChange = useMemo(() => props.onChange || vi.fn(), [props.onChange])
104
90
  return (
105
91
  <PortableTextEditor
106
92
  schemaType={props.schemaType}
107
93
  onChange={onChange}
108
94
  value={props.value || undefined}
109
- keyGenerator={_keyGenerator}
95
+ keyGenerator={props.keyGenerator}
110
96
  ref={ref}
111
97
  >
112
98
  <PortableTextEditable
@@ -3,6 +3,7 @@ import {render, waitFor} from '@testing-library/react'
3
3
  import {createRef, type ReactNode, type RefObject} from 'react'
4
4
  import {describe, expect, it, vi} from 'vitest'
5
5
  import type {RangeDecoration} from '../..'
6
+ import {createTestKeyGenerator} from '../../internal-utils/test-key-generator'
6
7
  import type {PortableTextEditor} from '../PortableTextEditor'
7
8
  import {PortableTextEditorTester, schemaType} from './PortableTextEditorTester'
8
9
 
@@ -38,6 +39,7 @@ describe('RangeDecorations', () => {
38
39
  const {rerender} = await waitFor(() =>
39
40
  render(
40
41
  <PortableTextEditorTester
42
+ keyGenerator={createTestKeyGenerator()}
41
43
  onChange={onChange}
42
44
  rangeDecorations={rangeDecorations}
43
45
  ref={editorRef}
@@ -64,6 +66,7 @@ describe('RangeDecorations', () => {
64
66
  // Re-render with the same range decorations
65
67
  rerender(
66
68
  <PortableTextEditorTester
69
+ keyGenerator={createTestKeyGenerator()}
67
70
  onChange={onChange}
68
71
  rangeDecorations={rangeDecorations}
69
72
  ref={editorRef}
@@ -86,6 +89,7 @@ describe('RangeDecorations', () => {
86
89
  ]
87
90
  rerender(
88
91
  <PortableTextEditorTester
92
+ keyGenerator={createTestKeyGenerator()}
89
93
  onChange={onChange}
90
94
  rangeDecorations={rangeDecorations}
91
95
  ref={editorRef}
@@ -111,6 +115,7 @@ describe('RangeDecorations', () => {
111
115
  ]
112
116
  rerender(
113
117
  <PortableTextEditorTester
118
+ keyGenerator={createTestKeyGenerator()}
114
119
  onChange={onChange}
115
120
  rangeDecorations={rangeDecorations}
116
121
  ref={editorRef}
@@ -137,6 +142,7 @@ describe('RangeDecorations', () => {
137
142
  ]
138
143
  rerender(
139
144
  <PortableTextEditorTester
145
+ keyGenerator={createTestKeyGenerator()}
140
146
  onChange={onChange}
141
147
  rangeDecorations={rangeDecorations}
142
148
  ref={editorRef}
@@ -2,6 +2,7 @@ import type {PortableTextBlock} from '@sanity/types'
2
2
  import {render, waitFor} from '@testing-library/react'
3
3
  import {createRef, type RefObject} from 'react'
4
4
  import {describe, expect, it, vi} from 'vitest'
5
+ import {createTestKeyGenerator} from '../../internal-utils/test-key-generator'
5
6
  import {PortableTextEditor} from '../PortableTextEditor'
6
7
  import {PortableTextEditorTester, schemaType} from './PortableTextEditorTester'
7
8
 
@@ -27,6 +28,7 @@ describe('when PTE would display warnings, instead it self solves', () => {
27
28
  const onChange = vi.fn()
28
29
  render(
29
30
  <PortableTextEditorTester
31
+ keyGenerator={createTestKeyGenerator()}
30
32
  onChange={onChange}
31
33
  ref={editorRef}
32
34
  schemaType={schemaType}
@@ -48,7 +50,7 @@ describe('when PTE would display warnings, instead it self solves', () => {
48
50
  _type: 'myTestBlockType',
49
51
  children: [
50
52
  {
51
- _key: '2',
53
+ _key: 'k3',
52
54
  _type: 'span',
53
55
  text: 'Hello with a new key',
54
56
  marks: [],
@@ -83,6 +85,7 @@ describe('when PTE would display warnings, instead it self solves', () => {
83
85
  const onChange = vi.fn()
84
86
  render(
85
87
  <PortableTextEditorTester
88
+ keyGenerator={createTestKeyGenerator()}
86
89
  onChange={onChange}
87
90
  ref={editorRef}
88
91
  schemaType={schemaType}
@@ -140,6 +143,7 @@ describe('when PTE would display warnings, instead it self solves', () => {
140
143
  const onChange = vi.fn()
141
144
  render(
142
145
  <PortableTextEditorTester
146
+ keyGenerator={createTestKeyGenerator()}
143
147
  onChange={onChange}
144
148
  ref={editorRef}
145
149
  schemaType={schemaType}
@@ -162,7 +166,7 @@ describe('when PTE would display warnings, instead it self solves', () => {
162
166
  _type: 'myTestBlockType',
163
167
  children: [
164
168
  {
165
- _key: '2',
169
+ _key: 'k3',
166
170
  _type: 'span',
167
171
  text: '',
168
172
  marks: [],
@@ -176,7 +180,7 @@ describe('when PTE would display warnings, instead it self solves', () => {
176
180
  _type: 'myTestBlockType',
177
181
  children: [
178
182
  {
179
- _key: '4',
183
+ _key: 'k5',
180
184
  _type: 'span',
181
185
  text: '',
182
186
  marks: [],
@@ -212,6 +216,7 @@ describe('when PTE would display warnings, instead it self solves', () => {
212
216
  const onChange = vi.fn()
213
217
  render(
214
218
  <PortableTextEditorTester
219
+ keyGenerator={createTestKeyGenerator()}
215
220
  onChange={onChange}
216
221
  ref={editorRef}
217
222
  schemaType={schemaType}
@@ -276,6 +281,7 @@ describe('when PTE would display warnings, instead it self solves', () => {
276
281
  const onChange = vi.fn()
277
282
  render(
278
283
  <PortableTextEditorTester
284
+ keyGenerator={createTestKeyGenerator()}
279
285
  onChange={onChange}
280
286
  ref={editorRef}
281
287
  schemaType={schemaType}
@@ -319,6 +325,7 @@ describe('when PTE would display warnings, instead it self solves', () => {
319
325
  const onChange = vi.fn()
320
326
  render(
321
327
  <PortableTextEditorTester
328
+ keyGenerator={createTestKeyGenerator()}
322
329
  onChange={onChange}
323
330
  ref={editorRef}
324
331
  schemaType={schemaType}
@@ -337,9 +344,9 @@ describe('when PTE would display warnings, instead it self solves', () => {
337
344
  PortableTextEditor.focus(editorRef.current)
338
345
  expect(PortableTextEditor.getValue(editorRef.current)).toEqual([
339
346
  {
340
- _key: '3',
347
+ _key: 'k2',
341
348
  _type: 'myTestBlockType',
342
- children: [{_key: '4', _type: 'span', marks: [], text: ''}],
349
+ children: [{_key: 'k3', _type: 'span', marks: [], text: ''}],
343
350
  markDefs: [],
344
351
  style: 'normal',
345
352
  },
@@ -1,6 +1,7 @@
1
1
  import {render, waitFor} from '@testing-library/react'
2
2
  import {createRef, type RefObject} from 'react'
3
3
  import {describe, expect, it, vi} from 'vitest'
4
+ import {createTestKeyGenerator} from '../../internal-utils/test-key-generator'
4
5
  import {PortableTextEditor} from '../PortableTextEditor'
5
6
  import {PortableTextEditorTester, schemaType} from './PortableTextEditorTester'
6
7
 
@@ -43,6 +44,7 @@ describe('useSyncValue', () => {
43
44
  ]
44
45
  const {rerender} = render(
45
46
  <PortableTextEditorTester
47
+ keyGenerator={createTestKeyGenerator()}
46
48
  onChange={onChange}
47
49
  ref={editorRef}
48
50
  schemaType={schemaType}
@@ -62,6 +64,7 @@ describe('useSyncValue', () => {
62
64
 
63
65
  rerender(
64
66
  <PortableTextEditorTester
67
+ keyGenerator={createTestKeyGenerator()}
65
68
  onChange={onChange}
66
69
  ref={editorRef}
67
70
  schemaType={schemaType}
@@ -99,6 +102,7 @@ describe('useSyncValue', () => {
99
102
  ]
100
103
  const {rerender} = render(
101
104
  <PortableTextEditorTester
105
+ keyGenerator={createTestKeyGenerator()}
102
106
  onChange={onChange}
103
107
  ref={editorRef}
104
108
  schemaType={schemaType}
@@ -118,6 +122,7 @@ describe('useSyncValue', () => {
118
122
 
119
123
  rerender(
120
124
  <PortableTextEditorTester
125
+ keyGenerator={createTestKeyGenerator()}
121
126
  onChange={onChange}
122
127
  ref={editorRef}
123
128
  schemaType={schemaType}
@@ -382,6 +382,7 @@ export const editorMachine = setup({
382
382
  actions: 'handle behavior event',
383
383
  guard: ({event}) =>
384
384
  event.behaviorEvent.type === 'clipboard.copy' ||
385
+ event.behaviorEvent.type === 'mouse.click' ||
385
386
  event.behaviorEvent.type === 'serialize' ||
386
387
  event.behaviorEvent.type === 'serialization.failure' ||
387
388
  event.behaviorEvent.type === 'serialization.success' ||
@@ -5,6 +5,7 @@ import {
5
5
  PortableTextEditorTester,
6
6
  schemaType,
7
7
  } from '../../__tests__/PortableTextEditorTester'
8
+ import {createTestKeyGenerator} from '../../../internal-utils/test-key-generator'
8
9
  import {PortableTextEditor} from '../../PortableTextEditor'
9
10
 
10
11
  const initialValue = [
@@ -53,6 +54,7 @@ describe('plugin:withEditableAPI: .delete()', () => {
53
54
  ref={editorRef}
54
55
  schemaType={schemaType}
55
56
  value={initialValue}
57
+ keyGenerator={createTestKeyGenerator()}
56
58
  />,
57
59
  )
58
60
 
@@ -103,6 +105,7 @@ describe('plugin:withEditableAPI: .delete()', () => {
103
105
  const onChange = vi.fn()
104
106
  render(
105
107
  <PortableTextEditorTester
108
+ keyGenerator={createTestKeyGenerator()}
106
109
  onChange={onChange}
107
110
  ref={editorRef}
108
111
  schemaType={schemaType}
@@ -137,11 +140,11 @@ describe('plugin:withEditableAPI: .delete()', () => {
137
140
  .toMatchInlineSnapshot(`
138
141
  [
139
142
  {
140
- "_key": "1",
143
+ "_key": "k2",
141
144
  "_type": "myTestBlockType",
142
145
  "children": [
143
146
  {
144
- "_key": "2",
147
+ "_key": "k3",
145
148
  "_type": "span",
146
149
  "marks": [],
147
150
  "text": "",
@@ -162,6 +165,7 @@ describe('plugin:withEditableAPI: .delete()', () => {
162
165
 
163
166
  render(
164
167
  <PortableTextEditorTester
168
+ keyGenerator={createTestKeyGenerator()}
165
169
  onChange={onChange}
166
170
  ref={editorRef}
167
171
  schemaType={schemaType}
@@ -222,7 +226,7 @@ describe('plugin:withEditableAPI: .delete()', () => {
222
226
  "_type": "myTestBlockType",
223
227
  "children": [
224
228
  {
225
- "_key": "1",
229
+ "_key": "k2",
226
230
  "_type": "span",
227
231
  "marks": [],
228
232
  "text": "",
@@ -247,6 +251,7 @@ describe('plugin:withEditableAPI: .delete()', () => {
247
251
  ref={editorRef}
248
252
  schemaType={schemaType}
249
253
  value={initialValue}
254
+ keyGenerator={createTestKeyGenerator()}
250
255
  />,
251
256
  )
252
257
 
@@ -6,6 +6,7 @@ import {
6
6
  PortableTextEditorTester,
7
7
  schemaType,
8
8
  } from '../../__tests__/PortableTextEditorTester'
9
+ import {createTestKeyGenerator} from '../../../internal-utils/test-key-generator'
9
10
  import {PortableTextEditor} from '../../PortableTextEditor'
10
11
 
11
12
  const initialValue = [
@@ -56,6 +57,7 @@ describe('plugin:withEditableAPI: .getFragment()', () => {
56
57
 
57
58
  render(
58
59
  <PortableTextEditorTester
60
+ keyGenerator={createTestKeyGenerator()}
59
61
  onChange={onChange}
60
62
  ref={editorRef}
61
63
  schemaType={schemaType}
@@ -97,6 +99,7 @@ describe('plugin:withEditableAPI: .getFragment()', () => {
97
99
 
98
100
  render(
99
101
  <PortableTextEditorTester
102
+ keyGenerator={createTestKeyGenerator()}
100
103
  onChange={onChange}
101
104
  ref={editorRef}
102
105
  schemaType={schemaType}