@portabletext/plugin-markdown-shortcuts 8.0.30 → 8.0.31

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 CHANGED
@@ -220,7 +220,15 @@ function createHorizontalRuleRule(config) {
220
220
  }
221
221
  function createMarkdownLinkRule(config) {
222
222
  return defineInputRule({
223
- on: /\[([^[\]]+)]\((.+)\)/,
223
+ on: /\[(?<text>[^[\]]+)]\((?<href>.+)\)/,
224
+ // The rule annotates the text and deletes only the markers and the href
225
+ // region, so an inline object inside the link TEXT is harmless and the
226
+ // link must fire. The unlisted `href` group stays protected: deleting
227
+ // `](href)` across an inline object would destroy it, and the captured
228
+ // href text would silently omit it.
229
+ inlineObjects: {
230
+ allow: ["text"]
231
+ },
224
232
  actions: [({
225
233
  snapshot,
226
234
  event
@@ -229,7 +237,7 @@ function createMarkdownLinkRule(config) {
229
237
  let textLengthDelta = 0;
230
238
  const actions = [];
231
239
  for (const match of event.matches.reverse()) {
232
- const textMatch = match.groupMatches.at(0), hrefMatch = match.groupMatches.at(1);
240
+ const textMatch = match.groups.text, hrefMatch = match.groups.href;
233
241
  if (textMatch === void 0 || hrefMatch === void 0)
234
242
  continue;
235
243
  textLengthDelta = textLengthDelta - (match.targetOffsets.focus.offset - match.targetOffsets.anchor.offset - textMatch.text.length);
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'\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 if (!atTheBeginningOfBLock) {\n // A style can only clear at the start of the block; resolving the\n // sub-schema and calling the consumer's `defaultStyle` callback on\n // every other backspace is wasted work with a consumer-visible\n // call frequency.\n return false\n }\n\n const subSchema = getPathSubSchema(snapshot, focusTextBlock.path)\n const defaultStyle = config.defaultStyle?.({\n context: {schema: subSchema},\n schema: subSchema,\n })\n\n if (defaultStyle && focusTextBlock.node.style !== defaultStyle) {\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","_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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"}
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 if (!atTheBeginningOfBLock) {\n // A style can only clear at the start of the block; resolving the\n // sub-schema and calling the consumer's `defaultStyle` callback on\n // every other backspace is wasted work with a consumer-visible\n // call frequency.\n return false\n }\n\n const subSchema = getPathSubSchema(snapshot, focusTextBlock.path)\n const defaultStyle = config.defaultStyle?.({\n context: {schema: subSchema},\n schema: subSchema,\n })\n\n if (defaultStyle && focusTextBlock.node.style !== defaultStyle) {\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: /\\[(?<text>[^[\\]]+)]\\((?<href>.+)\\)/,\n // The rule annotates the text and deletes only the markers and the href\n // region, so an inline object inside the link TEXT is harmless and the\n // link must fire. The unlisted `href` group stays protected: deleting\n // `](href)` across an inline object would destroy it, and the captured\n // href text would silently omit it.\n inlineObjects: {allow: ['text']},\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.groups['text']\n const hrefMatch = match.groups['href']\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","_key","selection","focus","offset","subSchema","defaultStyle","style","props","createBlockquoteRule","defineInputRule","blockquoteStyle","getPreviousInlineObject","matches","targetOffsets","createHeadingRule","level","length","headingStyle","createHorizontalRuleRule","select","createMarkdownLinkRule","inlineObjects","allow","newText","textBefore","textInserted","textLengthDelta","reverse","textMatch","groups","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": "8.0.30",
3
+ "version": "8.0.31",
4
4
  "description": "Add helpful Markdown shortcuts to the editor",
5
5
  "keywords": [
6
6
  "behaviors",
@@ -32,8 +32,8 @@
32
32
  "./package.json": "./package.json"
33
33
  },
34
34
  "dependencies": {
35
- "@portabletext/plugin-character-pair-decorator": "^8.0.30",
36
- "@portabletext/plugin-input-rule": "^5.0.30"
35
+ "@portabletext/plugin-character-pair-decorator": "^8.0.31",
36
+ "@portabletext/plugin-input-rule": "^6.0.0"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@sanity/pkg-utils": "^10.8.2",
@@ -50,6 +50,7 @@
50
50
  "typescript-eslint": "^8.62.0",
51
51
  "vitest": "^4.1.9",
52
52
  "@portabletext/editor": "^7.10.3",
53
+ "@portabletext/test": "1.0.4",
53
54
  "racejar": "2.0.9"
54
55
  },
55
56
  "peerDependencies": {