@portabletext/editor 1.15.2 → 1.15.3
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 +5 -3
- package/lib/_chunks-cjs/behavior.core.cjs.map +1 -1
- package/lib/_chunks-cjs/selectors.cjs.map +1 -1
- package/lib/_chunks-es/behavior.core.js +5 -3
- package/lib/_chunks-es/behavior.core.js.map +1 -1
- package/lib/_chunks-es/selectors.js.map +1 -1
- package/lib/behaviors/index.cjs +12 -12
- package/lib/behaviors/index.cjs.map +1 -1
- package/lib/behaviors/index.d.cts +39 -45
- package/lib/behaviors/index.d.ts +39 -45
- package/lib/behaviors/index.js +12 -12
- package/lib/behaviors/index.js.map +1 -1
- package/lib/index.cjs +13 -27
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +129 -133
- package/lib/index.d.ts +129 -133
- package/lib/index.js +13 -27
- package/lib/index.js.map +1 -1
- package/lib/selectors/index.d.cts +8 -12
- package/lib/selectors/index.d.ts +8 -12
- package/package.json +2 -2
- package/src/behavior-actions/behavior.action-utils.insert-block.ts +3 -5
- package/src/behavior-actions/behavior.actions.ts +6 -6
- package/src/behavior-actions/behavior.guards.ts +2 -6
- package/src/behaviors/behavior.core.block-objects.ts +1 -1
- package/src/behaviors/behavior.core.lists.ts +2 -2
- package/src/behaviors/behavior.links.ts +2 -2
- package/src/behaviors/behavior.markdown.ts +11 -19
- package/src/behaviors/behavior.types.ts +7 -7
- package/src/behaviors/index.ts +1 -0
- package/src/editor/PortableTextEditor.tsx +2 -2
- package/src/{utils/getPortableTextMemberSchemaTypes.ts → editor/create-editor-schema.ts} +3 -3
- package/src/editor/create-editor.ts +2 -2
- package/src/editor/define-schema.ts +8 -3
- package/src/editor/editor-machine.ts +7 -24
- package/src/editor/editor-selector.ts +1 -13
- package/src/editor/editor-snapshot.ts +4 -6
- package/src/index.ts +3 -5
- package/src/selectors/index.ts +2 -4
- package/src/utils/__tests__/operationToPatches.test.ts +2 -2
- package/src/utils/__tests__/patchToOperations.test.ts +2 -2
- package/src/utils/__tests__/values.test.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectors.js","sources":["../../src/behavior-actions/behavior.guards.ts","../../src/selectors/selectors.ts"],"sourcesContent":["import {\n isPortableTextListBlock,\n isPortableTextTextBlock,\n type PortableTextListBlock,\n type PortableTextTextBlock,\n} from '@sanity/types'\nimport type {PortableTextMemberSchemaTypes} from '../types/editor'\n\n/**\n * @alpha\n */\nexport type BehaviorGuards = ReturnType<typeof createGuards>\n\nexport function createGuards({\n schema,\n}: {\n schema: PortableTextMemberSchemaTypes\n}) {\n function isListBlock(block: unknown): block is PortableTextListBlock {\n return isPortableTextListBlock(block) && block._type === schema.block.name\n }\n\n function isTextBlock(block: unknown): block is PortableTextTextBlock {\n return isPortableTextTextBlock(block) && block._type === schema.block.name\n }\n\n return {isListBlock, isTextBlock}\n}\n","import {\n isKeySegment,\n isPortableTextSpan,\n isPortableTextTextBlock,\n type KeyedSegment,\n type PortableTextBlock,\n type PortableTextListBlock,\n type PortableTextObject,\n type PortableTextSpan,\n type PortableTextTextBlock,\n} from '@sanity/types'\nimport {createGuards} from '../behavior-actions/behavior.guards'\nimport type {EditorSelector} from '../editor/editor-selector'\n\n/**\n * @alpha\n */\nexport const selectionIsCollapsed: EditorSelector<boolean> = ({context}) => {\n return (\n JSON.stringify(context.selection?.anchor.path) ===\n JSON.stringify(context.selection?.focus.path) &&\n context.selection?.anchor.offset === context.selection?.focus.offset\n )\n}\n\n/**\n * @alpha\n */\nexport const getFocusBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const key = context.selection\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFocusListBlock: EditorSelector<\n {node: PortableTextListBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const guards = createGuards(context)\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && guards.isListBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFocusTextBlock: EditorSelector<\n {node: PortableTextTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && isPortableTextTextBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFocusBlockObject: EditorSelector<\n {node: PortableTextObject; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && !isPortableTextTextBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFocusChild: EditorSelector<\n | {\n node: PortableTextObject | PortableTextSpan\n path: [KeyedSegment, 'children', KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n const focusBlock = getFocusTextBlock({context})\n\n if (!focusBlock) {\n return undefined\n }\n\n const key = context.selection\n ? isKeySegment(context.selection.focus.path[2])\n ? context.selection.focus.path[2]._key\n : undefined\n : undefined\n\n const node = key\n ? focusBlock.node.children.find((span) => span._key === key)\n : undefined\n\n return node && key\n ? {node, path: [...focusBlock.path, 'children', {_key: key}]}\n : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFocusSpan: EditorSelector<\n | {node: PortableTextSpan; path: [KeyedSegment, 'children', KeyedSegment]}\n | undefined\n> = ({context}) => {\n const focusChild = getFocusChild({context})\n\n return focusChild && isPortableTextSpan(focusChild.node)\n ? {node: focusChild.node, path: focusChild.path}\n : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFirstBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const node = context.value[0]\n\n return node ? {node, path: [{_key: node._key}]} : undefined\n}\n\n/**\n * @alpha\n */\nexport const getLastBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const node = context.value[context.value.length - 1]\n ? context.value[context.value.length - 1]\n : undefined\n\n return node ? {node, path: [{_key: node._key}]} : undefined\n}\n\n/**\n * @alpha\n */\nexport const getSelectedBlocks: EditorSelector<\n Array<{node: PortableTextBlock; path: [KeyedSegment]}>\n> = ({context}) => {\n if (!context.selection) {\n return []\n }\n\n const selectedBlocks: Array<{node: PortableTextBlock; path: [KeyedSegment]}> =\n []\n const startKey = context.selection.backward\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n const endKey = context.selection.backward\n ? isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n : isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n\n if (!startKey || !endKey) {\n return selectedBlocks\n }\n\n for (const block of context.value) {\n if (block._key === startKey) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n\n if (startKey === endKey) {\n break\n }\n continue\n }\n\n if (block._key === endKey) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n break\n }\n\n if (selectedBlocks.length > 0) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n }\n }\n\n return selectedBlocks\n}\n\n/**\n * @alpha\n */\nexport const getSelectionStartBlock: EditorSelector<\n | {\n node: PortableTextBlock\n path: [KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n if (!context.selection) {\n return undefined\n }\n\n const key = context.selection.backward\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @alpha\n */\nexport const getSelectionEndBlock: EditorSelector<\n | {\n node: PortableTextBlock\n path: [KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n if (!context.selection) {\n return undefined\n }\n\n const key = context.selection.backward\n ? isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n : isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @alpha\n */\nexport const getPreviousBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n let previousBlock: {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n const selectionStartBlock = getSelectionStartBlock({context})\n\n if (!selectionStartBlock) {\n return undefined\n }\n\n let foundSelectionStartBlock = false\n\n for (const block of context.value) {\n if (block._key === selectionStartBlock.node._key) {\n foundSelectionStartBlock = true\n break\n }\n\n previousBlock = {node: block, path: [{_key: block._key}]}\n }\n\n if (foundSelectionStartBlock && previousBlock) {\n return previousBlock\n }\n\n return undefined\n}\n\n/**\n * @alpha\n */\nexport const getNextBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n let nextBlock: {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n const selectionEndBlock = getSelectionEndBlock({context})\n\n if (!selectionEndBlock) {\n return undefined\n }\n\n let foundSelectionEndBlock = false\n\n for (const block of context.value) {\n if (block._key === selectionEndBlock.node._key) {\n foundSelectionEndBlock = true\n continue\n }\n\n if (foundSelectionEndBlock) {\n nextBlock = {node: block, path: [{_key: block._key}]}\n break\n }\n }\n\n if (foundSelectionEndBlock && nextBlock) {\n return nextBlock\n }\n\n return undefined\n}\n"],"names":["createGuards","schema","isListBlock","block","isPortableTextListBlock","_type","name","isTextBlock","isPortableTextTextBlock","selectionIsCollapsed","context","JSON","stringify","selection","anchor","path","focus","offset","getFocusBlock","key","isKeySegment","_key","undefined","node","value","find","getFocusListBlock","guards","focusBlock","getFocusTextBlock","getFocusBlockObject","getFocusChild","children","span","getFocusSpan","focusChild","isPortableTextSpan","getFirstBlock","getLastBlock","length","getSelectedBlocks","selectedBlocks","startKey","backward","endKey","push","getSelectionStartBlock","getSelectionEndBlock","getPreviousBlock","previousBlock","selectionStartBlock","foundSelectionStartBlock","getNextBlock","nextBlock","selectionEndBlock","foundSelectionEndBlock"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selectors.js","sources":["../../src/behavior-actions/behavior.guards.ts","../../src/selectors/selectors.ts"],"sourcesContent":["import {\n isPortableTextListBlock,\n isPortableTextTextBlock,\n type PortableTextListBlock,\n type PortableTextTextBlock,\n} from '@sanity/types'\nimport type {EditorSchema} from '../editor/define-schema'\n\n/**\n * @alpha\n */\nexport type BehaviorGuards = ReturnType<typeof createGuards>\n\nexport function createGuards({schema}: {schema: EditorSchema}) {\n function isListBlock(block: unknown): block is PortableTextListBlock {\n return isPortableTextListBlock(block) && block._type === schema.block.name\n }\n\n function isTextBlock(block: unknown): block is PortableTextTextBlock {\n return isPortableTextTextBlock(block) && block._type === schema.block.name\n }\n\n return {isListBlock, isTextBlock}\n}\n","import {\n isKeySegment,\n isPortableTextSpan,\n isPortableTextTextBlock,\n type KeyedSegment,\n type PortableTextBlock,\n type PortableTextListBlock,\n type PortableTextObject,\n type PortableTextSpan,\n type PortableTextTextBlock,\n} from '@sanity/types'\nimport {createGuards} from '../behavior-actions/behavior.guards'\nimport type {EditorSelector} from '../editor/editor-selector'\n\n/**\n * @alpha\n */\nexport const selectionIsCollapsed: EditorSelector<boolean> = ({context}) => {\n return (\n JSON.stringify(context.selection?.anchor.path) ===\n JSON.stringify(context.selection?.focus.path) &&\n context.selection?.anchor.offset === context.selection?.focus.offset\n )\n}\n\n/**\n * @alpha\n */\nexport const getFocusBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const key = context.selection\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFocusListBlock: EditorSelector<\n {node: PortableTextListBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const guards = createGuards(context)\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && guards.isListBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFocusTextBlock: EditorSelector<\n {node: PortableTextTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && isPortableTextTextBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFocusBlockObject: EditorSelector<\n {node: PortableTextObject; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const focusBlock = getFocusBlock({context})\n\n return focusBlock && !isPortableTextTextBlock(focusBlock.node)\n ? {node: focusBlock.node, path: focusBlock.path}\n : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFocusChild: EditorSelector<\n | {\n node: PortableTextObject | PortableTextSpan\n path: [KeyedSegment, 'children', KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n const focusBlock = getFocusTextBlock({context})\n\n if (!focusBlock) {\n return undefined\n }\n\n const key = context.selection\n ? isKeySegment(context.selection.focus.path[2])\n ? context.selection.focus.path[2]._key\n : undefined\n : undefined\n\n const node = key\n ? focusBlock.node.children.find((span) => span._key === key)\n : undefined\n\n return node && key\n ? {node, path: [...focusBlock.path, 'children', {_key: key}]}\n : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFocusSpan: EditorSelector<\n | {node: PortableTextSpan; path: [KeyedSegment, 'children', KeyedSegment]}\n | undefined\n> = ({context}) => {\n const focusChild = getFocusChild({context})\n\n return focusChild && isPortableTextSpan(focusChild.node)\n ? {node: focusChild.node, path: focusChild.path}\n : undefined\n}\n\n/**\n * @alpha\n */\nexport const getFirstBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const node = context.value[0]\n\n return node ? {node, path: [{_key: node._key}]} : undefined\n}\n\n/**\n * @alpha\n */\nexport const getLastBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n const node = context.value[context.value.length - 1]\n ? context.value[context.value.length - 1]\n : undefined\n\n return node ? {node, path: [{_key: node._key}]} : undefined\n}\n\n/**\n * @alpha\n */\nexport const getSelectedBlocks: EditorSelector<\n Array<{node: PortableTextBlock; path: [KeyedSegment]}>\n> = ({context}) => {\n if (!context.selection) {\n return []\n }\n\n const selectedBlocks: Array<{node: PortableTextBlock; path: [KeyedSegment]}> =\n []\n const startKey = context.selection.backward\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n const endKey = context.selection.backward\n ? isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n : isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n\n if (!startKey || !endKey) {\n return selectedBlocks\n }\n\n for (const block of context.value) {\n if (block._key === startKey) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n\n if (startKey === endKey) {\n break\n }\n continue\n }\n\n if (block._key === endKey) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n break\n }\n\n if (selectedBlocks.length > 0) {\n selectedBlocks.push({node: block, path: [{_key: block._key}]})\n }\n }\n\n return selectedBlocks\n}\n\n/**\n * @alpha\n */\nexport const getSelectionStartBlock: EditorSelector<\n | {\n node: PortableTextBlock\n path: [KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n if (!context.selection) {\n return undefined\n }\n\n const key = context.selection.backward\n ? isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n : isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @alpha\n */\nexport const getSelectionEndBlock: EditorSelector<\n | {\n node: PortableTextBlock\n path: [KeyedSegment]\n }\n | undefined\n> = ({context}) => {\n if (!context.selection) {\n return undefined\n }\n\n const key = context.selection.backward\n ? isKeySegment(context.selection.anchor.path[0])\n ? context.selection.anchor.path[0]._key\n : undefined\n : isKeySegment(context.selection.focus.path[0])\n ? context.selection.focus.path[0]._key\n : undefined\n\n const node = key\n ? context.value.find((block) => block._key === key)\n : undefined\n\n return node && key ? {node, path: [{_key: key}]} : undefined\n}\n\n/**\n * @alpha\n */\nexport const getPreviousBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n let previousBlock: {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n const selectionStartBlock = getSelectionStartBlock({context})\n\n if (!selectionStartBlock) {\n return undefined\n }\n\n let foundSelectionStartBlock = false\n\n for (const block of context.value) {\n if (block._key === selectionStartBlock.node._key) {\n foundSelectionStartBlock = true\n break\n }\n\n previousBlock = {node: block, path: [{_key: block._key}]}\n }\n\n if (foundSelectionStartBlock && previousBlock) {\n return previousBlock\n }\n\n return undefined\n}\n\n/**\n * @alpha\n */\nexport const getNextBlock: EditorSelector<\n {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n> = ({context}) => {\n let nextBlock: {node: PortableTextBlock; path: [KeyedSegment]} | undefined\n const selectionEndBlock = getSelectionEndBlock({context})\n\n if (!selectionEndBlock) {\n return undefined\n }\n\n let foundSelectionEndBlock = false\n\n for (const block of context.value) {\n if (block._key === selectionEndBlock.node._key) {\n foundSelectionEndBlock = true\n continue\n }\n\n if (foundSelectionEndBlock) {\n nextBlock = {node: block, path: [{_key: block._key}]}\n break\n }\n }\n\n if (foundSelectionEndBlock && nextBlock) {\n return nextBlock\n }\n\n return undefined\n}\n"],"names":["createGuards","schema","isListBlock","block","isPortableTextListBlock","_type","name","isTextBlock","isPortableTextTextBlock","selectionIsCollapsed","context","JSON","stringify","selection","anchor","path","focus","offset","getFocusBlock","key","isKeySegment","_key","undefined","node","value","find","getFocusListBlock","guards","focusBlock","getFocusTextBlock","getFocusBlockObject","getFocusChild","children","span","getFocusSpan","focusChild","isPortableTextSpan","getFirstBlock","getLastBlock","length","getSelectedBlocks","selectedBlocks","startKey","backward","endKey","push","getSelectionStartBlock","getSelectionEndBlock","getPreviousBlock","previousBlock","selectionStartBlock","foundSelectionStartBlock","getNextBlock","nextBlock","selectionEndBlock","foundSelectionEndBlock"],"mappings":"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"}
|
package/lib/behaviors/index.cjs
CHANGED
|
@@ -130,7 +130,7 @@ function createMarkdownBehaviors(config) {
|
|
|
130
130
|
context,
|
|
131
131
|
event
|
|
132
132
|
}) => {
|
|
133
|
-
var _a;
|
|
133
|
+
var _a, _b, _c;
|
|
134
134
|
if (event.text !== " ")
|
|
135
135
|
return !1;
|
|
136
136
|
const selectionCollapsed = selectors.selectionIsCollapsed({
|
|
@@ -150,12 +150,12 @@ function createMarkdownBehaviors(config) {
|
|
|
150
150
|
}, "children", {
|
|
151
151
|
_key: focusSpan.node._key
|
|
152
152
|
}],
|
|
153
|
-
offset: context.selection.focus.offset
|
|
153
|
+
offset: (_b = (_a = context.selection) == null ? void 0 : _a.focus.offset) != null ? _b : 0
|
|
154
154
|
}
|
|
155
155
|
});
|
|
156
156
|
if (!blockOffset)
|
|
157
157
|
return !1;
|
|
158
|
-
const blockText = behavior_core.getTextBlockText(focusTextBlock.node), caretAtTheEndOfQuote = blockOffset.offset === 1, looksLikeMarkdownQuote = /^>/.test(blockText), blockquoteStyle = (
|
|
158
|
+
const blockText = behavior_core.getTextBlockText(focusTextBlock.node), caretAtTheEndOfQuote = blockOffset.offset === 1, looksLikeMarkdownQuote = /^>/.test(blockText), blockquoteStyle = (_c = config.blockquoteStyle) == null ? void 0 : _c.call(config, context);
|
|
159
159
|
return caretAtTheEndOfQuote && looksLikeMarkdownQuote && blockquoteStyle !== void 0 ? {
|
|
160
160
|
focusTextBlock,
|
|
161
161
|
style: blockquoteStyle
|
|
@@ -285,7 +285,7 @@ function createMarkdownBehaviors(config) {
|
|
|
285
285
|
context,
|
|
286
286
|
event
|
|
287
287
|
}) => {
|
|
288
|
-
var _a;
|
|
288
|
+
var _a, _b, _c;
|
|
289
289
|
if (event.text !== " ")
|
|
290
290
|
return !1;
|
|
291
291
|
const selectionCollapsed = selectors.selectionIsCollapsed({
|
|
@@ -305,7 +305,7 @@ function createMarkdownBehaviors(config) {
|
|
|
305
305
|
}, "children", {
|
|
306
306
|
_key: focusSpan.node._key
|
|
307
307
|
}],
|
|
308
|
-
offset: context.selection.focus.offset
|
|
308
|
+
offset: (_b = (_a = context.selection) == null ? void 0 : _a.focus.offset) != null ? _b : 0
|
|
309
309
|
}
|
|
310
310
|
});
|
|
311
311
|
if (!blockOffset)
|
|
@@ -313,7 +313,7 @@ function createMarkdownBehaviors(config) {
|
|
|
313
313
|
const blockText = behavior_core.getTextBlockText(focusTextBlock.node), markdownHeadingSearch = /^#+/.exec(blockText), level = markdownHeadingSearch ? markdownHeadingSearch[0].length : void 0;
|
|
314
314
|
if (blockOffset.offset !== level)
|
|
315
315
|
return !1;
|
|
316
|
-
const style = level !== void 0 ? (
|
|
316
|
+
const style = level !== void 0 ? (_c = config.headingStyle) == null ? void 0 : _c.call(config, {
|
|
317
317
|
schema: context.schema,
|
|
318
318
|
level
|
|
319
319
|
}) : void 0;
|
|
@@ -353,7 +353,7 @@ function createMarkdownBehaviors(config) {
|
|
|
353
353
|
guard: ({
|
|
354
354
|
context
|
|
355
355
|
}) => {
|
|
356
|
-
var _a;
|
|
356
|
+
var _a, _b;
|
|
357
357
|
const selectionCollapsed = selectors.selectionIsCollapsed({
|
|
358
358
|
context
|
|
359
359
|
}), focusTextBlock = selectors.getFocusTextBlock({
|
|
@@ -363,7 +363,7 @@ function createMarkdownBehaviors(config) {
|
|
|
363
363
|
});
|
|
364
364
|
if (!selectionCollapsed || !focusTextBlock || !focusSpan)
|
|
365
365
|
return !1;
|
|
366
|
-
const atTheBeginningOfBLock = focusTextBlock.node.children[0]._key === focusSpan.node._key && context.selection.focus.offset === 0, defaultStyle = (
|
|
366
|
+
const atTheBeginningOfBLock = focusTextBlock.node.children[0]._key === focusSpan.node._key && ((_a = context.selection) == null ? void 0 : _a.focus.offset) === 0, defaultStyle = (_b = config.defaultStyle) == null ? void 0 : _b.call(config, context);
|
|
367
367
|
return atTheBeginningOfBLock && defaultStyle && focusTextBlock.node.style !== defaultStyle ? {
|
|
368
368
|
defaultStyle,
|
|
369
369
|
focusTextBlock
|
|
@@ -383,7 +383,7 @@ function createMarkdownBehaviors(config) {
|
|
|
383
383
|
context,
|
|
384
384
|
event
|
|
385
385
|
}) => {
|
|
386
|
-
var _a, _b, _c;
|
|
386
|
+
var _a, _b, _c, _d, _e;
|
|
387
387
|
if (event.text !== " ")
|
|
388
388
|
return !1;
|
|
389
389
|
const selectionCollapsed = selectors.selectionIsCollapsed({
|
|
@@ -403,12 +403,12 @@ function createMarkdownBehaviors(config) {
|
|
|
403
403
|
}, "children", {
|
|
404
404
|
_key: focusSpan.node._key
|
|
405
405
|
}],
|
|
406
|
-
offset: context.selection.focus.offset
|
|
406
|
+
offset: (_b = (_a = context.selection) == null ? void 0 : _a.focus.offset) != null ? _b : 0
|
|
407
407
|
}
|
|
408
408
|
});
|
|
409
409
|
if (!blockOffset)
|
|
410
410
|
return !1;
|
|
411
|
-
const blockText = behavior_core.getTextBlockText(focusTextBlock.node), defaultStyle = (
|
|
411
|
+
const blockText = behavior_core.getTextBlockText(focusTextBlock.node), defaultStyle = (_c = config.defaultStyle) == null ? void 0 : _c.call(config, context), looksLikeUnorderedList = /^(-|\*)/.test(blockText), unorderedListStyle = (_d = config.unorderedListStyle) == null ? void 0 : _d.call(config, context), caretAtTheEndOfUnorderedList = blockOffset.offset === 1;
|
|
412
412
|
if (defaultStyle && caretAtTheEndOfUnorderedList && looksLikeUnorderedList && unorderedListStyle !== void 0)
|
|
413
413
|
return {
|
|
414
414
|
focusTextBlock,
|
|
@@ -416,7 +416,7 @@ function createMarkdownBehaviors(config) {
|
|
|
416
416
|
listItemLength: 1,
|
|
417
417
|
style: defaultStyle
|
|
418
418
|
};
|
|
419
|
-
const looksLikeOrderedList = /^1\./.test(blockText), orderedListStyle = (
|
|
419
|
+
const looksLikeOrderedList = /^1\./.test(blockText), orderedListStyle = (_e = config.orderedListStyle) == null ? void 0 : _e.call(config, context), caretAtTheEndOfOrderedList = blockOffset.offset === 2;
|
|
420
420
|
return defaultStyle && caretAtTheEndOfOrderedList && looksLikeOrderedList && orderedListStyle !== void 0 ? {
|
|
421
421
|
focusTextBlock,
|
|
422
422
|
listItem: orderedListStyle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/behaviors/behavior.code-editor.ts","../../src/behaviors/behavior.links.ts","../../src/behaviors/behavior.markdown.ts"],"sourcesContent":["import {\n getFirstBlock,\n getLastBlock,\n getSelectedBlocks,\n} from '../selectors/selectors'\nimport {isHotkey} from '../utils/is-hotkey'\nimport {defineBehavior} from './behavior.types'\n\n/**\n * @alpha\n */\nexport type CodeEditorBehaviorsConfig = {\n moveBlockUpShortcut: string\n moveBlockDownShortcut: string\n}\n\n/**\n * @alpha\n */\nexport function createCodeEditorBehaviors(config: CodeEditorBehaviorsConfig) {\n return [\n defineBehavior({\n on: 'key.down',\n guard: ({context, event}) => {\n const isMoveUpShortcut = isHotkey(\n config.moveBlockUpShortcut,\n event.keyboardEvent,\n )\n const firstBlock = getFirstBlock({context})\n const selectedBlocks = getSelectedBlocks({context})\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 type: 'move.block up',\n at,\n })),\n ],\n }),\n defineBehavior({\n on: 'key.down',\n guard: ({context, event}) => {\n const isMoveDownShortcut = isHotkey(\n config.moveBlockDownShortcut,\n event.keyboardEvent,\n )\n const lastBlock = getLastBlock({context})\n const selectedBlocks = getSelectedBlocks({context})\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 type: 'move.block down',\n at,\n })),\n ],\n }),\n ]\n}\n","import {getFocusSpan, selectionIsCollapsed} from '../selectors/selectors'\nimport type {PortableTextMemberSchemaTypes} from '../types/editor'\nimport {defineBehavior} from './behavior.types'\n\n/**\n * @alpha\n */\nexport type LinkBehaviorsConfig = {\n linkAnnotation?: (context: {\n schema: PortableTextMemberSchemaTypes\n url: string\n }) => {name: string; value: {[prop: string]: unknown}} | undefined\n}\n\n/**\n * @alpha\n */\nexport function createLinkBehaviors(config: LinkBehaviorsConfig) {\n const pasteLinkOnSelection = defineBehavior({\n on: 'paste',\n guard: ({context, event}) => {\n const selectionCollapsed = selectionIsCollapsed({context})\n const text = event.data.getData('text/plain')\n const url = looksLikeUrl(text) ? text : undefined\n const annotation =\n url !== undefined\n ? config.linkAnnotation?.({url, schema: 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: 'paste',\n guard: ({context, event}) => {\n const focusSpan = getFocusSpan({context})\n const selectionCollapsed = selectionIsCollapsed({context})\n\n if (!focusSpan || !selectionCollapsed) {\n return false\n }\n\n const text = event.data.getData('text/plain')\n const url = looksLikeUrl(text) ? text : undefined\n const annotation =\n url !== undefined\n ? config.linkAnnotation?.({url, schema: 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\nfunction looksLikeUrl(text: string) {\n let looksLikeUrl = false\n try {\n new URL(text)\n looksLikeUrl = true\n } catch {}\n return looksLikeUrl\n}\n","import {isPortableTextTextBlock} from '@sanity/types'\nimport {getTextBlockText} from '../editor/utils/utils'\nimport {spanSelectionPointToBlockOffset} from '../editor/utils/utils.block-offset'\nimport {getBlockTextBefore} from '../selectors/selector.get-text-before'\nimport {\n getFocusBlock,\n getFocusSpan,\n getFocusTextBlock,\n selectionIsCollapsed,\n} from '../selectors/selectors'\nimport type {PortableTextMemberSchemaTypes} from '../types/editor'\nimport {defineBehavior} from './behavior.types'\n\n/**\n * @alpha\n */\nexport type MarkdownBehaviorsConfig = {\n horizontalRuleObject?: (context: {\n schema: PortableTextMemberSchemaTypes\n }) => {name: string; value?: {[prop: string]: unknown}} | undefined\n defaultStyle?: (context: {\n schema: PortableTextMemberSchemaTypes\n }) => string | undefined\n headingStyle?: (context: {\n schema: PortableTextMemberSchemaTypes\n level: number\n }) => string | undefined\n blockquoteStyle?: (context: {\n schema: PortableTextMemberSchemaTypes\n }) => string | undefined\n unorderedListStyle?: (context: {\n schema: PortableTextMemberSchemaTypes\n }) => string | undefined\n orderedListStyle?: (context: {\n schema: PortableTextMemberSchemaTypes\n }) => string | undefined\n}\n\n/**\n * @alpha\n */\nexport function createMarkdownBehaviors(config: MarkdownBehaviorsConfig) {\n const automaticBlockquoteOnSpace = defineBehavior({\n on: 'insert.text',\n guard: ({context, event}) => {\n const isSpace = event.text === ' '\n\n if (!isSpace) {\n return false\n }\n\n const selectionCollapsed = selectionIsCollapsed({context})\n const focusTextBlock = getFocusTextBlock({context})\n const focusSpan = getFocusSpan({context})\n\n if (!selectionCollapsed || !focusTextBlock || !focusSpan) {\n return false\n }\n\n const blockOffset = spanSelectionPointToBlockOffset({\n value: context.value,\n selectionPoint: {\n path: [\n {_key: focusTextBlock.node._key},\n 'children',\n {_key: focusSpan.node._key},\n ],\n offset: context.selection.focus.offset,\n },\n })\n\n if (!blockOffset) {\n return false\n }\n\n const blockText = getTextBlockText(focusTextBlock.node)\n const caretAtTheEndOfQuote = blockOffset.offset === 1\n const looksLikeMarkdownQuote = /^>/.test(blockText)\n const blockquoteStyle = config.blockquoteStyle?.(context)\n\n if (\n caretAtTheEndOfQuote &&\n looksLikeMarkdownQuote &&\n blockquoteStyle !== undefined\n ) {\n return {focusTextBlock, style: blockquoteStyle}\n }\n\n return false\n },\n actions: [\n () => [\n {\n type: 'insert.text',\n text: ' ',\n },\n ],\n (_, {focusTextBlock, style}) => [\n {\n type: 'text block.unset',\n props: ['listItem', 'level'],\n at: focusTextBlock.path,\n },\n {\n type: 'text block.set',\n style,\n at: focusTextBlock.path,\n },\n {\n type: 'delete.text',\n anchor: {\n path: focusTextBlock.path,\n offset: 0,\n },\n focus: {\n path: focusTextBlock.path,\n offset: 2,\n },\n },\n ],\n ],\n })\n const automaticHr = defineBehavior({\n on: 'insert.text',\n guard: ({context, event}) => {\n const hrCharacter =\n event.text === '-'\n ? '-'\n : event.text === '*'\n ? '*'\n : event.text === '_'\n ? '_'\n : undefined\n\n if (hrCharacter === undefined) {\n return false\n }\n\n const hrObject = config.horizontalRuleObject?.(context)\n const focusBlock = getFocusTextBlock({context})\n const selectionCollapsed = selectionIsCollapsed({context})\n\n if (!hrObject || !focusBlock || !selectionCollapsed) {\n return false\n }\n\n const textBefore = getBlockTextBefore({context})\n const hrBlockOffsets = {\n anchor: {\n path: focusBlock.path,\n offset: 0,\n },\n focus: {\n path: focusBlock.path,\n offset: 3,\n },\n }\n\n if (textBefore === `${hrCharacter}${hrCharacter}`) {\n return {hrObject, focusBlock, hrCharacter, hrBlockOffsets}\n }\n\n return false\n },\n actions: [\n (_, {hrCharacter}) => [\n {\n type: 'insert.text',\n text: hrCharacter,\n },\n ],\n (_, {hrObject, hrBlockOffsets}) => [\n {\n type: 'insert.block object',\n placement: 'before',\n blockObject: hrObject,\n },\n {\n type: 'delete.text',\n ...hrBlockOffsets,\n },\n ],\n ],\n })\n const automaticHrOnPaste = defineBehavior({\n on: 'paste',\n guard: ({context, event}) => {\n const text = event.data.getData('text/plain')\n const hrRegExp = /^(---)$|(___)$|(\\*\\*\\*)$/gm\n const hrCharacters = text.match(hrRegExp)?.[0]\n const hrObject = config.horizontalRuleObject?.(context)\n const focusBlock = getFocusBlock({context})\n\n if (!hrCharacters || !hrObject || !focusBlock) {\n return false\n }\n\n return {hrCharacters, hrObject, focusBlock}\n },\n actions: [\n (_, {hrCharacters}) => [\n {\n type: 'insert.text',\n text: hrCharacters,\n },\n ],\n (_, {hrObject, focusBlock}) =>\n isPortableTextTextBlock(focusBlock.node)\n ? [\n {\n type: 'insert.text block',\n textBlock: {children: focusBlock.node.children},\n placement: 'after',\n },\n {\n type: 'insert.block object',\n blockObject: hrObject,\n placement: 'after',\n },\n {type: 'delete.block', blockPath: focusBlock.path},\n ]\n : [\n {\n type: 'insert.block object',\n blockObject: hrObject,\n placement: 'after',\n },\n ],\n ],\n })\n const automaticHeadingOnSpace = defineBehavior({\n on: 'insert.text',\n guard: ({context, event}) => {\n const isSpace = event.text === ' '\n\n if (!isSpace) {\n return false\n }\n\n const selectionCollapsed = selectionIsCollapsed({context})\n const focusTextBlock = getFocusTextBlock({context})\n const focusSpan = getFocusSpan({context})\n\n if (!selectionCollapsed || !focusTextBlock || !focusSpan) {\n return false\n }\n\n const blockOffset = spanSelectionPointToBlockOffset({\n value: context.value,\n selectionPoint: {\n path: [\n {_key: focusTextBlock.node._key},\n 'children',\n {_key: focusSpan.node._key},\n ],\n offset: context.selection.focus.offset,\n },\n })\n\n if (!blockOffset) {\n return false\n }\n\n const blockText = getTextBlockText(focusTextBlock.node)\n const markdownHeadingSearch = /^#+/.exec(blockText)\n const level = markdownHeadingSearch\n ? markdownHeadingSearch[0].length\n : undefined\n const caretAtTheEndOfHeading = blockOffset.offset === level\n\n if (!caretAtTheEndOfHeading) {\n return false\n }\n\n const style =\n level !== undefined\n ? config.headingStyle?.({schema: context.schema, level})\n : undefined\n\n if (level !== undefined && style !== undefined) {\n return {\n focusTextBlock,\n style: style,\n level,\n }\n }\n\n return false\n },\n actions: [\n ({event}) => [event],\n (_, {focusTextBlock, style, level}) => [\n {\n type: 'text block.unset',\n props: ['listItem', 'level'],\n at: focusTextBlock.path,\n },\n {\n type: 'text block.set',\n style,\n at: focusTextBlock.path,\n },\n {\n type: 'delete.text',\n anchor: {\n path: focusTextBlock.path,\n offset: 0,\n },\n focus: {\n path: focusTextBlock.path,\n offset: level + 1,\n },\n },\n ],\n ],\n })\n const clearStyleOnBackspace = defineBehavior({\n on: 'delete.backward',\n guard: ({context}) => {\n const selectionCollapsed = selectionIsCollapsed({context})\n const focusTextBlock = getFocusTextBlock({context})\n const focusSpan = getFocusSpan({context})\n\n if (!selectionCollapsed || !focusTextBlock || !focusSpan) {\n return false\n }\n\n const atTheBeginningOfBLock =\n focusTextBlock.node.children[0]._key === focusSpan.node._key &&\n context.selection.focus.offset === 0\n\n const defaultStyle = config.defaultStyle?.(context)\n\n if (\n atTheBeginningOfBLock &&\n defaultStyle &&\n focusTextBlock.node.style !== defaultStyle\n ) {\n return {defaultStyle, focusTextBlock}\n }\n\n return false\n },\n actions: [\n (_, {defaultStyle, focusTextBlock}) => [\n {\n type: 'text block.set',\n style: defaultStyle,\n at: focusTextBlock.path,\n },\n ],\n ],\n })\n const automaticListOnSpace = defineBehavior({\n on: 'insert.text',\n guard: ({context, event}) => {\n const isSpace = event.text === ' '\n\n if (!isSpace) {\n return false\n }\n\n const selectionCollapsed = selectionIsCollapsed({context})\n const focusTextBlock = getFocusTextBlock({context})\n const focusSpan = getFocusSpan({context})\n\n if (!selectionCollapsed || !focusTextBlock || !focusSpan) {\n return false\n }\n\n const blockOffset = spanSelectionPointToBlockOffset({\n value: context.value,\n selectionPoint: {\n path: [\n {_key: focusTextBlock.node._key},\n 'children',\n {_key: focusSpan.node._key},\n ],\n offset: context.selection.focus.offset,\n },\n })\n\n if (!blockOffset) {\n return false\n }\n\n const blockText = getTextBlockText(focusTextBlock.node)\n const defaultStyle = config.defaultStyle?.(context)\n const looksLikeUnorderedList = /^(-|\\*)/.test(blockText)\n const unorderedListStyle = config.unorderedListStyle?.(context)\n const caretAtTheEndOfUnorderedList = blockOffset.offset === 1\n\n if (\n defaultStyle &&\n caretAtTheEndOfUnorderedList &&\n looksLikeUnorderedList &&\n unorderedListStyle !== undefined\n ) {\n return {\n focusTextBlock,\n listItem: unorderedListStyle,\n listItemLength: 1,\n style: defaultStyle,\n }\n }\n\n const looksLikeOrderedList = /^1\\./.test(blockText)\n const orderedListStyle = config.orderedListStyle?.(context)\n const caretAtTheEndOfOrderedList = blockOffset.offset === 2\n\n if (\n defaultStyle &&\n caretAtTheEndOfOrderedList &&\n looksLikeOrderedList &&\n orderedListStyle !== undefined\n ) {\n return {\n focusTextBlock,\n listItem: orderedListStyle,\n listItemLength: 2,\n style: defaultStyle,\n }\n }\n\n return false\n },\n actions: [\n ({event}) => [event],\n (_, {focusTextBlock, style, listItem, listItemLength}) => [\n {\n type: 'text block.set',\n listItem,\n level: 1,\n style,\n at: focusTextBlock.path,\n },\n {\n type: 'delete.text',\n anchor: {\n path: focusTextBlock.path,\n offset: 0,\n },\n focus: {\n path: focusTextBlock.path,\n offset: listItemLength + 1,\n },\n },\n ],\n ],\n })\n\n const markdownBehaviors = [\n automaticBlockquoteOnSpace,\n automaticHeadingOnSpace,\n automaticHr,\n automaticHrOnPaste,\n clearStyleOnBackspace,\n automaticListOnSpace,\n ]\n\n return markdownBehaviors\n}\n"],"names":["createCodeEditorBehaviors","config","defineBehavior","on","guard","context","event","isMoveUpShortcut","isHotkey","moveBlockUpShortcut","keyboardEvent","firstBlock","getFirstBlock","selectedBlocks","getSelectedBlocks","blocksAbove","node","_key","paths","map","block","path","actions","_","at","type","isMoveDownShortcut","moveBlockDownShortcut","lastBlock","getLastBlock","blocksBelow","length","reverse","createLinkBehaviors","pasteLinkOnSelection","selectionCollapsed","selectionIsCollapsed","text","data","getData","url","looksLikeUrl","undefined","annotation","linkAnnotation","schema","pasteLinkAtCaret","focusSpan","getFocusSpan","annotations","URL","createMarkdownBehaviors","automaticBlockquoteOnSpace","focusTextBlock","getFocusTextBlock","blockOffset","spanSelectionPointToBlockOffset","value","selectionPoint","offset","selection","focus","blockText","getTextBlockText","caretAtTheEndOfQuote","looksLikeMarkdownQuote","test","blockquoteStyle","style","props","anchor","automaticHr","hrCharacter","hrObject","horizontalRuleObject","focusBlock","textBefore","getBlockTextBefore","hrBlockOffsets","placement","blockObject","automaticHrOnPaste","hrRegExp","hrCharacters","match","getFocusBlock","isPortableTextTextBlock","textBlock","children","blockPath","automaticHeadingOnSpace","markdownHeadingSearch","exec","level","headingStyle","clearStyleOnBackspace","atTheBeginningOfBLock","defaultStyle","automaticListOnSpace","looksLikeUnorderedList","unorderedListStyle","caretAtTheEndOfUnorderedList","listItem","listItemLength","looksLikeOrderedList","orderedListStyle","caretAtTheEndOfOrderedList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/behaviors/behavior.code-editor.ts","../../src/behaviors/behavior.links.ts","../../src/behaviors/behavior.markdown.ts"],"sourcesContent":["import {\n getFirstBlock,\n getLastBlock,\n getSelectedBlocks,\n} from '../selectors/selectors'\nimport {isHotkey} from '../utils/is-hotkey'\nimport {defineBehavior} from './behavior.types'\n\n/**\n * @alpha\n */\nexport type CodeEditorBehaviorsConfig = {\n moveBlockUpShortcut: string\n moveBlockDownShortcut: string\n}\n\n/**\n * @alpha\n */\nexport function createCodeEditorBehaviors(config: CodeEditorBehaviorsConfig) {\n return [\n defineBehavior({\n on: 'key.down',\n guard: ({context, event}) => {\n const isMoveUpShortcut = isHotkey(\n config.moveBlockUpShortcut,\n event.keyboardEvent,\n )\n const firstBlock = getFirstBlock({context})\n const selectedBlocks = getSelectedBlocks({context})\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 type: 'move.block up',\n at,\n })),\n ],\n }),\n defineBehavior({\n on: 'key.down',\n guard: ({context, event}) => {\n const isMoveDownShortcut = isHotkey(\n config.moveBlockDownShortcut,\n event.keyboardEvent,\n )\n const lastBlock = getLastBlock({context})\n const selectedBlocks = getSelectedBlocks({context})\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 type: 'move.block down',\n at,\n })),\n ],\n }),\n ]\n}\n","import type {EditorSchema} from '../editor/define-schema'\nimport {getFocusSpan, selectionIsCollapsed} from '../selectors/selectors'\nimport {defineBehavior} from './behavior.types'\n\n/**\n * @alpha\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 * @alpha\n */\nexport function createLinkBehaviors(config: LinkBehaviorsConfig) {\n const pasteLinkOnSelection = defineBehavior({\n on: 'paste',\n guard: ({context, event}) => {\n const selectionCollapsed = selectionIsCollapsed({context})\n const text = event.data.getData('text/plain')\n const url = looksLikeUrl(text) ? text : undefined\n const annotation =\n url !== undefined\n ? config.linkAnnotation?.({url, schema: 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: 'paste',\n guard: ({context, event}) => {\n const focusSpan = getFocusSpan({context})\n const selectionCollapsed = selectionIsCollapsed({context})\n\n if (!focusSpan || !selectionCollapsed) {\n return false\n }\n\n const text = event.data.getData('text/plain')\n const url = looksLikeUrl(text) ? text : undefined\n const annotation =\n url !== undefined\n ? config.linkAnnotation?.({url, schema: 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\nfunction looksLikeUrl(text: string) {\n let looksLikeUrl = false\n try {\n new URL(text)\n looksLikeUrl = true\n } catch {}\n return looksLikeUrl\n}\n","import {isPortableTextTextBlock} from '@sanity/types'\nimport type {EditorSchema} from '../editor/define-schema'\nimport {getTextBlockText} from '../editor/utils/utils'\nimport {spanSelectionPointToBlockOffset} from '../editor/utils/utils.block-offset'\nimport {getBlockTextBefore} from '../selectors/selector.get-text-before'\nimport {\n getFocusBlock,\n getFocusSpan,\n getFocusTextBlock,\n selectionIsCollapsed,\n} from '../selectors/selectors'\nimport {defineBehavior} from './behavior.types'\n\n/**\n * @alpha\n */\nexport type MarkdownBehaviorsConfig = {\n horizontalRuleObject?: (context: {\n schema: EditorSchema\n }) => {name: string; value?: {[prop: string]: unknown}} | undefined\n defaultStyle?: (context: {schema: EditorSchema}) => string | undefined\n headingStyle?: (context: {\n schema: EditorSchema\n level: number\n }) => string | undefined\n blockquoteStyle?: (context: {schema: EditorSchema}) => string | undefined\n unorderedListStyle?: (context: {schema: EditorSchema}) => string | undefined\n orderedListStyle?: (context: {schema: EditorSchema}) => string | undefined\n}\n\n/**\n * @alpha\n */\nexport function createMarkdownBehaviors(config: MarkdownBehaviorsConfig) {\n const automaticBlockquoteOnSpace = defineBehavior({\n on: 'insert.text',\n guard: ({context, event}) => {\n const isSpace = event.text === ' '\n\n if (!isSpace) {\n return false\n }\n\n const selectionCollapsed = selectionIsCollapsed({context})\n const focusTextBlock = getFocusTextBlock({context})\n const focusSpan = getFocusSpan({context})\n\n if (!selectionCollapsed || !focusTextBlock || !focusSpan) {\n return false\n }\n\n const blockOffset = spanSelectionPointToBlockOffset({\n value: context.value,\n selectionPoint: {\n path: [\n {_key: focusTextBlock.node._key},\n 'children',\n {_key: focusSpan.node._key},\n ],\n offset: context.selection?.focus.offset ?? 0,\n },\n })\n\n if (!blockOffset) {\n return false\n }\n\n const blockText = getTextBlockText(focusTextBlock.node)\n const caretAtTheEndOfQuote = blockOffset.offset === 1\n const looksLikeMarkdownQuote = /^>/.test(blockText)\n const blockquoteStyle = config.blockquoteStyle?.(context)\n\n if (\n caretAtTheEndOfQuote &&\n looksLikeMarkdownQuote &&\n blockquoteStyle !== undefined\n ) {\n return {focusTextBlock, style: blockquoteStyle}\n }\n\n return false\n },\n actions: [\n () => [\n {\n type: 'insert.text',\n text: ' ',\n },\n ],\n (_, {focusTextBlock, style}) => [\n {\n type: 'text block.unset',\n props: ['listItem', 'level'],\n at: focusTextBlock.path,\n },\n {\n type: 'text block.set',\n style,\n at: focusTextBlock.path,\n },\n {\n type: 'delete.text',\n anchor: {\n path: focusTextBlock.path,\n offset: 0,\n },\n focus: {\n path: focusTextBlock.path,\n offset: 2,\n },\n },\n ],\n ],\n })\n const automaticHr = defineBehavior({\n on: 'insert.text',\n guard: ({context, event}) => {\n const hrCharacter =\n event.text === '-'\n ? '-'\n : event.text === '*'\n ? '*'\n : event.text === '_'\n ? '_'\n : undefined\n\n if (hrCharacter === undefined) {\n return false\n }\n\n const hrObject = config.horizontalRuleObject?.(context)\n const focusBlock = getFocusTextBlock({context})\n const selectionCollapsed = selectionIsCollapsed({context})\n\n if (!hrObject || !focusBlock || !selectionCollapsed) {\n return false\n }\n\n const textBefore = getBlockTextBefore({context})\n const hrBlockOffsets = {\n anchor: {\n path: focusBlock.path,\n offset: 0,\n },\n focus: {\n path: focusBlock.path,\n offset: 3,\n },\n }\n\n if (textBefore === `${hrCharacter}${hrCharacter}`) {\n return {hrObject, focusBlock, hrCharacter, hrBlockOffsets}\n }\n\n return false\n },\n actions: [\n (_, {hrCharacter}) => [\n {\n type: 'insert.text',\n text: hrCharacter,\n },\n ],\n (_, {hrObject, hrBlockOffsets}) => [\n {\n type: 'insert.block object',\n placement: 'before',\n blockObject: hrObject,\n },\n {\n type: 'delete.text',\n ...hrBlockOffsets,\n },\n ],\n ],\n })\n const automaticHrOnPaste = defineBehavior({\n on: 'paste',\n guard: ({context, event}) => {\n const text = event.data.getData('text/plain')\n const hrRegExp = /^(---)$|(___)$|(\\*\\*\\*)$/gm\n const hrCharacters = text.match(hrRegExp)?.[0]\n const hrObject = config.horizontalRuleObject?.(context)\n const focusBlock = getFocusBlock({context})\n\n if (!hrCharacters || !hrObject || !focusBlock) {\n return false\n }\n\n return {hrCharacters, hrObject, focusBlock}\n },\n actions: [\n (_, {hrCharacters}) => [\n {\n type: 'insert.text',\n text: hrCharacters,\n },\n ],\n (_, {hrObject, focusBlock}) =>\n isPortableTextTextBlock(focusBlock.node)\n ? [\n {\n type: 'insert.text block',\n textBlock: {children: focusBlock.node.children},\n placement: 'after',\n },\n {\n type: 'insert.block object',\n blockObject: hrObject,\n placement: 'after',\n },\n {type: 'delete.block', blockPath: focusBlock.path},\n ]\n : [\n {\n type: 'insert.block object',\n blockObject: hrObject,\n placement: 'after',\n },\n ],\n ],\n })\n const automaticHeadingOnSpace = defineBehavior({\n on: 'insert.text',\n guard: ({context, event}) => {\n const isSpace = event.text === ' '\n\n if (!isSpace) {\n return false\n }\n\n const selectionCollapsed = selectionIsCollapsed({context})\n const focusTextBlock = getFocusTextBlock({context})\n const focusSpan = getFocusSpan({context})\n\n if (!selectionCollapsed || !focusTextBlock || !focusSpan) {\n return false\n }\n\n const blockOffset = spanSelectionPointToBlockOffset({\n value: context.value,\n selectionPoint: {\n path: [\n {_key: focusTextBlock.node._key},\n 'children',\n {_key: focusSpan.node._key},\n ],\n offset: context.selection?.focus.offset ?? 0,\n },\n })\n\n if (!blockOffset) {\n return false\n }\n\n const blockText = getTextBlockText(focusTextBlock.node)\n const markdownHeadingSearch = /^#+/.exec(blockText)\n const level = markdownHeadingSearch\n ? markdownHeadingSearch[0].length\n : undefined\n const caretAtTheEndOfHeading = blockOffset.offset === level\n\n if (!caretAtTheEndOfHeading) {\n return false\n }\n\n const style =\n level !== undefined\n ? config.headingStyle?.({schema: context.schema, level})\n : undefined\n\n if (level !== undefined && style !== undefined) {\n return {\n focusTextBlock,\n style: style,\n level,\n }\n }\n\n return false\n },\n actions: [\n ({event}) => [event],\n (_, {focusTextBlock, style, level}) => [\n {\n type: 'text block.unset',\n props: ['listItem', 'level'],\n at: focusTextBlock.path,\n },\n {\n type: 'text block.set',\n style,\n at: focusTextBlock.path,\n },\n {\n type: 'delete.text',\n anchor: {\n path: focusTextBlock.path,\n offset: 0,\n },\n focus: {\n path: focusTextBlock.path,\n offset: level + 1,\n },\n },\n ],\n ],\n })\n const clearStyleOnBackspace = defineBehavior({\n on: 'delete.backward',\n guard: ({context}) => {\n const selectionCollapsed = selectionIsCollapsed({context})\n const focusTextBlock = getFocusTextBlock({context})\n const focusSpan = getFocusSpan({context})\n\n if (!selectionCollapsed || !focusTextBlock || !focusSpan) {\n return false\n }\n\n const atTheBeginningOfBLock =\n focusTextBlock.node.children[0]._key === focusSpan.node._key &&\n context.selection?.focus.offset === 0\n\n const defaultStyle = config.defaultStyle?.(context)\n\n if (\n atTheBeginningOfBLock &&\n defaultStyle &&\n focusTextBlock.node.style !== defaultStyle\n ) {\n return {defaultStyle, focusTextBlock}\n }\n\n return false\n },\n actions: [\n (_, {defaultStyle, focusTextBlock}) => [\n {\n type: 'text block.set',\n style: defaultStyle,\n at: focusTextBlock.path,\n },\n ],\n ],\n })\n const automaticListOnSpace = defineBehavior({\n on: 'insert.text',\n guard: ({context, event}) => {\n const isSpace = event.text === ' '\n\n if (!isSpace) {\n return false\n }\n\n const selectionCollapsed = selectionIsCollapsed({context})\n const focusTextBlock = getFocusTextBlock({context})\n const focusSpan = getFocusSpan({context})\n\n if (!selectionCollapsed || !focusTextBlock || !focusSpan) {\n return false\n }\n\n const blockOffset = spanSelectionPointToBlockOffset({\n value: context.value,\n selectionPoint: {\n path: [\n {_key: focusTextBlock.node._key},\n 'children',\n {_key: focusSpan.node._key},\n ],\n offset: context.selection?.focus.offset ?? 0,\n },\n })\n\n if (!blockOffset) {\n return false\n }\n\n const blockText = getTextBlockText(focusTextBlock.node)\n const defaultStyle = config.defaultStyle?.(context)\n const looksLikeUnorderedList = /^(-|\\*)/.test(blockText)\n const unorderedListStyle = config.unorderedListStyle?.(context)\n const caretAtTheEndOfUnorderedList = blockOffset.offset === 1\n\n if (\n defaultStyle &&\n caretAtTheEndOfUnorderedList &&\n looksLikeUnorderedList &&\n unorderedListStyle !== undefined\n ) {\n return {\n focusTextBlock,\n listItem: unorderedListStyle,\n listItemLength: 1,\n style: defaultStyle,\n }\n }\n\n const looksLikeOrderedList = /^1\\./.test(blockText)\n const orderedListStyle = config.orderedListStyle?.(context)\n const caretAtTheEndOfOrderedList = blockOffset.offset === 2\n\n if (\n defaultStyle &&\n caretAtTheEndOfOrderedList &&\n looksLikeOrderedList &&\n orderedListStyle !== undefined\n ) {\n return {\n focusTextBlock,\n listItem: orderedListStyle,\n listItemLength: 2,\n style: defaultStyle,\n }\n }\n\n return false\n },\n actions: [\n ({event}) => [event],\n (_, {focusTextBlock, style, listItem, listItemLength}) => [\n {\n type: 'text block.set',\n listItem,\n level: 1,\n style,\n at: focusTextBlock.path,\n },\n {\n type: 'delete.text',\n anchor: {\n path: focusTextBlock.path,\n offset: 0,\n },\n focus: {\n path: focusTextBlock.path,\n offset: listItemLength + 1,\n },\n },\n ],\n ],\n })\n\n const markdownBehaviors = [\n automaticBlockquoteOnSpace,\n automaticHeadingOnSpace,\n automaticHr,\n automaticHrOnPaste,\n clearStyleOnBackspace,\n automaticListOnSpace,\n ]\n\n return markdownBehaviors\n}\n"],"names":["createCodeEditorBehaviors","config","defineBehavior","on","guard","context","event","isMoveUpShortcut","isHotkey","moveBlockUpShortcut","keyboardEvent","firstBlock","getFirstBlock","selectedBlocks","getSelectedBlocks","blocksAbove","node","_key","paths","map","block","path","actions","_","at","type","isMoveDownShortcut","moveBlockDownShortcut","lastBlock","getLastBlock","blocksBelow","length","reverse","createLinkBehaviors","pasteLinkOnSelection","selectionCollapsed","selectionIsCollapsed","text","data","getData","url","looksLikeUrl","undefined","annotation","linkAnnotation","schema","pasteLinkAtCaret","focusSpan","getFocusSpan","annotations","URL","createMarkdownBehaviors","automaticBlockquoteOnSpace","focusTextBlock","getFocusTextBlock","blockOffset","spanSelectionPointToBlockOffset","value","selectionPoint","offset","selection","focus","blockText","getTextBlockText","caretAtTheEndOfQuote","looksLikeMarkdownQuote","test","blockquoteStyle","style","props","anchor","automaticHr","hrCharacter","hrObject","horizontalRuleObject","focusBlock","textBefore","getBlockTextBefore","hrBlockOffsets","placement","blockObject","automaticHrOnPaste","hrRegExp","hrCharacters","match","getFocusBlock","isPortableTextTextBlock","textBlock","children","blockPath","automaticHeadingOnSpace","markdownHeadingSearch","exec","level","headingStyle","clearStyleOnBackspace","atTheBeginningOfBLock","defaultStyle","automaticListOnSpace","looksLikeUnorderedList","unorderedListStyle","caretAtTheEndOfUnorderedList","listItem","listItemLength","looksLikeOrderedList","orderedListStyle","caretAtTheEndOfOrderedList"],"mappings":"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"}
|
|
@@ -99,17 +99,17 @@ export declare type BehaviorActionIntend =
|
|
|
99
99
|
effect: () => void
|
|
100
100
|
}
|
|
101
101
|
| {
|
|
102
|
-
type: '
|
|
103
|
-
selection: EditorSelection
|
|
102
|
+
type: 'reselect'
|
|
104
103
|
}
|
|
105
104
|
| {
|
|
106
|
-
type: 'select
|
|
105
|
+
type: 'select'
|
|
106
|
+
selection: EditorSelection
|
|
107
107
|
}
|
|
108
108
|
| {
|
|
109
|
-
type: 'select
|
|
109
|
+
type: 'select.previous block'
|
|
110
110
|
}
|
|
111
111
|
| {
|
|
112
|
-
type: '
|
|
112
|
+
type: 'select.next block'
|
|
113
113
|
}
|
|
114
114
|
| {
|
|
115
115
|
type: 'style.add'
|
|
@@ -201,8 +201,8 @@ export declare const coreBehavior: {
|
|
|
201
201
|
| 'focus'
|
|
202
202
|
| 'insert.block object'
|
|
203
203
|
| 'insert.inline object'
|
|
204
|
-
| 'insert.soft break'
|
|
205
204
|
| 'insert.break'
|
|
205
|
+
| 'insert.soft break'
|
|
206
206
|
| 'insert.text'
|
|
207
207
|
| 'list item.toggle'
|
|
208
208
|
| 'style.toggle'
|
|
@@ -226,8 +226,8 @@ export declare const coreBehavior: {
|
|
|
226
226
|
| 'focus'
|
|
227
227
|
| 'insert.block object'
|
|
228
228
|
| 'insert.inline object'
|
|
229
|
-
| 'insert.soft break'
|
|
230
229
|
| 'insert.break'
|
|
230
|
+
| 'insert.soft break'
|
|
231
231
|
| 'insert.text'
|
|
232
232
|
| 'list item.toggle'
|
|
233
233
|
| 'style.toggle'
|
|
@@ -250,8 +250,8 @@ export declare const coreBehavior: {
|
|
|
250
250
|
| 'focus'
|
|
251
251
|
| 'insert.block object'
|
|
252
252
|
| 'insert.inline object'
|
|
253
|
-
| 'insert.soft break'
|
|
254
253
|
| 'insert.break'
|
|
254
|
+
| 'insert.soft break'
|
|
255
255
|
| 'insert.text'
|
|
256
256
|
| 'list item.toggle'
|
|
257
257
|
| 'style.toggle'
|
|
@@ -274,8 +274,8 @@ export declare const coreBehavior: {
|
|
|
274
274
|
| 'focus'
|
|
275
275
|
| 'insert.block object'
|
|
276
276
|
| 'insert.inline object'
|
|
277
|
-
| 'insert.soft break'
|
|
278
277
|
| 'insert.break'
|
|
278
|
+
| 'insert.soft break'
|
|
279
279
|
| 'insert.text'
|
|
280
280
|
| 'list item.toggle'
|
|
281
281
|
| 'style.toggle'
|
|
@@ -300,8 +300,8 @@ export declare const coreBehavior: {
|
|
|
300
300
|
| 'focus'
|
|
301
301
|
| 'insert.block object'
|
|
302
302
|
| 'insert.inline object'
|
|
303
|
-
| 'insert.soft break'
|
|
304
303
|
| 'insert.break'
|
|
304
|
+
| 'insert.soft break'
|
|
305
305
|
| 'insert.text'
|
|
306
306
|
| 'list item.toggle'
|
|
307
307
|
| 'style.toggle'
|
|
@@ -324,8 +324,8 @@ export declare const coreBehavior: {
|
|
|
324
324
|
| 'focus'
|
|
325
325
|
| 'insert.block object'
|
|
326
326
|
| 'insert.inline object'
|
|
327
|
-
| 'insert.soft break'
|
|
328
327
|
| 'insert.break'
|
|
328
|
+
| 'insert.soft break'
|
|
329
329
|
| 'insert.text'
|
|
330
330
|
| 'list item.toggle'
|
|
331
331
|
| 'style.toggle'
|
|
@@ -348,8 +348,8 @@ export declare const coreBehavior: {
|
|
|
348
348
|
| 'focus'
|
|
349
349
|
| 'insert.block object'
|
|
350
350
|
| 'insert.inline object'
|
|
351
|
-
| 'insert.soft break'
|
|
352
351
|
| 'insert.break'
|
|
352
|
+
| 'insert.soft break'
|
|
353
353
|
| 'insert.text'
|
|
354
354
|
| 'list item.toggle'
|
|
355
355
|
| 'style.toggle'
|
|
@@ -372,8 +372,8 @@ export declare const coreBehavior: {
|
|
|
372
372
|
| 'focus'
|
|
373
373
|
| 'insert.block object'
|
|
374
374
|
| 'insert.inline object'
|
|
375
|
-
| 'insert.soft break'
|
|
376
375
|
| 'insert.break'
|
|
376
|
+
| 'insert.soft break'
|
|
377
377
|
| 'insert.text'
|
|
378
378
|
| 'list item.toggle'
|
|
379
379
|
| 'style.toggle'
|
|
@@ -396,8 +396,8 @@ export declare const coreBehavior: {
|
|
|
396
396
|
| 'focus'
|
|
397
397
|
| 'insert.block object'
|
|
398
398
|
| 'insert.inline object'
|
|
399
|
-
| 'insert.soft break'
|
|
400
399
|
| 'insert.break'
|
|
400
|
+
| 'insert.soft break'
|
|
401
401
|
| 'insert.text'
|
|
402
402
|
| 'list item.toggle'
|
|
403
403
|
| 'style.toggle'
|
|
@@ -422,8 +422,8 @@ export declare const coreBehavior: {
|
|
|
422
422
|
| 'focus'
|
|
423
423
|
| 'insert.block object'
|
|
424
424
|
| 'insert.inline object'
|
|
425
|
-
| 'insert.soft break'
|
|
426
425
|
| 'insert.break'
|
|
426
|
+
| 'insert.soft break'
|
|
427
427
|
| 'insert.text'
|
|
428
428
|
| 'list item.toggle'
|
|
429
429
|
| 'style.toggle'
|
|
@@ -446,8 +446,8 @@ export declare const coreBehavior: {
|
|
|
446
446
|
| 'focus'
|
|
447
447
|
| 'insert.block object'
|
|
448
448
|
| 'insert.inline object'
|
|
449
|
-
| 'insert.soft break'
|
|
450
449
|
| 'insert.break'
|
|
450
|
+
| 'insert.soft break'
|
|
451
451
|
| 'insert.text'
|
|
452
452
|
| 'list item.toggle'
|
|
453
453
|
| 'style.toggle'
|
|
@@ -470,8 +470,8 @@ export declare const coreBehavior: {
|
|
|
470
470
|
| 'focus'
|
|
471
471
|
| 'insert.block object'
|
|
472
472
|
| 'insert.inline object'
|
|
473
|
-
| 'insert.soft break'
|
|
474
473
|
| 'insert.break'
|
|
474
|
+
| 'insert.soft break'
|
|
475
475
|
| 'insert.text'
|
|
476
476
|
| 'list item.toggle'
|
|
477
477
|
| 'style.toggle'
|
|
@@ -494,8 +494,8 @@ export declare const coreBehavior: {
|
|
|
494
494
|
| 'focus'
|
|
495
495
|
| 'insert.block object'
|
|
496
496
|
| 'insert.inline object'
|
|
497
|
-
| 'insert.soft break'
|
|
498
497
|
| 'insert.break'
|
|
498
|
+
| 'insert.soft break'
|
|
499
499
|
| 'insert.text'
|
|
500
500
|
| 'list item.toggle'
|
|
501
501
|
| 'style.toggle'
|
|
@@ -518,8 +518,8 @@ export declare const coreBehavior: {
|
|
|
518
518
|
| 'focus'
|
|
519
519
|
| 'insert.block object'
|
|
520
520
|
| 'insert.inline object'
|
|
521
|
-
| 'insert.soft break'
|
|
522
521
|
| 'insert.break'
|
|
522
|
+
| 'insert.soft break'
|
|
523
523
|
| 'insert.text'
|
|
524
524
|
| 'list item.toggle'
|
|
525
525
|
| 'style.toggle'
|
|
@@ -548,8 +548,8 @@ export declare const coreBehaviors: Behavior<
|
|
|
548
548
|
| 'focus'
|
|
549
549
|
| 'insert.block object'
|
|
550
550
|
| 'insert.inline object'
|
|
551
|
-
| 'insert.soft break'
|
|
552
551
|
| 'insert.break'
|
|
552
|
+
| 'insert.soft break'
|
|
553
553
|
| 'insert.text'
|
|
554
554
|
| 'list item.toggle'
|
|
555
555
|
| 'style.toggle'
|
|
@@ -578,8 +578,8 @@ export declare function createCodeEditorBehaviors(
|
|
|
578
578
|
| 'focus'
|
|
579
579
|
| 'insert.block object'
|
|
580
580
|
| 'insert.inline object'
|
|
581
|
-
| 'insert.soft break'
|
|
582
581
|
| 'insert.break'
|
|
582
|
+
| 'insert.soft break'
|
|
583
583
|
| 'insert.text'
|
|
584
584
|
| 'list item.toggle'
|
|
585
585
|
| 'style.toggle'
|
|
@@ -608,8 +608,8 @@ export declare function createLinkBehaviors(
|
|
|
608
608
|
| 'focus'
|
|
609
609
|
| 'insert.block object'
|
|
610
610
|
| 'insert.inline object'
|
|
611
|
-
| 'insert.soft break'
|
|
612
611
|
| 'insert.break'
|
|
612
|
+
| 'insert.soft break'
|
|
613
613
|
| 'insert.text'
|
|
614
614
|
| 'list item.toggle'
|
|
615
615
|
| 'style.toggle'
|
|
@@ -638,8 +638,8 @@ export declare function createMarkdownBehaviors(
|
|
|
638
638
|
| 'focus'
|
|
639
639
|
| 'insert.block object'
|
|
640
640
|
| 'insert.inline object'
|
|
641
|
-
| 'insert.soft break'
|
|
642
641
|
| 'insert.break'
|
|
642
|
+
| 'insert.soft break'
|
|
643
643
|
| 'insert.text'
|
|
644
644
|
| 'list item.toggle'
|
|
645
645
|
| 'style.toggle'
|
|
@@ -663,11 +663,16 @@ export declare function defineBehavior<
|
|
|
663
663
|
*/
|
|
664
664
|
export declare type EditorContext = {
|
|
665
665
|
keyGenerator: () => string
|
|
666
|
-
schema:
|
|
667
|
-
selection:
|
|
666
|
+
schema: EditorSchema
|
|
667
|
+
selection: EditorSelection
|
|
668
668
|
value: Array<PortableTextBlock>
|
|
669
669
|
}
|
|
670
670
|
|
|
671
|
+
/**
|
|
672
|
+
* @alpha
|
|
673
|
+
*/
|
|
674
|
+
export declare type EditorSchema = PortableTextMemberSchemaTypes
|
|
675
|
+
|
|
671
676
|
/** @beta */
|
|
672
677
|
export declare type EditorSelection = {
|
|
673
678
|
anchor: EditorSelectionPoint
|
|
@@ -685,10 +690,7 @@ export declare type EditorSelectionPoint = {
|
|
|
685
690
|
* @alpha
|
|
686
691
|
*/
|
|
687
692
|
export declare type LinkBehaviorsConfig = {
|
|
688
|
-
linkAnnotation?: (context: {
|
|
689
|
-
schema: PortableTextMemberSchemaTypes
|
|
690
|
-
url: string
|
|
691
|
-
}) =>
|
|
693
|
+
linkAnnotation?: (context: {schema: EditorSchema; url: string}) =>
|
|
692
694
|
| {
|
|
693
695
|
name: string
|
|
694
696
|
value: {
|
|
@@ -702,7 +704,7 @@ export declare type LinkBehaviorsConfig = {
|
|
|
702
704
|
* @alpha
|
|
703
705
|
*/
|
|
704
706
|
export declare type MarkdownBehaviorsConfig = {
|
|
705
|
-
horizontalRuleObject?: (context: {schema:
|
|
707
|
+
horizontalRuleObject?: (context: {schema: EditorSchema}) =>
|
|
706
708
|
| {
|
|
707
709
|
name: string
|
|
708
710
|
value?: {
|
|
@@ -710,22 +712,14 @@ export declare type MarkdownBehaviorsConfig = {
|
|
|
710
712
|
}
|
|
711
713
|
}
|
|
712
714
|
| undefined
|
|
713
|
-
defaultStyle?: (context: {
|
|
714
|
-
schema: PortableTextMemberSchemaTypes
|
|
715
|
-
}) => string | undefined
|
|
715
|
+
defaultStyle?: (context: {schema: EditorSchema}) => string | undefined
|
|
716
716
|
headingStyle?: (context: {
|
|
717
|
-
schema:
|
|
717
|
+
schema: EditorSchema
|
|
718
718
|
level: number
|
|
719
719
|
}) => string | undefined
|
|
720
|
-
blockquoteStyle?: (context: {
|
|
721
|
-
|
|
722
|
-
}) => string | undefined
|
|
723
|
-
unorderedListStyle?: (context: {
|
|
724
|
-
schema: PortableTextMemberSchemaTypes
|
|
725
|
-
}) => string | undefined
|
|
726
|
-
orderedListStyle?: (context: {
|
|
727
|
-
schema: PortableTextMemberSchemaTypes
|
|
728
|
-
}) => string | undefined
|
|
720
|
+
blockquoteStyle?: (context: {schema: EditorSchema}) => string | undefined
|
|
721
|
+
unorderedListStyle?: (context: {schema: EditorSchema}) => string | undefined
|
|
722
|
+
orderedListStyle?: (context: {schema: EditorSchema}) => string | undefined
|
|
729
723
|
}
|
|
730
724
|
|
|
731
725
|
/**
|
|
@@ -853,10 +847,10 @@ export declare type SyntheticBehaviorEvent =
|
|
|
853
847
|
}
|
|
854
848
|
}
|
|
855
849
|
| {
|
|
856
|
-
type: 'insert.
|
|
850
|
+
type: 'insert.break'
|
|
857
851
|
}
|
|
858
852
|
| {
|
|
859
|
-
type: 'insert.break'
|
|
853
|
+
type: 'insert.soft break'
|
|
860
854
|
}
|
|
861
855
|
| {
|
|
862
856
|
type: 'insert.text'
|