Advertisement
Guest User

Untitled

a guest
Jan 11th, 2020
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Append one new span to the focused element and put the caret on the new line
  3.  */
  4. function newSpan(dataid, datavar, css, textContent) {
  5.   const docFragment = document.createDocumentFragment();
  6.  
  7.   let newEle = document.createElement("span");
  8.   newEle.innerHTML = "";
  9.   newEle.setAttribute("data-id", dataid);
  10.   newEle.setAttribute("data-var", datavar);
  11.   newEle.classList.add(css);
  12.   newEle.textContent = textContent;
  13.   docFragment.appendChild(newEle);
  14.  
  15.   // make the br replace selection
  16.   let range = window.getSelection().getRangeAt(0);
  17.   range.deleteContents();
  18.   range.insertNode(docFragment);
  19.  
  20.   // create a new range
  21.   range = document.createRange();
  22.   range.setStartAfter(newEle);
  23.   range.collapse(true);
  24.  
  25.   // make the cursor there
  26.   const sel = window.getSelection();
  27.   sel.removeAllRanges();
  28.   sel.addRange(range);
  29. }
  30.  
  31. function newText() {
  32.   move();
  33.  
  34.   const docFragment = document.createDocumentFragment();
  35.   let newEle = document.createTextNode("\u00A0");
  36.   docFragment.appendChild(newEle);
  37.  
  38.   // make the br replace selection
  39.   let range = window.getSelection().getRangeAt(0);
  40.   range.deleteContents();
  41.   range.setStartAfter(range.endContainer);
  42.   range.setEndAfter(range.endContainer);
  43.   range.insertNode(docFragment);
  44.  
  45.   // create a new range
  46.   range = document.createRange();
  47.   range.setStartAfter(newEle);
  48.   range.collapse(true);
  49.  
  50.   // make the cursor there
  51.   const sel = window.getSelection();
  52.   sel.removeAllRanges();
  53.   sel.addRange(range);
  54. }
  55.  
  56. function move() {
  57.   let range = window.getSelection().getRangeAt(0);
  58.   // create a new range
  59.   range.setStartAfter(range.endContainer);
  60.   range.collapse(true);
  61.  
  62.   // make the cursor there
  63.   const sel = window.getSelection();
  64.   sel.removeAllRanges();
  65.   sel.addRange(range);
  66. }
  67.  
  68. function moveBegin() {
  69.   let range = window.getSelection().getRangeAt(0);
  70.   range.setStartBefore(range.startContainer);
  71.   let sel = window.getSelection();
  72.   sel.removeAllRanges();
  73.   sel.addRange(range);
  74. }
  75.  
  76. function prepend() {
  77.   let range = window.getSelection().getRangeAt(0);
  78.   if (range.startOffset !== 0) {
  79.     return newText();
  80.   }
  81.   moveBegin();
  82.   // make the br replace selection
  83.   range = window.getSelection().getRangeAt(0);
  84.   range.deleteContents();
  85.   range.setStartBefore(range.startContainer);
  86.  
  87.   const docFragment = document.createDocumentFragment();
  88.   let newEle = document.createTextNode("\u00A0");
  89.   docFragment.appendChild(newEle);
  90.   range.insertNode(docFragment);
  91.  
  92.   // create a new range
  93.   range = document.createRange();
  94.   range.setStartBefore(newEle);
  95.   range.collapse(true);
  96.  
  97.   // make the cursor there
  98.   const sel = window.getSelection();
  99.   sel.removeAllRanges();
  100.   sel.addRange(range);
  101.   return true;
  102. }
  103.  
  104. export { newSpan, newText, prepend };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement