diff options
author | Matthew Sotoudeh <matthewsot@outlook.com> | 2020-06-18 18:53:28 -0700 |
---|---|---|
committer | Matthew Sotoudeh <matthewsot@outlook.com> | 2020-06-18 18:53:28 -0700 |
commit | e8ffe5e7bb1a9983a39eac21389867dd1aa0cbfe (patch) | |
tree | af1c9d2df7d28a5c6219370b6d041a540f3594fa | |
parent | 1ba65c7c46013c5c7e9ac6b729b41a7d64d326d3 (diff) |
Added undo, redo functionality and test cases
Thanks @TipOfTheSploit, @lovetocode999!
https://github.com/matthewsot/docs-vim/issues/5
-rw-r--r-- | docs.js | 26 | ||||
-rw-r--r-- | test.js | 9 |
2 files changed, 29 insertions, 6 deletions
@@ -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. @@ -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(); |