diff --git a/app.vue b/app.vue index b82d7aa..bc81433 100644 --- a/app.vue +++ b/app.vue @@ -34,13 +34,11 @@ useHead({ - - - - - - + + + + diff --git a/components/ImgBlurHash.ts b/components/ImgBlurHash.ts deleted file mode 100644 index 98d4d72..0000000 --- a/components/ImgBlurHash.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { decode } from 'blurhash' -import { getDataUrlFromArr } from '~/composables/utils' - -export default defineComponent({ - inheritAttrs: false, - props: { - // img or bg (background) - mode: { - type: String, - default: 'img', - }, - blurhash: { - type: String, - required: false, - }, - src: { - type: String, - required: true, - }, - srcset: { - type: String, - required: false, - }, - }, - setup(props, { attrs }) { - const placeholderSrc = ref() - const isLoaded = ref(false) - const isImgMode = props.mode === 'img' - - onMounted(() => { - const img = document.createElement('img') - img.onload = () => { - isLoaded.value = true - } - img.src = props.src - if (props.srcset) - img.srcset = props.srcset - setTimeout(() => { - isLoaded.value = true - }, 3_000) - - if (props.blurhash) { - const pixels = decode(props.blurhash, 32, 32) - placeholderSrc.value = getDataUrlFromArr(pixels, 32, 32) - } - }) - - const domTag = isImgMode ? 'img' : 'div' - - return () => isLoaded.value || !placeholderSrc.value - ? h(domTag, { - ...attrs, - ...(isImgMode - ? { - src: props.src, - srcset: props.srcset, - } - : { - style: { - backgroundImage: `url(${props.src})`, - backgroundSize: 'cover', - }, - }), - }) - : h(domTag, { - ...attrs, - ...(isImgMode - ? { - src: placeholderSrc.value, - } - : { - style: { - backgroundImage: `url(${placeholderSrc.value})`, - backgroundSize: 'cover', - }, - }), - }) - }, -}) diff --git a/components/ImgBlurHash.vue b/components/ImgBlurHash.vue new file mode 100644 index 0000000..558ac1d --- /dev/null +++ b/components/ImgBlurHash.vue @@ -0,0 +1,67 @@ + + + + + + diff --git a/components/nav/NavFooter.vue b/components/nav/NavFooter.vue index 68433b1..7b38e70 100644 --- a/components/nav/NavFooter.vue +++ b/components/nav/NavFooter.vue @@ -1,5 +1,5 @@ -