comic-plus
Version:
<p align="center"> <img width="200px" src="./logo.png"/> </p>
81 lines (80 loc) • 2.43 kB
JavaScript
import { defineComponent, ref, openBlock, createElementBlock, normalizeStyle, createElementVNode, renderSlot, createVNode, unref, createCommentVNode } from "vue";
import "../style/image.css";
import { preview } from "../../preview-image/index.mjs";
import { imageProps, imageEmits } from "./main.props.mjs";
import "../../../icons/index.mjs";
import { Picture, ErrorPicture } from "../../../icons/components/components.mjs";
const _hoisted_1 = ["src", "alt", "loading"];
const _hoisted_2 = {
key: 0,
class: "cu-image__loading"
};
const _hoisted_3 = {
key: 1,
class: "cu-image__error"
};
const _sfc_main = /* @__PURE__ */ defineComponent({
...{
name: "CuImage"
},
__name: "main",
props: imageProps,
emits: imageEmits,
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
const loadType = ref("load");
function loaded() {
loadType.value = "loaded";
emit("load");
}
function error() {
loadType.value = "error";
emit("error");
}
function handleClick() {
if (props.previewList) {
preview(props.previewList, props.current);
}
}
return (_ctx, _cache) => {
return openBlock(), createElementBlock("span", {
class: "cu-image",
style: normalizeStyle({ cursor: _ctx.previewList ? "pointer" : "default" }),
onClick: handleClick
}, [
createElementVNode("img", {
src: _ctx.src,
alt: _ctx.alt,
width: "100%",
height: "100%",
onLoad: loaded,
onError: error,
loading: _ctx.loading,
style: normalizeStyle({
"object-fit": props.fit
})
}, null, 44, _hoisted_1),
loadType.value === "load" ? (openBlock(), createElementBlock("div", _hoisted_2, [
renderSlot(_ctx.$slots, "load", {}, () => [
createVNode(unref(Picture), {
class: "empty",
size: "1.5rem"
})
])
])) : createCommentVNode("", true),
loadType.value === "error" ? (openBlock(), createElementBlock("div", _hoisted_3, [
renderSlot(_ctx.$slots, "error", {}, () => [
createVNode(unref(ErrorPicture), {
class: "empty",
size: "1.5rem"
})
])
])) : createCommentVNode("", true)
], 4);
};
}
});
export {
_sfc_main as default
};