@portabletext/plugin-markdown-shortcuts 7.0.27 → 8.0.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/dist/index.js +28 -22
- package/dist/index.js.map +1 -1
- package/package.json +13 -13
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { useEffect } from "react";
|
|
|
7
7
|
import { defineBehavior, raise } from "@portabletext/editor/behaviors";
|
|
8
8
|
import * as selectors from "@portabletext/editor/selectors";
|
|
9
9
|
import { getPreviousInlineObject } from "@portabletext/editor/selectors";
|
|
10
|
+
import { getPathSubSchema } from "@portabletext/editor/traversal";
|
|
10
11
|
function createMarkdownBehaviors(config) {
|
|
11
12
|
const automaticHrOnPaste = defineBehavior({
|
|
12
13
|
on: "clipboard.paste",
|
|
@@ -14,13 +15,16 @@ function createMarkdownBehaviors(config) {
|
|
|
14
15
|
snapshot,
|
|
15
16
|
event
|
|
16
17
|
}) => {
|
|
17
|
-
const text = event.originEvent.dataTransfer.getData("text/plain"), hrRegExp = /^(---)$|^(—-)$|^(___)$|^(\*\*\*)$/, hrCharacters = text.match(hrRegExp)?.[0],
|
|
18
|
+
const text = event.originEvent.dataTransfer.getData("text/plain"), hrRegExp = /^(---)$|^(—-)$|^(___)$|^(\*\*\*)$/, hrCharacters = text.match(hrRegExp)?.[0], focusBlock = selectors.getFocusBlock(snapshot), focusTextBlock = selectors.getFocusTextBlock(snapshot);
|
|
19
|
+
if (!focusBlock)
|
|
20
|
+
return !1;
|
|
21
|
+
const hrObject = config.horizontalRuleObject?.({
|
|
18
22
|
context: {
|
|
19
|
-
schema: snapshot.
|
|
23
|
+
schema: getPathSubSchema(snapshot, focusBlock.path),
|
|
20
24
|
keyGenerator: snapshot.context.keyGenerator
|
|
21
25
|
}
|
|
22
|
-
})
|
|
23
|
-
return !hrCharacters || !hrObject
|
|
26
|
+
});
|
|
27
|
+
return !hrCharacters || !hrObject ? !1 : {
|
|
24
28
|
hrCharacters,
|
|
25
29
|
hrObject,
|
|
26
30
|
focusBlock,
|
|
@@ -65,11 +69,11 @@ function createMarkdownBehaviors(config) {
|
|
|
65
69
|
const selectionCollapsed = selectors.isSelectionCollapsed(snapshot), focusTextBlock = selectors.getFocusTextBlock(snapshot), focusSpan = selectors.getFocusSpan(snapshot);
|
|
66
70
|
if (!selectionCollapsed || !focusTextBlock || !focusSpan)
|
|
67
71
|
return !1;
|
|
68
|
-
const atTheBeginningOfBLock = focusTextBlock.node.children[0]._key === focusSpan.node._key && snapshot.context.selection?.focus.offset === 0, defaultStyle = config.defaultStyle?.({
|
|
72
|
+
const atTheBeginningOfBLock = focusTextBlock.node.children[0]._key === focusSpan.node._key && snapshot.context.selection?.focus.offset === 0, subSchema = getPathSubSchema(snapshot, focusTextBlock.path), defaultStyle = config.defaultStyle?.({
|
|
69
73
|
context: {
|
|
70
|
-
schema:
|
|
74
|
+
schema: subSchema
|
|
71
75
|
},
|
|
72
|
-
schema:
|
|
76
|
+
schema: subSchema
|
|
73
77
|
});
|
|
74
78
|
return atTheBeginningOfBLock && defaultStyle && focusTextBlock.node.style !== defaultStyle ? {
|
|
75
79
|
defaultStyle,
|
|
@@ -96,11 +100,11 @@ function createBlockquoteRule(config) {
|
|
|
96
100
|
snapshot,
|
|
97
101
|
event
|
|
98
102
|
}) => {
|
|
99
|
-
const style = config.blockquoteStyle({
|
|
103
|
+
const subSchema = getPathSubSchema(snapshot, event.focusBlock.path), style = config.blockquoteStyle({
|
|
100
104
|
context: {
|
|
101
|
-
schema:
|
|
105
|
+
schema: subSchema
|
|
102
106
|
},
|
|
103
|
-
schema:
|
|
107
|
+
schema: subSchema
|
|
104
108
|
});
|
|
105
109
|
if (!style || getPreviousInlineObject(snapshot))
|
|
106
110
|
return !1;
|
|
@@ -143,11 +147,11 @@ function createHeadingRule(config) {
|
|
|
143
147
|
const match = event.matches.at(0);
|
|
144
148
|
if (!match)
|
|
145
149
|
return !1;
|
|
146
|
-
const level = match.text.length - 1, style = config.headingStyle({
|
|
150
|
+
const level = match.text.length - 1, subSchema = getPathSubSchema(snapshot, event.focusBlock.path), style = config.headingStyle({
|
|
147
151
|
context: {
|
|
148
|
-
schema:
|
|
152
|
+
schema: subSchema
|
|
149
153
|
},
|
|
150
|
-
schema:
|
|
154
|
+
schema: subSchema,
|
|
151
155
|
props: {
|
|
152
156
|
level
|
|
153
157
|
},
|
|
@@ -186,9 +190,9 @@ function createHorizontalRuleRule(config) {
|
|
|
186
190
|
snapshot,
|
|
187
191
|
event
|
|
188
192
|
}) => {
|
|
189
|
-
const hrObject = config.horizontalRuleObject({
|
|
193
|
+
const subSchema = getPathSubSchema(snapshot, event.focusBlock.path), hrObject = config.horizontalRuleObject({
|
|
190
194
|
context: {
|
|
191
|
-
schema:
|
|
195
|
+
schema: subSchema,
|
|
192
196
|
keyGenerator: snapshot.context.keyGenerator
|
|
193
197
|
}
|
|
194
198
|
});
|
|
@@ -231,7 +235,7 @@ function createMarkdownLinkRule(config) {
|
|
|
231
235
|
textLengthDelta = textLengthDelta - (match.targetOffsets.focus.offset - match.targetOffsets.anchor.offset - textMatch.text.length);
|
|
232
236
|
const linkObject = config.linkObject({
|
|
233
237
|
context: {
|
|
234
|
-
schema: snapshot.
|
|
238
|
+
schema: getPathSubSchema(snapshot, event.focusBlock.path),
|
|
235
239
|
keyGenerator: snapshot.context.keyGenerator
|
|
236
240
|
},
|
|
237
241
|
props: {
|
|
@@ -269,6 +273,8 @@ function createMarkdownLinkRule(config) {
|
|
|
269
273
|
at: leftSideOffsets
|
|
270
274
|
}));
|
|
271
275
|
}
|
|
276
|
+
if (actions.length === 0)
|
|
277
|
+
return [];
|
|
272
278
|
const endCaretPosition = {
|
|
273
279
|
path: event.focusBlock.path,
|
|
274
280
|
offset: newText.length - textLengthDelta * -1
|
|
@@ -290,11 +296,11 @@ function createOrderedListRule(config) {
|
|
|
290
296
|
snapshot,
|
|
291
297
|
event
|
|
292
298
|
}) => {
|
|
293
|
-
const orderedList = config.orderedList({
|
|
299
|
+
const subSchema = getPathSubSchema(snapshot, event.focusBlock.path), orderedList = config.orderedList({
|
|
294
300
|
context: {
|
|
295
|
-
schema:
|
|
301
|
+
schema: subSchema
|
|
296
302
|
},
|
|
297
|
-
schema:
|
|
303
|
+
schema: subSchema
|
|
298
304
|
});
|
|
299
305
|
if (!orderedList || getPreviousInlineObject(snapshot))
|
|
300
306
|
return !1;
|
|
@@ -333,11 +339,11 @@ function createUnorderedListRule(config) {
|
|
|
333
339
|
snapshot,
|
|
334
340
|
event
|
|
335
341
|
}) => {
|
|
336
|
-
const unorderedList = config.unorderedList({
|
|
342
|
+
const subSchema = getPathSubSchema(snapshot, event.focusBlock.path), unorderedList = config.unorderedList({
|
|
337
343
|
context: {
|
|
338
|
-
schema:
|
|
344
|
+
schema: subSchema
|
|
339
345
|
},
|
|
340
|
-
schema:
|
|
346
|
+
schema: subSchema
|
|
341
347
|
});
|
|
342
348
|
if (!unorderedList || getPreviousInlineObject(snapshot))
|
|
343
349
|
return !1;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/behavior.markdown-shortcuts.ts","../src/rule.blockquote.ts","../src/rule.heading.ts","../src/rule.horizontal-rule.ts","../src/rule.markdown-link.ts","../src/rule.ordered-list.ts","../src/rule.unordered-list.ts","../src/plugin.markdown-shortcuts.tsx"],"sourcesContent":["import type {EditorContext} from '@portabletext/editor'\nimport {defineBehavior, raise} from '@portabletext/editor/behaviors'\nimport * as selectors from '@portabletext/editor/selectors'\n\nexport type ObjectWithOptionalKey = {\n _type: string\n _key?: string\n [other: string]: unknown\n}\n\nexport type MarkdownBehaviorsConfig = {\n horizontalRuleObject?: ({\n context,\n }: {\n context: Pick<EditorContext, 'schema' | 'keyGenerator'>\n }) => ObjectWithOptionalKey | undefined\n defaultStyle?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n}\n\nexport function createMarkdownBehaviors(config: MarkdownBehaviorsConfig) {\n const automaticHrOnPaste = defineBehavior({\n on: 'clipboard.paste',\n guard: ({snapshot, event}) => {\n const text = event.originEvent.dataTransfer.getData('text/plain')\n const hrRegExp = /^(---)$|^(—-)$|^(___)$|^(\\*\\*\\*)$/\n const hrCharacters = text.match(hrRegExp)?.[0]\n const hrObject = config.horizontalRuleObject?.({\n context: {\n schema: snapshot.context.schema,\n keyGenerator: snapshot.context.keyGenerator,\n },\n })\n const focusBlock = selectors.getFocusBlock(snapshot)\n const focusTextBlock = selectors.getFocusTextBlock(snapshot)\n\n if (!hrCharacters || !hrObject || !focusBlock) {\n return false\n }\n\n return {hrCharacters, hrObject, focusBlock, focusTextBlock}\n },\n actions: [\n (_, {hrCharacters}) => [\n raise({\n type: 'insert.text',\n text: hrCharacters,\n }),\n ],\n ({snapshot}, {hrObject, focusBlock, focusTextBlock}) =>\n focusTextBlock\n ? [\n raise({\n type: 'insert.block',\n block: {\n _type: snapshot.context.schema.block.name,\n children: focusTextBlock.node.children,\n },\n placement: 'after',\n }),\n raise({\n type: 'insert.block',\n block: hrObject,\n placement: 'after',\n }),\n raise({\n type: 'delete.block',\n at: focusBlock.path,\n }),\n ]\n : [\n raise({\n type: 'insert.block',\n block: hrObject,\n placement: 'after',\n }),\n ],\n ],\n })\n\n const clearStyleOnBackspace = defineBehavior({\n on: 'delete.backward',\n guard: ({snapshot}) => {\n const selectionCollapsed = selectors.isSelectionCollapsed(snapshot)\n const focusTextBlock = selectors.getFocusTextBlock(snapshot)\n const focusSpan = selectors.getFocusSpan(snapshot)\n\n if (!selectionCollapsed || !focusTextBlock || !focusSpan) {\n return false\n }\n\n const atTheBeginningOfBLock =\n focusTextBlock.node.children[0]._key === focusSpan.node._key &&\n snapshot.context.selection?.focus.offset === 0\n\n const defaultStyle = config.defaultStyle?.({\n context: {schema: snapshot.context.schema},\n schema: snapshot.context.schema,\n })\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 raise({\n type: 'block.set',\n props: {style: defaultStyle},\n at: focusTextBlock.path,\n }),\n ],\n ],\n })\n\n const markdownBehaviors = [automaticHrOnPaste, clearStyleOnBackspace]\n\n return markdownBehaviors\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise} from '@portabletext/editor/behaviors'\nimport {getPreviousInlineObject} from '@portabletext/editor/selectors'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\n\nexport function createBlockquoteRule(config: {\n blockquoteStyle: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n}) {\n return defineInputRule({\n on: /^> /,\n guard: ({snapshot, event}) => {\n const style = config.blockquoteStyle({\n context: {schema: snapshot.context.schema},\n schema: snapshot.context.schema,\n })\n\n if (!style) {\n return false\n }\n\n const previousInlineObject = getPreviousInlineObject(snapshot)\n\n if (previousInlineObject) {\n return false\n }\n\n const match = event.matches.at(0)\n\n if (!match) {\n return false\n }\n\n return {style, match}\n },\n actions: [\n ({event}, {style, match}) => [\n raise({\n type: 'block.unset',\n props: ['listItem', 'level'],\n at: event.focusBlock.path,\n }),\n raise({\n type: 'block.set',\n props: {style},\n at: event.focusBlock.path,\n }),\n raise({\n type: 'delete',\n at: match.targetOffsets,\n }),\n ],\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise} from '@portabletext/editor/behaviors'\nimport {getPreviousInlineObject} from '@portabletext/editor/selectors'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\n\nexport function createHeadingRule(config: {\n headingStyle: ({\n context,\n schema,\n props,\n level,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n props: {level: number}\n /**\n * @deprecated Use `props.level` instead\n */\n level: number\n }) => string | undefined\n}) {\n return defineInputRule({\n on: /^#+ /,\n guard: ({snapshot, event}) => {\n const previousInlineObject = getPreviousInlineObject(snapshot)\n\n if (previousInlineObject) {\n return false\n }\n\n const match = event.matches.at(0)\n\n if (!match) {\n return false\n }\n\n const level = match.text.length - 1\n\n const style = config.headingStyle({\n context: {schema: snapshot.context.schema},\n schema: snapshot.context.schema,\n props: {level},\n level,\n })\n\n if (!style) {\n return false\n }\n\n return {match, style}\n },\n actions: [\n ({event}, {match, style}) => [\n raise({\n type: 'block.unset',\n props: ['listItem', 'level'],\n at: event.focusBlock.path,\n }),\n raise({\n type: 'block.set',\n props: {style},\n at: event.focusBlock.path,\n }),\n raise({\n type: 'delete',\n at: match.targetOffsets,\n }),\n ],\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise} from '@portabletext/editor/behaviors'\nimport {getPreviousInlineObject} from '@portabletext/editor/selectors'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\nimport type {ObjectWithOptionalKey} from './behavior.markdown-shortcuts'\n\nexport function createHorizontalRuleRule(config: {\n horizontalRuleObject: ({\n context,\n }: {\n context: Pick<EditorContext, 'schema' | 'keyGenerator'>\n }) => ObjectWithOptionalKey | undefined\n}) {\n return defineInputRule({\n on: /^(---)|^(—-)|^(___)|^(\\*\\*\\*)/,\n guard: ({snapshot, event}) => {\n const hrObject = config.horizontalRuleObject({\n context: {\n schema: snapshot.context.schema,\n keyGenerator: snapshot.context.keyGenerator,\n },\n })\n\n if (!hrObject) {\n // If no horizontal rule object is provided, then we can safely skip\n // this rule.\n return false\n }\n\n const previousInlineObject = getPreviousInlineObject(snapshot)\n\n if (previousInlineObject) {\n // Input Rules only look at the plain text of the text block. This\n // means that the RegExp is matched even if there is a leading inline\n // object.\n return false\n }\n\n // In theory, an Input Rule could return multiple matches. But in this\n // case we only expect one match.\n const match = event.matches.at(0)\n\n if (!match) {\n return false\n }\n\n return {hrObject, match}\n },\n actions: [\n (_, {hrObject, match}) => [\n raise({\n type: 'insert.block',\n block: hrObject,\n placement: 'before',\n select: 'none',\n }),\n raise({\n type: 'delete',\n at: match.targetOffsets,\n }),\n ],\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise, type BehaviorAction} from '@portabletext/editor/behaviors'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\nimport type {ObjectWithOptionalKey} from './behavior.markdown-shortcuts'\n\nexport function createMarkdownLinkRule(config: {\n linkObject: ({\n context,\n props,\n }: {\n context: Pick<EditorContext, 'schema' | 'keyGenerator'>\n props: {href: string}\n }) => ObjectWithOptionalKey | undefined\n}) {\n return defineInputRule({\n on: /\\[([^[\\]]+)]\\((.+)\\)/,\n actions: [\n ({snapshot, event}) => {\n const newText = event.textBefore + event.textInserted\n let textLengthDelta = 0\n const actions: Array<BehaviorAction> = []\n\n for (const match of event.matches.reverse()) {\n const textMatch = match.groupMatches.at(0)\n const hrefMatch = match.groupMatches.at(1)\n\n if (textMatch === undefined || hrefMatch === undefined) {\n continue\n }\n\n textLengthDelta =\n textLengthDelta -\n (match.targetOffsets.focus.offset -\n match.targetOffsets.anchor.offset -\n textMatch.text.length)\n\n const linkObject = config.linkObject({\n context: {\n schema: snapshot.context.schema,\n keyGenerator: snapshot.context.keyGenerator,\n },\n props: {href: hrefMatch.text},\n })\n\n if (!linkObject) {\n continue\n }\n\n const {_type, _key, ...value} = linkObject\n\n const leftSideOffsets = {\n anchor: match.targetOffsets.anchor,\n focus: textMatch.targetOffsets.anchor,\n }\n const rightSideOffsets = {\n anchor: textMatch.targetOffsets.focus,\n focus: match.targetOffsets.focus,\n }\n\n actions.push(\n raise({\n type: 'select',\n at: textMatch.targetOffsets,\n }),\n )\n actions.push(\n raise({\n type: 'annotation.add',\n annotation: {\n name: _type,\n _key,\n value,\n },\n }),\n )\n actions.push(\n raise({\n type: 'delete',\n at: rightSideOffsets,\n }),\n )\n actions.push(\n raise({\n type: 'delete',\n at: leftSideOffsets,\n }),\n )\n }\n\n const endCaretPosition = {\n path: event.focusBlock.path,\n offset: newText.length - textLengthDelta * -1,\n }\n\n return [\n ...actions,\n raise({\n type: 'select',\n at: {\n anchor: endCaretPosition,\n focus: endCaretPosition,\n },\n }),\n ]\n },\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise} from '@portabletext/editor/behaviors'\nimport {getPreviousInlineObject} from '@portabletext/editor/selectors'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\n\nexport function createOrderedListRule(config: {\n orderedList: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n}) {\n return defineInputRule({\n on: /^1\\. /,\n guard: ({snapshot, event}) => {\n const orderedList = config.orderedList({\n context: {schema: snapshot.context.schema},\n schema: snapshot.context.schema,\n })\n\n if (!orderedList) {\n return false\n }\n\n const previousInlineObject = getPreviousInlineObject(snapshot)\n\n if (previousInlineObject) {\n return false\n }\n\n const match = event.matches.at(0)\n\n if (!match) {\n return false\n }\n\n return {match, orderedList}\n },\n actions: [\n ({event}, {match, orderedList}) => [\n raise({\n type: 'block.unset',\n props: ['style'],\n at: event.focusBlock.path,\n }),\n raise({\n type: 'block.set',\n props: {\n listItem: orderedList,\n level: event.focusBlock.node.level ?? 1,\n },\n at: event.focusBlock.path,\n }),\n raise({\n type: 'delete',\n at: match.targetOffsets,\n }),\n ],\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise} from '@portabletext/editor/behaviors'\nimport {getPreviousInlineObject} from '@portabletext/editor/selectors'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\n\nexport function createUnorderedListRule(config: {\n unorderedList: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n}) {\n return defineInputRule({\n on: /^(-|\\*) /,\n guard: ({snapshot, event}) => {\n const unorderedList = config.unorderedList({\n context: {schema: snapshot.context.schema},\n schema: snapshot.context.schema,\n })\n\n if (!unorderedList) {\n return false\n }\n\n const previousInlineObject = getPreviousInlineObject(snapshot)\n\n if (previousInlineObject) {\n return false\n }\n\n const match = event.matches.at(0)\n\n if (!match) {\n return false\n }\n\n return {match, unorderedList}\n },\n actions: [\n ({event}, {match, unorderedList}) => [\n raise({\n type: 'block.unset',\n props: ['style'],\n at: event.focusBlock.path,\n }),\n raise({\n type: 'block.set',\n props: {\n listItem: unorderedList,\n level: event.focusBlock.node.level ?? 1,\n },\n at: event.focusBlock.path,\n }),\n raise({\n type: 'delete',\n at: match.targetOffsets,\n }),\n ],\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {useEditor} from '@portabletext/editor'\nimport {CharacterPairDecoratorPlugin} from '@portabletext/plugin-character-pair-decorator'\nimport {InputRulePlugin} from '@portabletext/plugin-input-rule'\nimport {useEffect, useMemo} from 'react'\nimport {\n createMarkdownBehaviors,\n type MarkdownBehaviorsConfig,\n type ObjectWithOptionalKey,\n} from './behavior.markdown-shortcuts'\nimport {createBlockquoteRule} from './rule.blockquote'\nimport {createHeadingRule} from './rule.heading'\nimport {createHorizontalRuleRule} from './rule.horizontal-rule'\nimport {createMarkdownLinkRule} from './rule.markdown-link'\nimport {createOrderedListRule} from './rule.ordered-list'\nimport {createUnorderedListRule} from './rule.unordered-list'\n\n/**\n * @public\n */\nexport type MarkdownShortcutsPluginProps = MarkdownBehaviorsConfig & {\n blockquoteStyle?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n defaultStyle?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n headingStyle?: ({\n context,\n schema,\n props,\n level,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n props: {level: number}\n /**\n * @deprecated Use `props.level` instead\n */\n level: number\n }) => string | undefined\n linkObject?: ({\n context,\n props,\n }: {\n context: Pick<EditorContext, 'schema' | 'keyGenerator'>\n props: {href: string}\n }) => ObjectWithOptionalKey | undefined\n unorderedList?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n orderedList?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n boldDecorator?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n codeDecorator?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n italicDecorator?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n strikeThroughDecorator?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n}\n\n/**\n * @public\n */\nexport function MarkdownShortcutsPlugin({\n blockquoteStyle,\n boldDecorator,\n codeDecorator,\n defaultStyle,\n headingStyle,\n horizontalRuleObject,\n linkObject,\n italicDecorator,\n orderedList,\n strikeThroughDecorator,\n unorderedList,\n}: MarkdownShortcutsPluginProps) {\n const editor = useEditor()\n\n useEffect(() => {\n const behaviors = createMarkdownBehaviors({\n defaultStyle,\n })\n\n const unregisterBehaviors = behaviors.map((behavior) =>\n editor.registerBehavior({behavior}),\n )\n\n return () => {\n for (const unregisterBehavior of unregisterBehaviors) {\n unregisterBehavior()\n }\n }\n }, [defaultStyle, editor])\n\n const inputRules = useMemo(() => {\n const rules = []\n if (blockquoteStyle) {\n rules.push(createBlockquoteRule({blockquoteStyle}))\n }\n if (headingStyle) {\n rules.push(createHeadingRule({headingStyle}))\n }\n if (horizontalRuleObject) {\n rules.push(createHorizontalRuleRule({horizontalRuleObject}))\n }\n if (linkObject) {\n rules.push(createMarkdownLinkRule({linkObject}))\n }\n if (orderedList) {\n rules.push(createOrderedListRule({orderedList}))\n }\n if (unorderedList) {\n rules.push(createUnorderedListRule({unorderedList}))\n }\n return rules.length > 0 ? rules : null\n }, [\n blockquoteStyle,\n headingStyle,\n horizontalRuleObject,\n linkObject,\n orderedList,\n unorderedList,\n ])\n\n return (\n <>\n {boldDecorator ? (\n <>\n <CharacterPairDecoratorPlugin\n decorator={boldDecorator}\n pair={{char: '*', amount: 2}}\n />\n <CharacterPairDecoratorPlugin\n decorator={boldDecorator}\n pair={{char: '_', amount: 2}}\n />\n </>\n ) : null}\n {codeDecorator ? (\n <CharacterPairDecoratorPlugin\n decorator={codeDecorator}\n pair={{char: '`', amount: 1}}\n />\n ) : null}\n {italicDecorator ? (\n <>\n <CharacterPairDecoratorPlugin\n decorator={italicDecorator}\n pair={{char: '*', amount: 1}}\n />\n <CharacterPairDecoratorPlugin\n decorator={italicDecorator}\n pair={{char: '_', amount: 1}}\n />\n </>\n ) : null}\n {strikeThroughDecorator ? (\n <CharacterPairDecoratorPlugin\n decorator={strikeThroughDecorator}\n pair={{char: '~', amount: 2}}\n />\n ) : null}\n {inputRules ? <InputRulePlugin rules={inputRules} /> : null}\n </>\n )\n}\n"],"names":["createMarkdownBehaviors","config","automaticHrOnPaste","defineBehavior","on","guard","snapshot","event","text","originEvent","dataTransfer","getData","hrRegExp","hrCharacters","match","hrObject","horizontalRuleObject","context","schema","keyGenerator","focusBlock","selectors","getFocusBlock","focusTextBlock","getFocusTextBlock","actions","_","raise","type","block","_type","name","children","node","placement","at","path","clearStyleOnBackspace","selectionCollapsed","isSelectionCollapsed","focusSpan","getFocusSpan","atTheBeginningOfBLock","_key","selection","focus","offset","defaultStyle","style","props","createBlockquoteRule","defineInputRule","blockquoteStyle","getPreviousInlineObject","matches","targetOffsets","createHeadingRule","level","length","headingStyle","createHorizontalRuleRule","select","createMarkdownLinkRule","newText","textBefore","textInserted","textLengthDelta","reverse","textMatch","groupMatches","hrefMatch","undefined","anchor","linkObject","href","value","leftSideOffsets","rightSideOffsets","push","annotation","endCaretPosition","createOrderedListRule","orderedList","listItem","createUnorderedListRule","unorderedList","MarkdownShortcutsPlugin","t0","$","_c","boldDecorator","codeDecorator","italicDecorator","strikeThroughDecorator","editor","useEditor","t1","t2","unregisterBehaviors","map","behavior","registerBehavior","unregisterBehavior","useEffect","rules","t3","inputRules","char","amount","t4","t5","t6","t7","t8"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/behavior.markdown-shortcuts.ts","../src/rule.blockquote.ts","../src/rule.heading.ts","../src/rule.horizontal-rule.ts","../src/rule.markdown-link.ts","../src/rule.ordered-list.ts","../src/rule.unordered-list.ts","../src/plugin.markdown-shortcuts.tsx"],"sourcesContent":["import type {EditorContext} from '@portabletext/editor'\nimport {defineBehavior, raise} from '@portabletext/editor/behaviors'\nimport * as selectors from '@portabletext/editor/selectors'\nimport {getPathSubSchema} from '@portabletext/editor/traversal'\n\nexport type ObjectWithOptionalKey = {\n _type: string\n _key?: string\n [other: string]: unknown\n}\n\nexport type MarkdownBehaviorsConfig = {\n horizontalRuleObject?: ({\n context,\n }: {\n context: Pick<EditorContext, 'schema' | 'keyGenerator'>\n }) => ObjectWithOptionalKey | undefined\n defaultStyle?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n}\n\nexport function createMarkdownBehaviors(config: MarkdownBehaviorsConfig) {\n const automaticHrOnPaste = defineBehavior({\n on: 'clipboard.paste',\n guard: ({snapshot, event}) => {\n const text = event.originEvent.dataTransfer.getData('text/plain')\n const hrRegExp = /^(---)$|^(—-)$|^(___)$|^(\\*\\*\\*)$/\n const hrCharacters = text.match(hrRegExp)?.[0]\n const focusBlock = selectors.getFocusBlock(snapshot)\n const focusTextBlock = selectors.getFocusTextBlock(snapshot)\n\n if (!focusBlock) {\n return false\n }\n\n const hrObject = config.horizontalRuleObject?.({\n context: {\n schema: getPathSubSchema(snapshot, focusBlock.path),\n keyGenerator: snapshot.context.keyGenerator,\n },\n })\n\n if (!hrCharacters || !hrObject) {\n return false\n }\n\n return {hrCharacters, hrObject, focusBlock, focusTextBlock}\n },\n actions: [\n (_, {hrCharacters}) => [\n raise({\n type: 'insert.text',\n text: hrCharacters,\n }),\n ],\n ({snapshot}, {hrObject, focusBlock, focusTextBlock}) =>\n focusTextBlock\n ? [\n raise({\n type: 'insert.block',\n block: {\n _type: snapshot.context.schema.block.name,\n children: focusTextBlock.node.children,\n },\n placement: 'after',\n }),\n raise({\n type: 'insert.block',\n block: hrObject,\n placement: 'after',\n }),\n raise({\n type: 'delete.block',\n at: focusBlock.path,\n }),\n ]\n : [\n raise({\n type: 'insert.block',\n block: hrObject,\n placement: 'after',\n }),\n ],\n ],\n })\n\n const clearStyleOnBackspace = defineBehavior({\n on: 'delete.backward',\n guard: ({snapshot}) => {\n const selectionCollapsed = selectors.isSelectionCollapsed(snapshot)\n const focusTextBlock = selectors.getFocusTextBlock(snapshot)\n const focusSpan = selectors.getFocusSpan(snapshot)\n\n if (!selectionCollapsed || !focusTextBlock || !focusSpan) {\n return false\n }\n\n const atTheBeginningOfBLock =\n focusTextBlock.node.children[0]._key === focusSpan.node._key &&\n snapshot.context.selection?.focus.offset === 0\n\n const subSchema = getPathSubSchema(snapshot, focusTextBlock.path)\n const defaultStyle = config.defaultStyle?.({\n context: {schema: subSchema},\n schema: subSchema,\n })\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 raise({\n type: 'block.set',\n props: {style: defaultStyle},\n at: focusTextBlock.path,\n }),\n ],\n ],\n })\n\n const markdownBehaviors = [automaticHrOnPaste, clearStyleOnBackspace]\n\n return markdownBehaviors\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise} from '@portabletext/editor/behaviors'\nimport {getPreviousInlineObject} from '@portabletext/editor/selectors'\nimport {getPathSubSchema} from '@portabletext/editor/traversal'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\n\nexport function createBlockquoteRule(config: {\n blockquoteStyle: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n}) {\n return defineInputRule({\n on: /^> /,\n guard: ({snapshot, event}) => {\n const subSchema = getPathSubSchema(snapshot, event.focusBlock.path)\n const style = config.blockquoteStyle({\n context: {schema: subSchema},\n schema: subSchema,\n })\n\n if (!style) {\n return false\n }\n\n const previousInlineObject = getPreviousInlineObject(snapshot)\n\n if (previousInlineObject) {\n return false\n }\n\n const match = event.matches.at(0)\n\n if (!match) {\n return false\n }\n\n return {style, match}\n },\n actions: [\n ({event}, {style, match}) => [\n raise({\n type: 'block.unset',\n props: ['listItem', 'level'],\n at: event.focusBlock.path,\n }),\n raise({\n type: 'block.set',\n props: {style},\n at: event.focusBlock.path,\n }),\n raise({\n type: 'delete',\n at: match.targetOffsets,\n }),\n ],\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise} from '@portabletext/editor/behaviors'\nimport {getPreviousInlineObject} from '@portabletext/editor/selectors'\nimport {getPathSubSchema} from '@portabletext/editor/traversal'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\n\nexport function createHeadingRule(config: {\n headingStyle: ({\n context,\n schema,\n props,\n level,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n props: {level: number}\n /**\n * @deprecated Use `props.level` instead\n */\n level: number\n }) => string | undefined\n}) {\n return defineInputRule({\n on: /^#+ /,\n guard: ({snapshot, event}) => {\n const previousInlineObject = getPreviousInlineObject(snapshot)\n\n if (previousInlineObject) {\n return false\n }\n\n const match = event.matches.at(0)\n\n if (!match) {\n return false\n }\n\n const level = match.text.length - 1\n\n const subSchema = getPathSubSchema(snapshot, event.focusBlock.path)\n const style = config.headingStyle({\n context: {schema: subSchema},\n schema: subSchema,\n props: {level},\n level,\n })\n\n if (!style) {\n return false\n }\n\n return {match, style}\n },\n actions: [\n ({event}, {match, style}) => [\n raise({\n type: 'block.unset',\n props: ['listItem', 'level'],\n at: event.focusBlock.path,\n }),\n raise({\n type: 'block.set',\n props: {style},\n at: event.focusBlock.path,\n }),\n raise({\n type: 'delete',\n at: match.targetOffsets,\n }),\n ],\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise} from '@portabletext/editor/behaviors'\nimport {getPreviousInlineObject} from '@portabletext/editor/selectors'\nimport {getPathSubSchema} from '@portabletext/editor/traversal'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\nimport type {ObjectWithOptionalKey} from './behavior.markdown-shortcuts'\n\nexport function createHorizontalRuleRule(config: {\n horizontalRuleObject: ({\n context,\n }: {\n context: Pick<EditorContext, 'schema' | 'keyGenerator'>\n }) => ObjectWithOptionalKey | undefined\n}) {\n return defineInputRule({\n on: /^(---)|^(—-)|^(___)|^(\\*\\*\\*)/,\n guard: ({snapshot, event}) => {\n const subSchema = getPathSubSchema(snapshot, event.focusBlock.path)\n const hrObject = config.horizontalRuleObject({\n context: {\n schema: subSchema,\n keyGenerator: snapshot.context.keyGenerator,\n },\n })\n\n if (!hrObject) {\n // If no horizontal rule object is provided, then we can safely skip\n // this rule.\n return false\n }\n\n const previousInlineObject = getPreviousInlineObject(snapshot)\n\n if (previousInlineObject) {\n // Input Rules only look at the plain text of the text block. This\n // means that the RegExp is matched even if there is a leading inline\n // object.\n return false\n }\n\n // In theory, an Input Rule could return multiple matches. But in this\n // case we only expect one match.\n const match = event.matches.at(0)\n\n if (!match) {\n return false\n }\n\n return {hrObject, match}\n },\n actions: [\n (_, {hrObject, match}) => [\n raise({\n type: 'insert.block',\n block: hrObject,\n placement: 'before',\n select: 'none',\n }),\n raise({\n type: 'delete',\n at: match.targetOffsets,\n }),\n ],\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise, type BehaviorAction} from '@portabletext/editor/behaviors'\nimport {getPathSubSchema} from '@portabletext/editor/traversal'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\nimport type {ObjectWithOptionalKey} from './behavior.markdown-shortcuts'\n\nexport function createMarkdownLinkRule(config: {\n linkObject: ({\n context,\n props,\n }: {\n context: Pick<EditorContext, 'schema' | 'keyGenerator'>\n props: {href: string}\n }) => ObjectWithOptionalKey | undefined\n}) {\n return defineInputRule({\n on: /\\[([^[\\]]+)]\\((.+)\\)/,\n actions: [\n ({snapshot, event}) => {\n const newText = event.textBefore + event.textInserted\n let textLengthDelta = 0\n const actions: Array<BehaviorAction> = []\n\n for (const match of event.matches.reverse()) {\n const textMatch = match.groupMatches.at(0)\n const hrefMatch = match.groupMatches.at(1)\n\n if (textMatch === undefined || hrefMatch === undefined) {\n continue\n }\n\n textLengthDelta =\n textLengthDelta -\n (match.targetOffsets.focus.offset -\n match.targetOffsets.anchor.offset -\n textMatch.text.length)\n\n const linkObject = config.linkObject({\n context: {\n schema: getPathSubSchema(snapshot, event.focusBlock.path),\n keyGenerator: snapshot.context.keyGenerator,\n },\n props: {href: hrefMatch.text},\n })\n\n if (!linkObject) {\n continue\n }\n\n const {_type, _key, ...value} = linkObject\n\n const leftSideOffsets = {\n anchor: match.targetOffsets.anchor,\n focus: textMatch.targetOffsets.anchor,\n }\n const rightSideOffsets = {\n anchor: textMatch.targetOffsets.focus,\n focus: match.targetOffsets.focus,\n }\n\n actions.push(\n raise({\n type: 'select',\n at: textMatch.targetOffsets,\n }),\n )\n actions.push(\n raise({\n type: 'annotation.add',\n annotation: {\n name: _type,\n _key,\n value,\n },\n }),\n )\n actions.push(\n raise({\n type: 'delete',\n at: rightSideOffsets,\n }),\n )\n actions.push(\n raise({\n type: 'delete',\n at: leftSideOffsets,\n }),\n )\n }\n\n if (actions.length === 0) {\n return []\n }\n\n const endCaretPosition = {\n path: event.focusBlock.path,\n offset: newText.length - textLengthDelta * -1,\n }\n\n return [\n ...actions,\n raise({\n type: 'select',\n at: {\n anchor: endCaretPosition,\n focus: endCaretPosition,\n },\n }),\n ]\n },\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise} from '@portabletext/editor/behaviors'\nimport {getPreviousInlineObject} from '@portabletext/editor/selectors'\nimport {getPathSubSchema} from '@portabletext/editor/traversal'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\n\nexport function createOrderedListRule(config: {\n orderedList: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n}) {\n return defineInputRule({\n on: /^1\\. /,\n guard: ({snapshot, event}) => {\n const subSchema = getPathSubSchema(snapshot, event.focusBlock.path)\n const orderedList = config.orderedList({\n context: {schema: subSchema},\n schema: subSchema,\n })\n\n if (!orderedList) {\n return false\n }\n\n const previousInlineObject = getPreviousInlineObject(snapshot)\n\n if (previousInlineObject) {\n return false\n }\n\n const match = event.matches.at(0)\n\n if (!match) {\n return false\n }\n\n return {match, orderedList}\n },\n actions: [\n ({event}, {match, orderedList}) => [\n raise({\n type: 'block.unset',\n props: ['style'],\n at: event.focusBlock.path,\n }),\n raise({\n type: 'block.set',\n props: {\n listItem: orderedList,\n level: event.focusBlock.node.level ?? 1,\n },\n at: event.focusBlock.path,\n }),\n raise({\n type: 'delete',\n at: match.targetOffsets,\n }),\n ],\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {raise} from '@portabletext/editor/behaviors'\nimport {getPreviousInlineObject} from '@portabletext/editor/selectors'\nimport {getPathSubSchema} from '@portabletext/editor/traversal'\nimport {defineInputRule} from '@portabletext/plugin-input-rule'\n\nexport function createUnorderedListRule(config: {\n unorderedList: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n}) {\n return defineInputRule({\n on: /^(-|\\*) /,\n guard: ({snapshot, event}) => {\n const subSchema = getPathSubSchema(snapshot, event.focusBlock.path)\n const unorderedList = config.unorderedList({\n context: {schema: subSchema},\n schema: subSchema,\n })\n\n if (!unorderedList) {\n return false\n }\n\n const previousInlineObject = getPreviousInlineObject(snapshot)\n\n if (previousInlineObject) {\n return false\n }\n\n const match = event.matches.at(0)\n\n if (!match) {\n return false\n }\n\n return {match, unorderedList}\n },\n actions: [\n ({event}, {match, unorderedList}) => [\n raise({\n type: 'block.unset',\n props: ['style'],\n at: event.focusBlock.path,\n }),\n raise({\n type: 'block.set',\n props: {\n listItem: unorderedList,\n level: event.focusBlock.node.level ?? 1,\n },\n at: event.focusBlock.path,\n }),\n raise({\n type: 'delete',\n at: match.targetOffsets,\n }),\n ],\n ],\n })\n}\n","import type {EditorContext} from '@portabletext/editor'\nimport {useEditor} from '@portabletext/editor'\nimport {CharacterPairDecoratorPlugin} from '@portabletext/plugin-character-pair-decorator'\nimport {InputRulePlugin} from '@portabletext/plugin-input-rule'\nimport {useEffect, useMemo} from 'react'\nimport {\n createMarkdownBehaviors,\n type MarkdownBehaviorsConfig,\n type ObjectWithOptionalKey,\n} from './behavior.markdown-shortcuts'\nimport {createBlockquoteRule} from './rule.blockquote'\nimport {createHeadingRule} from './rule.heading'\nimport {createHorizontalRuleRule} from './rule.horizontal-rule'\nimport {createMarkdownLinkRule} from './rule.markdown-link'\nimport {createOrderedListRule} from './rule.ordered-list'\nimport {createUnorderedListRule} from './rule.unordered-list'\n\n/**\n * @public\n */\nexport type MarkdownShortcutsPluginProps = MarkdownBehaviorsConfig & {\n blockquoteStyle?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n defaultStyle?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n headingStyle?: ({\n context,\n schema,\n props,\n level,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n props: {level: number}\n /**\n * @deprecated Use `props.level` instead\n */\n level: number\n }) => string | undefined\n linkObject?: ({\n context,\n props,\n }: {\n context: Pick<EditorContext, 'schema' | 'keyGenerator'>\n props: {href: string}\n }) => ObjectWithOptionalKey | undefined\n unorderedList?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n orderedList?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n boldDecorator?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n codeDecorator?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n italicDecorator?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n strikeThroughDecorator?: ({\n context,\n schema,\n }: {\n context: Pick<EditorContext, 'schema'>\n /**\n * @deprecated Use `context.schema` instead\n */\n schema: EditorContext['schema']\n }) => string | undefined\n}\n\n/**\n * @public\n */\nexport function MarkdownShortcutsPlugin({\n blockquoteStyle,\n boldDecorator,\n codeDecorator,\n defaultStyle,\n headingStyle,\n horizontalRuleObject,\n linkObject,\n italicDecorator,\n orderedList,\n strikeThroughDecorator,\n unorderedList,\n}: MarkdownShortcutsPluginProps) {\n const editor = useEditor()\n\n useEffect(() => {\n const behaviors = createMarkdownBehaviors({\n defaultStyle,\n })\n\n const unregisterBehaviors = behaviors.map((behavior) =>\n editor.registerBehavior({behavior}),\n )\n\n return () => {\n for (const unregisterBehavior of unregisterBehaviors) {\n unregisterBehavior()\n }\n }\n }, [defaultStyle, editor])\n\n const inputRules = useMemo(() => {\n const rules = []\n if (blockquoteStyle) {\n rules.push(createBlockquoteRule({blockquoteStyle}))\n }\n if (headingStyle) {\n rules.push(createHeadingRule({headingStyle}))\n }\n if (horizontalRuleObject) {\n rules.push(createHorizontalRuleRule({horizontalRuleObject}))\n }\n if (linkObject) {\n rules.push(createMarkdownLinkRule({linkObject}))\n }\n if (orderedList) {\n rules.push(createOrderedListRule({orderedList}))\n }\n if (unorderedList) {\n rules.push(createUnorderedListRule({unorderedList}))\n }\n return rules.length > 0 ? rules : null\n }, [\n blockquoteStyle,\n headingStyle,\n horizontalRuleObject,\n linkObject,\n orderedList,\n unorderedList,\n ])\n\n return (\n <>\n {boldDecorator ? (\n <>\n <CharacterPairDecoratorPlugin\n decorator={boldDecorator}\n pair={{char: '*', amount: 2}}\n />\n <CharacterPairDecoratorPlugin\n decorator={boldDecorator}\n pair={{char: '_', amount: 2}}\n />\n </>\n ) : null}\n {codeDecorator ? (\n <CharacterPairDecoratorPlugin\n decorator={codeDecorator}\n pair={{char: '`', amount: 1}}\n />\n ) : null}\n {italicDecorator ? (\n <>\n <CharacterPairDecoratorPlugin\n decorator={italicDecorator}\n pair={{char: '*', amount: 1}}\n />\n <CharacterPairDecoratorPlugin\n decorator={italicDecorator}\n pair={{char: '_', amount: 1}}\n />\n </>\n ) : null}\n {strikeThroughDecorator ? (\n <CharacterPairDecoratorPlugin\n decorator={strikeThroughDecorator}\n pair={{char: '~', amount: 2}}\n />\n ) : null}\n {inputRules ? <InputRulePlugin rules={inputRules} /> : null}\n </>\n )\n}\n"],"names":["createMarkdownBehaviors","config","automaticHrOnPaste","defineBehavior","on","guard","snapshot","event","text","originEvent","dataTransfer","getData","hrRegExp","hrCharacters","match","focusBlock","selectors","getFocusBlock","focusTextBlock","getFocusTextBlock","hrObject","horizontalRuleObject","context","schema","getPathSubSchema","path","keyGenerator","actions","_","raise","type","block","_type","name","children","node","placement","at","clearStyleOnBackspace","selectionCollapsed","isSelectionCollapsed","focusSpan","getFocusSpan","atTheBeginningOfBLock","_key","selection","focus","offset","subSchema","defaultStyle","style","props","createBlockquoteRule","defineInputRule","blockquoteStyle","getPreviousInlineObject","matches","targetOffsets","createHeadingRule","level","length","headingStyle","createHorizontalRuleRule","select","createMarkdownLinkRule","newText","textBefore","textInserted","textLengthDelta","reverse","textMatch","groupMatches","hrefMatch","undefined","anchor","linkObject","href","value","leftSideOffsets","rightSideOffsets","push","annotation","endCaretPosition","createOrderedListRule","orderedList","listItem","createUnorderedListRule","unorderedList","MarkdownShortcutsPlugin","t0","$","_c","boldDecorator","codeDecorator","italicDecorator","strikeThroughDecorator","editor","useEditor","t1","t2","unregisterBehaviors","map","behavior","registerBehavior","unregisterBehavior","useEffect","rules","t3","inputRules","char","amount","t4","t5","t6","t7","t8"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@portabletext/plugin-markdown-shortcuts",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0",
|
|
4
4
|
"description": "Adds helpful Markdown shortcuts to the editor",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"portabletext",
|
|
@@ -32,28 +32,28 @@
|
|
|
32
32
|
"dist"
|
|
33
33
|
],
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@portabletext/plugin-character-pair-decorator": "^
|
|
36
|
-
"@portabletext/plugin-input-rule": "^
|
|
35
|
+
"@portabletext/plugin-character-pair-decorator": "^8.0.0",
|
|
36
|
+
"@portabletext/plugin-input-rule": "^5.0.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@sanity/tsconfig": "^2.1.0",
|
|
40
|
-
"@types/react": "^19.2.
|
|
41
|
-
"@vitejs/plugin-react": "^5.
|
|
42
|
-
"@vitest/browser": "^4.1.
|
|
43
|
-
"@vitest/browser-playwright": "^4.1.
|
|
40
|
+
"@types/react": "^19.2.14",
|
|
41
|
+
"@vitejs/plugin-react": "^5.2.0",
|
|
42
|
+
"@vitest/browser": "^4.1.4",
|
|
43
|
+
"@vitest/browser-playwright": "^4.1.4",
|
|
44
44
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
45
45
|
"eslint": "^9.39.1",
|
|
46
|
-
"eslint-plugin-react-hooks": "^7.
|
|
47
|
-
"react": "^19.2.
|
|
46
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
47
|
+
"react": "^19.2.5",
|
|
48
48
|
"typescript": "5.9.3",
|
|
49
49
|
"typescript-eslint": "^8.48.0",
|
|
50
|
-
"vitest": "^4.1.
|
|
51
|
-
"@portabletext/editor": "^
|
|
52
|
-
"racejar": "2.0.
|
|
50
|
+
"vitest": "^4.1.4",
|
|
51
|
+
"@portabletext/editor": "^7.0.0",
|
|
52
|
+
"racejar": "2.0.6"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
55
|
"react": "^19.2",
|
|
56
|
-
"@portabletext/editor": "^
|
|
56
|
+
"@portabletext/editor": "^7.0.0"
|
|
57
57
|
},
|
|
58
58
|
"engines": {
|
|
59
59
|
"node": ">=20.19 <22 || >=22.12"
|