Skip to content
Snippets Groups Projects
Commit e7dc82a3 authored by chris's avatar chris
Browse files

replace setblockType to preserver attrs

parent 63c43adc
No related branches found
No related tags found
1 merge request!107Tracked transaction
Showing
with 110 additions and 50 deletions
import React from "react";
import styled from "styled-components";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
import Dropdown from "react-dropdown";
import "react-dropdown/style.css";
......@@ -21,10 +21,9 @@ const HeadingsDropDown = ({ dispatch, state, item }) => (
<DropdownStyled
options={dropDownOptions}
onChange={option => {
setBlockType(state.config.schema.nodes.heading, { level: option.value })(
state,
dispatch
);
Commands.setBlockType(state.config.schema.nodes.heading, {
level: option.value
})(state, dispatch);
}}
placeholder="Choose heading"
select={item.select && item.select(state)}
......
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
export default class Author extends Tools {
......@@ -9,13 +9,13 @@ export default class Author extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.author)(state, dispatch);
Commands.setBlockType(state.config.schema.nodes.author)(state, dispatch);
};
}
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.author)(state);
return Commands.setBlockType(state.config.schema.nodes.author)(state);
};
}
}
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
export default class EpigraphPoetry extends Tools {
......@@ -9,13 +9,18 @@ export default class EpigraphPoetry extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.epigraphPoetry)(state, dispatch);
Commands.setBlockType(state.config.schema.nodes.epigraphPoetry)(
state,
dispatch
);
};
}
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.epigraphPoetry)(state);
return Commands.setBlockType(state.config.schema.nodes.epigraphPoetry)(
state
);
};
}
}
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
export default class EpigraphProse extends Tools {
......@@ -9,13 +9,18 @@ export default class EpigraphProse extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.epigraphProse)(state, dispatch);
Commands.setBlockType(state.config.schema.nodes.epigraphProse)(
state,
dispatch
);
};
}
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.epigraphProse)(state);
return Commands.setBlockType(state.config.schema.nodes.epigraphProse)(
state
);
};
}
}
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
export default class Heading1 extends Tools {
......@@ -9,7 +9,7 @@ export default class Heading1 extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.heading, { level: 1 })(
Commands.setBlockType(state.config.schema.nodes.heading, { level: 1 })(
state,
dispatch
);
......@@ -18,9 +18,8 @@ export default class Heading1 extends Tools {
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.heading, {
level: 1,
track: []
return Commands.setBlockType(state.config.schema.nodes.heading, {
level: 1
})(state);
};
}
......
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
export default class Heading2 extends Tools {
......@@ -9,7 +9,7 @@ export default class Heading2 extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.heading, { level: 2 })(
Commands.setBlockType(state.config.schema.nodes.heading, { level: 2 })(
state,
dispatch
);
......@@ -18,9 +18,8 @@ export default class Heading2 extends Tools {
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.heading, {
level: 2,
track: []
return Commands.setBlockType(state.config.schema.nodes.heading, {
level: 2
})(state);
};
}
......
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
export default class Heading3 extends Tools {
......@@ -9,7 +9,7 @@ export default class Heading3 extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.heading, { level: 3 })(
Commands.setBlockType(state.config.schema.nodes.heading, { level: 3 })(
state,
dispatch
);
......@@ -18,9 +18,8 @@ export default class Heading3 extends Tools {
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.heading, {
level: 3,
track: []
return Commands.setBlockType(state.config.schema.nodes.heading, {
level: 3
})(state);
};
}
......
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
export default class SubTitle extends Tools {
......@@ -9,13 +9,16 @@ export default class SubTitle extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.subtitle)(state, dispatch);
Commands.setBlockType(state.config.schema.nodes.subtitle)(
state,
dispatch
);
};
}
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.subtitle)(state);
return Commands.setBlockType(state.config.schema.nodes.subtitle)(state);
};
}
}
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
export default class Title extends Tools {
......@@ -9,13 +9,13 @@ export default class Title extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.title)(state, dispatch);
Commands.setBlockType(state.config.schema.nodes.title)(state, dispatch);
};
}
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.title)(state);
return Commands.setBlockType(state.config.schema.nodes.title)(state);
};
}
}
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
class ExtractPoetry extends Tools {
......@@ -9,13 +9,18 @@ class ExtractPoetry extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.extractPoetry)(state, dispatch);
Commands.setBlockType(state.config.schema.nodes.extractPoetry)(
state,
dispatch
);
};
}
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.extractPoetry)(state);
return Commands.setBlockType(state.config.schema.nodes.extractPoetry)(
state
);
};
}
}
......
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
class ExtractProse extends Tools {
......@@ -9,13 +9,18 @@ class ExtractProse extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.extractProse)(state, dispatch);
Commands.setBlockType(state.config.schema.nodes.extractProse)(
state,
dispatch
);
};
}
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.extractProse)(state);
return Commands.setBlockType(state.config.schema.nodes.extractProse)(
state
);
};
}
}
......
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
class ParagraphContinued extends Tools {
......@@ -9,13 +9,18 @@ class ParagraphContinued extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.paragraphCont)(state, dispatch);
Commands.setBlockType(state.config.schema.nodes.paragraphCont)(
state,
dispatch
);
};
}
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.paragraphCont)(state);
return Commands.setBlockType(state.config.schema.nodes.paragraphCont)(
state
);
};
}
}
......
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
export default class Paragraph extends Tools {
......@@ -9,13 +9,16 @@ export default class Paragraph extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.paragraph)(state, dispatch);
Commands.setBlockType(state.config.schema.nodes.paragraph)(
state,
dispatch
);
};
}
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.paragraph)(state);
return Commands.setBlockType(state.config.schema.nodes.paragraph)(state);
};
}
}
import Tools from "../../lib/Tools";
import { injectable } from "inversify";
import { setBlockType } from "prosemirror-commands";
import { Commands } from "wax-prosemirror-utilities";
@injectable()
class SourceNote extends Tools {
......@@ -9,13 +9,16 @@ class SourceNote extends Tools {
get run() {
return (state, dispatch) => {
setBlockType(state.config.schema.nodes.sourceNote)(state, dispatch);
Commands.setBlockType(state.config.schema.nodes.sourceNote)(
state,
dispatch
);
};
}
get enable() {
return state => {
return setBlockType(state.config.schema.nodes.sourceNote)(state);
return Commands.setBlockType(state.config.schema.nodes.sourceNote)(state);
};
}
}
......
import { v4 as uuidv4 } from "uuid";
const setBlockType = (nodeType, attrs = {}) => {
return (state, dispatch) => {
const { from, to } = state.selection;
const tr = state.tr;
state.doc.nodesBetween(from, to, (node, pos) => {
if (!node.isTextblock || node.hasMarkup(nodeType, attrs)) return;
let applicable = false;
if (node.type == nodeType) {
applicable = true;
} else {
const $pos = state.doc.resolve(pos),
index = $pos.index();
applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);
}
if (applicable) {
tr.setBlockType(
pos,
pos + node.nodeSize,
nodeType,
Object.assign({}, node.attrs, attrs)
);
}
});
if (!tr.steps.length) return false;
if (dispatch) dispatch(tr.scrollIntoView());
return true;
};
};
const markActive = type => state => {
const { from, $from, to, empty } = state.selection;
......@@ -83,6 +112,7 @@ const createComment = (state, dispatch, group) => {
};
export default {
setBlockType,
blockActive,
canInsert,
createComment,
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment