This commit is contained in:
40
node_modules/vitepress/dist/client/app/composables/codeGroups.js
generated
vendored
Normal file
40
node_modules/vitepress/dist/client/app/composables/codeGroups.js
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
import { inBrowser, onContentUpdated } from 'vitepress';
|
||||
export function useCodeGroups() {
|
||||
if (import.meta.env.DEV) {
|
||||
onContentUpdated(() => {
|
||||
document.querySelectorAll('.vp-code-group > .blocks').forEach((el) => {
|
||||
Array.from(el.children).forEach((child) => {
|
||||
child.classList.remove('active');
|
||||
});
|
||||
el.children[0].classList.add('active');
|
||||
});
|
||||
});
|
||||
}
|
||||
if (inBrowser) {
|
||||
window.addEventListener('click', (e) => {
|
||||
const el = e.target;
|
||||
if (el.matches('.vp-code-group input')) {
|
||||
// input <- .tabs <- .vp-code-group
|
||||
const group = el.parentElement?.parentElement;
|
||||
if (!group)
|
||||
return;
|
||||
const i = Array.from(group.querySelectorAll('input')).indexOf(el);
|
||||
if (i < 0)
|
||||
return;
|
||||
const blocks = group.querySelector('.blocks');
|
||||
if (!blocks)
|
||||
return;
|
||||
const current = Array.from(blocks.children).find((child) => child.classList.contains('active'));
|
||||
if (!current)
|
||||
return;
|
||||
const next = blocks.children[i];
|
||||
if (!next || current === next)
|
||||
return;
|
||||
current.classList.remove('active');
|
||||
next.classList.add('active');
|
||||
const label = group?.querySelector(`label[for="${el.id}"]`);
|
||||
label?.scrollIntoView({ block: 'nearest' });
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user