diff --git a/docs/src/docPages/api/commands/set-meta.md b/docs/src/docPages/api/commands/set-meta.md new file mode 100644 index 00000000..17d5aab9 --- /dev/null +++ b/docs/src/docPages/api/commands/set-meta.md @@ -0,0 +1,21 @@ +# setMeta +Store a metadata property in the current transaction. + +## Parameters +`key: string` + +The name of your metadata. You can get its value at any time with [getMeta](https://prosemirror.net/docs/ref/#state.Transaction.getMeta). + +`value: any` + +Store any value within your metadata. + +## Usage +```js +// Prevent the update event from being triggered +editor.commands.setMeta('preventUpdate', true) + +// Store any value in the current transaction. +// You can get this value at any time with tr.getMeta('foo'). +editor.commands.setMeta('foo', 'bar') +``` diff --git a/docs/src/links.yaml b/docs/src/links.yaml index ab9a9def..ae62e711 100644 --- a/docs/src/links.yaml +++ b/docs/src/links.yaml @@ -208,6 +208,8 @@ - title: setMark link: /api/commands/set-mark type: draft + - title: setMeta + link: /api/commands/set-meta - title: setNode link: /api/commands/set-node type: draft diff --git a/packages/core/src/commands/setMeta.ts b/packages/core/src/commands/setMeta.ts new file mode 100644 index 00000000..50afbbe0 --- /dev/null +++ b/packages/core/src/commands/setMeta.ts @@ -0,0 +1,18 @@ +import { Command, RawCommands } from '../types' + +declare module '@tiptap/core' { + interface Commands { + setMeta: { + /** + * Store a metadata property in the current transaction. + */ + setMeta: (key: string, value: any) => Command, + } + } +} + +export const setMeta: RawCommands['setMeta'] = (key, value) => ({ tr }) => { + tr.setMeta(key, value) + + return true +} diff --git a/packages/core/src/extensions/commands.ts b/packages/core/src/extensions/commands.ts index 26d5bfb7..266644b2 100644 --- a/packages/core/src/extensions/commands.ts +++ b/packages/core/src/extensions/commands.ts @@ -30,6 +30,7 @@ import * as selectNodeForward from '../commands/selectNodeForward' import * as selectParentNode from '../commands/selectParentNode' import * as setContent from '../commands/setContent' import * as setMark from '../commands/setMark' +import * as setMeta from '../commands/setMeta' import * as setNode from '../commands/setNode' import * as setNodeSelection from '../commands/setNodeSelection' import * as setTextSelection from '../commands/setTextSelection' @@ -78,6 +79,7 @@ export { selectNodeForward } export { selectParentNode } export { setContent } export { setMark } +export { setMeta } export { setNode } export { setNodeSelection } export { setTextSelection } @@ -131,6 +133,7 @@ export const Commands = Extension.create({ ...selectParentNode, ...setContent, ...setMark, + ...setMeta, ...setNode, ...setNodeSelection, ...setTextSelection,