ly-luan-thu-phap/ly-luan-thu-phap.kho.js · Bản chạy từ kho: dữ liệu sách lấy bằng __khoGet (gốc 46a1d4e)

/* ly-luan-thu-phap.kho.js: ban chay tu kho jsthanhphong cua ly-luan-thu-phap.bundle.js (46a1d4e). Khac ban goc dung 1 cho: du lieu sach (data/*.json) lay tu kho bang __khoGet thay cho fetch(LL_BASE+...). Khi sua bundle goc thi tao lai file nay. */
/* kho-get v1: lay file tu kho jsthanhphong theo duong dan (JSONP + nho trong IndexedDB "kho"). Dung chung cho cac file .kho.js can tai them du lieu luc dang chay. */
(function(w,d){if(w.__khoGet)return;var B='https://jsthanhphong.blogspot.com/feeds/posts/',n=0,mem={};function lab(p){return 'f-'+String(p).toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/^-+|-+$/g,'')}function dec(h){var p=new DOMParser().parseFromString(h,'text/html').querySelector('pre');if(!p)return '';p.querySelectorAll('br').forEach(function(b){b.replaceWith('\n')});var t=p.textContent;if(/kho-b64/.test(p.className))t=new TextDecoder().decode(Uint8Array.from(atob(t.replace(/\s+/g,'')),function(x){return x.charCodeAt(0)}));return t}function pid(e){return String(e.id.$t).split('.post-')[1]}function jsonp(kind,p){return new Promise(function(ok,fail){var c='khoG'+Date.now().toString(36)+(n++),s=d.createElement('script'),t=setTimeout(function(){end();fail(new Error('Kho khong phan hoi: '+p))},25000);function end(){clearTimeout(t);try{delete w[c]}catch(e){w[c]=void 0}if(s.parentNode)s.parentNode.removeChild(s)}w[c]=function(x){end();var e=((x.feed||{}).entry||[])[0];if(e)ok(e);else fail(new Error('Kho khong co file '+p))};s.onerror=function(){end();fail(new Error('Khong tai duoc '+p))};s.async=true;s.src=B+kind+'/-/'+lab(p)+'?alt=json-in-script&max-results=1&orderby=published&callback='+c;d.head.appendChild(s)})}function db(){return new Promise(function(ok){var t=setTimeout(function(){ok(null)},800);try{var o=w.indexedDB.open('kho',1);o.onupgradeneeded=function(){o.result.createObjectStore('f')};o.onsuccess=function(){clearTimeout(t);ok(o.result)};o.onerror=function(){clearTimeout(t);ok(null)}}catch(e){clearTimeout(t);ok(null)}})}function rd(D,p){return new Promise(function(ok){if(!D)return ok(null);try{var g=D.transaction('f').objectStore('f').get(p);g.onsuccess=function(){ok(g.result||null)};g.onerror=function(){ok(null)}}catch(e){ok(null)}})}function full(D,p){return jsonp('default',p).then(function(e){var s=dec(e.content.$t);if(!s)throw new Error('Kho tra ve noi dung rong: '+p);try{if(D)D.transaction('f','readwrite').objectStore('f').put({id:pid(e),code:s},p)}catch(z){}return s})}w.__khoGet=function(p){if(mem[p])return mem[p];return mem[p]=db().then(function(D){return rd(D,p).then(function(v){if(v&&typeof v.code==='string'){jsonp('summary',p).then(function(e){if(pid(e)!==v.id)return full(D,p)}).catch(function(){});return v.code}return full(D,p)})}).catch(function(err){delete mem[p];throw err})};w.__khoRun=function(p){return w.__khoGet(p).then(function(s){(0,eval)(s+'\n//# sourceURL=kho/'+p)})}})(window,document);
(function(){var k=document.getElementById("ly-luan-thu-phap");if(!(!k||k.getAttribute("data-ll"))){k.setAttribute("data-ll","1");var H=document.currentScript;!window.LL_BASE&&H&&H.src&&(window.LL_BASE=H.src.replace(/[^\/]*$/,""));var $=document.createElement("style");$.textContent='#ly-luan-thu-phap{--giay:#faf7ef;--giay2:#f2eadc;--muc:#2b1b10;--chu:#2a211b;--nhat:#6d5d4f;--vien:#d8c7b2;--son:#9e2a1f;--vang:#b06b2c;max-width:1100px;margin:24px auto;color:var(--chu);font-family:"Noto Serif",Times New Roman,Georgia,serif;line-height:1.75;font-size:17px}#ly-luan-thu-phap *{box-sizing:border-box}#ly-luan-thu-phap .ll-khung{background:var(--giay);border:6px solid var(--muc);padding:28px 32px 36px;box-shadow:0 10px 30px #0000002e}#ly-luan-thu-phap a{color:var(--son)}#ly-luan-thu-phap button{font:inherit;cursor:pointer}.ll-dau{text-align:center;margin-bottom:22px;border-bottom:1px solid var(--vien);padding-bottom:18px}.ll-dau h1{margin:0;font-size:32px;letter-spacing:4px;color:var(--muc);font-weight:700}.ll-dau p{margin:6px auto 0;max-width:720px;color:var(--nhat);font-size:15px}.ll-duong{font-size:14px;color:var(--nhat);margin:0 0 16px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.ll-duong a{text-decoration:none;cursor:pointer}.ll-ke{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}.ll-sach{display:flex;flex-direction:column;background:#fff;border:1px solid var(--vien);border-radius:6px;overflow:hidden;cursor:pointer;text-align:left;padding:0;transition:transform .15s,box-shadow .15s;color:inherit}.ll-sach:hover{transform:translateY(-2px);box-shadow:0 8px 18px #2b1b1026}.ll-bia{background:var(--muc);color:#f5ead6;padding:22px 16px;min-height:150px;display:flex;flex-direction:column;justify-content:center;position:relative}.ll-bia b{font-size:19px;line-height:1.35;display:block}.ll-bia i{font-style:normal;font-size:14px;opacity:.8;margin-top:6px;display:block}.ll-bia .ll-an{position:absolute;right:12px;bottom:12px;width:34px;height:34px;border:2px solid var(--son);color:var(--son);background:#f5ead6;font-size:12px;line-height:1.1;display:flex;align-items:center;justify-content:center;text-align:center;border-radius:3px;font-weight:700}.ll-sach-tt{padding:12px 16px 14px;font-size:14px;color:var(--nhat)}.ll-sach-tt .ll-dem{color:var(--vang);font-weight:700}.ll-gioi-thieu{background:#fff;border:1px solid var(--vien);border-radius:6px;padding:18px 22px;margin-bottom:18px}.ll-gioi-thieu h2{margin:0 0 4px;font-size:26px;color:var(--muc)}.ll-goc{color:var(--nhat);font-size:15px;margin:0 0 10px}.ll-loc{width:100%;padding:11px 16px;border:1px solid var(--vien);border-radius:24px;font:inherit;font-size:15px;margin:4px 0 14px;background:#fff}.ll-muc-luc{list-style:none;margin:0;padding:0;border-top:1px solid var(--vien)}.ll-muc-luc li{border-bottom:1px solid var(--vien)}.ll-muc-luc button{display:flex;gap:12px;width:100%;text-align:left;background:none;border:0;padding:12px 6px;color:inherit;align-items:baseline}.ll-muc-luc button:hover{background:var(--giay2)}.ll-muc-luc .ll-so{color:var(--son);font-weight:700;min-width:84px;font-size:14px}.ll-muc-luc .ll-ten{flex:1}.ll-muc-luc .ll-ten small{display:block;color:var(--nhat);font-size:14px}.ll-muc-luc .ll-cho{opacity:.55}.ll-bai{max-width:760px;margin:0 auto}.ll-bai-dau{text-align:center;margin-bottom:22px}.ll-bai-dau .ll-so{color:var(--son);font-weight:700;letter-spacing:2px;font-size:14px;text-transform:uppercase}.ll-bai-dau h2{font-size:28px;margin:6px 0 4px;color:var(--muc);line-height:1.35}.ll-bai-dau .ll-zh{color:var(--nhat);font-size:16px}.ll-tom{background:var(--giay2);border-left:4px solid var(--vang);padding:12px 16px;margin:0 0 20px;font-size:16px}.ll-bai h3{font-size:21px;color:var(--muc);margin:28px 0 8px;border-bottom:1px solid var(--vien);padding-bottom:4px}.ll-bai p{margin:0 0 14px;text-align:justify}.ll-co-van{background:#fff;border:1px solid var(--vien);border-left:4px solid var(--son);border-radius:4px;padding:14px 18px;margin:18px 0}.ll-co-van .zh{font-size:19px;letter-spacing:1px;margin-bottom:6px;font-family:"Noto Serif SC","Noto Serif TC",Songti SC,SimSun,serif}.ll-co-van .hv{font-style:italic;color:var(--nhat);margin-bottom:6px;font-size:15px}.ll-co-van .vi{font-size:17px}.ll-co-van .src{text-align:right;color:var(--nhat);font-size:14px;margin-top:6px}.ll-bang{width:100%;border-collapse:collapse;margin:10px 0 18px;font-size:15px;background:#fff}.ll-bang th,.ll-bang td{border:1px solid var(--vien);padding:7px 10px;vertical-align:top;text-align:left}.ll-bang th{background:var(--giay2);color:var(--muc)}.ll-bang .zh{font-family:"Noto Serif SC","Noto Serif TC",Songti SC,SimSun,serif;white-space:nowrap}.ll-hinh{margin:20px 0;text-align:center}.ll-hinh img{max-width:100%;max-height:520px;border:1px solid var(--vien);background:#fff;padding:6px}.ll-hinh figcaption{font-size:14px;color:var(--nhat);margin-top:6px}.ll-hinh figcaption a{color:var(--nhat)}.ll-hoi{background:#fff;border:1px dashed var(--vang);border-radius:6px;padding:12px 18px 6px;margin:22px 0}.ll-hoi b{color:var(--vang)}.ll-hoi ol{margin:8px 0 8px 20px;padding:0}.ll-nguon{font-size:14px;color:var(--nhat);border-top:1px solid var(--vien);margin-top:26px;padding-top:10px}.ll-chuyen{display:flex;justify-content:space-between;gap:10px;margin-top:24px;flex-wrap:wrap}.ll-nut{background:var(--muc);color:#fff;border:0;border-radius:24px;padding:10px 20px;font-size:15px}.ll-nut[disabled]{opacity:.35;cursor:default}.ll-nut.phu{background:#fff;color:var(--muc);border:1px solid var(--muc)}.ll-cong-cu{display:flex;justify-content:flex-end;gap:6px;margin-bottom:6px}.ll-cong-cu button{background:#fff;border:1px solid var(--vien);border-radius:16px;padding:2px 12px;font-size:14px;color:var(--muc)}.ll-thong-bao{text-align:center;color:var(--nhat);padding:30px 0}.ll-chan{text-align:center;font-size:13px;color:var(--nhat);margin-top:26px}@media(max-width:600px){#ly-luan-thu-phap{margin:10px auto;font-size:16px}#ly-luan-thu-phap .ll-khung{padding:16px 14px 24px;border-width:4px}.ll-dau h1{font-size:24px;letter-spacing:2px}.ll-bai-dau h2{font-size:23px}.ll-muc-luc .ll-so{min-width:64px}.ll-bang{font-size:14px}.ll-bang .zh{white-space:normal}}.ll-doc{display:flex;flex-wrap:wrap;align-items:center;gap:6px;max-width:760px;margin:0 auto 14px;padding:8px 10px;background:#fff;border:1px solid var(--vien);border-radius:24px;font-size:14px;position:sticky;top:6px;z-index:5;box-shadow:0 2px 8px #2b1b1014}.ll-doc button{background:#fff;border:1px solid var(--vien);border-radius:16px;padding:4px 11px;font-size:14px;color:var(--muc);line-height:1.4}.ll-doc button:hover{background:var(--giay2)}.ll-doc button:focus-visible{outline:2px solid var(--son);outline-offset:1px}.ll-doc .ll-doc-phat{background:var(--muc);color:#fff;border-color:var(--muc);font-weight:600}.ll-doc .ll-doc-phat[aria-pressed=true]{background:var(--son);border-color:var(--son)}.ll-doc-toc{display:inline-flex;gap:3px;flex-wrap:wrap}.ll-doc-toc button[aria-pressed=true]{background:var(--vang);border-color:var(--vang);color:#fff}.ll-doc-vt{color:var(--nhat);font-size:13px;margin-left:auto}.ll-doc-tb{flex-basis:100%;color:var(--son);font-size:13px}.ll-doc-tb:empty{display:none}.ll-dang-doc{background:#fff4d6!important;box-shadow:0 0 0 4px #fff4d6;border-radius:3px;transition:background .2s}.ll-bang tr.ll-dang-doc td{background:#fff4d6}@media(max-width:600px){.ll-doc{border-radius:14px}.ll-doc-vt{margin-left:0}}@media(prefers-reduced-motion:reduce){.ll-dang-doc{transition:none}}',document.head.appendChild($),k.innerHTML='<div class="ll-khung"> <header class="ll-dau"><h1>LÝ LUẬN THƯ PHÁP</h1><p>Tủ sách bài giảng tiếng Việt theo từng chương của các sách lý luận, lịch sử và tư tưởng thư pháp. Cổ văn được dịch trọn kèm nguyên văn và âm Hán-Việt.</p></header> <main class="ll-than"><p class="ll-thong-bao">Đang mở tủ sách…</p></main> <p class="ll-chan">Thư Đạo · Thanh Phong Thư Môn</p> </div>';var ct=(function(){var x=document.getElementById("ly-luan-thu-phap"),I=(window.LL_BASE||"").replace(/\/?$/,"/"),A=null,P={},z=17;try{z=parseInt(localStorage.getItem("ll-co-chu"),10)||17}catch(t){}function D(t){return x.querySelector(t)}function a(t){return String(t==null?"":t).replace(/[&<>"']/g,function(n){return{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}[n]})}function b(t){return a(t).replace(/\*\*([^*]+)\*\*/g,"<b>$1</b>").replace(/\*([^*]+)\*/g,"<i>$1</i>")}function R(t){var n="ll-cache:"+I+t,r=null;try{r=JSON.parse(sessionStorage.getItem(n))}catch(o){}return r?Promise.resolve(r):window.__khoGet("ly-luan-thu-phap/"+t).then(function(o){return JSON.parse(o)}).then(function(o){try{sessionStorage.setItem(n,JSON.stringify(o))}catch(h){}return o})}function _(){var t={};return location.hash.replace(/^#/,"").split("&").forEach(function(n){var r=n.split("=");r[0]&&(t[r[0]]=decodeURIComponent(r[1]||""))}),t}function Q(t){location.hash===t||!t&&!location.hash?L():location.hash=t}function y(t){D(".ll-than").innerHTML=t}function M(){var t=x.getBoundingClientRect().top+window.pageYOffset-10;window.pageYOffset>t&&window.scrollTo(0,t)}var w=(function(){var t=window.speechSynthesis,n=!!(t&&window.SpeechSynthesisUtterance),r=[.75,1,1.25,1.5,2],o=1,h=null,i=[],c=0,g=[],f=0,d="dung",m=0;try{var U=parseFloat(localStorage.getItem("ll-toc-do"));r.indexOf(U)>=0&&(o=U)}catch(e){}var nt=/[⺀-⿟ -〿㐀-䶿一-鿿豈-﫿＀-￯]+/g;function at(e){return String(e||"").replace(nt," ").replace(/[«»“”"*]/g,"").replace(/\s*·\s*/g,", ").replace(/\s+/g," ").trim()}function O(){if(!n)return null;var e=t.getVoices()||[],l=e.filter(function(u){return/^vi([-_]|$)/i.test(u.lang)});l.sort(function(u,p){return(/natural|neural|online|google/i.test(p.name)?1:0)-(/natural|neural|online|google/i.test(u.name)?1:0)}),h=l[0]||null;var s=x.querySelector(".ll-doc-tb");return s&&(s.textContent=h?"":e.length?"Máy này chưa có giọng đọc tiếng Việt; trình duyệt sẽ đọc bằng giọng mặc định. Trên điện thoại, cài giọng Tiếng Việt trong mục Chuyển văn bản thành giọng nói.":""),h}n&&(O(),"onvoiceschanged"in t&&(t.onvoiceschanged=O));function F(e){var l=e.match(/[^.!?;:…]+[.!?;:…]*\s*/g)||[e],s=[],u="";return l.forEach(function(p){if(p=p.trim(),!!p){for(;p.length>180;){var v=p.lastIndexOf(",",180);v<60&&(v=p.lastIndexOf(" ",180)),v<1&&(v=180),s.push(p.slice(0,v+1)),p=p.slice(v+1).trim()}(u+" "+p).length>180?(u&&s.push(u),u=p):u=u?u+" "+p:p}}),u&&s.push(u),s}function V(){var e=x.querySelector(".ll-bai");i=[],e&&e.querySelectorAll(".ll-bai-dau h2, .ll-tom, .ll-bai > h3, .ll-bai > p:not(.ll-nguon), .ll-co-van, .ll-bang tbody tr, .ll-hinh figcaption, .ll-hoi li").forEach(function(l){var s;if(l.classList.contains("ll-co-van")){var u=l.querySelector(".hv"),p=l.querySelector(".vi"),v=l.querySelector(".src");s=(u?"Âm Hán Việt: "+u.textContent+". ":"")+(p?p.textContent:"")+(v?". "+v.textContent.replace(/^—\s*/,"Theo "):"")}else if(l.tagName==="TR"){for(var Z=l.children,K=[],q=0;q<Z.length;q++)Z[q].classList.contains("zh")||K.push(Z[q].textContent);s=K.join(". ")}else if(l.closest(".ll-hoi")){var rt=l.parentNode.children,Y=Array.prototype.indexOf.call(rt,l)+1;s=(Y===1?"Câu hỏi ôn tập. ":"")+"Câu "+Y+". "+l.textContent}else if(l.tagName==="H2"){var j=x.querySelector(".ll-bai-dau .ll-so");s=(j?j.textContent+". ":"")+l.textContent}else s=l.textContent;s=at(s),s.replace(/[\s.,]/g,"").length&&i.push({el:l,text:s})})}function S(){var e=x.querySelector(".ll-doc-phat");if(e){e.textContent=d==="doc"?"❚❚ Tạm dừng":d==="tam"?"▶ Đọc tiếp":"▶ Nghe đọc",e.setAttribute("aria-pressed",d==="doc"?"true":"false");var l=x.querySelector(".ll-doc-vt");l&&(l.textContent=i.length&&d!=="dung"?"Đoạn "+(c+1)+"/"+i.length:"")}}function E(){x.querySelectorAll(".ll-dang-doc").forEach(function(u){u.classList.remove("ll-dang-doc")});var e=i[c];if(!(!e||d==="dung")){e.el.classList.add("ll-dang-doc");var l=e.el.getBoundingClientRect(),s=window.innerHeight||600;if(l.top<60||l.bottom>s-90)try{e.el.scrollIntoView({block:"center",behavior:"smooth"})}catch(u){e.el.scrollIntoView()}}}function T(){var e=++m;if(f>=g.length){if(c++,c>=i.length){B();return}N();return}var l=new SpeechSynthesisUtterance(g[f]);l.lang="vi-VN",h&&(l.voice=h),l.rate=o,l.onend=function(){e!==m||d!=="doc"||(f++,T())},l.onerror=function(s){e!==m||d!=="doc"||s&&(s.error==="interrupted"||s.error==="canceled")||(f++,T())},t.speak(l)}function N(){g=F(i[c].text),f=0,E(),S(),T()}function lt(){n&&(i.length||V(),i.length&&(t.cancel(),d="doc",c>=i.length&&(c=0),g.length&&f<g.length&&g===g?(E(),S(),T()):N()))}function ot(){d="tam",m++,t.cancel(),S()}function B(){d="dung",m++,n&&t.cancel(),c=0,g=[],f=0,E(),S()}function J(e){i.length||V(),i.length&&(c=Math.max(0,Math.min(i.length-1,c+e)),d==="doc"?(m++,t.cancel(),N()):(g=F(i[c].text),f=0,d="tam",E(),S()))}function et(e){for(var l=0;l<i.length;l++)if(i[l].el===e||i[l].el.contains(e))return c=l,m++,t.cancel(),d="doc",N(),!0;return!1}function it(e){o=e;try{localStorage.setItem("ll-toc-do",e)}catch(l){}x.querySelectorAll(".ll-doc-toc button").forEach(function(l){l.setAttribute("aria-pressed",parseFloat(l.getAttribute("data-toc"))===e?"true":"false")}),d==="doc"&&(m++,t.cancel(),T())}return{thanh:function(){return n?'<div class="ll-doc" role="group" aria-label="Nghe đọc bài giảng"><button class="ll-doc-phat" data-doc="phat" aria-pressed="false">▶ Nghe đọc</button><button data-doc="lui" aria-label="Đoạn trước">⏮</button><button data-doc="toi" aria-label="Đoạn sau">⏭</button><button data-doc="dung" aria-label="Dừng đọc">■</button><span class="ll-doc-toc" aria-label="Tốc độ đọc">'+r.map(function(e){return'<button data-toc="'+e+'" aria-pressed="'+(e===o)+'">x'+String(e).replace(".",",")+"</button>"}).join("")+'</span><span class="ll-doc-vt" aria-live="polite"></span><span class="ll-doc-tb"></span></div>':'<div class="ll-doc"><span class="ll-doc-tb">Trình duyệt này không hỗ trợ nghe đọc. Hãy mở trang bằng Chrome, Safari hoặc Edge bản mới.</span></div>'},gan:function(){i=[],c=0,g=[],f=0,d="dung",n&&(V(),O()),S()},dung:function(){d!=="dung"&&B()},bam:function(e){var l=e.getAttribute("data-doc");l==="phat"?d==="doc"?ot():lt():l==="dung"?B():l==="lui"?J(-1):l==="toi"&&J(1)},toc:function(e){it(e)},chamDoan:function(e){return d!=="dung"&&et(e)}}})();function W(){var t='<div class="ll-ke">';A.books.forEach(function(n){var r=(n.chapters||[]).filter(function(o){return o.ready}).length;t+='<button class="ll-sach" data-sach="'+a(n.id)+'"><div class="ll-bia"><b>'+a(n.title)+"</b><i>"+a(n.authors)+'</i><span class="ll-an">'+a(n.seal||"書")+'</span></div><div class="ll-sach-tt">'+a(n.titleZh)+'<br><span class="ll-dem">'+r+"/"+(n.chapters||[]).length+"</span> bài giảng đã có</div></button>"}),y(t+"</div>"),document.title="Lý luận thư pháp – Thư Đạo"}function C(t,n){var r='<nav class="ll-duong"><a data-di="">Tủ sách</a>';return t&&(r+=' › <a data-di="#sach='+a(t.id)+'">'+a(t.title)+"</a>"),n&&(r+=" › <span>"+a(n.no)+"</span>"),r+"</nav>"}function X(t){var n=C(t)+'<div class="ll-gioi-thieu"><h2>'+a(t.title)+'</h2><p class="ll-goc">'+a(t.titleZh)+" · "+a(t.authors)+(t.publisher?" · "+a(t.publisher):"")+(t.year?", "+a(t.year):"")+"</p>"+(t.intro||[]).map(function(o){return"<p>"+b(o)+"</p>"}).join("")+'</div><input class="ll-loc" type="search" placeholder="Tìm chương theo tên…" aria-label="Tìm chương"><ul class="ll-muc-luc">';(t.chapters||[]).forEach(function(o){n+='<li data-loc="'+a((o.no+" "+o.title+" "+(o.titleZh||"")).toLowerCase())+'"><button data-di="#sach='+a(t.id)+"&chuong="+a(o.id)+'"'+(o.ready?"":' disabled class="ll-cho"')+'><span class="ll-so">'+a(o.no)+'</span><span class="ll-ten">'+a(o.title)+"<small>"+a(o.titleZh||"")+(o.ready?"":" · đang biên soạn")+"</small></span></button></li>"}),y(n+"</ul>");var r=D(".ll-loc");r.addEventListener("input",function(){var o=r.value.trim().toLowerCase();x.querySelectorAll(".ll-muc-luc li").forEach(function(h){h.style.display=!o||h.getAttribute("data-loc").indexOf(o)>=0?"":"none"})}),document.title=t.title+" – Lý luận thư pháp – Thư Đạo"}function tt(t){switch(t.t){case"h":return"<h3>"+b(t.x)+"</h3>";case"p":return"<p>"+b(t.x)+"</p>";case"quote":return'<blockquote class="ll-co-van">'+(t.zh?'<div class="zh" lang="zh">'+a(t.zh)+"</div>":"")+(t.hv?'<div class="hv">'+a(t.hv)+"</div>":"")+'<div class="vi">'+b(t.vi)+"</div>"+(t.src?'<div class="src">— '+a(t.src)+"</div>":"")+"</blockquote>";case"terms":return'<table class="ll-bang"><thead><tr><th>Thuật ngữ</th><th>Hán tự</th><th>Giải nghĩa</th></tr></thead><tbody>'+t.items.map(function(n){return"<tr><td><b>"+a(n.hv)+'</b></td><td class="zh" lang="zh">'+a(n.zh||"")+"</td><td>"+b(n.vi)+"</td></tr>"}).join("")+"</tbody></table>";case"people":return'<table class="ll-bang"><thead><tr><th>Nhân vật</th><th>Thời đại</th><th>Ghi chú</th></tr></thead><tbody>'+t.items.map(function(n){return"<tr><td><b>"+a(n.name)+"</b>"+(n.zh?' <span class="zh" lang="zh">'+a(n.zh)+"</span>":"")+"</td><td>"+a(n.years||"")+"</td><td>"+b(n.note||"")+"</td></tr>"}).join("")+"</tbody></table>";case"img":return`<figure class="ll-hinh"><img loading="lazy" onerror="this.parentNode.style.display='none'" src="`+a(/^https?:/.test(t.src)?t.src:I+t.src)+'" alt="'+a(t.cap)+'"><figcaption>'+b(t.cap)+(t.link?' · <a href="'+a(t.link)+'" target="_blank" rel="noopener">'+a(t.credit||"Nguồn ảnh")+"</a>":t.credit?" · "+a(t.credit):"")+"</figcaption></figure>";case"qs":return'<div class="ll-hoi"><b>Câu hỏi ôn tập</b><ol>'+t.items.map(function(n){return"<li>"+b(n)+"</li>"}).join("")+"</ol></div>";default:return""}}function G(t,n,r){for(var o=n.chapters,h=-1,i=0;i<o.length;i++)o[i].id===r&&(h=i);var c=o[h];if(!c){y(C(t)+'<p class="ll-thong-bao">Chương này đang được biên soạn.</p>');return}var g=null,f=null;for(i=h-1;i>=0;i--)if(o[i].body){g=o[i];break}for(i=h+1;i<o.length;i++)if(o[i].body){f=o[i];break}var d=C(t,c)+'<div class="ll-cong-cu"><button data-co="-1" aria-label="Chữ nhỏ hơn">A−</button><button data-co="1" aria-label="Chữ lớn hơn">A+</button></div>'+w.thanh()+'<article class="ll-bai" style="font-size:'+z+'px"><header class="ll-bai-dau"><div class="ll-so">'+a(c.no)+"</div><h2>"+a(c.title)+"</h2>"+(c.titleZh?'<div class="ll-zh" lang="zh">'+a(c.titleZh)+(c.author?" · "+a(c.author):"")+"</div>":"")+"</header>"+(c.summary?'<p class="ll-tom">'+b(c.summary)+"</p>":"")+(c.body||[]).map(tt).join("")+'<p class="ll-nguon">Bài giảng tiếng Việt do Thư Đạo biên soạn, tóm lược và bình giải nội dung chương; không phải bản dịch nguyên văn. Nguồn: <i>'+a(t.titleZh)+"</i>, "+a(c.author||t.authors)+(c.pages?", tr. "+a(c.pages):"")+'.</p><div class="ll-chuyen"><button class="ll-nut phu" '+(g?'data-di="#sach='+a(t.id)+"&chuong="+a(g.id)+'"':"disabled")+">‹ "+(g?a(g.no):"Chương trước")+'</button><button class="ll-nut phu" data-di="#sach='+a(t.id)+'">Mục lục</button><button class="ll-nut" '+(f?'data-di="#sach='+a(t.id)+"&chuong="+a(f.id)+'"':"disabled")+">"+(f?a(f.no):"Chương sau")+" ›</button></div></article>";y(d),w.gan(),document.title=c.title+" – "+t.title+" – Thư Đạo"}function L(){w.dung();var t=_();if(A){var n=null;if(A.books.forEach(function(o){o.id===t.sach&&(n=o)}),!n){W();return}if(!t.chuong){X(n),M();return}var r=P[n.id];if(r){G(n,r,t.chuong),M();return}y(C(n)+'<p class="ll-thong-bao">Đang mở chương…</p>'),R("data/"+n.id+".json").then(function(o){P[n.id]=o,_().chuong===t.chuong&&(G(n,o,t.chuong),M())}).catch(function(){y(C(n)+'<p class="ll-thong-bao">Không tải được nội dung. Hãy tải lại trang.</p>')})}}return x.addEventListener("click",function(t){var n=t.target.closest("[data-doc],[data-toc]");if(n&&x.contains(n)){n.hasAttribute("data-toc")?w.toc(parseFloat(n.getAttribute("data-toc"))):w.bam(n);return}var r=t.target.closest("[data-di],[data-sach],[data-co]");if(!r){var o=t.target.closest(".ll-bai");o&&!t.target.closest("a,button")&&w.chamDoan(t.target);return}if(!(!x.contains(r)||r.disabled)){if(r.hasAttribute("data-co")){z=Math.max(14,Math.min(24,z+parseInt(r.getAttribute("data-co"),10)));try{localStorage.setItem("ll-co-chu",z)}catch(i){}var h=D(".ll-bai");h&&(h.style.fontSize=z+"px");return}t.preventDefault(),Q(r.hasAttribute("data-sach")?"#sach="+r.getAttribute("data-sach"):r.getAttribute("data-di"))}}),window.addEventListener("hashchange",L),window.addEventListener("pagehide",function(){w.dung()}),R("data/books.json").then(function(t){A=t,L()}).catch(function(){y('<p class="ll-thong-bao">Không tải được tủ sách. Hãy tải lại trang.</p>')}),{veLai:L}})()}})();

Nhận xét

Bài đăng phổ biến từ blog này

trang/thudao/dang-ky-hoc.html · Bản trước khi chuyển sang kho (tải từ GitHub/jsDelivr)

trang/thudao/bai-viet/benh-cua-thu-dan-duong-dai-the-trien-lam-xu-thu-va-nguy-menh-de-vuot-co-nhan.html · Bản trước khi chuyển sang kho (có video, tải từ GitHub/jsDelivr)

trang/thudao/tai-lieu.html · Bản đang chạy 11/11/2026 (khối tải nhanh từ kho)