33 lines
970 B
Vue
33 lines
970 B
Vue
<script setup lang="ts">
|
|
import { onBeforeUnmount, onMounted } from 'vue'
|
|
|
|
let observer: MutationObserver | undefined
|
|
|
|
function enhanceImages(root: ParentNode = document) {
|
|
root.querySelectorAll<HTMLImageElement>('.slidev-layout img').forEach((image) => {
|
|
image.classList.add('easy-smart-image')
|
|
const fit = image.getAttribute('fit')
|
|
const position = image.getAttribute('position')
|
|
const maxHeight = image.getAttribute('max-height')
|
|
if (fit)
|
|
image.style.objectFit = fit
|
|
if (position)
|
|
image.style.objectPosition = position
|
|
if (maxHeight)
|
|
image.style.maxHeight = maxHeight
|
|
})
|
|
}
|
|
|
|
onMounted(() => {
|
|
enhanceImages()
|
|
observer = new MutationObserver(records => records.forEach(record => enhanceImages(record.target as ParentNode)))
|
|
observer.observe(document.body, { childList: true, subtree: true })
|
|
})
|
|
|
|
onBeforeUnmount(() => observer?.disconnect())
|
|
</script>
|
|
|
|
<template>
|
|
<span hidden aria-hidden="true" />
|
|
</template>
|