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

fix cursor movement on lists

parent 5c8e8a0b
No related branches found
No related tags found
1 merge request!107Tracked transaction
...@@ -48,12 +48,13 @@ const Editoria = () => ( ...@@ -48,12 +48,13 @@ const Editoria = () => (
placeholder="Type Something..." placeholder="Type Something..."
fileUpload={file => renderImage(file)} fileUpload={file => renderImage(file)}
value={ value={
'<p class="paragraph">this is <span class="deletion user-1234" data-id="" data-user="1234" data-username="demo" data-date="26486384" data-group="">some</span> content</p><ul> <li> <p> some li text</p></li><li> <p> some li second text</p></li><li> <p> some li third text</p></li></ul><p class="paragraph">second paragraph</p>' '<p class="paragraph">this is</p><p class="paragraph">this is <span class="deletion user-1234" data-id="" data-user="1234" data-username="demo" data-date="26486384" data-group="">some</span> content</p><ul> <li> <p> some li text</p></li><li> <p> some li second text</p></li><li> <p> some li third text</p></li></ul><p class="paragraph">second paragraph</p>'
} }
layout={EditoriaLayout} layout={EditoriaLayout}
TrackChange TrackChange
// onChange={source => console.log(source)} // onChange={source => console.log(source)}
user={user} user={user}
debug
/> />
</Fragment> </Fragment>
); );
......
...@@ -28,6 +28,7 @@ const replaceStep = (state, tr, step, newTr, map, doc, user, date) => { ...@@ -28,6 +28,7 @@ const replaceStep = (state, tr, step, newTr, map, doc, user, date) => {
step.structure step.structure
) )
: false; : false;
// We didn't apply the original step in its original place. We adjust the map accordingly. // We didn't apply the original step in its original place. We adjust the map accordingly.
map.appendMap(step.invert(doc).getMap()); map.appendMap(step.invert(doc).getMap());
if (newStep) { if (newStep) {
......
...@@ -45,12 +45,15 @@ const trackedTransaction = (tr, state, user) => { ...@@ -45,12 +45,15 @@ const trackedTransaction = (tr, state, user) => {
switch (step.constructor) { switch (step.constructor) {
case ReplaceStep: case ReplaceStep:
console.log("ReplaceStep");
replaceStep(state, tr, step, newTr, map, doc, user, date); replaceStep(state, tr, step, newTr, map, doc, user, date);
break; break;
case ReplaceAroundStep: case ReplaceAroundStep:
console.log("ReplaceAroundStep");
replaceAroundStep(state, tr, step, newTr, map, doc, user, date); replaceAroundStep(state, tr, step, newTr, map, doc, user, date);
break; break;
case AddMarkStep: case AddMarkStep:
console.log("AddMarkStep");
addMarkStep(state, tr, step, newTr, map, doc, user, date); addMarkStep(state, tr, step, newTr, map, doc, user, date);
break; break;
case RemoveMarkStep: case RemoveMarkStep:
...@@ -85,9 +88,19 @@ const trackedTransaction = (tr, state, user) => { ...@@ -85,9 +88,19 @@ const trackedTransaction = (tr, state, user) => {
const caretPos = map.map(deletionMark.to + 1, 1); const caretPos = map.map(deletionMark.to + 1, 1);
newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos))); newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
} else { } else {
console.log("not");
newTr.setSelection(tr.selection.map(newTr.doc, map)); newTr.setSelection(tr.selection.map(newTr.doc, map));
} }
} else {
if (
state.selection.from - tr.selection.from > 1 &&
tr.selection.$head.depth > 1
) {
const caretPos = map.map(tr.selection.from - 2, -1);
newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
} else {
const caretPos = map.map(tr.selection.from, -1);
newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
}
} }
if (tr.storedMarksSet) { if (tr.storedMarksSet) {
newTr.setStoredMarks(tr.storedMarks); newTr.setStoredMarks(tr.storedMarks);
...@@ -95,13 +108,6 @@ const trackedTransaction = (tr, state, user) => { ...@@ -95,13 +108,6 @@ const trackedTransaction = (tr, state, user) => {
if (tr.scrolledIntoView) { if (tr.scrolledIntoView) {
newTr.scrollIntoView(); newTr.scrollIntoView();
} }
if (
tr.selection instanceof TextSelection &&
tr.selection.from < state.selection.from
) {
const caretPos = map.map(tr.selection.from, -1);
newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
}
return newTr; return newTr;
}; };
......
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