@xiee/utils 1.13.20 → 1.13.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/js/pages.js +9 -8
- package/js/pages.min.js +1 -1
- package/js/pages.min.js.map +1 -1
- package/package.json +1 -1
package/js/pages.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
(d => {
|
|
4
4
|
function $(s, el = d) { return el?.querySelector(s); }
|
|
5
5
|
function $$(s, el = d) { return el ? el.querySelectorAll(s) : []; }
|
|
6
|
+
function nChild(el) { return el.childElementCount; }
|
|
6
7
|
|
|
7
8
|
const tpl = d.createElement('div'), book = $$('h1').length > 1;
|
|
8
9
|
tpl.className = 'pagesjs-page';
|
|
@@ -27,7 +28,7 @@
|
|
|
27
28
|
if (el.classList.contains('pagesjs-page')) {
|
|
28
29
|
box.after(newPage(el));
|
|
29
30
|
// if current element is not empty, fill its content into the box
|
|
30
|
-
if (el
|
|
31
|
+
if (nChild(el) > 3) {
|
|
31
32
|
box_body.append(...[...el.children].slice(3));
|
|
32
33
|
// TODO: should we fragment this page if it's too long?
|
|
33
34
|
box.after(newPage()); // create a new empty page
|
|
@@ -39,7 +40,7 @@
|
|
|
39
40
|
const [box2, box_body2] = [box, box_body]; // store old box
|
|
40
41
|
box2.after(newPage());
|
|
41
42
|
// if there's more than one child in the box, move the last child to next box
|
|
42
|
-
box_body2
|
|
43
|
+
nChild(box_body2) > 1 && box_body.append(box_body2.lastChild);
|
|
43
44
|
}
|
|
44
45
|
box_body.append(el);
|
|
45
46
|
fragment(el);
|
|
@@ -53,22 +54,22 @@
|
|
|
53
54
|
box_body.append(el2), box_cur.after(newPage()), box_body.append(el)
|
|
54
55
|
);
|
|
55
56
|
// for DIVs containing a single child (e.g., #TOC > ul), try to break the child
|
|
56
|
-
if (el.tagName === 'DIV' && el
|
|
57
|
+
if (el.tagName === 'DIV' && nChild(el) === 1) {
|
|
57
58
|
fragment(el.firstElementChild, el2, el, box_cur);
|
|
58
59
|
}
|
|
59
60
|
// keep moving el's first item to el2 until page height > H
|
|
60
|
-
if (['UL', 'BLOCKQUOTE'].indexOf(el.tagName) > -1 && el
|
|
61
|
+
if (['UL', 'BLOCKQUOTE'].indexOf(el.tagName) > -1 && nChild(el) > 1) while (true) {
|
|
61
62
|
const item = el.firstChild;
|
|
62
63
|
if (!item) break;
|
|
63
64
|
el2.append(item);
|
|
64
65
|
if (box_cur.scrollHeight > H) {
|
|
65
|
-
// move item back to el
|
|
66
|
-
el2.previousElementSibling && el.insertBefore(item, el.firstChild);
|
|
66
|
+
// move item back to el if the clone el2 is not the only element on page or has more than one child
|
|
67
|
+
(el2.previousElementSibling || nChild(el2) > 1) && el.insertBefore(item, el.firstChild);
|
|
67
68
|
break;
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
|
-
|
|
71
|
-
fragment(container ? parent : el);
|
|
71
|
+
// keep fragmenting the remaining el if the clone is not empty, otherwise remove clone
|
|
72
|
+
el2.lastChild ? fragment(container ? parent : el) : el2.remove();
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
// use data-short-title of a header if exists, and fall back to inner text
|
package/js/pages.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(e=>{function t(t,n=e){return n?.querySelector(t)}function n(t,n=e){return n?n.querySelectorAll(t):[]}const
|
|
1
|
+
(e=>{function t(t,n=e){return n?.querySelector(t)}function n(t,n=e){return n?n.querySelectorAll(t):[]}function r(e){return e.childElementCount}const a=e.createElement("div"),s=n("h1").length>1;a.className="pagesjs-page",a.innerHTML='<div class="pagesjs-header"></div>\n<div class="pagesjs-body"></div>\n<div class="pagesjs-footer"></div>';let i,o,c,l=[];function d(e){return e&&!t(".pagesjs-body",e)&&e.insertAdjacentHTML("afterbegin",a.innerHTML),i=e||a.cloneNode(!0),o=i.children[1],l.length&&i.classList.add(...l),i}function f(e){if(!e)return!1;const t=""===e.innerText.trim();return t&&e.remove(),t}function p(e){if(e.classList.contains("pagesjs-page"))return i.after(d(e)),void(r(e)>3&&(o.append(...[...e.children].slice(3)),i.after(d())));if(i.scrollHeight>c){const[e,t]=[i,o];e.after(d()),r(t)>1&&o.append(t.lastChild)}o.append(e),g(e)}function g(e,t,n,a){if(i.scrollHeight<=c)return;const s=a||i,l=e.cloneNode();if(t?t.append(l):(o.append(l),s.after(d()),o.append(e)),"DIV"===e.tagName&&1===r(e)&&g(e.firstElementChild,l,e,s),["UL","BLOCKQUOTE"].indexOf(e.tagName)>-1&&r(e)>1)for(;;){const t=e.firstChild;if(!t)break;if(l.append(t),s.scrollHeight>c){(l.previousElementSibling||r(l)>1)&&e.insertBefore(t,e.firstChild);break}}l.lastChild?g(t?n:e):l.remove()}function h(e){return e&&(e.dataset.shortTitle||e.innerText)}const u=h(t("h1.title, .frontmatter h1, .title, h1")),m=(s?"h1":"h2")+":not(.frontmatter *)",b=["top","bottom"].map((t=>+getComputedStyle(e.documentElement).getPropertyValue(`--paper-margin-${t}`).replace("px","")||0));function E(){const r=e.body.classList;if(r.contains("pagesjs"))return;r.add("pagesjs"),s&&r.add("page-book"),e.body.insertAdjacentElement("afterbegin",d()),c=i.clientHeight||window.innerHeight,n(":is(#TOC, .footnotes, .chapter-before, .chapter-after):is(.side-left, .side-right).side").forEach((e=>{e.classList.remove("side","side-left","side-right")})),r.add("pagesjs-filling"),n(".frontmatter, #TOC, .abstract").forEach((e=>(p(e),s&&i.after(d())))),n(".body").forEach((e=>{l=["chapter","appendix"].filter((t=>e.classList.contains(t))),s&&(""===i.innerText?d(i):i.after(d())),[...e.children].map(p),f(e.parentNode),f(e)})),r.remove("pagesjs-filling"),n('#TOC a[href^="#"]').forEach((t=>{const n=e.createElement("span"),r=t.firstElementChild;for(r?.classList.contains("section-number")?r.after(n):t.insertAdjacentElement("afterbegin",n);n.nextSibling;)n.append(n.nextSibling);t.insertAdjacentHTML("beforeend",'<span class="dot-leader"></span>'),t.dataset.pageNumber="000"}));let a,o=0;n(".pagesjs-page").forEach((e=>{if(f(e))return;if(s){if(t(".frontmatter",e))return;t(m,e)&&(a="")}const r=function(e){let t=+e.dataset.pagesOffset;if(t)return t;const r=e.scrollHeight;if(t=Math.ceil(r/c),t<=1)return t;const a=b.concat([...n("thead",e)].map((e=>+e.offsetHeight))).reduce(((e,t)=>e+t));if(!a)return t;function s(){return Math.ceil((r+(t-1)*a)/c)}let i=s();for(;i>t;)t=i,i=s();return t}(e);r>1&&e.classList.add("page-multiple"),o+=r;const i={pageNumber:o,mainTitle:u,pageTitle:a};let l;[e.children[0],e.children[2]].forEach((e=>{for(const t in i)i[t]&&(e.dataset[t]=i[t])})),a=h([...n(m,e)].pop())||a,n(".footnotes",e).forEach(((t,n)=>{0===n?(l=t,e.children[1].after(t)):(l.append(...t.children),t.remove())}))})),n('#TOC a[href^="#"]').forEach((e=>{const n=t(`.pagesjs-page:has(${e.getAttribute("href")}) .pagesjs-header`);e.dataset.pageNumber=n?n.dataset.pageNumber:""}))}addEventListener("beforeprint",E);let j=sessionStorage.getItem("pagesjs");j&&E(),addEventListener("keypress",(e=>"p"===e.key&&(E(),j=j?"":"1",sessionStorage.setItem("pagesjs",j),j||location.reload())))})(document);
|
package/js/pages.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["d","$","s","el","querySelector","$$","querySelectorAll","tpl","createElement","book","length","className","innerHTML","box","box_body","H","box_cls","newPage","insertAdjacentHTML","cloneNode","children","classList","add","removeBlank","v","innerText","trim","remove","fill","contains","after","
|
|
1
|
+
{"version":3,"names":["d","$","s","el","querySelector","$$","querySelectorAll","nChild","childElementCount","tpl","createElement","book","length","className","innerHTML","box","box_body","H","box_cls","newPage","insertAdjacentHTML","cloneNode","children","classList","add","removeBlank","v","innerText","trim","remove","fill","contains","after","append","slice","scrollHeight","box2","box_body2","lastChild","fragment","container","parent","page","box_cur","el2","tagName","firstElementChild","indexOf","item","firstChild","previousElementSibling","insertBefore","shortTitle","h","dataset","main","ps","tb","map","i","getComputedStyle","documentElement","getPropertyValue","replace","paginate","cls","body","insertAdjacentElement","clientHeight","window","innerHeight","forEach","filter","parentNode","a","n","nextSibling","pageNumber","page_title","N","pagesOffset","Math","ceil","m","concat","offsetHeight","reduce","m1","m2","newPages","n2","calcPages","info","mainTitle","pageTitle","ft","key","pop","p","getAttribute","addEventListener","pg","sessionStorage","getItem","e","setItem","location","reload","document"],"sources":["pages.js"],"mappings":"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","ignoreList":[]}
|