comic-plus
Version:
<p align="center"> <img width="200px" src="./logo.png"/> </p>
73 lines (72 loc) • 2.87 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const vue = require("vue");
const type = require("./type.js");
const _hoisted_1 = { class: "cu-schedule-defaultcard__content" };
const _hoisted_2 = { class: "timer" };
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
...{
name: "CuScheduleCards"
},
__name: "card",
props: {
data: Object
},
setup(__props) {
const props = __props;
const { props: injectProps, spacing } = vue.inject(type.SCHEDULE_PROVIDE);
const cardRef = vue.ref();
const maxHeight = vue.computed(() => {
return (injectProps.end + 1 - injectProps.start) * spacing.value;
});
const startTime = vue.computed(() => {
return Math.max(props.data.startTime, injectProps.start);
});
const endTime = vue.computed(() => {
return Math.min(props.data.endTime, injectProps.end + 1);
});
const getMaxPx = (number) => {
return Math.min(Math.max(number, 0), maxHeight.value);
};
const cardStyle = vue.computed(() => {
return {
top: getMaxPx((startTime.value - injectProps.start) * spacing.value) + "px",
height: Math.min((endTime.value - startTime.value) * spacing.value, maxHeight.value) + "px"
};
});
function cardStyleFn(card) {
return {
marginTop: getMaxPx((card.getTimes[0] - startTime.value) * spacing.value) + "px",
marginBottom: getMaxPx((endTime.value - card.getTimes[1]) * spacing.value) + "px"
};
}
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock("div", {
style: vue.normalizeStyle(cardStyle.value),
ref_key: "cardRef",
ref: cardRef,
class: "cu-schedule-cards"
}, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.data.children, (card, idx) => {
return vue.openBlock(), vue.createElementBlock("div", {
class: "cu-schedule-card",
style: vue.normalizeStyle(cardStyleFn(card)),
key: card.time + idx
}, [
vue.renderSlot(_ctx.$slots, "card", { data: card }, () => [
vue.isVNode(card.content) ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(card.content), { key: 0 })) : (vue.openBlock(), vue.createElementBlock("div", {
key: 1,
class: "cu-schedule-defaultcard",
style: vue.normalizeStyle({ "--card-color": card.color })
}, [
vue.createElementVNode("div", _hoisted_1, vue.toDisplayString(card.content), 1),
vue.createElementVNode("div", _hoisted_2, vue.toDisplayString(card.time), 1)
], 4))
])
], 4);
}), 128))
], 4);
};
}
});
exports.default = _sfc_main;