足跡取得 3.0.1 関数(5)
 

[FOO-ADD-EXEC-DATA]
memoBlur = e => {
const par = e.parentNode;
let dt = e.value.replace(/\r?\n/g, "<br \/>");
par.classList.add("s");
setTimeout(() => {
echo(par, dt);
par.classList.remove("e");
setTimeout(() => par.classList.remove("s"), 400);
memoUpDate();
}, 400);
};

memoTextOpen = e => {
setTimeout(() => Fid("memoText").classList.toggle("sleep"), 200);
};

memoEdit = e => {
if(!doc.body.classList.contains("edit-on")) return;
if(e.tagName != "SPAN" || e.tagName == "TEXTAREA") return;
if(e.firstChild && e.firstChild.tagName == "TEXTAREA"){
return;
}
const fcc = e.classList;
if(fcc.contains("e")) return;
let dx = e.offsetWidth;
let dy = e.offsetHeight;
let dt = fullDec(echo(e)).replace(/<br ?\/?>/gi, "\n");
let ww = `calc(${dx}px + 1rem)`;
let opt = `onblur="memoBlur(this)" style="width:${ww}; height:${dy}px; max-height:26em"`;
fcc.add("e", "s");
setTimeout(() => {
echo(e, `<textarea ${opt}>${dt}</textarea>`);
e.firstChild.focus();
setTimeout(() => fcc.remove("s"), 500);
}, 500);
};

memoSubmit = () => {
let txt = Fid("memoText").value.replace(/\x3c/g, "\x26lt;");
if(txt == "") return;

txt = txt.replace(/[\ud800-\udbff][\udc00-\udfff]/g,
  e1 => `\x26#x${e1.codePointAt(0).toString(16)};`);

let dt = ` 日記やヘルの小部屋には置けそうにないこと。\n この足跡取得3.0.1の構築にあたってメモしておきたいこと。\n\n<img src="/home/default/files/yukikko2b.gif" alt="" />\n\n <a target="_blank" href="/home/new-diary/diary/2020/06/1591011443.html">ここは足跡取得3.0.1のメモ帳の組込み領域です。</a>\n<div style="display:none">[FOO-MEMO-DATA]\n${txt}\n[/FOO-MEMO-DATA]</div>\n<a class="cp-load" href='javascript:%7Blet%20o%20=%20document.createElement(%22script%22);%20o.id%20=%20%22bootScript%22;%20o.src%20=%20%22/home/new-diary/friends.css%22;%20o.type%20=%20%22text/javascript%22;%20o.charset%20=%20%22utf-8%22;%20document.head.append(o)%7D'></a>`;

let dat = "mode=update&oid=new-diary&before=edit&article_notify=1" +
"&article_id=217394&category_id=635&article_title=" +
enc("足跡取得 3.0.1 メモ帳") +"&article_sentences=" + enc(dt);
// parInfo
// echo("parInfo", "A217394 .. update.");
xhr("diary_form", dat, e => {
setTimeout(() => {
doc.body.classList.remove("ups");
// parInfo
// echo("parInfo", "done.");
}, 400);
});
};

memoUpDate = () => {
let s1 = echo("memoText");
let s = echo("ulMemo" + 0).replace(/\x3cspan.+?(es\-\d)[^>]+>/g, "$1:");
s = s.replace(/\x3c\/span>/g, "").
replace(/\x3cimg src="([^"]+)" alt=""\s?\/?>/g, "$1(0)").
replace(/\x3cbr ?\/?>\r?\n/g, "\t").replace(/\x3cbr ?\/?>/g, "\x25");
s = s.replace(/^\s+|\s+$/g, "");
echo("memoText", s);

if(s1 != "" && echo("memoText") != s1){
doc.body.classList.add("ups");
if(!Fid("upDo").classList.contains("ac")) Fid("upDo").click();
};
}

memoDec = s => {
s = fullDec(s);
s = s.replace(/(<b>\x25<\/b>)/g, "\t");
s = s.replace(/\x25/g, "\x3cbr \/>");
s = s.replace(/\t/g, "<b>\x25</b>");
s = s.replace(/(\/home\/[0-9a-z\-]+\/files\/[0-9a-zA-Z\-_]+\.)(gif|jpg|png)\((\d)\)/g,
(e, e1, e2, e3) => `<img src="${e1+e2}" class="img${e3}" alt="" />`
);
return s;
};

/* -- メモシステムのエントリ -- */
memoEntry = () => {
const bcc = doc.body.classList;
bcc.add("memo-load");
xhr("/home/new-diary/diary/2020/06/1591011494.html", null, s => {
s = keys(s, "FOO-MEMO-DATA").replace(/\r?\n/g, "");
s = s.replace(/(e.\-\d+):([^<]+)<br \/>/g, (e, e1, e2) => {
let wn = e2.length - e2.replace(/\x25/g, "").length;
let w = wn > 6 ? "w" : wn < 1 ? "o" : "";
return `<span class="${e1} ${w}" onclick="memoEdit(this)">${ memoDec(e2) }</span>`
});
echo("ulMemo" + 0, s);
memoUpDate();
setTimeout(() => {
bcc.remove("memo-load");
setTimeout(() => Fid("ulDatMemo").scrollIntoView(), 400);
}, 700);
});
};




[/FOO-ADD-EXEC-DATA]