@xiee/utils 1.13.69 → 1.13.71

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.
@@ -49,6 +49,23 @@
49
49
  inset: auto 5px 5px auto;
50
50
  }
51
51
  }
52
+ &.pagesjs-fragmented {
53
+ &:not(.fragment-first), &:not(.fragment-last) blockquote {
54
+ &::before, &::after {
55
+ display: none;
56
+ }
57
+ }
58
+ &:not(.fragment-first) {
59
+ &, blockquote {
60
+ padding-top: 1px;
61
+ }
62
+ }
63
+ &:not(.fragment-last) {
64
+ &, blockquote {
65
+ padding-bottom: 1px;
66
+ }
67
+ }
68
+ }
52
69
  }
53
70
 
54
71
  /* a tale of two buttons */
@@ -1,2 +1,2 @@
1
- .pagesjs #TOC>ul>li>ul>li>ul>li>ul,.chapter-toc>ul>li>ul>li>ul{display:none}.pagesjs{& #tab\:assets tr>:nth-child(2){display:none}}.epigraph{margin-bottom:4em;padding:5px;position:relative;&,& blockquote{border:1px solid}&:before,&:after,& blockquote:before,& blockquote:after{content:"•";text-align:center;border:1px solid;width:1em;height:1em;line-height:1;display:inline-block;position:absolute}&:before{left:5px}&:after{content:"❀";color:#639;text-align:right;opacity:.2;border:none;font-size:3em;inset:5px 5px auto auto}& blockquote{padding:1em;&:before{inset:auto auto 5px 5px}&:after{inset:auto 5px 5px auto}}}.new-road{& p{justify-content:center;gap:.5em;display:flex}& button:before{font-size:200%}& .old-knit,& .new-fuse{&:hover:before{content:"❓ "}}& .old-knit{&:before{content:"🧶 "}&:focus:before{content:"😡 "}}& .new-fuse:before{content:"↯ "}& .new-preview:before{content:"⏵ "}& .new-fuse:focus:before{content:"😇 "}}.flex-col{justify-content:space-between;gap:.5em;display:flex;& *{flex:1}& pre:has(code[data-file]){&,&:before{border:groove #f5fffa}& code{border:none;border-top:1px dashed #d3d3d3}&{border-top:none}&:before{border-bottom:none;border-left:none}}}code[data-file]:before{content:attr(data-file);float:right;background:#ffffe0;margin:-1em -1em 1em 1em;padding:.5em;font-size:.9em;display:inline-block}pre:has(code[data-file]){&:before{content:"Output";text-transform:uppercase;border-bottom:none;padding:.5em 1em;font-weight:700;display:inline-block}&:has(code[data-file$=\.Rmd]):before{content:"♧ Example"}&:has(code[data-source]):before{content:"♧ Source"}&.pagesjs-fragmented:first-child{&:before,& code:before{content:unset}}& code,&:before{border:groove #f5fffa}&:before{border-bottom:none}}.no-ref-label{& .cross-ref-sec:before{content:""}}.larger{font-size:1.5em}
1
+ .pagesjs #TOC>ul>li>ul>li>ul>li>ul,.chapter-toc>ul>li>ul>li>ul{display:none}.pagesjs{& #tab\:assets tr>:nth-child(2){display:none}}.epigraph{margin-bottom:4em;padding:5px;position:relative;&,& blockquote{border:1px solid}&:before,&:after,& blockquote:before,& blockquote:after{content:"•";text-align:center;border:1px solid;width:1em;height:1em;line-height:1;display:inline-block;position:absolute}&:before{left:5px}&:after{content:"❀";color:#639;text-align:right;opacity:.2;border:none;font-size:3em;inset:5px 5px auto auto}& blockquote{padding:1em;&:before{inset:auto auto 5px 5px}&:after{inset:auto 5px 5px auto}}&.pagesjs-fragmented{&:not(.fragment-first),&:not(.fragment-last) blockquote{&:before,&:after{display:none}}&:not(.fragment-first){&,& blockquote{padding-top:1px}}&:not(.fragment-last){&,& blockquote{padding-bottom:1px}}}}.new-road{& p{justify-content:center;gap:.5em;display:flex}& button:before{font-size:200%}& .old-knit,& .new-fuse{&:hover:before{content:"❓ "}}& .old-knit{&:before{content:"🧶 "}&:focus:before{content:"😡 "}}& .new-fuse:before{content:"↯ "}& .new-preview:before{content:"⏵ "}& .new-fuse:focus:before{content:"😇 "}}.flex-col{justify-content:space-between;gap:.5em;display:flex;& *{flex:1}& pre:has(code[data-file]){&,&:before{border:groove #f5fffa}& code{border:none;border-top:1px dashed #d3d3d3}&{border-top:none}&:before{border-bottom:none;border-left:none}}}code[data-file]:before{content:attr(data-file);float:right;background:#ffffe0;margin:-1em -1em 1em 1em;padding:.5em;font-size:.9em;display:inline-block}pre:has(code[data-file]){&:before{content:"Output";text-transform:uppercase;border-bottom:none;padding:.5em 1em;font-weight:700;display:inline-block}&:has(code[data-file$=\.Rmd]):before{content:"♧ Example"}&:has(code[data-source]):before{content:"♧ Source"}&.pagesjs-fragmented:first-child{&:before,& code:before{content:unset}}& code,&:before{border:groove #f5fffa}&:before{border-bottom:none}}.no-ref-label{& .cross-ref-sec:before{content:""}}.larger{font-size:1.5em}
2
2
  /*# sourceMappingURL=book-litedown.min.css.map */
@@ -1 +1 @@
1
- {"version":3,"mappings":"AAGA,4EAIA,SACE,8CAKF,0DAIE,gCAGA,mLAUA,kBAGA,+GASA,yBAEE,iCAGA,kCAOJ,UACE,iDAKA,+BACA,wBACE,+BAEF,YACE,yBACA,gCAEF,kCACA,qCACA,0CAIF,8DAIE,WAGA,2BACE,iCAGA,iDAIA,kBAGA,+CAOJ,wJAUA,yBACE,4HAQA,2DAGA,qDAGA,iCACE,sCAIF,sCAGA,6BAKF,cACE,oCAKF","sources":["book-litedown.css"],"sourcesContent":["/* CSS for https://yihui.org/litedown/ */\n\n/* hide 4th-level TOC items when printing to PDF and 3rd-level in chapter TOC */\n.pagesjs #TOC > ul > li > ul > li > ul > li > ul, .chapter-toc > ul > li > ul > li > ul {\n display: none;\n}\n\n.pagesjs {\n #tab\\:assets tr > :nth-child(2) {\n display: none;\n }\n}\n\n.epigraph {\n position: relative;\n padding: 5px;\n margin-bottom: 4em;\n &, blockquote {\n border: 1px solid;\n }\n &::before, &::after, blockquote::before, blockquote::after {\n content: \"•\";\n position: absolute;\n border: 1px solid;\n display: inline-block;\n width: 1em;\n height: 1em;\n text-align: center;\n line-height: 1;\n }\n &::before {\n left: 5px;\n }\n &::after {\n content: \"❀\";\n color: rebeccapurple;\n font-size: 3em;\n text-align: right;\n border: none;\n opacity: .2;\n inset: 5px 5px auto auto;\n }\n blockquote {\n padding: 1em;\n &::before {\n inset: auto auto 5px 5px;\n }\n &::after {\n inset: auto 5px 5px auto;\n }\n }\n}\n\n/* a tale of two buttons */\n.new-road {\n p {\n display: flex;\n justify-content: center;\n gap: .5em;\n }\n button::before { font-size: 200%; }\n .old-knit, .new-fuse {\n &:hover::before { content: \"❓ \"; }\n }\n .old-knit {\n &::before { content: \"🧶 \"; }\n &:focus::before { content: \"😡 \"; }\n }\n .new-fuse::before { content: \"↯ \"; }\n .new-preview::before { content: \"⏵ \"; }\n .new-fuse:focus::before { content: \"😇 \"; }\n}\n\n/* arrange elements in columns */\n.flex-col {\n display: flex;\n justify-content: space-between;\n gap: .5em;\n * {\n flex: 1;\n }\n pre:has(code[data-file]) {\n &, &::before {\n border: groove mintcream;\n }\n code {\n border: none;\n border-top: 1px dashed lightgray;\n }\n & {\n border-top: none;\n }\n &::before {\n border-left: none;\n border-bottom: none;\n }\n }\n}\n\ncode[data-file]::before {\n content: attr(data-file);\n font-size: .9em;\n float: right;\n background: lightyellow;\n display: inline-block;\n padding: .5em;\n margin: -1em -1em 1em 1em;\n}\n\npre:has(code[data-file]) {\n &::before {\n content: \"Output\";\n text-transform: uppercase;\n font-weight: bold;\n display: inline-block;\n padding: .5em 1em;\n border-bottom: none;\n }\n &:has(code[data-file$=\".Rmd\"])::before {\n content: \"♧ Example\";\n }\n &:has(code[data-source])::before {\n content: \"♧ Source\";\n }\n &.pagesjs-fragmented:first-child {\n &::before, code::before {\n content: unset;\n }\n }\n code, &::before {\n border: groove mintcream;\n }\n &::before {\n border-bottom: none;\n }\n}\n\n.no-ref-label {\n .cross-ref-sec:before {\n content: \"\";\n }\n}\n\n.larger { font-size: 1.5em; }\n"],"names":[]}
1
+ {"version":3,"mappings":"AAGA,4EAIA,SACE,8CAKF,0DAIE,gCAGA,mLAUA,kBAGA,+GASA,yBAEE,iCAGA,iCAIF,qBACE,wDACE,+BAIF,uBACE,gCAIF,sBACE,qCAQN,UACE,iDAKA,+BACA,wBACE,+BAEF,YACE,yBACA,gCAEF,kCACA,qCACA,0CAIF,8DAIE,WAGA,2BACE,iCAGA,iDAIA,kBAGA,+CAOJ,wJAUA,yBACE,4HAQA,2DAGA,qDAGA,iCACE,sCAIF,sCAGA,6BAKF,cACE,oCAKF","sources":["book-litedown.css"],"sourcesContent":["/* CSS for https://yihui.org/litedown/ */\n\n/* hide 4th-level TOC items when printing to PDF and 3rd-level in chapter TOC */\n.pagesjs #TOC > ul > li > ul > li > ul > li > ul, .chapter-toc > ul > li > ul > li > ul {\n display: none;\n}\n\n.pagesjs {\n #tab\\:assets tr > :nth-child(2) {\n display: none;\n }\n}\n\n.epigraph {\n position: relative;\n padding: 5px;\n margin-bottom: 4em;\n &, blockquote {\n border: 1px solid;\n }\n &::before, &::after, blockquote::before, blockquote::after {\n content: \"•\";\n position: absolute;\n border: 1px solid;\n display: inline-block;\n width: 1em;\n height: 1em;\n text-align: center;\n line-height: 1;\n }\n &::before {\n left: 5px;\n }\n &::after {\n content: \"❀\";\n color: rebeccapurple;\n font-size: 3em;\n text-align: right;\n border: none;\n opacity: .2;\n inset: 5px 5px auto auto;\n }\n blockquote {\n padding: 1em;\n &::before {\n inset: auto auto 5px 5px;\n }\n &::after {\n inset: auto 5px 5px auto;\n }\n }\n &.pagesjs-fragmented {\n &:not(.fragment-first), &:not(.fragment-last) blockquote {\n &::before, &::after {\n display: none;\n }\n }\n &:not(.fragment-first) {\n &, blockquote {\n padding-top: 1px;\n }\n }\n &:not(.fragment-last) {\n &, blockquote {\n padding-bottom: 1px;\n }\n }\n }\n}\n\n/* a tale of two buttons */\n.new-road {\n p {\n display: flex;\n justify-content: center;\n gap: .5em;\n }\n button::before { font-size: 200%; }\n .old-knit, .new-fuse {\n &:hover::before { content: \"❓ \"; }\n }\n .old-knit {\n &::before { content: \"🧶 \"; }\n &:focus::before { content: \"😡 \"; }\n }\n .new-fuse::before { content: \"↯ \"; }\n .new-preview::before { content: \"⏵ \"; }\n .new-fuse:focus::before { content: \"😇 \"; }\n}\n\n/* arrange elements in columns */\n.flex-col {\n display: flex;\n justify-content: space-between;\n gap: .5em;\n * {\n flex: 1;\n }\n pre:has(code[data-file]) {\n &, &::before {\n border: groove mintcream;\n }\n code {\n border: none;\n border-top: 1px dashed lightgray;\n }\n & {\n border-top: none;\n }\n &::before {\n border-left: none;\n border-bottom: none;\n }\n }\n}\n\ncode[data-file]::before {\n content: attr(data-file);\n font-size: .9em;\n float: right;\n background: lightyellow;\n display: inline-block;\n padding: .5em;\n margin: -1em -1em 1em 1em;\n}\n\npre:has(code[data-file]) {\n &::before {\n content: \"Output\";\n text-transform: uppercase;\n font-weight: bold;\n display: inline-block;\n padding: .5em 1em;\n border-bottom: none;\n }\n &:has(code[data-file$=\".Rmd\"])::before {\n content: \"♧ Example\";\n }\n &:has(code[data-source])::before {\n content: \"♧ Source\";\n }\n &.pagesjs-fragmented:first-child {\n &::before, code::before {\n content: unset;\n }\n }\n code, &::before {\n border: groove mintcream;\n }\n &::before {\n border-bottom: none;\n }\n}\n\n.no-ref-label {\n .cross-ref-sec:before {\n content: \"\";\n }\n}\n\n.larger { font-size: 1.5em; }\n"],"names":[]}
package/css/snap.css CHANGED
@@ -1,30 +1,32 @@
1
1
  :root { --slide-width: 100%; }
