-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.ts
26 lines (22 loc) · 861 Bytes
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import mediumZoom from 'medium-zoom'
import { mediumZoomSymbol } from './hooks'
import type { MediumZoomPluginConfig } from './types'
import type { UserModule } from '~/types'
import siteConfig from '~/site.config'
const selector = (siteConfig.plugins.mediumZoom as MediumZoomPluginConfig)?.selector
const zoomOptions = (siteConfig.plugins.mediumZoom as MediumZoomPluginConfig)?.zoomOptions
const delay = (siteConfig.plugins.mediumZoom as MediumZoomPluginConfig)?.delay
export const install: UserModule = ({ app, router, isClient }) => {
if (!isClient || !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(() => {
setTimeout(() => zoom.refresh(), delay)
})
}