summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sotoudeh <matthewsot@outlook.com>2020-06-18 18:53:28 -0700
committerMatthew Sotoudeh <matthewsot@outlook.com>2020-06-18 18:53:28 -0700
commite8ffe5e7bb1a9983a39eac21389867dd1aa0cbfe (patch)
treeaf1c9d2df7d28a5c6219370b6d041a540f3594fa
parent1ba65c7c46013c5c7e9ac6b729b41a7d64d326d3 (diff)
Added undo, redo functionality and test cases
Thanks @TipOfTheSploit, @lovetocode999! https://github.com/matthewsot/docs-vim/issues/5
-rw-r--r--docs.js26
-rw-r--r--test.js9
2 files changed, 29 insertions, 6 deletions
diff --git a/docs.js b/docs.js
index 0927a50..b59b72e 100644
--- a/docs.js
+++ b/docs.js
@@ -111,6 +111,15 @@ docs.pasteText = function (text) {
el.dispatchEvent(paste);
};
+/*********** MOUSE INTERACTION ***********/
+docs.pressButton = function (el) {
+ el.dispatchEvent(new MouseEvent("mouseenter", { bubbles: true }));
+ el.dispatchEvent(new MouseEvent("mousedown", { bubbles: true }));
+ el.dispatchEvent(new MouseEvent("mouseup", { bubbles: true }));
+ el.dispatchEvent(new MouseEvent("click", { bubbles: true }));
+ el.dispatchEvent(new MouseEvent("mouseleave", { bubbles: true }));
+};
+
/*********** TEXT FORMATTING ***********/
docs.colors = {
"black": "#docs-material-colorpalette-cell-0 > div:nth-child(1)",
@@ -126,14 +135,10 @@ docs.setColor = function (color) {
color = docs.colors[color];
}
var sel = $("#textColorButton > div:nth-child(1) > div:nth-child(1)")[0];
+ // It seems this is all Docs needs.
sel.dispatchEvent(new MouseEvent("mousedown", { bubbles: true }));
- var el = $(color)[0];
- el.dispatchEvent(new MouseEvent("mouseenter", { bubbles: true }));
- el.dispatchEvent(new MouseEvent("mousedown", { bubbles: true }));
- el.dispatchEvent(new MouseEvent("mouseup", { bubbles: true }));
- el.dispatchEvent(new MouseEvent("click", { bubbles: true }));
- el.dispatchEvent(new MouseEvent("mouseleave", { bubbles: true }));
+ docs.pressButton($(color)[0]);
};
// Toggles whether inserted (selected) text is superscripted or not. Note that
@@ -156,6 +161,15 @@ docs.toggleBold = function () {
docs.pressKey(66, true, false);
};
+/*********** MENU OPTIONS ***********/
+docs.undo = function () {
+ docs.pressButton($("[aria-label='Undo u']")[0]);
+};
+
+docs.redo = function () {
+ docs.pressButton($("[aria-label='Redo r']")[0]);
+};
+
/*********** USER SELECTIONS ***********/
// Gets the raw DOM element corresponding to the user's selection, used by
// docs.hasSelection and docs.getSelection.
diff --git a/test.js b/test.js
index ed76ab3..c5e234c 100644
--- a/test.js
+++ b/test.js
@@ -9,6 +9,15 @@ docs.keydown = async function (e) {
e.preventDefault();
e.stopPropagation();
+ docs.pressLetters("t");
+ docs.undo();
+
+ docs.pressLetters("T");
+ docs.undo();
+ docs.redo();
+ docs.pasteText("his line should start with only one 'T'.\n");
+ await sleep(500);
+
docs.pressLetters("Heytypo");
for (var i = 0; i < "typo".length; i++) {
docs.backspace();
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback