rebuilding site Fri May 13 03:12:27 PM CST 2022
[uweb.git] / searchurl / textarea.js
blob7224bc49f1642b6c0acada96763a06f3560b5a04
1 var textarea;
2 onload=function(){
3   textarea=document.getElementsByTagName('textarea')[0];
6 function getNewlinePos_back(text,pos){
7   while(pos>=0 && text.charAt(pos)!='\n') pos--;
8   return pos;
11 function getNewlinePos_forth(text,pos){
12   let len = text.length;
13   while(pos<len && text.charAt(pos)!='\n') pos++;
14   return pos;
17 function deleteLine(ta){
18   let text = ta.value;
19   let lStart = getNewlinePos_back(text,ta.selectionStart-1);
20   let lEnd = getNewlinePos_forth(text,ta.selectionEnd);
21   ta.value = text.substring(0,lStart+1) + text.substring(lEnd+1);
22   ta.selectionStart = ta.selectionEnd = lStart +1;
23   ta.focus();
26 function moveUp(ta){
27   let text = ta.value;
28   let start = ta.selectionStart;
29   let end = ta.selectionEnd;
30   let lStart = getNewlinePos_back(text,start-1);
31   let lEnd = getNewlinePos_forth(text,end);
32   let prevS = getNewlinePos_back(text,lStart-1);
33   ta.value = text.substring(0,prevS+1)+text.substring(lStart+1,lEnd+1)+
34     text.substring(prevS+1,lStart+1) + text.substring(lEnd+1);
35   ta.selectionStart = start - (lStart - prevS);
36   ta.selectionEnd = end - (lStart - prevS);
37   ta.focus();
40 function move2Top(ta){
41   let text = ta.value;
42   let start = ta.selectionStart;
43   let end = ta.selectionEnd;
44   let lStart = getNewlinePos_back(text,start-1);
45   let lEnd = getNewlinePos_forth(text,end);
46   ta.value = text.substring(lStart+1,lEnd+1)+text.substring(0,lStart+1)+
47     text.substring(lEnd+1);
48   ta.selectionStart = start - lStart-1;
49   ta.selectionEnd = end - lStart-1;
50   ta.focus();
53 function move2Bottom(ta){
54   let text = ta.value;
55   let start = ta.selectionStart;
56   let end = ta.selectionEnd;
57   let lStart = getNewlinePos_back(text,start-1);
58   let lEnd = getNewlinePos_forth(text,end);
59   ta.value = text.substring(0,lStart+1)+text.substring(lEnd+1)+
60     text.substring(lStart+1,lEnd+1);
61   ta.selectionStart = start + text.length - lEnd-1;
62   ta.selectionEnd = end + text.length - lEnd-1;
63   ta.focus();
66 function moveDown(ta){
67   let text = ta.value;
68   let start = ta.selectionStart;
69   let end = ta.selectionEnd;
70   let lStart = getNewlinePos_back(text,start-1);
71   let lEnd = getNewlinePos_forth(text,end);
72   let nextE = getNewlinePos_forth(text,lEnd+1);
73   ta.value = text.substring(0,lStart+1) + text.substring(lEnd+1,nextE+1) +
74     text.substring(lStart+1,lEnd+1)+text.substring(nextE+1);
75   ta.selectionStart = start + (nextE - lEnd);
76   ta.selectionEnd = end + (nextE - lEnd);
77   ta.focus();
80 function save(fn){
81   let u8=new TextEncoder().encode(textarea.value);let r='';for(let i=0;i<u8.byteLength;i++)r+=String.fromCharCode(u8[i]);location.href='i:0l'+fn+':'+btoa(r);
84 function onSave(){
85   save(location.pathname);