@portabletext/editor 1.45.3 → 1.46.0
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/behavior.core.cjs +20 -0
- package/lib/_chunks-cjs/behavior.core.cjs.map +1 -1
- package/lib/_chunks-cjs/behavior.markdown.cjs +25 -25
- package/lib/_chunks-cjs/behavior.markdown.cjs.map +1 -1
- package/lib/_chunks-cjs/editor-provider.cjs +93 -59
- package/lib/_chunks-cjs/editor-provider.cjs.map +1 -1
- package/lib/_chunks-es/behavior.core.js +20 -0
- package/lib/_chunks-es/behavior.core.js.map +1 -1
- package/lib/_chunks-es/behavior.markdown.js +26 -26
- package/lib/_chunks-es/behavior.markdown.js.map +1 -1
- package/lib/_chunks-es/editor-provider.js +93 -59
- package/lib/_chunks-es/editor-provider.js.map +1 -1
- package/lib/_chunks-es/selector.is-selecting-entire-blocks.js +1 -1
- package/lib/behaviors/index.cjs +37 -53
- package/lib/behaviors/index.cjs.map +1 -1
- package/lib/behaviors/index.d.cts +52 -37
- package/lib/behaviors/index.d.ts +52 -37
- package/lib/behaviors/index.js +38 -54
- package/lib/behaviors/index.js.map +1 -1
- package/lib/index.d.cts +33 -37
- package/lib/index.d.ts +33 -37
- package/lib/plugins/index.cjs +23 -29
- package/lib/plugins/index.cjs.map +1 -1
- package/lib/plugins/index.d.cts +33 -37
- package/lib/plugins/index.d.ts +33 -37
- package/lib/plugins/index.js +24 -30
- package/lib/plugins/index.js.map +1 -1
- package/lib/selectors/index.d.cts +33 -37
- package/lib/selectors/index.d.ts +33 -37
- package/lib/utils/index.d.cts +33 -37
- package/lib/utils/index.d.ts +33 -37
- package/package.json +1 -1
- package/src/behaviors/behavior.decorator-pair.ts +16 -19
- package/src/behaviors/behavior.emoji-picker.ts +26 -45
- package/src/behaviors/behavior.links.ts +5 -4
- package/src/behaviors/behavior.markdown.ts +37 -34
- package/src/behaviors/behavior.perform-event.ts +67 -18
- package/src/behaviors/behavior.types.action.ts +39 -13
- package/src/behaviors/behavior.types.guard.ts +1 -6
- package/src/behaviors/index.ts +3 -0
- package/src/editor/components/Synchronizer.tsx +6 -3
- package/src/editor/create-editor.ts +1 -1
- package/src/editor/editor-machine.ts +8 -6
- package/src/plugins/plugin.decorator-shortcut.ts +6 -8
- package/src/plugins/plugin.one-line.tsx +4 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isKeySegment, isPortableTextTextBlock, isPortableTextSpan } from "@sanity/types";
|
|
2
|
-
import { getSelectedBlocks, getFocusSpan, isSelectionCollapsed, createGuards,
|
|
2
|
+
import { getSelectedBlocks, getFocusSpan, isSelectionCollapsed, createGuards, getSelectionStartPoint, getSelectionEndPoint, getFocusTextBlock, isSelectionExpanded, getSelectionStartBlock, getSelectionEndBlock } from "./selector.is-overlapping-selection.js";
|
|
3
3
|
import { isTextBlock } from "./parse-blocks.js";
|
|
4
4
|
import { isKeyedSegment, isEmptyTextBlock, getBlockStartPoint, getBlockEndPoint, isEqualSelectionPoints } from "./util.slice-blocks.js";
|
|
5
5
|
const getSelectedSpans = (snapshot) => {
|
package/lib/behaviors/index.cjs
CHANGED
|
@@ -98,17 +98,14 @@ function createEmojiPickerBehaviors(config) {
|
|
|
98
98
|
textBeforeLength: textBefore.length + 1
|
|
99
99
|
} : !1;
|
|
100
100
|
},
|
|
101
|
-
actions: [() => [{
|
|
101
|
+
actions: [() => [behavior_core.execute({
|
|
102
102
|
type: "insert.text",
|
|
103
103
|
text: ":"
|
|
104
|
-
}], (_, params) => [{
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
}, behavior_core.raise({
|
|
104
|
+
})], (_, params) => [behavior_core.effect(() => {
|
|
105
|
+
emojiPickerActor.send({
|
|
106
|
+
type: "select"
|
|
107
|
+
});
|
|
108
|
+
}), behavior_core.execute({
|
|
112
109
|
type: "delete.text",
|
|
113
110
|
at: {
|
|
114
111
|
anchor: {
|
|
@@ -120,10 +117,10 @@ function createEmojiPickerBehaviors(config) {
|
|
|
120
117
|
offset: params.textBeforeLength
|
|
121
118
|
}
|
|
122
119
|
}
|
|
123
|
-
}), {
|
|
120
|
+
}), behavior_core.execute({
|
|
124
121
|
type: "insert.text",
|
|
125
122
|
text: params.emoji
|
|
126
|
-
}]]
|
|
123
|
+
})]]
|
|
127
124
|
}), behavior_core.defineBehavior({
|
|
128
125
|
on: "keyboard.keydown",
|
|
129
126
|
guard: ({
|
|
@@ -163,14 +160,11 @@ function createEmojiPickerBehaviors(config) {
|
|
|
163
160
|
action: "navigate up"
|
|
164
161
|
} : !1;
|
|
165
162
|
},
|
|
166
|
-
actions: [(_, params) => params.action === "select" ? [{
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
}, behavior_core.raise({
|
|
163
|
+
actions: [(_, params) => params.action === "select" ? [behavior_core.effect(() => {
|
|
164
|
+
emojiPickerActor.send({
|
|
165
|
+
type: "select"
|
|
166
|
+
});
|
|
167
|
+
}), behavior_core.execute({
|
|
174
168
|
type: "delete.text",
|
|
175
169
|
at: {
|
|
176
170
|
anchor: {
|
|
@@ -182,45 +176,32 @@ function createEmojiPickerBehaviors(config) {
|
|
|
182
176
|
offset: params.textBeforeLength
|
|
183
177
|
}
|
|
184
178
|
}
|
|
185
|
-
}), {
|
|
179
|
+
}), behavior_core.execute({
|
|
186
180
|
type: "insert.text",
|
|
187
181
|
text: params.emoji
|
|
188
|
-
}] : params.action === "navigate up" ? [
|
|
182
|
+
})] : params.action === "navigate up" ? [
|
|
189
183
|
// If we are navigating then we want to hijack the key event and
|
|
190
184
|
// turn it into a noop.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
emojiPickerActor.send({
|
|
198
|
-
type: "navigate up"
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
}
|
|
185
|
+
behavior_core.noop(),
|
|
186
|
+
behavior_core.effect(() => {
|
|
187
|
+
emojiPickerActor.send({
|
|
188
|
+
type: "navigate up"
|
|
189
|
+
});
|
|
190
|
+
})
|
|
202
191
|
] : params.action === "navigate down" ? [
|
|
203
192
|
// If we are navigating then we want to hijack the key event and
|
|
204
193
|
// turn it into a noop.
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
type: "effect",
|
|
210
|
-
effect: () => {
|
|
211
|
-
emojiPickerActor.send({
|
|
212
|
-
type: "navigate down"
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
] : [{
|
|
217
|
-
type: "effect",
|
|
218
|
-
effect: () => {
|
|
194
|
+
behavior_core.noop(),
|
|
195
|
+
behavior_core.effect(() => {
|
|
219
196
|
emojiPickerActor.send({
|
|
220
|
-
type: "
|
|
197
|
+
type: "navigate down"
|
|
221
198
|
});
|
|
222
|
-
}
|
|
223
|
-
|
|
199
|
+
})
|
|
200
|
+
] : [behavior_core.effect(() => {
|
|
201
|
+
emojiPickerActor.send({
|
|
202
|
+
type: "reset"
|
|
203
|
+
});
|
|
204
|
+
})]]
|
|
224
205
|
}), behavior_core.defineBehavior({
|
|
225
206
|
on: "delete.backward",
|
|
226
207
|
guard: ({
|
|
@@ -357,10 +338,10 @@ function createLinkBehaviors(config) {
|
|
|
357
338
|
},
|
|
358
339
|
actions: [(_, {
|
|
359
340
|
annotation
|
|
360
|
-
}) => [{
|
|
341
|
+
}) => [behavior_core.execute({
|
|
361
342
|
type: "annotation.add",
|
|
362
343
|
annotation
|
|
363
|
-
}]]
|
|
344
|
+
})]]
|
|
364
345
|
}), pasteLinkAtCaret = behavior_core.defineBehavior({
|
|
365
346
|
on: "clipboard.paste",
|
|
366
347
|
guard: ({
|
|
@@ -383,16 +364,19 @@ function createLinkBehaviors(config) {
|
|
|
383
364
|
actions: [(_, {
|
|
384
365
|
annotation,
|
|
385
366
|
url
|
|
386
|
-
}) => [{
|
|
367
|
+
}) => [behavior_core.execute({
|
|
387
368
|
type: "insert.span",
|
|
388
369
|
text: url,
|
|
389
370
|
annotations: [annotation]
|
|
390
|
-
}]]
|
|
371
|
+
})]]
|
|
391
372
|
});
|
|
392
373
|
return [pasteLinkOnSelection, pasteLinkAtCaret];
|
|
393
374
|
}
|
|
394
375
|
exports.coreBehaviors = behavior_core.coreBehaviors;
|
|
395
376
|
exports.defineBehavior = behavior_core.defineBehavior;
|
|
377
|
+
exports.effect = behavior_core.effect;
|
|
378
|
+
exports.execute = behavior_core.execute;
|
|
379
|
+
exports.noop = behavior_core.noop;
|
|
396
380
|
exports.raise = behavior_core.raise;
|
|
397
381
|
exports.createMarkdownBehaviors = behavior_markdown.createMarkdownBehaviors;
|
|
398
382
|
exports.createCodeEditorBehaviors = createCodeEditorBehaviors;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/behaviors/behavior.code-editor.ts","../../src/behaviors/behavior.emoji-picker.ts","../../src/internal-utils/looks-like-url.ts","../../src/behaviors/behavior.links.ts"],"sourcesContent":["import {isHotkey} from '../internal-utils/is-hotkey'\nimport * as selectors from '../selectors'\nimport {raise} from './behavior.types.action'\nimport {defineBehavior} from './behavior.types.behavior'\n\n/**\n * @beta\n */\nexport type CodeEditorBehaviorsConfig = {\n moveBlockUpShortcut: string\n moveBlockDownShortcut: string\n}\n\n/**\n * @beta\n */\nexport function createCodeEditorBehaviors(config: CodeEditorBehaviorsConfig) {\n return [\n defineBehavior({\n on: 'keyboard.keydown',\n guard: ({snapshot, event}) => {\n const isMoveUpShortcut = isHotkey(\n config.moveBlockUpShortcut,\n event.originEvent,\n )\n const firstBlock = selectors.getFirstBlock(snapshot)\n const selectedBlocks = selectors.getSelectedBlocks(snapshot)\n const blocksAbove =\n firstBlock?.node._key !== selectedBlocks[0]?.node._key\n\n if (!isMoveUpShortcut || !blocksAbove) {\n return false\n }\n\n return {paths: selectedBlocks.map((block) => block.path)}\n },\n actions: [\n (_, {paths}) =>\n paths.map((at) =>\n raise({\n type: 'move.block up',\n at,\n }),\n ),\n ],\n }),\n defineBehavior({\n on: 'keyboard.keydown',\n guard: ({snapshot, event}) => {\n const isMoveDownShortcut = isHotkey(\n config.moveBlockDownShortcut,\n event.originEvent,\n )\n const lastBlock = selectors.getLastBlock(snapshot)\n const selectedBlocks = selectors.getSelectedBlocks(snapshot)\n const blocksBelow =\n lastBlock?.node._key !==\n selectedBlocks[selectedBlocks.length - 1]?.node._key\n\n if (!isMoveDownShortcut || !blocksBelow) {\n return false\n }\n\n return {paths: selectedBlocks.map((block) => block.path).reverse()}\n },\n actions: [\n (_, {paths}) =>\n paths.map((at) =>\n raise({\n type: 'move.block down',\n at,\n }),\n ),\n ],\n }),\n ]\n}\n","import {assertEvent, assign, createActor, setup} from 'xstate'\nimport {isHotkey} from '../internal-utils/is-hotkey'\nimport * as selectors from '../selectors'\nimport {raise} from './behavior.types.action'\nimport {defineBehavior} from './behavior.types.behavior'\n\nconst emojiCharRegEx = /^[a-zA-Z-_0-9]{1}$/\nconst incompleteEmojiRegEx = /:([a-zA-Z-_0-9]+)$/\nconst emojiRegEx = /:([a-zA-Z-_0-9]+):$/\n\n/**\n * @beta\n */\nexport type EmojiPickerBehaviorsConfig<TEmojiMatch> = {\n /**\n * Match emojis by keyword.\n */\n matchEmojis: ({keyword}: {keyword: string}) => Array<TEmojiMatch>\n onMatchesChanged: ({matches}: {matches: Array<TEmojiMatch>}) => void\n onSelectedIndexChanged: ({selectedIndex}: {selectedIndex: number}) => void\n /**\n * Parse an emoji match to a string that will be inserted into the editor.\n */\n parseMatch: ({match}: {match: TEmojiMatch}) => string | undefined\n}\n\n/**\n * @beta\n */\nexport function createEmojiPickerBehaviors<TEmojiMatch>(\n config: EmojiPickerBehaviorsConfig<TEmojiMatch>,\n) {\n const emojiPickerActor = createActor(createEmojiPickerMachine<TEmojiMatch>())\n emojiPickerActor.start()\n emojiPickerActor.subscribe((state) => {\n config.onMatchesChanged({matches: state.context.matches})\n config.onSelectedIndexChanged({selectedIndex: state.context.selectedIndex})\n })\n\n return [\n defineBehavior({\n on: 'insert.text',\n guard: ({snapshot, event}) => {\n if (event.text === ':') {\n return false\n }\n\n const isEmojiChar = emojiCharRegEx.test(event.text)\n\n if (!isEmojiChar) {\n return {emojis: []}\n }\n\n const focusBlock = selectors.getFocusTextBlock(snapshot)\n const textBefore = selectors.getBlockTextBefore(snapshot)\n const emojiKeyword = `${textBefore}${event.text}`.match(\n incompleteEmojiRegEx,\n )?.[1]\n\n if (!focusBlock || emojiKeyword === undefined) {\n return {emojis: []}\n }\n\n const emojis = config.matchEmojis({keyword: emojiKeyword})\n\n return {emojis}\n },\n actions: [\n (_, params) => [\n {\n type: 'effect',\n effect: () => {\n emojiPickerActor.send({\n type: 'emojis found',\n matches: params.emojis,\n })\n },\n },\n ],\n ],\n }),\n defineBehavior({\n on: 'insert.text',\n guard: ({snapshot, event}) => {\n const isColon = event.text === ':'\n\n if (!isColon) {\n return false\n }\n\n const matches = emojiPickerActor.getSnapshot().context.matches\n const selectedIndex =\n emojiPickerActor.getSnapshot().context.selectedIndex\n const emoji = matches[selectedIndex]\n ? config.parseMatch({match: matches[selectedIndex]})\n : undefined\n\n const focusBlock = selectors.getFocusTextBlock(snapshot)\n const textBefore = selectors.getBlockTextBefore(snapshot)\n const emojiKeyword = `${textBefore}:`.match(emojiRegEx)?.[1]\n\n if (!focusBlock || emojiKeyword === undefined) {\n return false\n }\n\n const emojiStringLength = emojiKeyword.length + 2\n\n if (emoji) {\n return {\n focusBlock,\n emoji,\n emojiStringLength,\n textBeforeLength: textBefore.length + 1,\n }\n }\n\n return false\n },\n actions: [\n () => [\n {\n type: 'insert.text',\n text: ':',\n },\n ],\n (_, params) => [\n {\n type: 'effect',\n effect: () => {\n emojiPickerActor.send({type: 'select'})\n },\n },\n raise({\n type: 'delete.text',\n at: {\n anchor: {\n path: params.focusBlock.path,\n offset: params.textBeforeLength - params.emojiStringLength,\n },\n focus: {\n path: params.focusBlock.path,\n offset: params.textBeforeLength,\n },\n },\n }),\n {\n type: 'insert.text',\n text: params.emoji,\n },\n ],\n ],\n }),\n defineBehavior({\n on: 'keyboard.keydown',\n guard: ({snapshot, event}) => {\n const matches = emojiPickerActor.getSnapshot().context.matches\n\n if (matches.length === 0) {\n return false\n }\n\n const isEscape = isHotkey('Escape', event.originEvent)\n\n if (isEscape) {\n return {action: 'reset' as const}\n }\n\n const isEnter = isHotkey('Enter', event.originEvent)\n const isTab = isHotkey('Tab', event.originEvent)\n\n if (isEnter || isTab) {\n const selectedIndex =\n emojiPickerActor.getSnapshot().context.selectedIndex\n\n const emoji = matches[selectedIndex]\n ? config.parseMatch({match: matches[selectedIndex]})\n : undefined\n\n if (!emoji) {\n return false\n }\n\n const focusBlock = selectors.getFocusTextBlock(snapshot)\n const textBefore = selectors.getBlockTextBefore(snapshot)\n const emojiKeyword = textBefore.match(incompleteEmojiRegEx)?.[1]\n\n if (!focusBlock || emojiKeyword === undefined) {\n return false\n }\n\n const emojiStringLength = emojiKeyword.length + 1\n\n if (emoji) {\n return {\n action: 'select' as const,\n focusBlock,\n emoji,\n emojiStringLength,\n textBeforeLength: textBefore.length,\n }\n }\n\n return false\n }\n\n const isArrowDown = isHotkey('ArrowDown', event.originEvent)\n const isArrowUp = isHotkey('ArrowUp', event.originEvent)\n\n if (isArrowDown && matches.length > 0) {\n return {action: 'navigate down' as const}\n }\n\n if (isArrowUp && matches.length > 0) {\n return {action: 'navigate up' as const}\n }\n\n return false\n },\n actions: [\n (_, params) => {\n if (params.action === 'select') {\n return [\n {\n type: 'effect',\n effect: () => {\n emojiPickerActor.send({type: 'select'})\n },\n },\n raise({\n type: 'delete.text',\n at: {\n anchor: {\n path: params.focusBlock.path,\n offset: params.textBeforeLength - params.emojiStringLength,\n },\n focus: {\n path: params.focusBlock.path,\n offset: params.textBeforeLength,\n },\n },\n }),\n {\n type: 'insert.text',\n text: params.emoji,\n },\n ]\n }\n\n if (params.action === 'navigate up') {\n return [\n // If we are navigating then we want to hijack the key event and\n // turn it into a noop.\n {\n type: 'noop',\n },\n {\n type: 'effect',\n effect: () => {\n emojiPickerActor.send({type: 'navigate up'})\n },\n },\n ]\n }\n\n if (params.action === 'navigate down') {\n return [\n // If we are navigating then we want to hijack the key event and\n // turn it into a noop.\n {\n type: 'noop',\n },\n {\n type: 'effect',\n effect: () => {\n emojiPickerActor.send({type: 'navigate down'})\n },\n },\n ]\n }\n\n return [\n {\n type: 'effect',\n effect: () => {\n emojiPickerActor.send({type: 'reset'})\n },\n },\n ]\n },\n ],\n }),\n defineBehavior({\n on: 'delete.backward',\n guard: ({snapshot, event}) => {\n if (event.unit !== 'character') {\n return false\n }\n\n const matches = emojiPickerActor.getSnapshot().context.matches\n\n if (matches.length === 0) {\n return false\n }\n\n const focusBlock = selectors.getFocusTextBlock(snapshot)\n const textBefore = selectors.getBlockTextBefore(snapshot)\n const emojiKeyword = textBefore\n .slice(0, textBefore.length - 1)\n .match(incompleteEmojiRegEx)?.[1]\n\n if (!focusBlock || emojiKeyword === undefined) {\n return {emojis: []}\n }\n\n const emojis = config.matchEmojis({keyword: emojiKeyword})\n\n return {emojis}\n },\n actions: [\n (_, params) => [\n {\n type: 'effect',\n effect: () => {\n emojiPickerActor.send({\n type: 'emojis found',\n matches: params.emojis,\n })\n },\n },\n ],\n ],\n }),\n ]\n}\n\nfunction createEmojiPickerMachine<TEmojiSearchResult>() {\n return setup({\n types: {\n context: {} as {\n matches: Array<TEmojiSearchResult>\n selectedIndex: number\n },\n events: {} as\n | {\n type: 'emojis found'\n matches: Array<TEmojiSearchResult>\n }\n | {\n type: 'navigate down' | 'navigate up' | 'select' | 'reset'\n },\n },\n actions: {\n 'assign matches': assign({\n matches: ({event}) => {\n assertEvent(event, 'emojis found')\n return event.matches\n },\n }),\n 'reset matches': assign({\n matches: [],\n }),\n 'reset selected index': assign({\n selectedIndex: 0,\n }),\n 'increment selected index': assign({\n selectedIndex: ({context}) => {\n if (context.selectedIndex === context.matches.length - 1) {\n return 0\n }\n return context.selectedIndex + 1\n },\n }),\n 'decrement selected index': assign({\n selectedIndex: ({context}) => {\n if (context.selectedIndex === 0) {\n return context.matches.length - 1\n }\n return context.selectedIndex - 1\n },\n }),\n },\n guards: {\n 'no matches': ({context}) => context.matches.length === 0,\n },\n }).createMachine({\n id: 'emoji picker',\n context: {\n matches: [],\n selectedIndex: 0,\n },\n initial: 'idle',\n states: {\n 'idle': {\n on: {\n 'emojis found': {\n actions: 'assign matches',\n target: 'showing matches',\n },\n },\n },\n 'showing matches': {\n always: {\n guard: 'no matches',\n target: 'idle',\n },\n exit: ['reset selected index'],\n on: {\n 'emojis found': {\n actions: 'assign matches',\n },\n 'navigate down': {\n actions: 'increment selected index',\n },\n 'navigate up': {\n actions: 'decrement selected index',\n },\n 'reset': {\n target: 'idle',\n actions: ['reset selected index', 'reset matches'],\n },\n 'select': {\n target: 'idle',\n actions: ['reset selected index', 'reset matches'],\n },\n },\n },\n },\n })\n}\n","export function looksLikeUrl(text: string) {\n let looksLikeUrl = false\n try {\n const url = new URL(text)\n\n if (!sensibleProtocols.includes(url.protocol)) {\n return false\n }\n\n looksLikeUrl = true\n } catch {}\n return looksLikeUrl\n}\n\nconst sensibleProtocols = ['http:', 'https:', 'mailto:', 'tel:']\n","import type {EditorSchema} from '../editor/define-schema'\nimport {looksLikeUrl} from '../internal-utils/looks-like-url'\nimport * as selectors from '../selectors'\nimport {defineBehavior} from './behavior.types.behavior'\n\n/**\n * @beta\n */\nexport type LinkBehaviorsConfig = {\n linkAnnotation?: (context: {\n schema: EditorSchema\n url: string\n }) => {name: string; value: {[prop: string]: unknown}} | undefined\n}\n\n/**\n * @beta\n */\nexport function createLinkBehaviors(config: LinkBehaviorsConfig) {\n const pasteLinkOnSelection = defineBehavior({\n on: 'clipboard.paste',\n guard: ({snapshot, event}) => {\n const selectionCollapsed = selectors.isSelectionCollapsed(snapshot)\n const text = event.originEvent.dataTransfer.getData('text/plain')\n const url = looksLikeUrl(text) ? text : undefined\n const annotation =\n url !== undefined\n ? config.linkAnnotation?.({url, schema: snapshot.context.schema})\n : undefined\n\n if (annotation && !selectionCollapsed) {\n return {annotation}\n }\n\n return false\n },\n actions: [\n (_, {annotation}) => [\n {\n type: 'annotation.add',\n annotation,\n },\n ],\n ],\n })\n const pasteLinkAtCaret = defineBehavior({\n on: 'clipboard.paste',\n guard: ({snapshot, event}) => {\n const focusSpan = selectors.getFocusSpan(snapshot)\n const selectionCollapsed = selectors.isSelectionCollapsed(snapshot)\n\n if (!focusSpan || !selectionCollapsed) {\n return false\n }\n\n const text = event.originEvent.dataTransfer.getData('text/plain')\n const url = looksLikeUrl(text) ? text : undefined\n const annotation =\n url !== undefined\n ? config.linkAnnotation?.({url, schema: snapshot.context.schema})\n : undefined\n\n if (url && annotation && selectionCollapsed) {\n return {focusSpan, annotation, url}\n }\n\n return false\n },\n actions: [\n (_, {annotation, url}) => [\n {\n type: 'insert.span',\n text: url,\n annotations: [annotation],\n },\n ],\n ],\n })\n\n const linkBehaviors = [pasteLinkOnSelection, pasteLinkAtCaret]\n\n return linkBehaviors\n}\n"],"names":["createCodeEditorBehaviors","config","defineBehavior","on","guard","snapshot","event","isMoveUpShortcut","isHotkey","moveBlockUpShortcut","originEvent","firstBlock","selectors","getFirstBlock","selectedBlocks","blocksAbove","node","_key","paths","map","block","path","actions","_","at","raise","type","isMoveDownShortcut","moveBlockDownShortcut","lastBlock","blocksBelow","length","reverse","emojiCharRegEx","incompleteEmojiRegEx","emojiRegEx","createEmojiPickerBehaviors","emojiPickerActor","createActor","createEmojiPickerMachine","start","subscribe","state","onMatchesChanged","matches","context","onSelectedIndexChanged","selectedIndex","text","test","emojis","focusBlock","emojiKeyword","match","undefined","matchEmojis","keyword","params","effect","send","getSnapshot","emoji","parseMatch","textBefore","emojiStringLength","textBeforeLength","anchor","offset","focus","action","isEnter","isTab","isArrowDown","isArrowUp","unit","slice","setup","types","events","assign","assertEvent","guards","no matches","createMachine","id","initial","states","target","always","exit","looksLikeUrl","url","URL","sensibleProtocols","includes","protocol","createLinkBehaviors","pasteLinkOnSelection","selectionCollapsed","dataTransfer","getData","annotation","linkAnnotation","schema","pasteLinkAtCaret","focusSpan","annotations"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/behaviors/behavior.code-editor.ts","../../src/behaviors/behavior.emoji-picker.ts","../../src/internal-utils/looks-like-url.ts","../../src/behaviors/behavior.links.ts"],"sourcesContent":["import {isHotkey} from '../internal-utils/is-hotkey'\nimport * as selectors from '../selectors'\nimport {raise} from './behavior.types.action'\nimport {defineBehavior} from './behavior.types.behavior'\n\n/**\n * @beta\n */\nexport type CodeEditorBehaviorsConfig = {\n moveBlockUpShortcut: string\n moveBlockDownShortcut: string\n}\n\n/**\n * @beta\n */\nexport function createCodeEditorBehaviors(config: CodeEditorBehaviorsConfig) {\n return [\n defineBehavior({\n on: 'keyboard.keydown',\n guard: ({snapshot, event}) => {\n const isMoveUpShortcut = isHotkey(\n config.moveBlockUpShortcut,\n event.originEvent,\n )\n const firstBlock = selectors.getFirstBlock(snapshot)\n const selectedBlocks = selectors.getSelectedBlocks(snapshot)\n const blocksAbove =\n firstBlock?.node._key !== selectedBlocks[0]?.node._key\n\n if (!isMoveUpShortcut || !blocksAbove) {\n return false\n }\n\n return {paths: selectedBlocks.map((block) => block.path)}\n },\n actions: [\n (_, {paths}) =>\n paths.map((at) =>\n raise({\n type: 'move.block up',\n at,\n }),\n ),\n ],\n }),\n defineBehavior({\n on: 'keyboard.keydown',\n guard: ({snapshot, event}) => {\n const isMoveDownShortcut = isHotkey(\n config.moveBlockDownShortcut,\n event.originEvent,\n )\n const lastBlock = selectors.getLastBlock(snapshot)\n const selectedBlocks = selectors.getSelectedBlocks(snapshot)\n const blocksBelow =\n lastBlock?.node._key !==\n selectedBlocks[selectedBlocks.length - 1]?.node._key\n\n if (!isMoveDownShortcut || !blocksBelow) {\n return false\n }\n\n return {paths: selectedBlocks.map((block) => block.path).reverse()}\n },\n actions: [\n (_, {paths}) =>\n paths.map((at) =>\n raise({\n type: 'move.block down',\n at,\n }),\n ),\n ],\n }),\n ]\n}\n","import {assertEvent, assign, createActor, setup} from 'xstate'\nimport {isHotkey} from '../internal-utils/is-hotkey'\nimport * as selectors from '../selectors'\nimport {effect, execute, noop} from './behavior.types.action'\nimport {defineBehavior} from './behavior.types.behavior'\n\nconst emojiCharRegEx = /^[a-zA-Z-_0-9]{1}$/\nconst incompleteEmojiRegEx = /:([a-zA-Z-_0-9]+)$/\nconst emojiRegEx = /:([a-zA-Z-_0-9]+):$/\n\n/**\n * @beta\n */\nexport type EmojiPickerBehaviorsConfig<TEmojiMatch> = {\n /**\n * Match emojis by keyword.\n */\n matchEmojis: ({keyword}: {keyword: string}) => Array<TEmojiMatch>\n onMatchesChanged: ({matches}: {matches: Array<TEmojiMatch>}) => void\n onSelectedIndexChanged: ({selectedIndex}: {selectedIndex: number}) => void\n /**\n * Parse an emoji match to a string that will be inserted into the editor.\n */\n parseMatch: ({match}: {match: TEmojiMatch}) => string | undefined\n}\n\n/**\n * @beta\n */\nexport function createEmojiPickerBehaviors<TEmojiMatch>(\n config: EmojiPickerBehaviorsConfig<TEmojiMatch>,\n) {\n const emojiPickerActor = createActor(createEmojiPickerMachine<TEmojiMatch>())\n emojiPickerActor.start()\n emojiPickerActor.subscribe((state) => {\n config.onMatchesChanged({matches: state.context.matches})\n config.onSelectedIndexChanged({selectedIndex: state.context.selectedIndex})\n })\n\n return [\n defineBehavior({\n on: 'insert.text',\n guard: ({snapshot, event}) => {\n if (event.text === ':') {\n return false\n }\n\n const isEmojiChar = emojiCharRegEx.test(event.text)\n\n if (!isEmojiChar) {\n return {emojis: []}\n }\n\n const focusBlock = selectors.getFocusTextBlock(snapshot)\n const textBefore = selectors.getBlockTextBefore(snapshot)\n const emojiKeyword = `${textBefore}${event.text}`.match(\n incompleteEmojiRegEx,\n )?.[1]\n\n if (!focusBlock || emojiKeyword === undefined) {\n return {emojis: []}\n }\n\n const emojis = config.matchEmojis({keyword: emojiKeyword})\n\n return {emojis}\n },\n actions: [\n (_, params) => [\n {\n type: 'effect',\n effect: () => {\n emojiPickerActor.send({\n type: 'emojis found',\n matches: params.emojis,\n })\n },\n },\n ],\n ],\n }),\n defineBehavior({\n on: 'insert.text',\n guard: ({snapshot, event}) => {\n const isColon = event.text === ':'\n\n if (!isColon) {\n return false\n }\n\n const matches = emojiPickerActor.getSnapshot().context.matches\n const selectedIndex =\n emojiPickerActor.getSnapshot().context.selectedIndex\n const emoji = matches[selectedIndex]\n ? config.parseMatch({match: matches[selectedIndex]})\n : undefined\n\n const focusBlock = selectors.getFocusTextBlock(snapshot)\n const textBefore = selectors.getBlockTextBefore(snapshot)\n const emojiKeyword = `${textBefore}:`.match(emojiRegEx)?.[1]\n\n if (!focusBlock || emojiKeyword === undefined) {\n return false\n }\n\n const emojiStringLength = emojiKeyword.length + 2\n\n if (emoji) {\n return {\n focusBlock,\n emoji,\n emojiStringLength,\n textBeforeLength: textBefore.length + 1,\n }\n }\n\n return false\n },\n actions: [\n () => [\n execute({\n type: 'insert.text',\n text: ':',\n }),\n ],\n (_, params) => [\n effect(() => {\n emojiPickerActor.send({type: 'select'})\n }),\n execute({\n type: 'delete.text',\n at: {\n anchor: {\n path: params.focusBlock.path,\n offset: params.textBeforeLength - params.emojiStringLength,\n },\n focus: {\n path: params.focusBlock.path,\n offset: params.textBeforeLength,\n },\n },\n }),\n execute({\n type: 'insert.text',\n text: params.emoji,\n }),\n ],\n ],\n }),\n defineBehavior({\n on: 'keyboard.keydown',\n guard: ({snapshot, event}) => {\n const matches = emojiPickerActor.getSnapshot().context.matches\n\n if (matches.length === 0) {\n return false\n }\n\n const isEscape = isHotkey('Escape', event.originEvent)\n\n if (isEscape) {\n return {action: 'reset' as const}\n }\n\n const isEnter = isHotkey('Enter', event.originEvent)\n const isTab = isHotkey('Tab', event.originEvent)\n\n if (isEnter || isTab) {\n const selectedIndex =\n emojiPickerActor.getSnapshot().context.selectedIndex\n\n const emoji = matches[selectedIndex]\n ? config.parseMatch({match: matches[selectedIndex]})\n : undefined\n\n if (!emoji) {\n return false\n }\n\n const focusBlock = selectors.getFocusTextBlock(snapshot)\n const textBefore = selectors.getBlockTextBefore(snapshot)\n const emojiKeyword = textBefore.match(incompleteEmojiRegEx)?.[1]\n\n if (!focusBlock || emojiKeyword === undefined) {\n return false\n }\n\n const emojiStringLength = emojiKeyword.length + 1\n\n if (emoji) {\n return {\n action: 'select' as const,\n focusBlock,\n emoji,\n emojiStringLength,\n textBeforeLength: textBefore.length,\n }\n }\n\n return false\n }\n\n const isArrowDown = isHotkey('ArrowDown', event.originEvent)\n const isArrowUp = isHotkey('ArrowUp', event.originEvent)\n\n if (isArrowDown && matches.length > 0) {\n return {action: 'navigate down' as const}\n }\n\n if (isArrowUp && matches.length > 0) {\n return {action: 'navigate up' as const}\n }\n\n return false\n },\n actions: [\n (_, params) => {\n if (params.action === 'select') {\n return [\n effect(() => {\n emojiPickerActor.send({type: 'select'})\n }),\n execute({\n type: 'delete.text',\n at: {\n anchor: {\n path: params.focusBlock.path,\n offset: params.textBeforeLength - params.emojiStringLength,\n },\n focus: {\n path: params.focusBlock.path,\n offset: params.textBeforeLength,\n },\n },\n }),\n execute({\n type: 'insert.text',\n text: params.emoji,\n }),\n ]\n }\n\n if (params.action === 'navigate up') {\n return [\n // If we are navigating then we want to hijack the key event and\n // turn it into a noop.\n noop(),\n effect(() => {\n emojiPickerActor.send({type: 'navigate up'})\n }),\n ]\n }\n\n if (params.action === 'navigate down') {\n return [\n // If we are navigating then we want to hijack the key event and\n // turn it into a noop.\n noop(),\n effect(() => {\n emojiPickerActor.send({type: 'navigate down'})\n }),\n ]\n }\n\n return [\n effect(() => {\n emojiPickerActor.send({type: 'reset'})\n }),\n ]\n },\n ],\n }),\n defineBehavior({\n on: 'delete.backward',\n guard: ({snapshot, event}) => {\n if (event.unit !== 'character') {\n return false\n }\n\n const matches = emojiPickerActor.getSnapshot().context.matches\n\n if (matches.length === 0) {\n return false\n }\n\n const focusBlock = selectors.getFocusTextBlock(snapshot)\n const textBefore = selectors.getBlockTextBefore(snapshot)\n const emojiKeyword = textBefore\n .slice(0, textBefore.length - 1)\n .match(incompleteEmojiRegEx)?.[1]\n\n if (!focusBlock || emojiKeyword === undefined) {\n return {emojis: []}\n }\n\n const emojis = config.matchEmojis({keyword: emojiKeyword})\n\n return {emojis}\n },\n actions: [\n (_, params) => [\n {\n type: 'effect',\n effect: () => {\n emojiPickerActor.send({\n type: 'emojis found',\n matches: params.emojis,\n })\n },\n },\n ],\n ],\n }),\n ]\n}\n\nfunction createEmojiPickerMachine<TEmojiSearchResult>() {\n return setup({\n types: {\n context: {} as {\n matches: Array<TEmojiSearchResult>\n selectedIndex: number\n },\n events: {} as\n | {\n type: 'emojis found'\n matches: Array<TEmojiSearchResult>\n }\n | {\n type: 'navigate down' | 'navigate up' | 'select' | 'reset'\n },\n },\n actions: {\n 'assign matches': assign({\n matches: ({event}) => {\n assertEvent(event, 'emojis found')\n return event.matches\n },\n }),\n 'reset matches': assign({\n matches: [],\n }),\n 'reset selected index': assign({\n selectedIndex: 0,\n }),\n 'increment selected index': assign({\n selectedIndex: ({context}) => {\n if (context.selectedIndex === context.matches.length - 1) {\n return 0\n }\n return context.selectedIndex + 1\n },\n }),\n 'decrement selected index': assign({\n selectedIndex: ({context}) => {\n if (context.selectedIndex === 0) {\n return context.matches.length - 1\n }\n return context.selectedIndex - 1\n },\n }),\n },\n guards: {\n 'no matches': ({context}) => context.matches.length === 0,\n },\n }).createMachine({\n id: 'emoji picker',\n context: {\n matches: [],\n selectedIndex: 0,\n },\n initial: 'idle',\n states: {\n 'idle': {\n on: {\n 'emojis found': {\n actions: 'assign matches',\n target: 'showing matches',\n },\n },\n },\n 'showing matches': {\n always: {\n guard: 'no matches',\n target: 'idle',\n },\n exit: ['reset selected index'],\n on: {\n 'emojis found': {\n actions: 'assign matches',\n },\n 'navigate down': {\n actions: 'increment selected index',\n },\n 'navigate up': {\n actions: 'decrement selected index',\n },\n 'reset': {\n target: 'idle',\n actions: ['reset selected index', 'reset matches'],\n },\n 'select': {\n target: 'idle',\n actions: ['reset selected index', 'reset matches'],\n },\n },\n },\n },\n })\n}\n","export function looksLikeUrl(text: string) {\n let looksLikeUrl = false\n try {\n const url = new URL(text)\n\n if (!sensibleProtocols.includes(url.protocol)) {\n return false\n }\n\n looksLikeUrl = true\n } catch {}\n return looksLikeUrl\n}\n\nconst sensibleProtocols = ['http:', 'https:', 'mailto:', 'tel:']\n","import type {EditorSchema} from '../editor/define-schema'\nimport {looksLikeUrl} from '../internal-utils/looks-like-url'\nimport * as selectors from '../selectors'\nimport {execute} from './behavior.types.action'\nimport {defineBehavior} from './behavior.types.behavior'\n\n/**\n * @beta\n */\nexport type LinkBehaviorsConfig = {\n linkAnnotation?: (context: {\n schema: EditorSchema\n url: string\n }) => {name: string; value: {[prop: string]: unknown}} | undefined\n}\n\n/**\n * @beta\n */\nexport function createLinkBehaviors(config: LinkBehaviorsConfig) {\n const pasteLinkOnSelection = defineBehavior({\n on: 'clipboard.paste',\n guard: ({snapshot, event}) => {\n const selectionCollapsed = selectors.isSelectionCollapsed(snapshot)\n const text = event.originEvent.dataTransfer.getData('text/plain')\n const url = looksLikeUrl(text) ? text : undefined\n const annotation =\n url !== undefined\n ? config.linkAnnotation?.({url, schema: snapshot.context.schema})\n : undefined\n\n if (annotation && !selectionCollapsed) {\n return {annotation}\n }\n\n return false\n },\n actions: [\n (_, {annotation}) => [\n execute({\n type: 'annotation.add',\n annotation,\n }),\n ],\n ],\n })\n const pasteLinkAtCaret = defineBehavior({\n on: 'clipboard.paste',\n guard: ({snapshot, event}) => {\n const focusSpan = selectors.getFocusSpan(snapshot)\n const selectionCollapsed = selectors.isSelectionCollapsed(snapshot)\n\n if (!focusSpan || !selectionCollapsed) {\n return false\n }\n\n const text = event.originEvent.dataTransfer.getData('text/plain')\n const url = looksLikeUrl(text) ? text : undefined\n const annotation =\n url !== undefined\n ? config.linkAnnotation?.({url, schema: snapshot.context.schema})\n : undefined\n\n if (url && annotation && selectionCollapsed) {\n return {focusSpan, annotation, url}\n }\n\n return false\n },\n actions: [\n (_, {annotation, url}) => [\n execute({\n type: 'insert.span',\n text: url,\n annotations: [annotation],\n }),\n ],\n ],\n })\n\n const linkBehaviors = [pasteLinkOnSelection, pasteLinkAtCaret]\n\n return linkBehaviors\n}\n"],"names":["createCodeEditorBehaviors","config","defineBehavior","on","guard","snapshot","event","isMoveUpShortcut","isHotkey","moveBlockUpShortcut","originEvent","firstBlock","selectors","getFirstBlock","selectedBlocks","blocksAbove","node","_key","paths","map","block","path","actions","_","at","raise","type","isMoveDownShortcut","moveBlockDownShortcut","lastBlock","blocksBelow","length","reverse","emojiCharRegEx","incompleteEmojiRegEx","emojiRegEx","createEmojiPickerBehaviors","emojiPickerActor","createActor","createEmojiPickerMachine","start","subscribe","state","onMatchesChanged","matches","context","onSelectedIndexChanged","selectedIndex","text","test","emojis","focusBlock","emojiKeyword","match","undefined","matchEmojis","keyword","params","effect","send","getSnapshot","emoji","parseMatch","textBefore","emojiStringLength","textBeforeLength","execute","anchor","offset","focus","action","isEnter","isTab","isArrowDown","isArrowUp","noop","unit","slice","setup","types","events","assign","assertEvent","guards","no matches","createMachine","id","initial","states","target","always","exit","looksLikeUrl","url","URL","sensibleProtocols","includes","protocol","createLinkBehaviors","pasteLinkOnSelection","selectionCollapsed","dataTransfer","getData","annotation","linkAnnotation","schema","pasteLinkAtCaret","focusSpan","annotations"],"mappings":"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"}
|
|
@@ -275,7 +275,13 @@ export declare type Behavior<
|
|
|
275
275
|
* @beta
|
|
276
276
|
*/
|
|
277
277
|
export declare type BehaviorAction =
|
|
278
|
-
|
|
|
278
|
+
| {
|
|
279
|
+
type: 'execute'
|
|
280
|
+
event:
|
|
281
|
+
| AbstractBehaviorEvent
|
|
282
|
+
| SyntheticBehaviorEvent
|
|
283
|
+
| CustomBehaviorEvent
|
|
284
|
+
}
|
|
279
285
|
| {
|
|
280
286
|
type: 'raise'
|
|
281
287
|
event:
|
|
@@ -296,11 +302,6 @@ export declare type BehaviorAction =
|
|
|
296
302
|
*/
|
|
297
303
|
export declare type BehaviorActionSet<TBehaviorEvent, TGuardResponse> = (
|
|
298
304
|
payload: {
|
|
299
|
-
/**
|
|
300
|
-
* @deprecated
|
|
301
|
-
* Use `snapshot` instead
|
|
302
|
-
*/
|
|
303
|
-
context: EditorContext
|
|
304
305
|
snapshot: EditorSnapshot
|
|
305
306
|
event: TBehaviorEvent
|
|
306
307
|
},
|
|
@@ -326,11 +327,6 @@ declare type BehaviorEventTypeNamespace =
|
|
|
326
327
|
* @beta
|
|
327
328
|
*/
|
|
328
329
|
export declare type BehaviorGuard<TBehaviorEvent, TGuardResponse> = (payload: {
|
|
329
|
-
/**
|
|
330
|
-
* @deprecated
|
|
331
|
-
* Use `snapshot` instead
|
|
332
|
-
*/
|
|
333
|
-
context: EditorContext
|
|
334
330
|
snapshot: EditorSnapshot
|
|
335
331
|
event: TBehaviorEvent
|
|
336
332
|
}) => TGuardResponse | false
|
|
@@ -8789,7 +8785,7 @@ declare const editorMachine: StateMachine<
|
|
|
8789
8785
|
initialReadOnly: boolean
|
|
8790
8786
|
maxBlocks: number | undefined
|
|
8791
8787
|
selection: EditorSelection_2
|
|
8792
|
-
|
|
8788
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
8793
8789
|
internalDrag?: {
|
|
8794
8790
|
ghost?: HTMLElement
|
|
8795
8791
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -8996,7 +8992,7 @@ declare const editorMachine: StateMachine<
|
|
|
8996
8992
|
maxBlocks?: number
|
|
8997
8993
|
readOnly?: boolean
|
|
8998
8994
|
schema: EditorSchema
|
|
8999
|
-
|
|
8995
|
+
initialValue?: Array<PortableTextBlock>
|
|
9000
8996
|
},
|
|
9001
8997
|
NonReducibleUnknown,
|
|
9002
8998
|
| PatchEvent
|
|
@@ -9081,7 +9077,7 @@ declare const editorMachine: StateMachine<
|
|
|
9081
9077
|
maxBlocks?: number
|
|
9082
9078
|
readOnly?: boolean
|
|
9083
9079
|
schema: EditorSchema
|
|
9084
|
-
|
|
9080
|
+
initialValue?: Array<PortableTextBlock>
|
|
9085
9081
|
}
|
|
9086
9082
|
self: ActorRef<
|
|
9087
9083
|
MachineSnapshot<
|
|
@@ -9094,7 +9090,7 @@ declare const editorMachine: StateMachine<
|
|
|
9094
9090
|
initialReadOnly: boolean
|
|
9095
9091
|
maxBlocks: number | undefined
|
|
9096
9092
|
selection: EditorSelection_2
|
|
9097
|
-
|
|
9093
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
9098
9094
|
internalDrag?: {
|
|
9099
9095
|
ghost?: HTMLElement
|
|
9100
9096
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -9358,7 +9354,7 @@ declare const editorMachine: StateMachine<
|
|
|
9358
9354
|
selection: null
|
|
9359
9355
|
initialReadOnly: boolean
|
|
9360
9356
|
maxBlocks: number | undefined
|
|
9361
|
-
|
|
9357
|
+
incomingValue: PortableTextBlock[] | undefined
|
|
9362
9358
|
}
|
|
9363
9359
|
readonly on: {
|
|
9364
9360
|
readonly 'notify.blurred': {
|
|
@@ -9372,7 +9368,7 @@ declare const editorMachine: StateMachine<
|
|
|
9372
9368
|
initialReadOnly: boolean
|
|
9373
9369
|
maxBlocks: number | undefined
|
|
9374
9370
|
selection: EditorSelection_2
|
|
9375
|
-
|
|
9371
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
9376
9372
|
internalDrag?: {
|
|
9377
9373
|
ghost?: HTMLElement
|
|
9378
9374
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -9567,7 +9563,7 @@ declare const editorMachine: StateMachine<
|
|
|
9567
9563
|
initialReadOnly: boolean
|
|
9568
9564
|
maxBlocks: number | undefined
|
|
9569
9565
|
selection: EditorSelection_2
|
|
9570
|
-
|
|
9566
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
9571
9567
|
internalDrag?: {
|
|
9572
9568
|
ghost?: HTMLElement
|
|
9573
9569
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -9761,7 +9757,7 @@ declare const editorMachine: StateMachine<
|
|
|
9761
9757
|
initialReadOnly: boolean
|
|
9762
9758
|
maxBlocks: number | undefined
|
|
9763
9759
|
selection: EditorSelection_2
|
|
9764
|
-
|
|
9760
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
9765
9761
|
internalDrag?: {
|
|
9766
9762
|
ghost?: HTMLElement
|
|
9767
9763
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -9958,7 +9954,7 @@ declare const editorMachine: StateMachine<
|
|
|
9958
9954
|
initialReadOnly: boolean
|
|
9959
9955
|
maxBlocks: number | undefined
|
|
9960
9956
|
selection: EditorSelection_2
|
|
9961
|
-
|
|
9957
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
9962
9958
|
internalDrag?: {
|
|
9963
9959
|
ghost?: HTMLElement
|
|
9964
9960
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -10154,7 +10150,7 @@ declare const editorMachine: StateMachine<
|
|
|
10154
10150
|
initialReadOnly: boolean
|
|
10155
10151
|
maxBlocks: number | undefined
|
|
10156
10152
|
selection: EditorSelection_2
|
|
10157
|
-
|
|
10153
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
10158
10154
|
internalDrag?: {
|
|
10159
10155
|
ghost?: HTMLElement
|
|
10160
10156
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -10350,7 +10346,7 @@ declare const editorMachine: StateMachine<
|
|
|
10350
10346
|
initialReadOnly: boolean
|
|
10351
10347
|
maxBlocks: number | undefined
|
|
10352
10348
|
selection: EditorSelection_2
|
|
10353
|
-
|
|
10349
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
10354
10350
|
internalDrag?: {
|
|
10355
10351
|
ghost?: HTMLElement
|
|
10356
10352
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -10497,7 +10493,7 @@ declare const editorMachine: StateMachine<
|
|
|
10497
10493
|
initialReadOnly: boolean
|
|
10498
10494
|
maxBlocks: number | undefined
|
|
10499
10495
|
selection: EditorSelection_2
|
|
10500
|
-
|
|
10496
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
10501
10497
|
internalDrag?: {
|
|
10502
10498
|
ghost?: HTMLElement
|
|
10503
10499
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -10693,7 +10689,7 @@ declare const editorMachine: StateMachine<
|
|
|
10693
10689
|
initialReadOnly: boolean
|
|
10694
10690
|
maxBlocks: number | undefined
|
|
10695
10691
|
selection: EditorSelection_2
|
|
10696
|
-
|
|
10692
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
10697
10693
|
internalDrag?: {
|
|
10698
10694
|
ghost?: HTMLElement
|
|
10699
10695
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -10888,7 +10884,7 @@ declare const editorMachine: StateMachine<
|
|
|
10888
10884
|
initialReadOnly: boolean
|
|
10889
10885
|
maxBlocks: number | undefined
|
|
10890
10886
|
selection: EditorSelection_2
|
|
10891
|
-
|
|
10887
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
10892
10888
|
internalDrag?: {
|
|
10893
10889
|
ghost?: HTMLElement
|
|
10894
10890
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -11082,7 +11078,7 @@ declare const editorMachine: StateMachine<
|
|
|
11082
11078
|
initialReadOnly: boolean
|
|
11083
11079
|
maxBlocks: number | undefined
|
|
11084
11080
|
selection: EditorSelection_2
|
|
11085
|
-
|
|
11081
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
11086
11082
|
internalDrag?: {
|
|
11087
11083
|
ghost?: HTMLElement
|
|
11088
11084
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -11283,7 +11279,7 @@ declare const editorMachine: StateMachine<
|
|
|
11283
11279
|
initialReadOnly: boolean
|
|
11284
11280
|
maxBlocks: number | undefined
|
|
11285
11281
|
selection: EditorSelection_2
|
|
11286
|
-
|
|
11282
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
11287
11283
|
internalDrag?: {
|
|
11288
11284
|
ghost?: HTMLElement
|
|
11289
11285
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -11478,7 +11474,7 @@ declare const editorMachine: StateMachine<
|
|
|
11478
11474
|
initialReadOnly: boolean
|
|
11479
11475
|
maxBlocks: number | undefined
|
|
11480
11476
|
selection: EditorSelection_2
|
|
11481
|
-
|
|
11477
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
11482
11478
|
internalDrag?: {
|
|
11483
11479
|
ghost?: HTMLElement
|
|
11484
11480
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -11630,7 +11626,7 @@ declare const editorMachine: StateMachine<
|
|
|
11630
11626
|
initialReadOnly: boolean
|
|
11631
11627
|
maxBlocks: number | undefined
|
|
11632
11628
|
selection: EditorSelection_2
|
|
11633
|
-
|
|
11629
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
11634
11630
|
internalDrag?: {
|
|
11635
11631
|
ghost?: HTMLElement
|
|
11636
11632
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -11779,7 +11775,7 @@ declare const editorMachine: StateMachine<
|
|
|
11779
11775
|
initialReadOnly: boolean
|
|
11780
11776
|
maxBlocks: number | undefined
|
|
11781
11777
|
selection: EditorSelection_2
|
|
11782
|
-
|
|
11778
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
11783
11779
|
internalDrag?: {
|
|
11784
11780
|
ghost?: HTMLElement
|
|
11785
11781
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -11940,7 +11936,7 @@ declare const editorMachine: StateMachine<
|
|
|
11940
11936
|
initialReadOnly: boolean
|
|
11941
11937
|
maxBlocks: number | undefined
|
|
11942
11938
|
selection: EditorSelection_2
|
|
11943
|
-
|
|
11939
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
11944
11940
|
internalDrag?: {
|
|
11945
11941
|
ghost?: HTMLElement
|
|
11946
11942
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -11978,7 +11974,7 @@ declare const editorMachine: StateMachine<
|
|
|
11978
11974
|
initialReadOnly: boolean
|
|
11979
11975
|
maxBlocks: number | undefined
|
|
11980
11976
|
selection: EditorSelection_2
|
|
11981
|
-
|
|
11977
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
11982
11978
|
internalDrag?: {
|
|
11983
11979
|
ghost?: HTMLElement
|
|
11984
11980
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -12010,7 +12006,7 @@ declare const editorMachine: StateMachine<
|
|
|
12010
12006
|
initialReadOnly: boolean
|
|
12011
12007
|
maxBlocks: number | undefined
|
|
12012
12008
|
selection: EditorSelection_2
|
|
12013
|
-
|
|
12009
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
12014
12010
|
internalDrag?: {
|
|
12015
12011
|
ghost?: HTMLElement
|
|
12016
12012
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -12043,7 +12039,7 @@ declare const editorMachine: StateMachine<
|
|
|
12043
12039
|
initialReadOnly: boolean
|
|
12044
12040
|
maxBlocks: number | undefined
|
|
12045
12041
|
selection: EditorSelection_2
|
|
12046
|
-
|
|
12042
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
12047
12043
|
internalDrag?: {
|
|
12048
12044
|
ghost?: HTMLElement
|
|
12049
12045
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -12079,7 +12075,7 @@ declare const editorMachine: StateMachine<
|
|
|
12079
12075
|
initialReadOnly: boolean
|
|
12080
12076
|
maxBlocks: number | undefined
|
|
12081
12077
|
selection: EditorSelection_2
|
|
12082
|
-
|
|
12078
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
12083
12079
|
internalDrag?: {
|
|
12084
12080
|
ghost?: HTMLElement
|
|
12085
12081
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -12236,7 +12232,7 @@ declare const editorMachine: StateMachine<
|
|
|
12236
12232
|
initialReadOnly: boolean
|
|
12237
12233
|
maxBlocks: number | undefined
|
|
12238
12234
|
selection: EditorSelection_2
|
|
12239
|
-
|
|
12235
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
12240
12236
|
internalDrag?: {
|
|
12241
12237
|
ghost?: HTMLElement
|
|
12242
12238
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -12493,7 +12489,7 @@ declare const editorMachine: StateMachine<
|
|
|
12493
12489
|
initialReadOnly: boolean
|
|
12494
12490
|
maxBlocks: number | undefined
|
|
12495
12491
|
selection: EditorSelection_2
|
|
12496
|
-
|
|
12492
|
+
incomingValue: Array<PortableTextBlock> | undefined
|
|
12497
12493
|
internalDrag?: {
|
|
12498
12494
|
ghost?: HTMLElement
|
|
12499
12495
|
origin: Pick<EventPosition_2, 'selection'>
|
|
@@ -12868,6 +12864,13 @@ declare type EditorSnapshot = {
|
|
|
12868
12864
|
}
|
|
12869
12865
|
}
|
|
12870
12866
|
|
|
12867
|
+
/**
|
|
12868
|
+
* @beta
|
|
12869
|
+
*/
|
|
12870
|
+
export declare function effect(
|
|
12871
|
+
effect: () => void,
|
|
12872
|
+
): PickFromUnion_2<BehaviorAction, 'type', 'effect'>
|
|
12873
|
+
|
|
12871
12874
|
/**
|
|
12872
12875
|
* @beta
|
|
12873
12876
|
*/
|
|
@@ -12893,6 +12896,13 @@ declare type EventPosition_2 = {
|
|
|
12893
12896
|
selection: NonNullable<EditorSelection_2>
|
|
12894
12897
|
}
|
|
12895
12898
|
|
|
12899
|
+
/**
|
|
12900
|
+
* @beta
|
|
12901
|
+
*/
|
|
12902
|
+
export declare function execute(
|
|
12903
|
+
event: AbstractBehaviorEvent | SyntheticBehaviorEvent | CustomBehaviorEvent,
|
|
12904
|
+
): PickFromUnion_2<BehaviorAction, 'type', 'execute'>
|
|
12905
|
+
|
|
12896
12906
|
declare type ExtractNamespace<TType extends string> =
|
|
12897
12907
|
TType extends `${infer Namespace}.${string}` ? Namespace : TType
|
|
12898
12908
|
|
|
@@ -13082,6 +13092,11 @@ declare const nativeBehaviorEventTypes: readonly [
|
|
|
13082
13092
|
'mouse.click',
|
|
13083
13093
|
]
|
|
13084
13094
|
|
|
13095
|
+
/**
|
|
13096
|
+
* @beta
|
|
13097
|
+
*/
|
|
13098
|
+
export declare function noop(): PickFromUnion_2<BehaviorAction, 'type', 'noop'>
|
|
13099
|
+
|
|
13085
13100
|
declare type ObjectBlockWithOptionalKey = Omit<PortableTextObject, '_key'> & {
|
|
13086
13101
|
_key?: PortableTextObject['_key']
|
|
13087
13102
|
}
|