Skip to content

Commit

Permalink
feat: added ability to pass marks to updateAttributes method of React…
Browse files Browse the repository at this point in the history
…NodeView
  • Loading branch information
smsochneg committed Jan 25, 2024
1 parent 3a62b9b commit bb1660a
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions src/react-utils/react-node-view.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';

import type {Node} from 'prosemirror-model';
import type {Mark, Node} from 'prosemirror-model';
import type {EditorView, NodeView, NodeViewConstructor} from 'prosemirror-view';
import {createPortal} from 'react-dom';

Expand All @@ -17,7 +17,7 @@ export const ReactNodeStopEventCn = 'prosemirror-stop-event';
export type ReactNodeViewProps<T extends object = {}> = {
dom: HTMLElement;
view: EditorView;
updateAttributes: (attrs: object) => void;
updateAttributes: (attrs: object, marks?: Mark[]) => void;
node: Node;
getPos: () => number | undefined;
serializer: Serializer;
Expand Down Expand Up @@ -94,15 +94,20 @@ export class ReactNodeView<T extends object = {}> implements NodeView {
return true;
}

updateAttributes(attributes: {}) {
updateAttributes(attributes: {}, marks: Mark[] = []) {
const pos = this.getPos();
if (pos === undefined) return;

const {tr} = this.view.state;
tr.setNodeMarkup(pos, undefined, {
...this.node.attrs,
...attributes,
});
tr.setNodeMarkup(
pos,
undefined,
{
...this.node.attrs,
...attributes,
},
marks,
);
this.view.dispatch(tr);
}

Expand Down

0 comments on commit bb1660a

Please sign in to comment.