reka-ui
Version:
Vue port for Radix UI Primitives.
1 lines • 2.28 kB
Source Map (JSON)
{"version":3,"file":"utils.cjs","sources":["../../src/Avatar/utils.ts"],"sourcesContent":["import { type ImgHTMLAttributes, type Ref, onMounted, onUnmounted, ref, watch } from 'vue'\n\nexport type ImageLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error'\n\nexport function useImageLoadingStatus(src: Ref<string>, referrerPolicy?: Ref<ImgHTMLAttributes['referrerpolicy']>) {\n const loadingStatus = ref<ImageLoadingStatus>('idle')\n const isMounted = ref(false)\n\n const updateStatus = (status: ImageLoadingStatus) => () => {\n if (isMounted.value)\n loadingStatus.value = status\n }\n\n onMounted(() => {\n isMounted.value = true\n\n watch([() => src.value, () => referrerPolicy?.value], ([src, referrer]) => {\n if (!src) {\n loadingStatus.value = 'error'\n }\n else {\n const image = new window.Image()\n loadingStatus.value = 'loading'\n image.onload = updateStatus('loaded')\n image.onerror = updateStatus('error')\n image.src = src\n if (referrer) {\n image.referrerPolicy = referrer\n }\n }\n }, { immediate: true })\n })\n\n onUnmounted(() => {\n isMounted.value = false\n })\n\n return loadingStatus\n}\n"],"names":["ref","onMounted","watch","src","onUnmounted"],"mappings":";;;;AAIgB,SAAA,qBAAA,CAAsB,KAAkB,cAA2D,EAAA;AACjH,EAAM,MAAA,aAAA,GAAgBA,QAAwB,MAAM,CAAA;AACpD,EAAM,MAAA,SAAA,GAAYA,QAAI,KAAK,CAAA;AAE3B,EAAM,MAAA,YAAA,GAAe,CAAC,MAAA,KAA+B,MAAM;AACzD,IAAA,IAAI,SAAU,CAAA,KAAA;AACZ,MAAA,aAAA,CAAc,KAAQ,GAAA,MAAA;AAAA,GAC1B;AAEA,EAAAC,aAAA,CAAU,MAAM;AACd,IAAA,SAAA,CAAU,KAAQ,GAAA,IAAA;AAElB,IAAAC,SAAA,CAAM,CAAC,MAAM,GAAI,CAAA,KAAA,EAAO,MAAM,cAAA,EAAgB,KAAK,CAAA,EAAG,CAAC,CAACC,IAAK,EAAA,QAAQ,CAAM,KAAA;AACzE,MAAA,IAAI,CAACA,IAAK,EAAA;AACR,QAAA,aAAA,CAAc,KAAQ,GAAA,OAAA;AAAA,OAEnB,MAAA;AACH,QAAM,MAAA,KAAA,GAAQ,IAAI,MAAA,CAAO,KAAM,EAAA;AAC/B,QAAA,aAAA,CAAc,KAAQ,GAAA,SAAA;AACtB,QAAM,KAAA,CAAA,MAAA,GAAS,aAAa,QAAQ,CAAA;AACpC,QAAM,KAAA,CAAA,OAAA,GAAU,aAAa,OAAO,CAAA;AACpC,QAAA,KAAA,CAAM,GAAMA,GAAAA,IAAAA;AACZ,QAAA,IAAI,QAAU,EAAA;AACZ,UAAA,KAAA,CAAM,cAAiB,GAAA,QAAA;AAAA;AACzB;AACF,KACC,EAAA,EAAE,SAAW,EAAA,IAAA,EAAM,CAAA;AAAA,GACvB,CAAA;AAED,EAAAC,eAAA,CAAY,MAAM;AAChB,IAAA,SAAA,CAAU,KAAQ,GAAA,KAAA;AAAA,GACnB,CAAA;AAED,EAAO,OAAA,aAAA;AACT;;;;"}