| 1234567891011121314151617181920212223242526272829 |
- import type { EditorView } from 'prosemirror-view';
- import { isList } from '../utils';
- type Style = Record<string, string>;
- 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);
- };
|