diff --git a/test/transforms/fixtures/delete-backward/first-character/index.js b/test/transforms/fixtures/delete-backward/first-character/index.js new file mode 100644 index 000000000..65e00f690 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/first-character/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 1, + focusKey: first.key, + focusOffset: 1 + }) + + const next = state + .transform() + .moveTo(range) + .deleteBackward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveBackward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-backward/first-character/input.yaml b/test/transforms/fixtures/delete-backward/first-character/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/first-character/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/delete-backward/first-character/output.yaml b/test/transforms/fixtures/delete-backward/first-character/output.yaml new file mode 100644 index 000000000..9414f68ce --- /dev/null +++ b/test/transforms/fixtures/delete-backward/first-character/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: ord diff --git a/test/transforms/fixtures/delete-backward/join-blocks/index.js b/test/transforms/fixtures/delete-backward/join-blocks/index.js new file mode 100644 index 000000000..4f3bc0221 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/join-blocks/index.js @@ -0,0 +1,33 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const second = texts.last() + const range = selection.merge({ + anchorKey: second.key, + anchorOffset: 0, + focusKey: second.key, + focusOffset: 0 + }) + + const next = state + .transform() + .moveTo(range) + .deleteBackward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.merge({ + anchorKey: first.key, + anchorOffset: first.length, + focusKey: first.key, + focusOffset: first.length + }).toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-backward/join-blocks/input.yaml b/test/transforms/fixtures/delete-backward/join-blocks/input.yaml new file mode 100644 index 000000000..4960c06f9 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/join-blocks/input.yaml @@ -0,0 +1,14 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: another diff --git a/test/transforms/fixtures/delete-backward/join-blocks/output.yaml b/test/transforms/fixtures/delete-backward/join-blocks/output.yaml new file mode 100644 index 000000000..3d5aad120 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/join-blocks/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: wordanother diff --git a/test/transforms/fixtures/delete-backward/join-nested-blocks/index.js b/test/transforms/fixtures/delete-backward/join-nested-blocks/index.js new file mode 100644 index 000000000..4f3bc0221 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/join-nested-blocks/index.js @@ -0,0 +1,33 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const second = texts.last() + const range = selection.merge({ + anchorKey: second.key, + anchorOffset: 0, + focusKey: second.key, + focusOffset: 0 + }) + + const next = state + .transform() + .moveTo(range) + .deleteBackward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.merge({ + anchorKey: first.key, + anchorOffset: first.length, + focusKey: first.key, + focusOffset: first.length + }).toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-backward/join-nested-blocks/input.yaml b/test/transforms/fixtures/delete-backward/join-nested-blocks/input.yaml new file mode 100644 index 000000000..87b381f13 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/join-nested-blocks/input.yaml @@ -0,0 +1,17 @@ + +nodes: + - kind: block + type: quote + nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: another diff --git a/test/transforms/fixtures/delete-backward/join-nested-blocks/output.yaml b/test/transforms/fixtures/delete-backward/join-nested-blocks/output.yaml new file mode 100644 index 000000000..45d48e74b --- /dev/null +++ b/test/transforms/fixtures/delete-backward/join-nested-blocks/output.yaml @@ -0,0 +1,11 @@ + +nodes: + - kind: block + type: quote + nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: wordanother diff --git a/test/transforms/fixtures/delete-backward/last-character/index.js b/test/transforms/fixtures/delete-backward/last-character/index.js new file mode 100644 index 000000000..826bfdb99 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/last-character/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: first.length, + focusKey: first.key, + focusOffset: first.length + }) + + const next = state + .transform() + .moveTo(range) + .deleteBackward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveBackward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-backward/last-character/input.yaml b/test/transforms/fixtures/delete-backward/last-character/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/last-character/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/delete-backward/last-character/output.yaml b/test/transforms/fixtures/delete-backward/last-character/output.yaml new file mode 100644 index 000000000..870bf02c6 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/last-character/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: wor diff --git a/test/transforms/fixtures/delete-backward/middle-character/index.js b/test/transforms/fixtures/delete-backward/middle-character/index.js new file mode 100644 index 000000000..bafbd0ec4 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/middle-character/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 2, + focusKey: first.key, + focusOffset: 2 + }) + + const next = state + .transform() + .moveTo(range) + .deleteBackward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.moveBackward().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-backward/middle-character/input.yaml b/test/transforms/fixtures/delete-backward/middle-character/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/middle-character/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/delete-backward/middle-character/output.yaml b/test/transforms/fixtures/delete-backward/middle-character/output.yaml new file mode 100644 index 000000000..b82be33b4 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/middle-character/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: wrd diff --git a/test/transforms/fixtures/delete-backward/start-of-document/index.js b/test/transforms/fixtures/delete-backward/start-of-document/index.js new file mode 100644 index 000000000..ed0874b4e --- /dev/null +++ b/test/transforms/fixtures/delete-backward/start-of-document/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 0, + focusKey: first.key, + focusOffset: 0 + }) + + const next = state + .transform() + .moveTo(range) + .deleteBackward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-backward/start-of-document/input.yaml b/test/transforms/fixtures/delete-backward/start-of-document/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/start-of-document/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/delete-backward/start-of-document/output.yaml b/test/transforms/fixtures/delete-backward/start-of-document/output.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/delete-backward/start-of-document/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/delete-forward/end-of-document/index.js b/test/transforms/fixtures/delete-forward/end-of-document/index.js new file mode 100644 index 000000000..6e2cf6f52 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/end-of-document/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: first.length, + focusKey: first.key, + focusOffset: first.length + }) + + const next = state + .transform() + .moveTo(range) + .deleteForward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.collapseToStart().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-forward/end-of-document/input.yaml b/test/transforms/fixtures/delete-forward/end-of-document/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/end-of-document/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/delete-forward/end-of-document/output.yaml b/test/transforms/fixtures/delete-forward/end-of-document/output.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/end-of-document/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/delete-forward/first-character/index.js b/test/transforms/fixtures/delete-forward/first-character/index.js new file mode 100644 index 000000000..f4901aead --- /dev/null +++ b/test/transforms/fixtures/delete-forward/first-character/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 0, + focusKey: first.key, + focusOffset: 0 + }) + + const next = state + .transform() + .moveTo(range) + .deleteForward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.collapseToStart().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-forward/first-character/input.yaml b/test/transforms/fixtures/delete-forward/first-character/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/first-character/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/delete-forward/first-character/output.yaml b/test/transforms/fixtures/delete-forward/first-character/output.yaml new file mode 100644 index 000000000..9414f68ce --- /dev/null +++ b/test/transforms/fixtures/delete-forward/first-character/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: ord diff --git a/test/transforms/fixtures/delete-forward/join-blocks/index.js b/test/transforms/fixtures/delete-forward/join-blocks/index.js new file mode 100644 index 000000000..6e2cf6f52 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/join-blocks/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: first.length, + focusKey: first.key, + focusOffset: first.length + }) + + const next = state + .transform() + .moveTo(range) + .deleteForward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.collapseToStart().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-forward/join-blocks/input.yaml b/test/transforms/fixtures/delete-forward/join-blocks/input.yaml new file mode 100644 index 000000000..4960c06f9 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/join-blocks/input.yaml @@ -0,0 +1,14 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: another diff --git a/test/transforms/fixtures/delete-forward/join-blocks/output.yaml b/test/transforms/fixtures/delete-forward/join-blocks/output.yaml new file mode 100644 index 000000000..3d5aad120 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/join-blocks/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: wordanother diff --git a/test/transforms/fixtures/delete-forward/join-nested-blocks/index.js b/test/transforms/fixtures/delete-forward/join-nested-blocks/index.js new file mode 100644 index 000000000..6e2cf6f52 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/join-nested-blocks/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: first.length, + focusKey: first.key, + focusOffset: first.length + }) + + const next = state + .transform() + .moveTo(range) + .deleteForward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.collapseToStart().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-forward/join-nested-blocks/input.yaml b/test/transforms/fixtures/delete-forward/join-nested-blocks/input.yaml new file mode 100644 index 000000000..87b381f13 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/join-nested-blocks/input.yaml @@ -0,0 +1,17 @@ + +nodes: + - kind: block + type: quote + nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: another diff --git a/test/transforms/fixtures/delete-forward/join-nested-blocks/output.yaml b/test/transforms/fixtures/delete-forward/join-nested-blocks/output.yaml new file mode 100644 index 000000000..45d48e74b --- /dev/null +++ b/test/transforms/fixtures/delete-forward/join-nested-blocks/output.yaml @@ -0,0 +1,11 @@ + +nodes: + - kind: block + type: quote + nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: wordanother diff --git a/test/transforms/fixtures/delete-forward/last-character/index.js b/test/transforms/fixtures/delete-forward/last-character/index.js new file mode 100644 index 000000000..259861362 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/last-character/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: first.length - 1, + focusKey: first.key, + focusOffset: first.length - 1 + }) + + const next = state + .transform() + .moveTo(range) + .deleteForward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.collapseToStart().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-forward/last-character/input.yaml b/test/transforms/fixtures/delete-forward/last-character/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/last-character/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/delete-forward/last-character/output.yaml b/test/transforms/fixtures/delete-forward/last-character/output.yaml new file mode 100644 index 000000000..870bf02c6 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/last-character/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: wor diff --git a/test/transforms/fixtures/delete-forward/middle-character/index.js b/test/transforms/fixtures/delete-forward/middle-character/index.js new file mode 100644 index 000000000..63cf05561 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/middle-character/index.js @@ -0,0 +1,27 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const first = texts.first() + const range = selection.merge({ + anchorKey: first.key, + anchorOffset: 1, + focusKey: first.key, + focusOffset: 1 + }) + + const next = state + .transform() + .moveTo(range) + .deleteForward() + .apply() + + assert.deepEqual( + next.selection.toJS(), + range.collapseToStart().toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/delete-forward/middle-character/input.yaml b/test/transforms/fixtures/delete-forward/middle-character/input.yaml new file mode 100644 index 000000000..b1be31e90 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/middle-character/input.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: word diff --git a/test/transforms/fixtures/delete-forward/middle-character/output.yaml b/test/transforms/fixtures/delete-forward/middle-character/output.yaml new file mode 100644 index 000000000..b82be33b4 --- /dev/null +++ b/test/transforms/fixtures/delete-forward/middle-character/output.yaml @@ -0,0 +1,8 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + ranges: + - text: wrd