2
2
  html { scroll-snap-type: y mandatory; }
3
3
  th, td { padding: .2em .5em; }
4
- .slide { padding: 0 1em; }
5
- .slide, .frontmatter .main, .middle .main {
4
+ .slide { padding: 0 1em; background-color: #fff; }
5
+ .slide, :is(.frontmatter, .middle) .main {
6
6
  display: flex;
7
7
  flex-direction: column;
8
8
  }
9
- .slide > .main { flex-grow: 1; }
10
- .slide > .header { margin-bottom: 1em; }
11
- .slide h2, .slide h3 { margin-top: unset; }
9
+ .slide {
10
+ & > .main { flex-grow: 1; }
11
+ & > .header { margin-bottom: 1em; }
12
+ h2, h3 { margin-top: unset; }
13
+ }
12
14
  body {
13
15
  max-width: fit-content;
14
16
  padding: 0;
15
17
  }
16
18
  a { color: #eb4a47; }
17
19
  :not(pre) > code { background: #fdfded; }
18
- #TOC { columns: 2; }
19
- #TOC::before {
20
- font-size: 1.3em;
21
- font-weight: bold;
22
- display: block;
23
- border-bottom: 1px solid #666;
24
- }
25
- .frontmatter .main, .middle .main {
26
- justify-content: center;
20
+ #TOC {
21
+ columns: 2;
22
+ &::before {
23
+ font-size: 1.3em;
24
+ font-weight: bold;
25
+ display: block;
26
+ border-bottom: 1px solid #666;
27
+ }
27
28
  }
29
+ :is(.frontmatter, .middle) .main { justify-content: center; }
28
30
  .footer {
29
31
  display: flex;
30
32
  justify-content: space-between;
@@ -43,16 +45,18 @@ a { color: #eb4a47; }
43
45
  padding: 0 .1em;
44
46
  margin-right: .3em;
45
47
  }
46
- .overview { font-size: .8em; }
47
- .overview .slide-container {
48
- display: flex;
49
- flex-wrap: wrap;
50
- justify-content: space-evenly;
51
- }
52
- .overview .slide-container .slide {
53
- width: var(--slide-width);
54
- border: 1px dotted #ccc;
55
- margin-bottom: 0.5em;
48
+ .overview {
49
+ font-size: .8em;
50
+ .slide-container {
51
+ display: flex;
52
+ flex-wrap: wrap;
53
+ justify-content: space-evenly;
54
+ .slide {
55
+ width: var(--slide-width);
56
+ border: 1px dotted #ccc;
57
+ margin-bottom: 0.5em;
58
+ }
59
+ }
56
60
  }
57
61
  .mirrored { transform: scale(-1, 1); }
58
62
  .timer { opacity: 0; }
@@ -73,18 +77,17 @@ html:fullscreen {
73
77
  background: #d7d8d2;
74
78
  scale: var(--slide-scale);
75
79
  margin-top: var(--slide-top);
76
- }
77
- .slide-mode .slide {
78
- min-height: calc(100vh / var(--slide-scale));
79
- width: calc(100vh / var(--slide-ratio) / var(--slide-scale));
80
- box-shadow: 0 0 2em #888;
81
- clip-path: inset(0 -2em 0 -2em);
82
- background: white;
83
- scroll-snap-align: start;
80
+ .slide {
81
+ min-height: calc(100vh / var(--slide-scale));
82
+ width: calc(100vh / var(--slide-ratio) / var(--slide-scale));
83
+ box-shadow: 0 0 2em #888;
84
+ clip-path: inset(0 -2em 0 -2em);
85
+ scroll-snap-align: start;
86
+ }
87
+ .spacer { display: block; }
88
+ .timer { opacity: initial; }
84
89
  }
85
90
  li li { font-size: .9em; }
86
- .slide-mode .spacer { display: block; }
87
- .slide-mode .timer { opacity: initial; }
88
91
  }
89
92
  @media (min-width: 1400px) {
90
93
  :root { --slide-width: 33%; }
package/css/snap.min.css CHANGED
@@ -1,2 +1,2 @@
1
- :root{--slide-width:100%}html{scroll-snap-type:y mandatory}th,td{padding:.2em .5em}.slide{padding:0 1em}.slide,.frontmatter .main,.middle .main{flex-direction:column;display:flex}.slide>.main{flex-grow:1}.slide>.header{margin-bottom:1em}.slide h2,.slide h3{margin-top:unset}body{max-width:fit-content;padding:0}a{color:#eb4a47}:not(pre)>code{background:#fdfded}#TOC{columns:2}#TOC:before{border-bottom:1px solid #666;font-size:1.3em;font-weight:700;display:block}.frontmatter .main,.middle .main{justify-content:center}.footer{opacity:.5;justify-content:space-between;font:.7em monospace;display:flex}.inverse{filter:invert();background:#eee}.center{text-align:center}.slide-container h2 .section-number{color:#fff;background:#666;margin-right:.3em;padding:0 .1em;display:inline-block}.overview{font-size:.8em}.overview .slide-container{flex-wrap:wrap;justify-content:space-evenly;display:flex}.overview .slide-container .slide{width:var(--slide-width);border:1px dotted #ccc;margin-bottom:.5em}.mirrored{transform:scaleX(-1)}.timer{opacity:0}html:fullscreen::-webkit-scrollbar,.spacer{display:none}html:fullscreen{-ms-overflow-style:none;scrollbar-width:none}@media screen and (width>=992px){:root{--slide-width:49%;--slide-scale:1;--slide-ratio:.75;--slide-top:auto}.slide-mode{scale:var(--slide-scale);margin-top:var(--slide-top);background:#d7d8d2;font-size:2em}.slide-mode .slide{min-height:calc(100vh/var(--slide-scale));width:calc(100vh/var(--slide-ratio)/var(--slide-scale));clip-path:inset(0 -2em);scroll-snap-align:start;background:#fff;box-shadow:0 0 2em #888}li li{font-size:.9em}.slide-mode .spacer{display:block}.slide-mode .timer{opacity:initial}}@media (width>=1400px){:root{--slide-width:33%}}@media (width>=1800px){:root{--slide-width:24.67%}}
1
+ :root{--slide-width:100%}html{scroll-snap-type:y mandatory}th,td{padding:.2em .5em}.slide{background-color:#fff;padding:0 1em}.slide,:is(.frontmatter,.middle) .main{flex-direction:column;display:flex}.slide{&>.main{flex-grow:1}&>.header{margin-bottom:1em}& h2,& h3{margin-top:unset}}body{max-width:fit-content;padding:0}a{color:#eb4a47}:not(pre)>code{background:#fdfded}#TOC{columns:2;&:before{border-bottom:1px solid #666;font-size:1.3em;font-weight:700;display:block}}:is(.frontmatter,.middle) .main{justify-content:center}.footer{opacity:.5;justify-content:space-between;font:.7em monospace;display:flex}.inverse{filter:invert();background:#eee}.center{text-align:center}.slide-container h2 .section-number{color:#fff;background:#666;margin-right:.3em;padding:0 .1em;display:inline-block}.overview{font-size:.8em;& .slide-container{flex-wrap:wrap;justify-content:space-evenly;display:flex;& .slide{width:var(--slide-width);border:1px dotted #ccc;margin-bottom:.5em}}}.mirrored{transform:scaleX(-1)}.timer{opacity:0}html:fullscreen::-webkit-scrollbar,.spacer{display:none}html:fullscreen{-ms-overflow-style:none;scrollbar-width:none}@media screen and (width>=992px){:root{--slide-width:49%;--slide-scale:1;--slide-ratio:.75;--slide-top:auto}.slide-mode{scale:var(--slide-scale);margin-top:var(--slide-top);background:#d7d8d2;font-size:2em;& .slide{min-height:calc(100vh/var(--slide-scale));width:calc(100vh/var(--slide-ratio)/var(--slide-scale));clip-path:inset(0 -2em);scroll-snap-align:start;box-shadow:0 0 2em #888}& .spacer{display:block}& .timer{opacity:initial}}li li{font-size:.9em}}@media (width>=1400px){:root{--slide-width:33%}}@media (width>=1800px){:root{--slide-width:24.67%}}
2
2
  /*# sourceMappingURL=snap.min.css.map */
@@ -1 +1 @@
1
- {"version":3,"mappings":"AAAA,yBACA,kCACA,wBACA,qBACA,2EAIA,yBACA,iCACA,qCACA,qCAIA,gBACA,kCACA,eACA,uFAMA,wDAGA,kFAMA,yCAIA,0BACA,qHAOA,yBACA,oFAKA,qGAKA,+BACA,iBACA,wDACA,6DAIA,iCACE,2EAMA,kGAMA,6MAQA,qBACA,kCACA,oCAEF,uBACE,yBAEF,uBACE","sources":["snap.css"],"sourcesContent":[":root { --slide-width: 100%; }\nhtml { scroll-snap-type: y mandatory; }\nth, td { padding: .2em .5em; }\n.slide { padding: 0 1em; }\n.slide, .frontmatter .main, .middle .main {\n display: flex;\n flex-direction: column;\n}\n.slide > .main { flex-grow: 1; }\n.slide > .header { margin-bottom: 1em; }\n.slide h2, .slide h3 { margin-top: unset; }\nbody {\n max-width: fit-content;\n padding: 0;\n}\na { color: #eb4a47; }\n:not(pre) > code { background: #fdfded; }\n#TOC { columns: 2; }\n#TOC::before {\n font-size: 1.3em;\n font-weight: bold;\n display: block;\n border-bottom: 1px solid #666;\n}\n.frontmatter .main, .middle .main {\n justify-content: center;\n}\n.footer {\n display: flex;\n justify-content: space-between;\n opacity: .5;\n font: .7em monospace;\n}\n.inverse {\n background: #eee;\n filter: invert(1);\n}\n.center { text-align: center; }\n.slide-container h2 .section-number {\n display: inline-block;\n background: #666;\n color: white;\n padding: 0 .1em;\n margin-right: .3em;\n}\n.overview { font-size: .8em; }\n.overview .slide-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-evenly;\n}\n.overview .slide-container .slide {\n width: var(--slide-width);\n border: 1px dotted #ccc;\n margin-bottom: 0.5em;\n}\n.mirrored { transform: scale(-1, 1); }\n.timer { opacity: 0; }\nhtml:fullscreen::-webkit-scrollbar, .spacer { display: none; }\nhtml:fullscreen {\n -ms-overflow-style: none;\n scrollbar-width: none;\n}\n@media screen and (min-width: 992px) {\n :root {\n --slide-width: 49%;\n --slide-scale: 1;\n --slide-ratio: 0.75;\n --slide-top: auto;\n }\n .slide-mode {\n font-size: 2em;\n background: #d7d8d2;\n scale: var(--slide-scale);\n margin-top: var(--slide-top);\n }\n .slide-mode .slide {\n min-height: calc(100vh / var(--slide-scale));\n width: calc(100vh / var(--slide-ratio) / var(--slide-scale));\n box-shadow: 0 0 2em #888;\n clip-path: inset(0 -2em 0 -2em);\n background: white;\n scroll-snap-align: start;\n }\n li li { font-size: .9em; }\n .slide-mode .spacer { display: block; }\n .slide-mode .timer { opacity: initial; }\n}\n@media (min-width: 1400px) {\n :root { --slide-width: 33%; }\n}\n@media (min-width: 1800px) {\n :root { --slide-width: 24.67%; }\n}\n"],"names":[]}
1
+ {"version":3,"mappings":"AAAA,yBACA,kCACA,wBACA,2CACA,0EAIA,OACE,oBACA,4BACA,4BAEF,qCAIA,gBACA,kCACA,eAEE,qFAOF,uDACA,kFAMA,yCAIA,0BACA,qHAOA,yBAEE,4EAIE,8EAOJ,+BACA,iBACA,wDACA,6DAIA,iCACE,2EAMA,kGAKE,mLAOA,wBACA,0BAEF,sBAEF,uBACE,yBAEF,uBACE","sources":["snap.css"],"sourcesContent":[":root { --slide-width: 100%; }\nhtml { scroll-snap-type: y mandatory; }\nth, td { padding: .2em .5em; }\n.slide { padding: 0 1em; background-color: #fff; }\n.slide, :is(.frontmatter, .middle) .main {\n display: flex;\n flex-direction: column;\n}\n.slide {\n & > .main { flex-grow: 1; }\n & > .header { margin-bottom: 1em; }\n h2, h3 { margin-top: unset; }\n}\nbody {\n max-width: fit-content;\n padding: 0;\n}\na { color: #eb4a47; }\n:not(pre) > code { background: #fdfded; }\n#TOC {\n columns: 2;\n &::before {\n font-size: 1.3em;\n font-weight: bold;\n display: block;\n border-bottom: 1px solid #666;\n }\n}\n:is(.frontmatter, .middle) .main { justify-content: center; }\n.footer {\n display: flex;\n justify-content: space-between;\n opacity: .5;\n font: .7em monospace;\n}\n.inverse {\n background: #eee;\n filter: invert(1);\n}\n.center { text-align: center; }\n.slide-container h2 .section-number {\n display: inline-block;\n background: #666;\n color: white;\n padding: 0 .1em;\n margin-right: .3em;\n}\n.overview {\n font-size: .8em;\n .slide-container {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-evenly;\n .slide {\n width: var(--slide-width);\n border: 1px dotted #ccc;\n margin-bottom: 0.5em;\n }\n }\n}\n.mirrored { transform: scale(-1, 1); }\n.timer { opacity: 0; }\nhtml:fullscreen::-webkit-scrollbar, .spacer { display: none; }\nhtml:fullscreen {\n -ms-overflow-style: none;\n scrollbar-width: none;\n}\n@media screen and (min-width: 992px) {\n :root {\n --slide-width: 49%;\n --slide-scale: 1;\n --slide-ratio: 0.75;\n --slide-top: auto;\n }\n .slide-mode {\n font-size: 2em;\n background: #d7d8d2;\n scale: var(--slide-scale);\n margin-top: var(--slide-top);\n .slide {\n min-height: calc(100vh / var(--slide-scale));\n width: calc(100vh / var(--slide-ratio) / var(--slide-scale));\n box-shadow: 0 0 2em #888;\n clip-path: inset(0 -2em 0 -2em);\n scroll-snap-align: start;\n }\n .spacer { display: block; }\n .timer { opacity: initial; }\n }\n li li { font-size: .9em; }\n}\n@media (min-width: 1400px) {\n :root { --slide-width: 33%; }\n}\n@media (min-width: 1800px) {\n :root { --slide-width: 24.67%; }\n}\n"],"names":[]}
package/js/pages.js CHANGED
@@ -6,6 +6,7 @@
6
6
  function nChild(el) { return el.childElementCount; }
7
7
 
8
8
  const tpl = d.createElement('div'), book = $$('h1').length > 1, boxes = [],
9
+ fr_tag = ['TABLE', 'UL', 'OL', 'BLOCKQUOTE'],
9
10
  fr_cls = 'pagesjs-fragmented', fr_1 = 'fragment-first', fr_2 = 'fragment-last',
10
11
  tb = ['top', 'bottom'].map(i => {
11
12
  const v = getComputedStyle(d.documentElement).getPropertyValue(`--paper-margin-${i}`);
@@ -15,20 +16,18 @@
15
16
  tpl.innerHTML = `<div class="pagesjs-header"></div>
16
17
  <div class="pagesjs-body"></div>
17
18
  <div class="pagesjs-footer"></div>`;
18
- let box, box_body, box_cls = [], box_n = 0, H, h_code, l_code = [];
19
+ let box, box_body, box_cls = [], H, h_code, l_code = [];
19
20
  function newPage(el) {
20
- const n = boxes.length;
21
- // finish previous n - 1 boxes
22
- if (n - box_n > 1) {
23
- boxes.slice(box_n, n - 1).forEach(finish);
24
- box_n = n - 1;
25
- }
26
21
  el && !$('.pagesjs-body', el) && el.insertAdjacentHTML('afterbegin', tpl.innerHTML);
27
22
  box = el || tpl.cloneNode(true); box_body = box.children[1];
28
- box_cls.length && box.classList.add(...box_cls);
23
+ box.classList.add(...box_cls);
29
24
  boxes.includes(box) || boxes.push(box); // store new pages in boxes
30
25
  return box;
31
26
  }
27
+ // start the next page and finish current page
28
+ function nextPage(el, callback) {
29
+ const cur = box; cur.after(newPage(el)); callback && callback(); finish(cur);
30
+ }
32
31
  // compute page numbers and temporarily remove the box
33
32
  function finish(box) {
34
33
  const h = box.scrollHeight;
@@ -38,134 +37,156 @@
38
37
  }
39
38
  box.remove();
40
39
  }
41
- function removeBlank(el, html = false) {
42
- if (!el) return false;
43
- const v = (html ? el.innerHTML : el.innerText).trim() === '';
40
+ function removeBlank(el) {
41
+ if (!el || el.tagName === 'BODY') return false;
42
+ const v = el.innerText.trim() === '';
44
43
  v && el.remove();
45
44
  return v;
46
45
  }
47
46
  function fill(el) {
48
47
  // if the element is already a page, just use it as the box
49
48
  if (el.classList.contains('pagesjs-page')) {
50
- box.after(newPage(el));
51
- // if current element is not empty, fill its content into the box
52
- if (nChild(el) > 3) {
53
- box_body.append(...[...el.children].slice(3));
49
+ nextPage(el, () => nChild(el) > 3 && (
50
+ // if current element is not empty, fill its content into the box
51
+ box_body.append(...[...el.children].slice(3)),
54
52
  // TODO: should we fragment this page if it's too long?
55
- box.after(newPage()); // create a new empty page
56
- }
53
+ nextPage() // create a new empty page
54
+ ));
57
55
  } else {
58
56
  box_body.append(el);
59
- if (box.scrollHeight <= H) return;
60
- const cls = el.classList, h0 = el.innerHTML, n0 = boxes.length;
61
- fragment(el);
62
- // remove empty pages
63
- if (el.tagName === 'PRE') for (let i = boxes.length - 1; i >= n0; i--) {
64
- removeBlank(boxes[i]) && boxes.splice(i, 1);
57
+ if (box.scrollHeight > H) {
58
+ // temporarily remove el from DOM if it can be fragmented, otherwise
59
+ // simply move it to the next page
60
+ breakable(el) ? (el.remove(), fragment(el)) : nextPage(0, () => box_body.append(el));
65
61
  }
66
- // if el can be fragmented, add class *-last, otherwise remove class (e.g.,
67
- // current box can't even hold el's first child so move whole el to new box)
68
- (cls.contains(fr_cls) && el.innerHTML !== h0) ? cls.add(fr_2) :
69
- [el].concat(...$$(`.${fr_cls}`, el)).forEach(el => el.classList.remove(fr_cls, fr_1));
70
- l_code = []; // clean up code lines
71
62
  }
72
63
  }
73
- function fillCode(el, i1, i2) {
74
- el.innerHTML = l_code.slice(i1, i2).join('\n');
64
+ function fillCode(el, i) {
65
+ el.innerHTML = l_code.slice(0, i).join('\n');
66
+ }
67
+ function breakable(el) {
68
+ l_code = [];
69
+ const t = el.tagName, c = el.firstElementChild;
70
+ if (fr_tag.includes(t)) return true;
71
+ if (t === 'DIV') {
72
+ const cs = el.children;
73
+ return (cs.length === 1 && fr_tag.includes(c?.tagName)) ||
74
+ [...cs].filter(c => c.tagName === 'TABLE').length;
75
+ }
76
+ if (t !== 'PRE') return false;
77
+ if (c?.tagName !== 'CODE') return false;
78
+ // store all lines in l_code (TODO: ensure complete tags on each line)
79
+ l_code = c.innerHTML.replace(/\n$/, '').split('\n');
80
+ const n_code = l_code.length;
81
+ if (n_code < 2) return false;
82
+ h_code = c.offsetHeight / n_code; // approx line height
83
+ c.innerHTML = ''; // temporarily empty <code>; will use l_code
84
+ return true;
75
85
  }
76
86
  // break elements that are relatively easy to break (such as <ul>)
77
- function fragment(el, container, parent, page) {
87
+ function fragment(el, container, parent) {
78
88
  const tag = el.tagName, cls = el.classList, frag = cls.contains(fr_cls);
79
- parent || frag && cls.remove(fr_1);
80
- // if <code>, keep fragmenting; otherwise exit when box fits
81
- if (!l_code.length && box.scrollHeight <= H) return;
82
- parent ? cls.add(fr_cls) : (frag || cls.add(fr_cls, fr_1));
83
- const box_cur = page || box, el2 = el.cloneNode(); // shallow clone (wrapper only)
84
- // add the clone to current box, and move original el to next box
85
- container ? container.append(el2) : (
86
- box_body.append(el2), box_cur.after(newPage()), box_body.append(el)
87
- );
88
- // fragment <pre>'s <code> and <div>'s single child (e.g., #TOC > ul)
89
- if (tag === 'PRE') {
90
- const code = el.firstElementChild;
91
- if (code?.tagName == 'CODE') {
92
- const initial = l_code.length;
93
- // store all lines in l_code
94
- if (!initial) l_code = code.innerHTML.split('\n');
95
- let n_code = l_code.length;
96
- if (n_code > 1 && l_code[n_code - 1] === '') n_code -= 1; // ignore trailing \n
97
- if (n_code > 1) {
98
- if (!initial) h_code = code.offsetHeight / n_code; // approx line height
99
- code.innerHTML = ''; // temporarily empty <code>; will use l_code
100
- if (fragment(code, el2, el, box_cur)) {
101
- // exit if the rest of lines are empty
102
- if (l_code.join('').trim() === '') {
103
- el2.before(el); el.innerHTML = el2.innerHTML; el2.remove();
104
- boxes.pop().remove(); newPage(boxes[boxes.length - 1]); l_code = [];
105
- }
106
- if (!l_code.length) return; fragment(el);
107
- } else {
108
- // the current page can't hold the block; fragment it on next page
109
- el2.remove(); [code, el].forEach(el => el.classList.remove(fr_cls, fr_1));
110
- fragment(el);
111
- }
112
- } else fillCode(code, 0);
89
+ parent ? cls.add(fr_cls) : (frag ? cls.remove(fr_1) : cls.add(fr_cls, fr_1));
90
+ const el2 = el.cloneNode(); // shallow clone (wrapper only)
91
+ (container || box_body).append(el2);
92
+ const prev = el2.previousElementSibling;
93
+ function fragChildren(action) {
94
+ for (let item of [...el.children]) {
95
+ el2.append(item);
96
+ if (box.scrollHeight > H) {
97
+ action(item); break;
98
+ }
113
99
  }
114
- return removeBlank(el2);
115
- } else if (tag === 'DIV' && nChild(el) === 1) {
116
- fragment(el.firstElementChild, el2, el, box_cur);
117
100
  }
118
- const prev = el2.previousElementSibling;
119
- // keep moving el's first item to el2 until page height > H
120
- if (['UL', 'OL', 'BLOCKQUOTE', 'FIELDSET'].includes(tag) && nChild(el) > 1) while (true) {
121
- const item = el.firstChild;
122
- if (!item) break;
123
- el2.append(item);
124
- // usually there's no need to re-calculate size if item is not element (e.g., white space)
125
- if (item.nodeName.startsWith('#')) continue;
126
- if (box_cur.scrollHeight > H) {
101
+ if (tag === 'DIV') {
102
+ // fragment <div>'s children (e.g., #TOC > ul)
103
+ fragChildren(item => {
104
+ // fragment item if it can be further fragmented, otherwise put it back
105
+ el.prepend(item);
106
+ fr_tag.includes(item.tagName) ? fragment(item, el2, el) : nChild(el2) && nextPage();
107
+ });
108
+ } else if (tag === 'PRE') {
109
+ fragment(el.firstElementChild, el2, el);
110
+ } else if (tag === 'CODE') {
111
+ // split lines in <code> and try to move as many lines into el2 as possible
112
+ const i = splitCode(el2);
113
+ // i == 0 means not enough space to split code on current page
114
+ fillCode(el2, i); l_code.splice(0, i);
115
+ if (i > 0) {
116
+ l_code.join('').trim() === '' ? (l_code = []) : nextPage();
117
+ }
118
+ } else if (tag === 'TABLE') {
119
+ // when el has no rows left and el2 is not empty, clear el
120
+ splitTable(el, el2) ? nextPage() : (el2.innerHTML !== '' && (el.innerHTML = ''));
121
+ } else {
122
+ // keep moving el's first item to el2 until page height > H
123
+ fr_tag.slice(1).includes(tag) && fragChildren(item => {
127
124
  // move item back to el if the clone el2 is not the only element on page or has more than one child
128
- (prev || nChild(el2) > 1) && el.insertBefore(item, el.firstChild);
125
+ (prev || nChild(el2) > 1 || container?.previousElementSibling) && el.prepend(item);
129
126
  // update the start number of <ol> on next page
130
127
  tag === 'OL' && (el.start += nChild(el2));
131
- break;
128
+ // don't open new page if el2 is empty (will open one below when testing el2_empty)
129
+ nChild(el2) && nextPage();
130
+ });
131
+ }
132
+ const el_empty = !l_code.length && removeBlank(el), el2_empty = removeBlank(el2);
133
+ // add/remove the fragment-* class and exit if el has become empty
134
+ if (el_empty) {
135
+ const cls2 = el2.classList;
136
+ if (parent) {
137
+ container.classList.contains(fr_1) && cls2.remove(fr_cls);
138
+ } else {
139
+ cls2.contains(fr_1) ? cls2.remove(fr_cls, fr_1) : cls2.add(fr_2);
132
140
  }
141
+ return;
133
142
  }
134
- // split lines in <code> and try to move as many lines into el2 as possible
135
- if (container && tag === 'CODE') {
136
- // figure out how many lines can fit the box via bisection
137
- let i = 0, i1 = 1, i2 = n = l_code.length;
138
- const sols = []; // solutions tried
139
- while (i2 - i1 > 1) {
140
- fillCode(el2, 0, i || 1);
141
- const delta = H - box_cur.offsetHeight;
142
- if (delta === 0) {
143
- i1 = i || 1; break;
144
- }
145
- if (delta < 0) {
146
- if (i <= 0) break;
147
- i2 = i;
148
- } else {
149
- i1 = i;
150
- }
151
- sols.push(i);
152
- // estimate the number of (more or less) lines needed
153
- const i3 = i + Math.round(delta / h_code);
154
- // if a solution has been tried, shorten step and (in/de)crement by 1
155
- i = sols.includes(i3) ? i + (delta > 0 ? 1 : -1) : i3;
156
- (delta > 0 && i >= n) && (i2 = n + 1, i = n); // solution may be n
143
+ // if el2 is empty, it means nothing in el fits the box; we have to start a new box
144
+ if (el2_empty) {
145
+ cls.remove(fr_cls, fr_1); parent || nextPage();
146
+ }
147
+ // keep fragmenting the remaining top-level el when el2 is not empty or not first element
148
+ if ((!el2_empty || prev) && !parent) fragment(el);
149
+ }
150
+ // split table rows
151
+ function splitTable(el, el2) {
152
+ const tb = el.tBodies[0], tb2 = tb.cloneNode(), rows = [...tb.rows], th = el.tHead;
153
+ el2.append(tb2);
154
+ // copy table header and footer
155
+ [th, el.tFoot].forEach(t => t && el2.append(t.cloneNode(true)));
156
+ for (let i = 0; i < rows.length; i++) {
157
+ const row = rows[i];
158
+ tb2.append(row);
159
+ if (box.offsetHeight > H) {
160
+ // clear the clone if current page can't fit even one row
161
+ tb.prepend(row); if (i === 0) el2.innerHTML = '';
162
+ break;
157
163
  }
158
- if (i > 0) {
159
- fillCode(el2, 0, i1); l_code.splice(0, i1);
164
+ }
165
+ return tb.rows.length;
166
+ }
167
+ // figure out how many lines can fit the box via bisection
168
+ function splitCode(el) {
169
+ let i = i1 = 1, n = l_code.length, i2 = n + 2;
170
+ const sols = []; // solutions tried
171
+ while (i2 > i1 + 1) {
172
+ fillCode(el, i);
173
+ const delta = H - box.offsetHeight;
174
+ if (delta === 0) return i;
175
+ if (delta < 0) {
176
+ if (i <= 1) return 0;
177
+ i2 = i;
160
178
  } else {
161
- el2.innerHTML = ''; fillCode(el, 0); l_code = []; // not fragmented
179
+ if (i >= n) return i;
180
+ i1 = i;
162
181
  }
163
- return i > 0;
182
+ sols.push(i);
183
+ // estimate the number of (more or less) lines needed
184
+ const i3 = i + Math.round(delta / h_code);
185
+ // if a solution has been tried, shorten step and (in/de)crement by 1
186
+ i = sols.includes(i3) ? i + (delta > 0 ? 1 : -1) : i3;
187
+ (delta > 0 && i >= n) && (i2 = n + 2, i = n); // solution may be n
164
188
  }
165
- const el2_empty = removeBlank(el2, true);
166
- el2_empty && cls.remove(fr_cls, fr_1);
167
- // if the clone is empty, remove it, otherwise keep fragmenting the remaining el
168
- if (!el2_empty || prev) fragment(container ? parent : el);
189
+ return i1;
169
190
  }
170
191
 
171
192
  // use data-short-title of a header if exists, and fall back to inner text
@@ -222,24 +243,26 @@
222
243
  a.dataset.pageNumber = '000'; // placeholder for page numbers
223
244
  });
224
245
 
246
+ // temporarily move all elements out of DOM (to speed up rendering single pages)
225
247
  const els = [];
226
248
  $$('.body').forEach(el => {
227
- const ch = [...el.children];
249
+ // move <style> into <head> so it can be applied regardless of its presence in <body>
250
+ const ch = [...el.children].filter(el => el.tagName !== 'STYLE' || d.head.append(el));
228
251
  els.push(ch); ch.forEach(el => el.remove());
229
252
  });
230
253
  // iteratively add elements to pages
231
254
  $$('.frontmatter, .abstract, #TOC:not(.chapter-toc)').forEach(el => {
232
- (fill(el), book && box.after(newPage()));
255
+ (fill(el), book && nextPage());
233
256
  });
234
257
  $$('.body').forEach((el, i) => {
235
258
  // preserve book chapter classes if exist
236
259
  box_cls = ['chapter', 'appendix'].filter(i => el.classList.contains(i));
237
- book && (box.innerText === '' ? newPage(box) : box.after(newPage()));
260
+ book && (box.innerText === '' ? newPage(box) : nextPage());
238
261
  els[i].forEach(fill);
239
262
  // clean up container and self if empty
240
263
  removeBlank(el.parentNode); removeBlank(el);
241
264
  });
242
- boxes.slice(box_n).forEach(finish); // finish the rest of pages
265
+ finish(box); // finish the last box
243
266
  cls.remove('pagesjs-filling');
244
267
 
245
268
  // add page number, title, etc. to data-* attributes of page elements
package/js/pages.min.js CHANGED
@@ -1,2 +1,2 @@
1
- (e=>{function t(t,n=e){return n?.querySelector(t)}function s(t,n=e){return n?n.querySelectorAll(t):[]}function r(e){return e.childElementCount}const a=e.createElement("div"),i=s("h1").length>1,o=[],c="pagesjs-fragmented",l="fragment-first",f=["top","bottom"].map((t=>+getComputedStyle(e.documentElement).getPropertyValue(`--paper-margin-${t}`).replace("px","")||0));a.className="pagesjs-page",a.innerHTML='<div class="pagesjs-header"></div>\n<div class="pagesjs-body"></div>\n<div class="pagesjs-footer"></div>';let d,p,h,g,u=[],m=0,E=[];function L(e){const n=o.length;return n-m>1&&(o.slice(m,n-1).forEach(b),m=n-1),e&&!t(".pagesjs-body",e)&&e.insertAdjacentHTML("afterbegin",a.innerHTML),d=e||a.cloneNode(!0),p=d.children[1],u.length&&d.classList.add(...u),o.includes(d)||o.push(d),d}function b(e){const t=e.scrollHeight;if(t>h&&!e.dataset.pagesOffset){const n=function(e,t){let n=+e.dataset.pagesOffset;if(n)return n;if(n=Math.ceil(t/h),n<=1)return n;const r=f.concat([...s("thead",e)].map((e=>+e.offsetHeight))).reduce(((e,t)=>e+t));if(!r)return n;function a(){return Math.ceil((t+(n-1)*r)/h)}let i=a();for(;i>n;)n=i,i=a();return n}(e,t);n>1&&(e.dataset.pagesOffset=n)}e.remove()}function T(e,t=!1){if(!e)return!1;const n=""===(t?e.innerHTML:e.innerText).trim();return n&&e.remove(),n}function v(e){if(e.classList.contains("pagesjs-page"))d.after(L(e)),r(e)>3&&(p.append(...[...e.children].slice(3)),d.after(L()));else{if(p.append(e),d.scrollHeight<=h)return;const t=e.classList,n=e.innerHTML,r=o.length;if(j(e),"PRE"===e.tagName)for(let e=o.length-1;e>=r;e--)T(o[e])&&o.splice(e,1);t.contains(c)&&e.innerHTML!==n?t.add("fragment-last"):[e].concat(...s(`.${c}`,e)).forEach((e=>e.classList.remove(c,l))),E=[]}}function H(e,t,n){e.innerHTML=E.slice(t,n).join("\n")}function j(e,t,s,a){const i=e.tagName,f=e.classList,u=f.contains(c);if(s||u&&f.remove(l),!E.length&&d.scrollHeight<=h)return;s?f.add(c):u||f.add(c,l);const m=a||d,b=e.cloneNode();if(t?t.append(b):(p.append(b),m.after(L()),p.append(e)),"PRE"===i){const t=e.firstElementChild;if("CODE"==t?.tagName){const n=E.length;n||(E=t.innerHTML.split("\n"));let s=E.length;if(s>1&&""===E[s-1]&&(s-=1),s>1)if(n||(g=t.offsetHeight/s),t.innerHTML="",j(t,b,e,m)){if(""===E.join("").trim()&&(b.before(e),e.innerHTML=b.innerHTML,b.remove(),o.pop().remove(),L(o[o.length-1]),E=[]),!E.length)return;j(e)}else b.remove(),[t,e].forEach((e=>e.classList.remove(c,l))),j(e);else H(t,0)}return T(b)}"DIV"===i&&1===r(e)&&j(e.firstElementChild,b,e,m);const v=b.previousElementSibling;if(["UL","OL","BLOCKQUOTE","FIELDSET"].includes(i)&&r(e)>1)for(;;){const t=e.firstChild;if(!t)break;if(b.append(t),!t.nodeName.startsWith("#")&&m.scrollHeight>h){(v||r(b)>1)&&e.insertBefore(t,e.firstChild),"OL"===i&&(e.start+=r(b));break}}if(t&&"CODE"===i){let t=0,s=1,r=n=E.length;const a=[];for(;r-s>1;){H(b,0,t||1);const e=h-m.offsetHeight;if(0===e){s=t||1;break}if(e<0){if(t<=0)break;r=t}else s=t;a.push(t);const i=t+Math.round(e/g);t=a.includes(i)?t+(e>0?1:-1):i,e>0&&t>=n&&(r=n+1,t=n)}return t>0?(H(b,0,s),E.splice(0,s)):(b.innerHTML="",H(e,0),E=[]),t>0}const M=T(b,!0);M&&f.remove(c,l),M&&!v||j(t?s:e)}function M(e){return e&&(e.dataset.shortTitle||e.innerText)}const C=M(t("h1.title, .frontmatter h1, .title, h1")),y=(i?"h1":"h2")+":not(.frontmatter *)";function O(){if("complete"!==e.readyState)return setTimeout(O,10);const n=e.body.classList;if(n.contains("pagesjs"))return;n.add("pagesjs"),e.body.insertAdjacentElement("afterbegin",L()),h=d.clientHeight||window.innerHeight,s(":is(#TOC, .footnotes, .chapter-before, .chapter-after):is(.side-left, .side-right).side").forEach((e=>{e.classList.remove("side","side-left","side-right")})),n.add("pagesjs-filling"),s('#TOC a[href^="#"]').forEach((t=>{const n=e.createElement("span"),s=t.firstElementChild;for(s?.classList.contains("section-number")?s.after(n):t.insertAdjacentElement("afterbegin",n);n.nextSibling;)n.append(n.nextSibling);t.insertAdjacentHTML("beforeend",'<span class="dot-leader"></span>'),t.dataset.pageNumber="000"}));const r=[];s(".body").forEach((e=>{const t=[...e.children];r.push(t),t.forEach((e=>e.remove()))})),s(".frontmatter, .abstract, #TOC:not(.chapter-toc)").forEach((e=>{v(e),i&&d.after(L())})),s(".body").forEach(((e,t)=>{u=["chapter","appendix"].filter((t=>e.classList.contains(t))),i&&(""===d.innerText?L(d):d.after(L())),r[t].forEach(v),T(e.parentNode),T(e)})),o.slice(m).forEach(b),n.remove("pagesjs-filling");let a,c=0;o.forEach((e=>{if(i){if(t(".frontmatter",e))return;t(y,e)&&(a="")}const n=+e.dataset.pagesOffset||1;n>1&&e.classList.add("page-multiple"),c+=n,e.classList.add("page-"+(c%2==0?"even":"odd"));const r={pageNumber:c,mainTitle:C,pageTitle:a};let o;[e.children[0],e.children[2]].forEach((e=>{for(const t in r)r[t]&&(e.dataset[t]=r[t])})),a=M([...s(y,e)].pop())||a,s(".footnotes",e).forEach(((t,n)=>{0===n?(o=t,e.children[1].after(t)):(o.append(...t.children),t.remove())}))})),e.body.prepend(...o),s('#TOC a[href^="#"]').forEach((e=>{const n=t(`.pagesjs-page:has(#${CSS.escape(e.getAttribute("href").replace(/^#/,""))}) .pagesjs-header`);e.dataset.pageNumber=n?n.dataset.pageNumber:""}))}addEventListener("beforeprint",O);let N=sessionStorage.getItem("pagesjs");N&&O(),addEventListener("keypress",(e=>"p"===e.key&&(O(),N=N?"":"1",sessionStorage.setItem("pagesjs",N),N||location.reload())))})(document);
1
+ (e=>{function t(t,n=e){return n?.querySelector(t)}function n(t,n=e){return n?n.querySelectorAll(t):[]}function s(e){return e.childElementCount}const r=e.createElement("div"),a=n("h1").length>1,i=[],o=["TABLE","UL","OL","BLOCKQUOTE"],c="pagesjs-fragmented",l="fragment-first",d=["top","bottom"].map((t=>+getComputedStyle(e.documentElement).getPropertyValue(`--paper-margin-${t}`).replace("px","")||0));r.className="pagesjs-page",r.innerHTML='<div class="pagesjs-header"></div>\n<div class="pagesjs-body"></div>\n<div class="pagesjs-footer"></div>';let f,p,g,u,h=[],m=[];function E(e){return e&&!t(".pagesjs-body",e)&&e.insertAdjacentHTML("afterbegin",r.innerHTML),f=e||r.cloneNode(!0),p=f.children[1],f.classList.add(...h),i.includes(f)||i.push(f),f}function L(e,t){const n=f;n.after(E(e)),t&&t(),b(n)}function b(e){const t=e.scrollHeight;if(t>g&&!e.dataset.pagesOffset){const s=function(e,t){let s=+e.dataset.pagesOffset;if(s)return s;if(s=Math.ceil(t/g),s<=1)return s;const r=d.concat([...n("thead",e)].map((e=>+e.offsetHeight))).reduce(((e,t)=>e+t));if(!r)return s;function a(){return Math.ceil((t+(s-1)*r)/g)}let i=a();for(;i>s;)s=i,i=a();return s}(e,t);s>1&&(e.dataset.pagesOffset=s)}e.remove()}function T(e){if(!e||"BODY"===e.tagName)return!1;const t=""===e.innerText.trim();return t&&e.remove(),t}function v(e){e.classList.contains("pagesjs-page")?L(e,(()=>s(e)>3&&(p.append(...[...e.children].slice(3)),L()))):(p.append(e),f.scrollHeight>g&&(!function(e){m=[];const t=e.tagName,n=e.firstElementChild;if(o.includes(t))return!0;if("DIV"===t){const t=e.children;return 1===t.length&&o.includes(n?.tagName)||[...t].filter((e=>"TABLE"===e.tagName)).length}if("PRE"!==t)return!1;if("CODE"!==n?.tagName)return!1;m=n.innerHTML.replace(/\n$/,"").split("\n");const s=m.length;return!(s<2)&&(u=n.offsetHeight/s,n.innerHTML="",!0)}(e)?L(0,(()=>p.append(e))):(e.remove(),H(e))))}function j(e,t){e.innerHTML=m.slice(0,t).join("\n")}function H(e,t,n){const r=e.tagName,a=e.classList,i=a.contains(c);n?a.add(c):i?a.remove(l):a.add(c,l);const d=e.cloneNode();(t||p).append(d);const h=d.previousElementSibling;function E(t){for(let n of[...e.children])if(d.append(n),f.scrollHeight>g){t(n);break}}if("DIV"===r)E((t=>{e.prepend(t),o.includes(t.tagName)?H(t,d,e):s(d)&&L()}));else if("PRE"===r)H(e.firstElementChild,d,e);else if("CODE"===r){const e=function(e){let t=i1=1,n=m.length,s=n+2;const r=[];for(;s>i1+1;){j(e,t);const a=g-f.offsetHeight;if(0===a)return t;if(a<0){if(t<=1)return 0;s=t}else{if(t>=n)return t;i1=t}r.push(t);const i=t+Math.round(a/u);t=r.includes(i)?t+(a>0?1:-1):i,a>0&&t>=n&&(s=n+2,t=n)}return i1}(d);j(d,e),m.splice(0,e),e>0&&(""===m.join("").trim()?m=[]:L())}else"TABLE"===r?!function(e,t){const n=e.tBodies[0],s=n.cloneNode(),r=[...n.rows],a=e.tHead;t.append(s),[a,e.tFoot].forEach((e=>e&&t.append(e.cloneNode(!0))));for(let e=0;e<r.length;e++){const a=r[e];if(s.append(a),f.offsetHeight>g){n.prepend(a),0===e&&(t.innerHTML="");break}}return n.rows.length}(e,d)?""!==d.innerHTML&&(e.innerHTML=""):L():o.slice(1).includes(r)&&E((n=>{(h||s(d)>1||t?.previousElementSibling)&&e.prepend(n),"OL"===r&&(e.start+=s(d)),s(d)&&L()}));const b=!m.length&&T(e),v=T(d);if(b){const e=d.classList;n?t.classList.contains(l)&&e.remove(c):e.contains(l)?e.remove(c,l):e.add("fragment-last")}else v&&(a.remove(c,l),n||L()),v&&!h||n||H(e)}function N(e){return e&&(e.dataset.shortTitle||e.innerText)}const O=N(t("h1.title, .frontmatter h1, .title, h1")),y=(a?"h1":"h2")+":not(.frontmatter *)";function C(){if("complete"!==e.readyState)return setTimeout(C,10);const s=e.body.classList;if(s.contains("pagesjs"))return;s.add("pagesjs"),e.body.insertAdjacentElement("afterbegin",E()),g=f.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")})),s.add("pagesjs-filling"),n('#TOC a[href^="#"]').forEach((t=>{const n=e.createElement("span"),s=t.firstElementChild;for(s?.classList.contains("section-number")?s.after(n):t.insertAdjacentElement("afterbegin",n);n.nextSibling;)n.append(n.nextSibling);t.insertAdjacentHTML("beforeend",'<span class="dot-leader"></span>'),t.dataset.pageNumber="000"}));const r=[];n(".body").forEach((t=>{const n=[...t.children].filter((t=>"STYLE"!==t.tagName||e.head.append(t)));r.push(n),n.forEach((e=>e.remove()))})),n(".frontmatter, .abstract, #TOC:not(.chapter-toc)").forEach((e=>{v(e),a&&L()})),n(".body").forEach(((e,t)=>{h=["chapter","appendix"].filter((t=>e.classList.contains(t))),a&&(""===f.innerText?E(f):L()),r[t].forEach(v),T(e.parentNode),T(e)})),b(f),s.remove("pagesjs-filling");let o,c=0;i.forEach((e=>{if(a){if(t(".frontmatter",e))return;t(y,e)&&(o="")}const s=+e.dataset.pagesOffset||1;s>1&&e.classList.add("page-multiple"),c+=s,e.classList.add("page-"+(c%2==0?"even":"odd"));const r={pageNumber:c,mainTitle:O,pageTitle:o};let i;[e.children[0],e.children[2]].forEach((e=>{for(const t in r)r[t]&&(e.dataset[t]=r[t])})),o=N([...n(y,e)].pop())||o,n(".footnotes",e).forEach(((t,n)=>{0===n?(i=t,e.children[1].after(t)):(i.append(...t.children),t.remove())}))})),e.body.prepend(...i),n('#TOC a[href^="#"]').forEach((e=>{const n=t(`.pagesjs-page:has(#${CSS.escape(e.getAttribute("href").replace(/^#/,""))}) .pagesjs-header`);e.dataset.pageNumber=n?n.dataset.pageNumber:""}))}addEventListener("beforeprint",C);let M=sessionStorage.getItem("pagesjs");M&&C(),addEventListener("keypress",(e=>"p"===e.key&&(C(),M=M?"":"1",sessionStorage.setItem("pagesjs",M),M||location.reload())))})(document);
2
2
  //# sourceMappingURL=pages.min.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["d","$","s","el","querySelector","$$","querySelectorAll","nChild","childElementCount","tpl","createElement","book","length","boxes","fr_cls","fr_1","tb","map","i","getComputedStyle","documentElement","getPropertyValue","replace","className","innerHTML","box","box_body","H","h_code","box_cls","box_n","l_code","newPage","n","slice","forEach","finish","insertAdjacentHTML","cloneNode","children","classList","add","includes","push","h","scrollHeight","dataset","pagesOffset","Math","ceil","m","concat","offsetHeight","reduce","m1","m2","newPages","n2","calcPages","remove","removeBlank","html","v","innerText","trim","fill","contains","after","append","cls","h0","n0","fragment","tagName","splice","fillCode","i1","i2","join","container","parent","page","tag","frag","box_cur","el2","code","firstElementChild","initial","split","n_code","before","pop","prev","previousElementSibling","item","firstChild","nodeName","startsWith","insertBefore","start","sols","delta","i3","round","el2_empty","shortTitle","main","ps","paginate","readyState","setTimeout","body","insertAdjacentElement","clientHeight","window","innerHeight","a","nextSibling","pageNumber","els","ch","filter","parentNode","page_title","N","info","mainTitle","pageTitle","ft","key","prepend","p","CSS","escape","getAttribute","addEventListener","pg","sessionStorage","getItem","e","setItem","location","reload","document"],"sources":["pages.js"],"mappings":"AAEA,CAACA,IACC,SAAUC,EAAEC,EAAGC,EAAKH,GAAK,OAAOG,GAAIC,cAAcF,EAAI,CACtD,SAASG,EAAGH,EAAGC,EAAKH,GAAK,OAAOG,EAAKA,EAAGG,iBAAiBJ,GAAK,EAAI,CAClE,SAASK,EAAOJ,GAAM,OAAOA,EAAGK,iBAAmB,CAEnD,MAAMC,EAAMT,EAAEU,cAAc,OAAQC,EAAON,EAAG,MAAMO,OAAS,EAAGC,EAAQ,GACtEC,EAAS,qBAAsBC,EAAO,iBACtCC,EAAK,CAAC,MAAO,UAAUC,KAAIC,IACfC,iBAAiBnB,EAAEoB,iBAAiBC,iBAAiB,kBAAkBH,KACvEI,QAAQ,KAAM,KAAO,IAEnCb,EAAIc,UAAY,eAChBd,EAAIe,UAAY,2GAGhB,IAAIC,EAAKC,EAAmCC,EAAGC,EAA5BC,EAAU,GAAIC,EAAQ,EAAcC,EAAS,GAChE,SAASC,EAAQ7B,GACf,MAAM8B,EAAIpB,EAAMD,OAUhB,OARIqB,EAAIH,EAAQ,IACdjB,EAAMqB,MAAMJ,EAAOG,EAAI,GAAGE,QAAQC,GAClCN,EAAQG,EAAI,GAEd9B,IAAOF,EAAE,gBAAiBE,IAAOA,EAAGkC,mBAAmB,aAAc5B,EAAIe,WACzEC,EAAMtB,GAAMM,EAAI6B,WAAU,GAAOZ,EAAWD,EAAIc,SAAS,GACzDV,EAAQjB,QAAUa,EAAIe,UAAUC,OAAOZ,GACvChB,EAAM6B,SAASjB,IAAQZ,EAAM8B,KAAKlB,GAC3BA,CACT,CAEA,SAASW,EAAOX,GACd,MAAMmB,EAAInB,EAAIoB,aACd,GAAID,EAAIjB,IAAMF,EAAIqB,QAAQC,YAAa,CACrC,MAAMd,EAiJV,SAAmBR,EAAKmB,GACtB,IAAIX,GAAKR,EAAIqB,QAAQC,YACrB,GAAId,EAAG,OAAOA,EAEd,GADAA,EAAIe,KAAKC,KAAKL,EAAEjB,GACZM,GAAK,EAAG,OAAOA,EAEnB,MAAMiB,EAAIlC,EAAGmC,OAAO,IAAI9C,EAAG,QAASoB,IAAMR,KAAId,IAAOA,EAAGiD,gBAAeC,QAAO,CAACC,EAAIC,IAAOD,EAAKC,IAC/F,IAAKL,EAAG,OAAOjB,EACf,SAASuB,IAAa,OAAOR,KAAKC,MAAML,GAAKX,EAAI,GAAKiB,GAAGvB,EAAI,CAC7D,IAAI8B,EAAKD,IACT,KAAOC,EAAKxB,GACVA,EAAIwB,EAAIA,EAAKD,IAEf,OAAOvB,CACT,CA/JcyB,CAAUjC,EAAKmB,GACrBX,EAAI,IAAGR,EAAIqB,QAAQC,YAAcd,EACvC,CACAR,EAAIkC,QACN,CACA,SAASC,EAAYzD,EAAI0D,GAAO,GAC9B,IAAK1D,EAAI,OAAO,EAChB,MAAM2D,EAAoD,MAA/CD,EAAO1D,EAAGqB,UAAYrB,EAAG4D,WAAWC,OAE/C,OADAF,GAAK3D,EAAGwD,SACDG,CACT,CACA,SAASG,EAAK9D,GAEZ,GAAIA,EAAGqC,UAAU0B,SAAS,gBACxBzC,EAAI0C,MAAMnC,EAAQ7B,IAEdI,EAAOJ,GAAM,IACfuB,EAAS0C,UAAU,IAAIjE,EAAGoC,UAAUL,MAAM,IAE1CT,EAAI0C,MAAMnC,UAEP,CAEL,GADAN,EAAS0C,OAAOjE,GACZsB,EAAIoB,cAAgBlB,EAAG,OAC3B,MAAM0C,EAAMlE,EAAGqC,UAAW8B,EAAKnE,EAAGqB,UAAW+C,EAAK1D,EAAMD,OAGxD,GAFA4D,EAASrE,GAEU,QAAfA,EAAGsE,QAAmB,IAAK,IAAIvD,EAAIL,EAAMD,OAAS,EAAGM,GAAKqD,EAAIrD,IAChE0C,EAAY/C,EAAMK,KAAOL,EAAM6D,OAAOxD,EAAG,GAI1CmD,EAAIH,SAASpD,IAAWX,EAAGqB,YAAc8C,EAAMD,EAAI5B,IA3DS,iBA4D3D,CAACtC,GAAIgD,UAAU9C,EAAG,IAAIS,IAAUX,IAAKgC,SAAQhC,GAAMA,EAAGqC,UAAUmB,OAAO7C,EAAQC,KACjFgB,EAAS,EACX,CACF,CACA,SAAS4C,EAASxE,EAAIyE,EAAIC,GACxB1E,EAAGqB,UAAYO,EAAOG,MAAM0C,EAAIC,GAAIC,KAAK,KAC3C,CAEA,SAASN,EAASrE,EAAI4E,EAAWC,EAAQC,GACvC,MAAMC,EAAM/E,EAAGsE,QAASJ,EAAMlE,EAAGqC,UAAW2C,EAAOd,EAAIH,SAASpD,GAGhE,GAFAkE,GAAUG,GAAQd,EAAIV,OAAO5C,IAExBgB,EAAOnB,QAAUa,EAAIoB,cAAgBlB,EAAG,OAC7CqD,EAASX,EAAI5B,IAAI3B,GAAWqE,GAAQd,EAAI5B,IAAI3B,EAAQC,GACpD,MAAMqE,EAAUH,GAAQxD,EAAK4D,EAAMlF,EAAGmC,YAMtC,GAJAyC,EAAYA,EAAUX,OAAOiB,IAC3B3D,EAAS0C,OAAOiB,GAAMD,EAAQjB,MAAMnC,KAAYN,EAAS0C,OAAOjE,IAGtD,QAAR+E,EAAe,CACjB,MAAMI,EAAOnF,EAAGoF,kBAChB,GAAqB,QAAjBD,GAAMb,QAAmB,CAC3B,MAAMe,EAAUzD,EAAOnB,OAElB4E,IAASzD,EAASuD,EAAK9D,UAAUiE,MAAM,OAC5C,IAAIC,EAAS3D,EAAOnB,OAEpB,GADI8E,EAAS,GAA4B,KAAvB3D,EAAO2D,EAAS,KAAWA,GAAU,GACnDA,EAAS,EAGX,GAFKF,IAAS5D,EAAS0D,EAAKlC,aAAesC,GAC3CJ,EAAK9D,UAAY,GACbgD,EAASc,EAAMD,EAAKlF,EAAIiF,GAAU,CAMpC,GAJ+B,KAA3BrD,EAAO+C,KAAK,IAAId,SAClBqB,EAAIM,OAAOxF,GAAKA,EAAGqB,UAAY6D,EAAI7D,UAAW6D,EAAI1B,SAClD9C,EAAM+E,MAAMjC,SAAU3B,EAAQnB,EAAMA,EAAMD,OAAS,IAAKmB,EAAS,KAE9DA,EAAOnB,OAAQ,OAAQ4D,EAASrE,EACvC,MAEEkF,EAAI1B,SAAU,CAAC2B,EAAMnF,GAAIgC,SAAQhC,GAAMA,EAAGqC,UAAUmB,OAAO7C,EAAQC,KACnEyD,EAASrE,QAENwE,EAASW,EAAM,EACxB,CACA,OAAO1B,EAAYyB,EACrB,CAAmB,QAARH,GAAgC,IAAf3E,EAAOJ,IACjCqE,EAASrE,EAAGoF,kBAAmBF,EAAKlF,EAAIiF,GAE1C,MAAMS,EAAOR,EAAIS,uBAEjB,GAAI,CAAC,KAAM,KAAM,aAAc,YAAYpD,SAASwC,IAAQ3E,EAAOJ,GAAM,EAAG,OAAa,CACvF,MAAM4F,EAAO5F,EAAG6F,WAChB,IAAKD,EAAM,MAGX,GAFAV,EAAIjB,OAAO2B,IAEPA,EAAKE,SAASC,WAAW,MACzBd,EAAQvC,aAAelB,EAAG,EAE3BkE,GAAQtF,EAAO8E,GAAO,IAAMlF,EAAGgG,aAAaJ,EAAM5F,EAAG6F,YAE9C,OAARd,IAAiB/E,EAAGiG,OAAS7F,EAAO8E,IACpC,KACF,CACF,CAEA,GAAIN,GAAqB,SAARG,EAAgB,CAE/B,IAAIhE,EAAI,EAAG0D,EAAK,EAAGC,EAAK5C,EAAIF,EAAOnB,OACnC,MAAMyF,EAAO,GACb,KAAOxB,EAAKD,EAAK,GAAG,CAClBD,EAASU,EAAK,EAAGnE,GAAK,GACtB,MAAMoF,EAAQ3E,EAAIyD,EAAQhC,aAC1B,GAAc,IAAVkD,EAAa,CACf1B,EAAK1D,GAAK,EAAG,KACf,CACA,GAAIoF,EAAQ,EAAG,CACb,GAAIpF,GAAK,EAAG,MACZ2D,EAAK3D,CACP,MACE0D,EAAK1D,EAEPmF,EAAK1D,KAAKzB,GAEV,MAAMqF,EAAKrF,EAAI8B,KAAKwD,MAAMF,EAAQ1E,GAElCV,EAAImF,EAAK3D,SAAS6D,GAAMrF,GAAKoF,EAAQ,EAAI,GAAK,GAAKC,EAClDD,EAAQ,GAAKpF,GAAKe,IAAO4C,EAAK5C,EAAI,EAAGf,EAAIe,EAC5C,CAMA,OALIf,EAAI,GACNyD,EAASU,EAAK,EAAGT,GAAK7C,EAAO2C,OAAO,EAAGE,KAEvCS,EAAI7D,UAAY,GAAImD,EAASxE,EAAI,GAAI4B,EAAS,IAEzCb,EAAI,CACb,CACA,MAAMuF,EAAY7C,EAAYyB,GAAK,GACnCoB,GAAapC,EAAIV,OAAO7C,EAAQC,GAE3B0F,IAAaZ,GAAMrB,EAASO,EAAYC,EAAS7E,EACxD,CAGA,SAASuG,EAAW9D,GAClB,OAAOA,IAAMA,EAAEE,QAAQ4D,YAAc9D,EAAEmB,UACzC,CACA,MAAM4C,EAAOD,EAAWzG,EAAE,0CACxB2G,GAAMjG,EAAO,KAAO,MAAQ,uBAqB9B,SAASkG,IAEP,GAAqB,aAAjB7G,EAAE8G,WAA2B,OAAOC,WAAWF,EAAU,IAE7D,MAAMxC,EAAMrE,EAAEgH,KAAKxE,UACnB,GAAI6B,EAAIH,SAAS,WAAY,OAE7BG,EAAI5B,IAAI,WACRzC,EAAEgH,KAAKC,sBAAsB,aAAcjF,KAC3CL,EAAIF,EAAIyF,cAAgBC,OAAOC,YAG/B/G,EAAG,2FAA2F8B,SAAQhC,IACpGA,EAAGqC,UAAUmB,OAAO,OAAQ,YAAa,aAAa,IAGxDU,EAAI5B,IAAI,mBAGRpC,EAAG,qBAAqB8B,SAAQkF,IAC9B,MAAMnH,EAAIF,EAAEU,cAAc,QACxBuB,EAAIoF,EAAE9B,kBAER,IADAtD,GAAGO,UAAU0B,SAAS,kBAAoBjC,EAAEkC,MAAMjE,GAAKmH,EAAEJ,sBAAsB,aAAc/G,GACtFA,EAAEoH,aAAapH,EAAEkE,OAAOlE,EAAEoH,aACjCD,EAAEhF,mBAAmB,YAAa,oCAClCgF,EAAEvE,QAAQyE,WAAa,KAAK,IAG9B,MAAMC,EAAM,GACZnH,EAAG,SAAS8B,SAAQhC,IAClB,MAAMsH,EAAK,IAAItH,EAAGoC,UAClBiF,EAAI7E,KAAK8E,GAAKA,EAAGtF,SAAQhC,GAAMA,EAAGwD,UAAS,IAG7CtD,EAAG,mDAAmD8B,SAAQhC,IAC3D8D,EAAK9D,GAAKQ,GAAQc,EAAI0C,MAAMnC,IAAW,IAE1C3B,EAAG,SAAS8B,SAAQ,CAAChC,EAAIe,KAEvBW,EAAU,CAAC,UAAW,YAAY6F,QAAOxG,GAAKf,EAAGqC,UAAU0B,SAAShD,KACpEP,IAA2B,KAAlBc,EAAIsC,UAAmB/B,EAAQP,GAAOA,EAAI0C,MAAMnC,MACzDwF,EAAItG,GAAGiB,QAAQ8B,GAEfL,EAAYzD,EAAGwH,YAAa/D,EAAYzD,EAAG,IAE7CU,EAAMqB,MAAMJ,GAAOK,QAAQC,GAC3BiC,EAAIV,OAAO,mBAGX,IAAIiE,EAAY1G,EAAI,EACpBL,EAAMsB,SAAQV,IACZ,GAAId,EAAM,CACR,GAAIV,EAAE,eAAgBwB,GAAM,OAC5BxB,EAAE2G,EAAInF,KAASmG,EAAa,GAC9B,CACA,MAAMC,GAAKpG,EAAIqB,QAAQC,aAAe,EAClC8E,EAAI,GAAGpG,EAAIe,UAAUC,IAAI,iBAC7BvB,GAAK2G,EACLpG,EAAIe,UAAUC,IAAI,SAAQvB,EAAI,GAAM,EAAI,OAAS,QACjD,MAAM4G,EAAO,CACXP,WAAcrG,EAAG6G,UAAapB,EAAMqB,UAAaJ,GAOnD,IAAIK,EALJ,CAACxG,EAAIc,SAAS,GAAId,EAAIc,SAAS,IAAIJ,SAAQhC,IACzC,IAAK,MAAM+H,KAAOJ,EAAMA,EAAKI,KAAS/H,EAAG2C,QAAQoF,GAAOJ,EAAKI,GAAK,IAGpEN,EAAalB,EAAW,IAAIrG,EAAGuG,EAAInF,IAAMmE,QAAUgC,EAGnDvH,EAAG,aAAcoB,GAAKU,SAAQ,CAAChC,EAAIe,KAC3B,IAANA,GAAW+G,EAAK9H,EAAIsB,EAAIc,SAAS,GAAG4B,MAAMhE,KAAQ8H,EAAG7D,UAAUjE,EAAGoC,UAAWpC,EAAGwD,SAAS,GACzF,IAIJ3D,EAAEgH,KAAKmB,WAAWtH,GAGlBR,EAAG,qBAAqB8B,SAAQkF,IAC9B,MACEe,EAAInI,EAAE,sBADGoI,IAAIC,OAAOjB,EAAEkB,aAAa,QAAQjH,QAAQ,KAAM,yBAE3D+F,EAAEvE,QAAQyE,WAAaa,EAAIA,EAAEtF,QAAQyE,WAAa,EAAE,GAExD,CACAiB,iBAAiB,cAAe3B,GAEhC,IAAI4B,EAAKC,eAAeC,QAAQ,WAChCF,GAAM5B,IACN2B,iBAAiB,YAAYI,GAAe,MAAVA,EAAEV,MAClCrB,IAAY4B,EAAKA,EAAK,GAAK,IAAKC,eAAeG,QAAQ,UAAWJ,GAAKA,GAAMK,SAASC,WAEzF,EA7RD,CA6RGC","ignoreList":[]}
1
+ {"version":3,"names":["d","$","s","el","querySelector","$$","querySelectorAll","nChild","childElementCount","tpl","createElement","book","length","boxes","fr_tag","fr_cls","fr_1","tb","map","i","getComputedStyle","documentElement","getPropertyValue","replace","className","innerHTML","box","box_body","H","h_code","box_cls","l_code","newPage","insertAdjacentHTML","cloneNode","children","classList","add","includes","push","nextPage","callback","cur","after","finish","h","scrollHeight","dataset","pagesOffset","n","Math","ceil","m","concat","offsetHeight","reduce","m1","m2","newPages","n2","calcPages","remove","removeBlank","tagName","v","innerText","trim","fill","contains","append","slice","t","c","firstElementChild","cs","filter","split","n_code","breakable","fragment","fillCode","join","container","parent","tag","cls","frag","el2","prev","previousElementSibling","fragChildren","action","item","prepend","i1","i2","sols","delta","i3","round","splitCode","splice","tBodies","tb2","rows","th","tHead","tFoot","forEach","row","splitTable","start","el_empty","el2_empty","cls2","shortTitle","main","ps","paginate","readyState","setTimeout","body","insertAdjacentElement","clientHeight","window","innerHeight","a","nextSibling","pageNumber","els","ch","head","parentNode","page_title","N","info","mainTitle","pageTitle","ft","key","pop","p","CSS","escape","getAttribute","addEventListener","pg","sessionStorage","getItem","e","setItem","location","reload","document"],"sources":["pages.js"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xiee/utils",
3
- "version": "1.13.69",
3
+ "version": "1.13.71",
4
4
  "description": "Miscellaneous tools and utilities to manipulate HTML pages",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"