diff --git a/components/common/CommonBlurhash.ts b/components/common/CommonBlurhash.ts deleted file mode 100644 index 7f8bcff2..00000000 --- a/components/common/CommonBlurhash.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { decode } from 'blurhash' - -export default defineComponent({ - inheritAttrs: false, - props: { - blurhash: { - type: String, - required: true, - }, - src: { - type: String, - required: true, - }, - srcset: { - type: String, - required: false, - }, - }, - setup(props, { attrs }) { - const placeholderSrc = ref() - const isLoaded = ref(false) - - 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) - } - }) - - return () => isLoaded.value || !placeholderSrc.value - ? h('img', { ...attrs, src: props.src, srcset: props.srcset }) - : h('img', { ...attrs, src: placeholderSrc.value }) - }, -}) diff --git a/components/common/CommonBlurhash.vue b/components/common/CommonBlurhash.vue new file mode 100644 index 00000000..4602a1b8 --- /dev/null +++ b/components/common/CommonBlurhash.vue @@ -0,0 +1,43 @@ + + +