26 lines
854 B
JavaScript
26 lines
854 B
JavaScript
import { wait } from '@vuepress/helper/client';
|
|
import mediumZoom from 'medium-zoom';
|
|
import { defineClientConfig } from 'vuepress/client';
|
|
import { mediumZoomSymbol } from './composables/index.js';
|
|
import './styles/vars.css';
|
|
import './styles/medium-zoom.css';
|
|
const selector = __MZ_SELECTOR__;
|
|
const zoomOptions = __MZ_ZOOM_OPTIONS__;
|
|
const delay = __MZ_DELAY__;
|
|
export default defineClientConfig({
|
|
enhance({ app, router }) {
|
|
if (__VUEPRESS_SSR__ || !selector)
|
|
return;
|
|
// create zoom instance and provide it
|
|
const zoom = mediumZoom(zoomOptions);
|
|
zoom.refresh = (sel = selector) => {
|
|
zoom.detach();
|
|
zoom.attach(sel);
|
|
};
|
|
app.provide(mediumZoomSymbol, zoom);
|
|
router.afterEach(() => {
|
|
wait(delay).then(() => zoom.refresh());
|
|
});
|
|
},
|
|
});
|