@xiee/utils 1.13.58 → 1.13.59
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/css/tabsets.css +11 -18
- package/css/tabsets.min.css +1 -1
- package/css/tabsets.min.css.map +1 -1
- package/js/copy-button.js +1 -0
- package/js/copy-button.min.js +1 -1
- package/js/copy-button.min.js.map +1 -1
- package/js/tabsets.js +15 -2
- package/js/tabsets.min.js +1 -1
- package/js/tabsets.min.js.map +1 -1
- package/package.json +1 -1
package/css/tabsets.css
CHANGED
|
@@ -1,29 +1,22 @@
|
|
|
1
|
+
.tabset {
|
|
2
|
+
&:has(.tab-link) { margin: 1em auto; }
|
|
3
|
+
&:is(.tabset *) { margin: .5em auto; }
|
|
4
|
+
}
|
|
1
5
|
.tab-link, .tab-pane {
|
|
2
6
|
border: 1px solid rgba(0, 0, 0, .05);
|
|
3
7
|
border-radius: 5px 5px 0 0;
|
|
4
|
-
}
|
|
5
|
-
.tab-link + .tab-pane.active {
|
|
6
|
-
border-radius: 0 5px 0 0;
|
|
7
|
-
}
|
|
8
|
-
.tab-link.active, .tab-pane.active {
|
|
9
|
-
border-color: rgba(0, 0, 0, .5);
|
|
10
|
-
}
|
|
11
|
-
.tab-link:not(.active):hover {
|
|
12
|
-
background: rgba(0, 0, 0, .05);
|
|
13
|
-
}
|
|
14
|
-
.tab-pane {
|
|
15
|
-
display: none;
|
|
16
8
|
padding: .2em .5em;
|
|
17
|
-
}
|
|
18
|
-
.tab-pane.active {
|
|
19
|
-
display: block;
|
|
9
|
+
&.active { border-color: rgba(0, 0, 0, .5); }
|
|
20
10
|
}
|
|
21
11
|
.tab-link {
|
|
22
12
|
display: inline-block;
|
|
23
13
|
margin: 0 .5em -1px 0;
|
|
24
|
-
padding: .2em .5em;
|
|
25
14
|
cursor: pointer;
|
|
15
|
+
&.active { border-bottom-color: white; }
|
|
16
|
+
& + .tab-pane.active { border-radius: 0 5px 0 0; }
|
|
17
|
+
&:not(.active):hover { background: rgba(0, 0, 0, .05); }
|
|
26
18
|
}
|
|
27
|
-
.tab-
|
|
28
|
-
|
|
19
|
+
.tab-pane {
|
|
20
|
+
display: none;
|
|
21
|
+
&.active { display: block; }
|
|
29
22
|
}
|
package/css/tabsets.min.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
.tab-link,.tab-pane{border:1px solid #0000000d;border-radius:5px 5px 0 0}.tab-link
|
|
1
|
+
.tabset{&:has(.tab-link){margin:1em auto}&:is(.tabset *){margin:.5em auto}}.tab-link,.tab-pane{border:1px solid #0000000d;border-radius:5px 5px 0 0;padding:.2em .5em;&.active{border-color:#00000080}}.tab-link{cursor:pointer;margin:0 .5em -1px 0;display:inline-block;&.active{border-bottom-color:#fff}&+.tab-pane.active{border-radius:0 5px 0 0}&:not(.active):hover{background:#0000000d}}.tab-pane{display:none;&.active{display:block}}
|
|
2
2
|
/*# sourceMappingURL=tabsets.min.css.map */
|
package/css/tabsets.min.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"AAAA,
|
|
1
|
+
{"version":3,"mappings":"AAAA,QACE,iCACA,kCAEF,2FAIE,iCAEF,mEAIE,kCACA,2CACA,2CAEF,uBAEE","sources":["tabsets.css"],"sourcesContent":[".tabset {\n &:has(.tab-link) { margin: 1em auto; }\n &:is(.tabset *) { margin: .5em auto; }\n}\n.tab-link, .tab-pane {\n border: 1px solid rgba(0, 0, 0, .05);\n border-radius: 5px 5px 0 0;\n padding: .2em .5em;\n &.active { border-color: rgba(0, 0, 0, .5); }\n}\n.tab-link {\n display: inline-block;\n margin: 0 .5em -1px 0;\n cursor: pointer;\n &.active { border-bottom-color: white; }\n & + .tab-pane.active { border-radius: 0 5px 0 0; }\n &:not(.active):hover { background: rgba(0, 0, 0, .05); }\n}\n.tab-pane {\n display: none;\n &.active { display: block; }\n}\n"],"names":[]}
|
package/js/copy-button.js
CHANGED
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
const p = is_code ? pre : el;
|
|
25
25
|
// add the button only if it has not been added
|
|
26
26
|
p.querySelector('.copy-button') || p.append(btn);
|
|
27
|
+
p.hasAttribute('tabIndex') || (p.tabIndex = '0');
|
|
27
28
|
getComputedStyle(p).position === 'static' && (p.style.position = 'relative');
|
|
28
29
|
});
|
|
29
30
|
})(document);
|
package/js/copy-button.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(e=>{const t=e.currentScript?.dataset;e.querySelectorAll(t?.selector||"pre>code, .copy-this").forEach((t=>{const c=e.createElement("span"),
|
|
1
|
+
(e=>{const t=e.currentScript?.dataset;e.querySelectorAll(t?.selector||"pre>code, .copy-this").forEach((t=>{const c=e.createElement("span"),n=c.classList,o=t.parentNode,a="CODE"===t.tagName&&"PRE"===o?.tagName;function s(e){n.add(e),setTimeout((()=>n.remove(e)),1e3)}c.className="copy-button",c.onclick=()=>navigator.clipboard.writeText(a&&t.classList.contains("code-fence")&&o.parentNode?.classList.contains("fenced-chunk")?[...o.parentNode.querySelectorAll("code[class]")].map((e=>e.innerText.replace(/\n$/,""))).join("\n"):t.innerText).then((()=>s("copy-success")),(()=>s("copy-fail")));const r=a?o:t;r.querySelector(".copy-button")||r.append(c),r.hasAttribute("tabIndex")||(r.tabIndex="0"),"static"===getComputedStyle(r).position&&(r.style.position="relative")}))})(document);
|
|
2
2
|
//# sourceMappingURL=copy-button.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["d","cfg","currentScript","dataset","querySelectorAll","selector","forEach","el","btn","createElement","cls","classList","pre","parentNode","is_code","tagName","feedback","c","add","setTimeout","remove","className","onclick","navigator","clipboard","writeText","contains","map","code","innerText","replace","join","then","p","querySelector","append","getComputedStyle","position","style","document"],"sources":["copy-button.js"],"mappings":"AACA,CAACA,IACC,MAAMC,EAAMD,EAAEE,eAAeC,QAC7BH,EAAEI,iBAAiBH,GAAKI,UAAY,wBAAwBC,SAAQC,IAClE,MAAMC,EAAMR,EAAES,cAAc,QAASC,EAAMF,EAAIG,UACNC,EAAML,EAAGM,WAChDC,EAAyB,SAAfP,EAAGQ,SAAuC,QAAjBH,GAAKG,QAG1C,SAASC,EAASC,GAChBP,EAAIQ,IAAID,GAAIE,YAAW,IAAMT,EAAIU,OAAOH,IAAI,IAC9C,CAJAT,EAAIa,UAAY,cAWhBb,EAAIc,QAAU,IAAMC,UAAUC,UAAUC,UAJ9BX,GAAWP,EAAGI,UAAUe,SAAS,eAAiBd,EAAIC,YAAYF,UAAUe,SAAS,gBAC3F,IAAId,EAAIC,WAAWT,iBAAiB,gBACnCuB,KAAIC,GAAQA,EAAKC,UAAUC,QAAQ,MAAO,MAAKC,KAAK,MAAQxB,EAAGsB,WAEPG,MAC3D,IAAMhB,EAdD,kBAce,IAAMA,EAdA,eAkB5B,MAAMiB,EAAInB,EAAUF,EAAML,EAE1B0B,EAAEC,cAAc,iBAAmBD,EAAEE,OAAO3B,
|
|
1
|
+
{"version":3,"names":["d","cfg","currentScript","dataset","querySelectorAll","selector","forEach","el","btn","createElement","cls","classList","pre","parentNode","is_code","tagName","feedback","c","add","setTimeout","remove","className","onclick","navigator","clipboard","writeText","contains","map","code","innerText","replace","join","then","p","querySelector","append","hasAttribute","tabIndex","getComputedStyle","position","style","document"],"sources":["copy-button.js"],"mappings":"AACA,CAACA,IACC,MAAMC,EAAMD,EAAEE,eAAeC,QAC7BH,EAAEI,iBAAiBH,GAAKI,UAAY,wBAAwBC,SAAQC,IAClE,MAAMC,EAAMR,EAAES,cAAc,QAASC,EAAMF,EAAIG,UACNC,EAAML,EAAGM,WAChDC,EAAyB,SAAfP,EAAGQ,SAAuC,QAAjBH,GAAKG,QAG1C,SAASC,EAASC,GAChBP,EAAIQ,IAAID,GAAIE,YAAW,IAAMT,EAAIU,OAAOH,IAAI,IAC9C,CAJAT,EAAIa,UAAY,cAWhBb,EAAIc,QAAU,IAAMC,UAAUC,UAAUC,UAJ9BX,GAAWP,EAAGI,UAAUe,SAAS,eAAiBd,EAAIC,YAAYF,UAAUe,SAAS,gBAC3F,IAAId,EAAIC,WAAWT,iBAAiB,gBACnCuB,KAAIC,GAAQA,EAAKC,UAAUC,QAAQ,MAAO,MAAKC,KAAK,MAAQxB,EAAGsB,WAEPG,MAC3D,IAAMhB,EAdD,kBAce,IAAMA,EAdA,eAkB5B,MAAMiB,EAAInB,EAAUF,EAAML,EAE1B0B,EAAEC,cAAc,iBAAmBD,EAAEE,OAAO3B,GAC5CyB,EAAEG,aAAa,cAAgBH,EAAEI,SAAW,KACX,WAAjCC,iBAAiBL,GAAGM,WAA0BN,EAAEO,MAAMD,SAAW,WAAW,GAE/E,EA5BD,CA4BGE","ignoreList":[]}
|
package/js/tabsets.js
CHANGED
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
document.querySelectorAll('.tabset').forEach(h => {
|
|
4
4
|
const links = [...h.querySelectorAll(':scope > .tab-link')],
|
|
5
5
|
panes = [...h.querySelectorAll(':scope > .tab-pane')];
|
|
6
|
+
let init = 0;
|
|
6
7
|
function activate(i) {
|
|
7
8
|
function a(x, i) {
|
|
8
9
|
x.forEach((el, k) => el.classList[k === i ? 'add' : 'remove']('active'));
|
|
9
10
|
}
|
|
10
|
-
a(links, i); a(panes, i);
|
|
11
|
+
init = i; a(links, i); a(panes, i);
|
|
11
12
|
}
|
|
12
13
|
function newEl(tag, cls) {
|
|
13
14
|
const el = document.createElement(tag);
|
|
@@ -67,17 +68,29 @@ document.querySelectorAll('.tabset').forEach(h => {
|
|
|
67
68
|
}
|
|
68
69
|
el = el.nextSibling;
|
|
69
70
|
}
|
|
71
|
+
const N = links.length;
|
|
72
|
+
if (!N) return;
|
|
73
|
+
|
|
70
74
|
// if the initial tabset container is empty, move links and panes into it
|
|
71
75
|
if (isEmpty(h)) {
|
|
72
76
|
links.forEach(l => h.append(l));
|
|
73
77
|
panes.forEach(p => h.append(p));
|
|
74
78
|
}
|
|
75
79
|
// activate one tab initially if none is active
|
|
76
|
-
let init = 0;
|
|
77
80
|
links.forEach((l, i) => {
|
|
78
81
|
i > 0 && links[i - 1].after(l); // move tab links together
|
|
79
82
|
l.onclick = () => activate(i); // add the click event
|
|
80
83
|
if (l.classList.contains('active')) init = i;
|
|
81
84
|
});
|
|
85
|
+
|
|
86
|
+
const ts = links[0].parentNode;
|
|
87
|
+
ts.hasAttribute('tabIndex') || (ts.tabIndex = '0');
|
|
88
|
+
ts.addEventListener('keyup', e => {
|
|
89
|
+
const dir = ['ArrowLeft', 'ArrowRight'].indexOf(e.key);
|
|
90
|
+
if (dir < 0) return;
|
|
91
|
+
const i = init + (dir ? 1 : -1);
|
|
92
|
+
activate(i < 0 ? N - 1 : (i > N - 1 ? 0 : i));
|
|
93
|
+
});
|
|
94
|
+
|
|
82
95
|
activate(init);
|
|
83
96
|
});
|
package/js/tabsets.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
document.querySelectorAll(".tabset").forEach((e=>{const t=[...e.querySelectorAll(":scope > .tab-link")],n=[...e.querySelectorAll(":scope > .tab-pane")];function a(e){function a(e,t){e.forEach(((e,n)=>e.classList[n===t?"add":"remove"]("active")))}a(t,e),a(n,e)}function i(e,t){const n=document.createElement(e);return n.className=t,n}function
|
|
1
|
+
document.querySelectorAll(".tabset").forEach((e=>{const t=[...e.querySelectorAll(":scope > .tab-link")],n=[...e.querySelectorAll(":scope > .tab-pane")];let r=0;function a(e){function a(e,t){e.forEach(((e,n)=>e.classList[n===t?"add":"remove"]("active")))}r=e,a(t,e),a(n,e)}function i(e,t){const n=document.createElement(e);return n.className=t,n}function c(e){return/^H[1-6]$/.test(e.tagName)}function o(e){return""===e.innerHTML.trim()}let l,s=-1,d=c(e)||o(e)?e.nextElementSibling:e.firstElementChild;if(0===t.length&&"UL"===d?.tagName&&([...d.children].forEach((e=>{const r=e.firstElementChild;if(!r)return;const a=i("div","tab-link");a.append(r),r.outerHTML=r.innerHTML,/<!--active-->/.test(a.innerHTML)&&a.classList.add("active"),d.before(a);const c=i("div","tab-pane");a.after(c),[...e.children].forEach((e=>c.append(e))),t.push(a),n.push(c)})),d.remove()),0===t.length)for(;d&&("#comment"!==d.nodeName||d.nodeValue.trim()!==`tabset:${e.id}`);){if(c(d)){const e=+d.tagName.replace("H","");if(e<=s)break;if(s<0&&(s=e-1),e===s+1){l=i("div","tab-pane"),d.after(l),d.classList.add("tab-link"),d.querySelector(".anchor")?.remove(),d.outerHTML=d.outerHTML.replace(/^<h[1-6](.*)h[1-6]>$/,"<div$1div>"),d=l.previousElementSibling,t.push(d),n.push(l),d=l.nextSibling;continue}}l&&(l.append(d),d=l),d=d.nextSibling}const u=t.length;if(!u)return;o(e)&&(t.forEach((t=>e.append(t))),n.forEach((t=>e.append(t)))),t.forEach(((e,n)=>{n>0&&t[n-1].after(e),e.onclick=()=>a(n),e.classList.contains("active")&&(r=n)}));const f=t[0].parentNode;f.hasAttribute("tabIndex")||(f.tabIndex="0"),f.addEventListener("keyup",(e=>{const t=["ArrowLeft","ArrowRight"].indexOf(e.key);if(t<0)return;const n=r+(t?1:-1);a(n<0?u-1:n>u-1?0:n)})),a(r)}));
|
|
2
2
|
//# sourceMappingURL=tabsets.min.js.map
|
package/js/tabsets.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["document","querySelectorAll","forEach","h","links","panes","activate","i","a","x","el","k","classList","newEl","tag","cls","createElement","className","isHeading","test","tagName","isEmpty","innerHTML","trim","p","n","nextElementSibling","firstElementChild","length","children","li","l","l2","append","outerHTML","add","before","after","push","remove","nodeName","nodeValue","id","n2","replace","querySelector","previousElementSibling","nextSibling","
|
|
1
|
+
{"version":3,"names":["document","querySelectorAll","forEach","h","links","panes","init","activate","i","a","x","el","k","classList","newEl","tag","cls","createElement","className","isHeading","test","tagName","isEmpty","innerHTML","trim","p","n","nextElementSibling","firstElementChild","length","children","li","l","l2","append","outerHTML","add","before","after","push","remove","nodeName","nodeValue","id","n2","replace","querySelector","previousElementSibling","nextSibling","N","onclick","contains","ts","parentNode","hasAttribute","tabIndex","addEventListener","e","dir","indexOf","key"],"sources":["tabsets.js"],"mappings":"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","ignoreList":[]}
|