import type { EditorView } from 'prosemirror-view'; import { isList } from '../utils'; type Style = Record; export const setListStyle = (view: EditorView, style: Style | Style[]) => { const { state } = view; const { schema, selection } = state; const tr = state.tr.setSelection(selection); const { doc } = tr; if (!doc) return tr; const { from, to } = selection; doc.nodesBetween(from, to, (node, pos) => { if (isList(node, schema)) { if (from - 3 <= pos && to + 3 >= pos + node.nodeSize) { const styles = Array.isArray(style) ? style : [style]; for (const style of styles) { tr.setNodeAttribute(pos, style.key, style.value); } } } return false; }); view.dispatch(tr); };