ckgl/node_modules/vant/es/swipe-item/SwipeItem.mjs
2024-12-21 13:52:42 +08:00

82 lines
2.2 KiB
JavaScript

import { computed, nextTick, reactive, onMounted, defineComponent, createVNode as _createVNode } from "vue";
import { createNamespace } from "../utils/index.mjs";
import { SWIPE_KEY } from "../swipe/Swipe.mjs";
import { useParent } from "@vant/use";
import { useExpose } from "../composables/use-expose.mjs";
const [name, bem] = createNamespace("swipe-item");
var stdin_default = defineComponent({
name,
setup(props, {
slots
}) {
let rendered;
const state = reactive({
offset: 0,
inited: false,
mounted: false
});
const {
parent,
index
} = useParent(SWIPE_KEY);
if (!parent) {
if (process.env.NODE_ENV !== "production") {
console.error("[Vant] <SwipeItem> must be a child component of <Swipe>.");
}
return;
}
const style = computed(() => {
const style2 = {};
const {
vertical
} = parent.props;
if (parent.size.value) {
style2[vertical ? "height" : "width"] = `${parent.size.value}px`;
}
if (state.offset) {
style2.transform = `translate${vertical ? "Y" : "X"}(${state.offset}px)`;
}
return style2;
});
const shouldRender = computed(() => {
const {
loop,
lazyRender
} = parent.props;
if (!lazyRender || rendered) {
return true;
}
if (!state.mounted) {
return false;
}
const active = parent.activeIndicator.value;
const maxActive = parent.count.value - 1;
const prevActive = active === 0 && loop ? maxActive : active - 1;
const nextActive = active === maxActive && loop ? 0 : active + 1;
rendered = index.value === active || index.value === prevActive || index.value === nextActive;
return rendered;
});
const setOffset = (offset) => {
state.offset = offset;
};
onMounted(() => {
nextTick(() => {
state.mounted = true;
});
});
useExpose({
setOffset
});
return () => {
var _a;
return _createVNode("div", {
"class": bem(),
"style": style.value
}, [shouldRender.value ? (_a = slots.default) == null ? void 0 : _a.call(slots) : null]);
};
}
});
export {
stdin_default as default
};