@portabletext/editor 1.48.11 → 1.48.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/_chunks-cjs/editor-provider.cjs +54 -58
- package/lib/_chunks-cjs/editor-provider.cjs.map +1 -1
- package/lib/_chunks-es/editor-provider.js +55 -59
- package/lib/_chunks-es/editor-provider.js.map +1 -1
- package/lib/behaviors/index.cjs.map +1 -1
- package/lib/behaviors/index.js.map +1 -1
- package/package.json +6 -6
- package/src/behavior-actions/behavior.actions.ts +0 -9
- package/src/behaviors/behavior.perform-event.ts +54 -34
- package/src/behaviors/behavior.types.action.ts +5 -4
- package/src/editor/editor-machine.ts +28 -20
- package/src/behavior-actions/behavior.action.effect.ts +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/behaviors/behavior.types.action.ts","../../src/behaviors/behavior.types.behavior.ts"],"sourcesContent":["import type {EditorSnapshot} from '../editor/editor-snapshot'\nimport type {OmitFromUnion, PickFromUnion} from '../type-utils'\nimport type {PortableTextSlateEditor} from '../types/editor'\nimport type {\n AbstractBehaviorEventType,\n CustomBehaviorEvent,\n NativeBehaviorEvent,\n SyntheticBehaviorEvent,\n} from './behavior.types.event'\n\n/**\n * @beta\n */\nexport type BehaviorAction =\n | {\n type: 'execute'\n event: SyntheticBehaviorEvent\n }\n | {\n type: 'forward'\n event: NativeBehaviorEvent | SyntheticBehaviorEvent | CustomBehaviorEvent\n }\n | {\n type: 'raise'\n event: SyntheticBehaviorEvent | CustomBehaviorEvent\n }\n | {\n type: 'effect'\n effect: () => void\n }\n\n/**\n * @beta\n */\nexport function execute(\n event: SyntheticBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'execute'> {\n return {type: 'execute', event}\n}\n\n/**\n * @beta\n */\nexport function forward(\n event: NativeBehaviorEvent | SyntheticBehaviorEvent | CustomBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'forward'> {\n return {type: 'forward', event}\n}\n\n/**\n * @beta\n */\nexport function raise(\n event: SyntheticBehaviorEvent | CustomBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'raise'> {\n return {type: 'raise', event}\n}\n\n/**\n * @beta\n */\nexport function effect(\n effect: () => void,\n): PickFromUnion<BehaviorAction, 'type', 'effect'> {\n return {type: 'effect', effect}\n}\n\n/**\n * @beta\n */\nexport type BehaviorActionSet<TBehaviorEvent, TGuardResponse> = (\n payload: {\n snapshot: EditorSnapshot\n event: TBehaviorEvent\n },\n guardResponse: TGuardResponse,\n) => Array<BehaviorAction>\n\nexport type InternalBehaviorAction =
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/behaviors/behavior.types.action.ts","../../src/behaviors/behavior.types.behavior.ts"],"sourcesContent":["import type {EditorSnapshot} from '../editor/editor-snapshot'\nimport type {OmitFromUnion, PickFromUnion} from '../type-utils'\nimport type {PortableTextSlateEditor} from '../types/editor'\nimport type {\n AbstractBehaviorEventType,\n CustomBehaviorEvent,\n NativeBehaviorEvent,\n SyntheticBehaviorEvent,\n} from './behavior.types.event'\n\n/**\n * @beta\n */\nexport type BehaviorAction =\n | {\n type: 'execute'\n event: SyntheticBehaviorEvent\n }\n | {\n type: 'forward'\n event: NativeBehaviorEvent | SyntheticBehaviorEvent | CustomBehaviorEvent\n }\n | {\n type: 'raise'\n event: SyntheticBehaviorEvent | CustomBehaviorEvent\n }\n | {\n type: 'effect'\n effect: () => void\n }\n\n/**\n * @beta\n */\nexport function execute(\n event: SyntheticBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'execute'> {\n return {type: 'execute', event}\n}\n\n/**\n * @beta\n */\nexport function forward(\n event: NativeBehaviorEvent | SyntheticBehaviorEvent | CustomBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'forward'> {\n return {type: 'forward', event}\n}\n\n/**\n * @beta\n */\nexport function raise(\n event: SyntheticBehaviorEvent | CustomBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'raise'> {\n return {type: 'raise', event}\n}\n\n/**\n * @beta\n */\nexport function effect(\n effect: () => void,\n): PickFromUnion<BehaviorAction, 'type', 'effect'> {\n return {type: 'effect', effect}\n}\n\n/**\n * @beta\n */\nexport type BehaviorActionSet<TBehaviorEvent, TGuardResponse> = (\n payload: {\n snapshot: EditorSnapshot\n event: TBehaviorEvent\n },\n guardResponse: TGuardResponse,\n) => Array<BehaviorAction>\n\nexport type InternalBehaviorAction = OmitFromUnion<\n SyntheticBehaviorEvent,\n 'type',\n AbstractBehaviorEventType\n> & {\n editor: PortableTextSlateEditor\n}\n","import type {BehaviorActionSet} from './behavior.types.action'\nimport type {\n BehaviorEvent,\n BehaviorEventTypeNamespace,\n CustomBehaviorEvent,\n ResolveBehaviorEvent,\n} from './behavior.types.event'\nimport type {BehaviorGuard} from './behavior.types.guard'\n\n/**\n * @beta\n */\nexport type Behavior<\n TBehaviorEventType extends\n | '*'\n | `${BehaviorEventTypeNamespace}.*`\n | BehaviorEvent['type'] =\n | '*'\n | `${BehaviorEventTypeNamespace}.*`\n | BehaviorEvent['type'],\n TGuardResponse = true,\n TBehaviorEvent extends\n ResolveBehaviorEvent<TBehaviorEventType> = ResolveBehaviorEvent<TBehaviorEventType>,\n> = {\n /**\n * Editor Event that triggers this Behavior.\n */\n on: TBehaviorEventType\n /**\n * Predicate function that determines if the Behavior should be executed.\n * Returning a non-nullable value from the guard will pass the value to the\n * actions and execute them.\n */\n guard?: BehaviorGuard<TBehaviorEvent, TGuardResponse>\n /**\n * Array of Behavior Action sets.\n * Each set represents a step in the history stack.\n */\n actions: Array<BehaviorActionSet<TBehaviorEvent, TGuardResponse>>\n}\n\n/**\n * @beta\n *\n * @example\n *\n * ```tsx\n * const noLowerCaseA = defineBehavior({\n * on: 'insert.text',\n * guard: ({event, snapshot}) => event.text === 'a',\n * actions: [({event, snapshot}) => [{type: 'insert.text', text: 'A'}]],\n * })\n * ```\n *\n */\nexport function defineBehavior<\n TPayload extends Record<string, unknown>,\n TBehaviorEventType extends\n | '*'\n | `${BehaviorEventTypeNamespace}.*`\n | BehaviorEvent['type'] = CustomBehaviorEvent['type'],\n TGuardResponse = true,\n>(\n behavior: Behavior<\n TBehaviorEventType,\n TGuardResponse,\n ResolveBehaviorEvent<TBehaviorEventType, TPayload>\n >,\n): Behavior\nexport function defineBehavior<\n TPayload extends never = never,\n TBehaviorEventType extends\n | '*'\n | `${BehaviorEventTypeNamespace}.*`\n | BehaviorEvent['type'] = BehaviorEvent['type'],\n TGuardResponse = true,\n TBehaviorEvent extends ResolveBehaviorEvent<\n TBehaviorEventType,\n TPayload\n > = ResolveBehaviorEvent<TBehaviorEventType, TPayload>,\n>(\n behavior: Behavior<TBehaviorEventType, TGuardResponse, TBehaviorEvent>,\n): Behavior {\n return behavior as unknown as Behavior\n}\n"],"names":["execute","event","type","forward","raise","effect","defineBehavior","behavior"],"mappings":";;AAkCO,SAASA,QACdC,OACkD;AAC3C,SAAA;AAAA,IAACC,MAAM;AAAA,IAAWD;AAAAA,EAAK;AAChC;AAKO,SAASE,QACdF,OACkD;AAC3C,SAAA;AAAA,IAACC,MAAM;AAAA,IAAWD;AAAAA,EAAK;AAChC;AAKO,SAASG,MACdH,OACgD;AACzC,SAAA;AAAA,IAACC,MAAM;AAAA,IAASD;AAAAA,EAAK;AAC9B;AAKO,SAASI,OACdA,SACiD;AAC1C,SAAA;AAAA,IAACH,MAAM;AAAA,IAAUG,QAAAA;AAAAA,EAAM;AAChC;ACIO,SAASC,eAYdC,UACU;AACHA,SAAAA;AACT;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/behaviors/behavior.types.action.ts","../../src/behaviors/behavior.types.behavior.ts"],"sourcesContent":["import type {EditorSnapshot} from '../editor/editor-snapshot'\nimport type {OmitFromUnion, PickFromUnion} from '../type-utils'\nimport type {PortableTextSlateEditor} from '../types/editor'\nimport type {\n AbstractBehaviorEventType,\n CustomBehaviorEvent,\n NativeBehaviorEvent,\n SyntheticBehaviorEvent,\n} from './behavior.types.event'\n\n/**\n * @beta\n */\nexport type BehaviorAction =\n | {\n type: 'execute'\n event: SyntheticBehaviorEvent\n }\n | {\n type: 'forward'\n event: NativeBehaviorEvent | SyntheticBehaviorEvent | CustomBehaviorEvent\n }\n | {\n type: 'raise'\n event: SyntheticBehaviorEvent | CustomBehaviorEvent\n }\n | {\n type: 'effect'\n effect: () => void\n }\n\n/**\n * @beta\n */\nexport function execute(\n event: SyntheticBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'execute'> {\n return {type: 'execute', event}\n}\n\n/**\n * @beta\n */\nexport function forward(\n event: NativeBehaviorEvent | SyntheticBehaviorEvent | CustomBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'forward'> {\n return {type: 'forward', event}\n}\n\n/**\n * @beta\n */\nexport function raise(\n event: SyntheticBehaviorEvent | CustomBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'raise'> {\n return {type: 'raise', event}\n}\n\n/**\n * @beta\n */\nexport function effect(\n effect: () => void,\n): PickFromUnion<BehaviorAction, 'type', 'effect'> {\n return {type: 'effect', effect}\n}\n\n/**\n * @beta\n */\nexport type BehaviorActionSet<TBehaviorEvent, TGuardResponse> = (\n payload: {\n snapshot: EditorSnapshot\n event: TBehaviorEvent\n },\n guardResponse: TGuardResponse,\n) => Array<BehaviorAction>\n\nexport type InternalBehaviorAction =
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/behaviors/behavior.types.action.ts","../../src/behaviors/behavior.types.behavior.ts"],"sourcesContent":["import type {EditorSnapshot} from '../editor/editor-snapshot'\nimport type {OmitFromUnion, PickFromUnion} from '../type-utils'\nimport type {PortableTextSlateEditor} from '../types/editor'\nimport type {\n AbstractBehaviorEventType,\n CustomBehaviorEvent,\n NativeBehaviorEvent,\n SyntheticBehaviorEvent,\n} from './behavior.types.event'\n\n/**\n * @beta\n */\nexport type BehaviorAction =\n | {\n type: 'execute'\n event: SyntheticBehaviorEvent\n }\n | {\n type: 'forward'\n event: NativeBehaviorEvent | SyntheticBehaviorEvent | CustomBehaviorEvent\n }\n | {\n type: 'raise'\n event: SyntheticBehaviorEvent | CustomBehaviorEvent\n }\n | {\n type: 'effect'\n effect: () => void\n }\n\n/**\n * @beta\n */\nexport function execute(\n event: SyntheticBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'execute'> {\n return {type: 'execute', event}\n}\n\n/**\n * @beta\n */\nexport function forward(\n event: NativeBehaviorEvent | SyntheticBehaviorEvent | CustomBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'forward'> {\n return {type: 'forward', event}\n}\n\n/**\n * @beta\n */\nexport function raise(\n event: SyntheticBehaviorEvent | CustomBehaviorEvent,\n): PickFromUnion<BehaviorAction, 'type', 'raise'> {\n return {type: 'raise', event}\n}\n\n/**\n * @beta\n */\nexport function effect(\n effect: () => void,\n): PickFromUnion<BehaviorAction, 'type', 'effect'> {\n return {type: 'effect', effect}\n}\n\n/**\n * @beta\n */\nexport type BehaviorActionSet<TBehaviorEvent, TGuardResponse> = (\n payload: {\n snapshot: EditorSnapshot\n event: TBehaviorEvent\n },\n guardResponse: TGuardResponse,\n) => Array<BehaviorAction>\n\nexport type InternalBehaviorAction = OmitFromUnion<\n SyntheticBehaviorEvent,\n 'type',\n AbstractBehaviorEventType\n> & {\n editor: PortableTextSlateEditor\n}\n","import type {BehaviorActionSet} from './behavior.types.action'\nimport type {\n BehaviorEvent,\n BehaviorEventTypeNamespace,\n CustomBehaviorEvent,\n ResolveBehaviorEvent,\n} from './behavior.types.event'\nimport type {BehaviorGuard} from './behavior.types.guard'\n\n/**\n * @beta\n */\nexport type Behavior<\n TBehaviorEventType extends\n | '*'\n | `${BehaviorEventTypeNamespace}.*`\n | BehaviorEvent['type'] =\n | '*'\n | `${BehaviorEventTypeNamespace}.*`\n | BehaviorEvent['type'],\n TGuardResponse = true,\n TBehaviorEvent extends\n ResolveBehaviorEvent<TBehaviorEventType> = ResolveBehaviorEvent<TBehaviorEventType>,\n> = {\n /**\n * Editor Event that triggers this Behavior.\n */\n on: TBehaviorEventType\n /**\n * Predicate function that determines if the Behavior should be executed.\n * Returning a non-nullable value from the guard will pass the value to the\n * actions and execute them.\n */\n guard?: BehaviorGuard<TBehaviorEvent, TGuardResponse>\n /**\n * Array of Behavior Action sets.\n * Each set represents a step in the history stack.\n */\n actions: Array<BehaviorActionSet<TBehaviorEvent, TGuardResponse>>\n}\n\n/**\n * @beta\n *\n * @example\n *\n * ```tsx\n * const noLowerCaseA = defineBehavior({\n * on: 'insert.text',\n * guard: ({event, snapshot}) => event.text === 'a',\n * actions: [({event, snapshot}) => [{type: 'insert.text', text: 'A'}]],\n * })\n * ```\n *\n */\nexport function defineBehavior<\n TPayload extends Record<string, unknown>,\n TBehaviorEventType extends\n | '*'\n | `${BehaviorEventTypeNamespace}.*`\n | BehaviorEvent['type'] = CustomBehaviorEvent['type'],\n TGuardResponse = true,\n>(\n behavior: Behavior<\n TBehaviorEventType,\n TGuardResponse,\n ResolveBehaviorEvent<TBehaviorEventType, TPayload>\n >,\n): Behavior\nexport function defineBehavior<\n TPayload extends never = never,\n TBehaviorEventType extends\n | '*'\n | `${BehaviorEventTypeNamespace}.*`\n | BehaviorEvent['type'] = BehaviorEvent['type'],\n TGuardResponse = true,\n TBehaviorEvent extends ResolveBehaviorEvent<\n TBehaviorEventType,\n TPayload\n > = ResolveBehaviorEvent<TBehaviorEventType, TPayload>,\n>(\n behavior: Behavior<TBehaviorEventType, TGuardResponse, TBehaviorEvent>,\n): Behavior {\n return behavior as unknown as Behavior\n}\n"],"names":["execute","event","type","forward","raise","effect","defineBehavior","behavior"],"mappings":"AAkCO,SAASA,QACdC,OACkD;AAC3C,SAAA;AAAA,IAACC,MAAM;AAAA,IAAWD;AAAAA,EAAK;AAChC;AAKO,SAASE,QACdF,OACkD;AAC3C,SAAA;AAAA,IAACC,MAAM;AAAA,IAAWD;AAAAA,EAAK;AAChC;AAKO,SAASG,MACdH,OACgD;AACzC,SAAA;AAAA,IAACC,MAAM;AAAA,IAASD;AAAAA,EAAK;AAC9B;AAKO,SAASI,OACdA,SACiD;AAC1C,SAAA;AAAA,IAACH,MAAM;AAAA,IAAUG,QAAAA;AAAAA,EAAM;AAChC;ACIO,SAASC,eAYdC,UACU;AACHA,SAAAA;AACT;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@portabletext/editor",
|
|
3
|
-
"version": "1.48.
|
|
3
|
+
"version": "1.48.13",
|
|
4
4
|
"description": "Portable Text Editor made in React",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sanity",
|
|
@@ -79,15 +79,15 @@
|
|
|
79
79
|
"slate-react": "0.114.2",
|
|
80
80
|
"use-effect-event": "^1.0.2",
|
|
81
81
|
"xstate": "^5.19.2",
|
|
82
|
-
"@portabletext/block-tools": "1.1.
|
|
82
|
+
"@portabletext/block-tools": "1.1.23",
|
|
83
83
|
"@portabletext/patches": "1.1.3"
|
|
84
84
|
},
|
|
85
85
|
"devDependencies": {
|
|
86
86
|
"@portabletext/toolkit": "^2.0.17",
|
|
87
87
|
"@sanity/diff-match-patch": "^3.2.0",
|
|
88
88
|
"@sanity/pkg-utils": "^7.2.2",
|
|
89
|
-
"@sanity/schema": "^3.87.
|
|
90
|
-
"@sanity/types": "^3.87.
|
|
89
|
+
"@sanity/schema": "^3.87.1",
|
|
90
|
+
"@sanity/types": "^3.87.1",
|
|
91
91
|
"@testing-library/jest-dom": "^6.6.3",
|
|
92
92
|
"@testing-library/react": "^16.3.0",
|
|
93
93
|
"@types/debug": "^4.1.12",
|
|
@@ -114,8 +114,8 @@
|
|
|
114
114
|
"racejar": "1.2.4"
|
|
115
115
|
},
|
|
116
116
|
"peerDependencies": {
|
|
117
|
-
"@sanity/schema": "^3.87.
|
|
118
|
-
"@sanity/types": "^3.87.
|
|
117
|
+
"@sanity/schema": "^3.87.1",
|
|
118
|
+
"@sanity/types": "^3.87.1",
|
|
119
119
|
"react": "^16.9 || ^17 || ^18 || ^19",
|
|
120
120
|
"rxjs": "^7.8.2"
|
|
121
121
|
},
|
|
@@ -15,7 +15,6 @@ import {deleteActionImplementation} from './behavior.action.delete'
|
|
|
15
15
|
import {deleteBackwardActionImplementation} from './behavior.action.delete.backward'
|
|
16
16
|
import {deleteBlockActionImplementation} from './behavior.action.delete.block'
|
|
17
17
|
import {deleteForwardActionImplementation} from './behavior.action.delete.forward'
|
|
18
|
-
import {effectActionImplementation} from './behavior.action.effect'
|
|
19
18
|
import {insertInlineObjectActionImplementation} from './behavior.action.insert-inline-object'
|
|
20
19
|
import {insertSpanActionImplementation} from './behavior.action.insert-span'
|
|
21
20
|
import {insertBlockActionImplementation} from './behavior.action.insert.block'
|
|
@@ -62,7 +61,6 @@ const behaviorActionImplementations: BehaviorActionImplementations = {
|
|
|
62
61
|
'insert.inline object': insertInlineObjectActionImplementation,
|
|
63
62
|
'insert.span': insertSpanActionImplementation,
|
|
64
63
|
'insert.text': insertTextActionImplementation,
|
|
65
|
-
'effect': effectActionImplementation,
|
|
66
64
|
'move.backward': moveBackwardActionImplementation,
|
|
67
65
|
'move.block': moveBlockActionImplementation,
|
|
68
66
|
'move.forward': moveForwardActionImplementation,
|
|
@@ -147,13 +145,6 @@ export function performAction({
|
|
|
147
145
|
})
|
|
148
146
|
break
|
|
149
147
|
}
|
|
150
|
-
case 'effect': {
|
|
151
|
-
behaviorActionImplementations.effect({
|
|
152
|
-
context,
|
|
153
|
-
action,
|
|
154
|
-
})
|
|
155
|
-
break
|
|
156
|
-
}
|
|
157
148
|
case 'history.redo': {
|
|
158
149
|
behaviorActionImplementations['history.redo']({
|
|
159
150
|
context,
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type {Behavior, BehaviorEvent} from '.'
|
|
2
1
|
import {performAction} from '../behavior-actions/behavior.actions'
|
|
3
2
|
import type {EditorSchema} from '../editor/editor-schema'
|
|
4
3
|
import type {EditorSnapshot} from '../editor/editor-snapshot'
|
|
@@ -9,11 +8,14 @@ import {
|
|
|
9
8
|
import {debugWithName} from '../internal-utils/debug'
|
|
10
9
|
import type {PortableTextSlateEditor} from '../types/editor'
|
|
11
10
|
import {defaultBehaviors} from './behavior.default'
|
|
11
|
+
import type {BehaviorAction} from './behavior.types.action'
|
|
12
|
+
import type {Behavior} from './behavior.types.behavior'
|
|
12
13
|
import {
|
|
13
14
|
isAbstractBehaviorEvent,
|
|
14
15
|
isCustomBehaviorEvent,
|
|
15
16
|
isNativeBehaviorEvent,
|
|
16
17
|
isSyntheticBehaviorEvent,
|
|
18
|
+
type BehaviorEvent,
|
|
17
19
|
} from './behavior.types.event'
|
|
18
20
|
|
|
19
21
|
const debug = debugWithName('behaviors:event')
|
|
@@ -138,12 +140,22 @@ export function performEvent({
|
|
|
138
140
|
for (const eventBehavior of eventBehaviors) {
|
|
139
141
|
eventBehaviorIndex++
|
|
140
142
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
143
|
+
let shouldRun = false
|
|
144
|
+
|
|
145
|
+
try {
|
|
146
|
+
shouldRun =
|
|
147
|
+
eventBehavior.guard === undefined ||
|
|
148
|
+
eventBehavior.guard({
|
|
149
|
+
snapshot: guardSnapshot,
|
|
150
|
+
event,
|
|
151
|
+
})
|
|
152
|
+
} catch (error) {
|
|
153
|
+
console.error(
|
|
154
|
+
new Error(
|
|
155
|
+
`Evaluating guard for "${event.type}" failed due to: ${error.message}`,
|
|
156
|
+
),
|
|
157
|
+
)
|
|
158
|
+
}
|
|
147
159
|
|
|
148
160
|
if (!shouldRun) {
|
|
149
161
|
continue
|
|
@@ -156,13 +168,23 @@ export function performEvent({
|
|
|
156
168
|
for (const actionSet of eventBehavior.actions) {
|
|
157
169
|
const actionsSnapshot = getSnapshot()
|
|
158
170
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
171
|
+
let actions: Array<BehaviorAction> = []
|
|
172
|
+
|
|
173
|
+
try {
|
|
174
|
+
actions = actionSet(
|
|
175
|
+
{
|
|
176
|
+
snapshot: actionsSnapshot,
|
|
177
|
+
event,
|
|
178
|
+
},
|
|
179
|
+
shouldRun,
|
|
180
|
+
)
|
|
181
|
+
} catch (error) {
|
|
182
|
+
console.error(
|
|
183
|
+
new Error(
|
|
184
|
+
`Evaluating actions for "${event.type}" failed due to: ${error.message}`,
|
|
185
|
+
),
|
|
186
|
+
)
|
|
187
|
+
}
|
|
166
188
|
|
|
167
189
|
if (actions.length === 0) {
|
|
168
190
|
continue
|
|
@@ -178,16 +200,15 @@ export function performEvent({
|
|
|
178
200
|
if (action.type === 'effect') {
|
|
179
201
|
nativeEventPrevented = true
|
|
180
202
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
})
|
|
203
|
+
try {
|
|
204
|
+
action.effect()
|
|
205
|
+
} catch (error) {
|
|
206
|
+
console.error(
|
|
207
|
+
new Error(
|
|
208
|
+
`Executing effect as a result of "${event.type}" failed due to: ${error.message}`,
|
|
209
|
+
),
|
|
210
|
+
)
|
|
211
|
+
}
|
|
191
212
|
|
|
192
213
|
continue
|
|
193
214
|
}
|
|
@@ -255,16 +276,15 @@ export function performEvent({
|
|
|
255
276
|
if (action.type === 'effect') {
|
|
256
277
|
nativeEventPrevented = true
|
|
257
278
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
})
|
|
279
|
+
try {
|
|
280
|
+
action.effect()
|
|
281
|
+
} catch (error) {
|
|
282
|
+
console.error(
|
|
283
|
+
new Error(
|
|
284
|
+
`Executing effect as a result of "${event.type}" failed due to: ${error.message}`,
|
|
285
|
+
),
|
|
286
|
+
)
|
|
287
|
+
}
|
|
268
288
|
|
|
269
289
|
continue
|
|
270
290
|
}
|
|
@@ -76,9 +76,10 @@ export type BehaviorActionSet<TBehaviorEvent, TGuardResponse> = (
|
|
|
76
76
|
guardResponse: TGuardResponse,
|
|
77
77
|
) => Array<BehaviorAction>
|
|
78
78
|
|
|
79
|
-
export type InternalBehaviorAction =
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
export type InternalBehaviorAction = OmitFromUnion<
|
|
80
|
+
SyntheticBehaviorEvent,
|
|
81
|
+
'type',
|
|
82
|
+
AbstractBehaviorEventType
|
|
83
|
+
> & {
|
|
83
84
|
editor: PortableTextSlateEditor
|
|
84
85
|
}
|
|
@@ -341,26 +341,34 @@ export const editorMachine = setup({
|
|
|
341
341
|
'handle behavior event': ({context, event, self}) => {
|
|
342
342
|
assertEvent(event, ['behavior event'])
|
|
343
343
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
344
|
+
try {
|
|
345
|
+
performEvent({
|
|
346
|
+
mode: 'raise',
|
|
347
|
+
behaviors: [...context.behaviors.values()],
|
|
348
|
+
remainingEventBehaviors: [...context.behaviors.values()],
|
|
349
|
+
event: event.behaviorEvent,
|
|
350
|
+
editor: event.editor,
|
|
351
|
+
keyGenerator: context.keyGenerator,
|
|
352
|
+
schema: context.schema,
|
|
353
|
+
getSnapshot: () =>
|
|
354
|
+
createEditorSnapshot({
|
|
355
|
+
converters: [...context.converters],
|
|
356
|
+
editor: event.editor,
|
|
357
|
+
keyGenerator: context.keyGenerator,
|
|
358
|
+
readOnly: self.getSnapshot().matches({'edit mode': 'read only'}),
|
|
359
|
+
schema: context.schema,
|
|
360
|
+
hasTag: (tag) => self.getSnapshot().hasTag(tag),
|
|
361
|
+
internalDrag: context.internalDrag,
|
|
362
|
+
}),
|
|
363
|
+
nativeEvent: event.nativeEvent,
|
|
364
|
+
})
|
|
365
|
+
} catch (error) {
|
|
366
|
+
console.error(
|
|
367
|
+
new Error(
|
|
368
|
+
`Raising "${event.behaviorEvent.type}" failed due to: ${error.message}`,
|
|
369
|
+
),
|
|
370
|
+
)
|
|
371
|
+
}
|
|
364
372
|
},
|
|
365
373
|
},
|
|
366
374
|
guards: {
|