UNPKG

mldong-flow-designer-plus

Version:

本项目包含了作者为B站课堂视频[《工作流设计器开发最佳实践》](https://www.bilibili.com/cheese/play/ss24484)的过程源码。教程中开发的组件也可用于实际生产环境中。以下是和使用文档和课程章节说明。 ## 实战项目 [演示地址](https://flow-pro.mldong.com/)

160 lines (159 loc) 5.24 kB
import { provide, computed, inject, defineComponent, onBeforeMount, onMounted, watch, onUpdated, nextTick, createVNode, Teleport } from "vue"; import { P as PropTypes, t as tuple, _ as _extends } from "./index-DMN4aeBG.js"; const PortalContextKey = Symbol("PortalContextKey"); const useProvidePortal = function(instance) { let config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { inTriggerContext: true }; provide(PortalContextKey, { inTriggerContext: config.inTriggerContext, shouldRender: computed(() => { const { sPopupVisible, popupRef, forceRender, autoDestroy } = instance || {}; let shouldRender = false; if (sPopupVisible || popupRef || forceRender) { shouldRender = true; } if (!sPopupVisible && autoDestroy) { shouldRender = false; } return shouldRender; }) }); }; const useInjectPortal = () => { useProvidePortal({}, { inTriggerContext: false }); const portalContext = inject(PortalContextKey, { shouldRender: computed(() => false), inTriggerContext: false }); return { shouldRender: computed(() => portalContext.shouldRender.value || portalContext.inTriggerContext === false) }; }; const Portal = defineComponent({ compatConfig: { MODE: 3 }, name: "Portal", inheritAttrs: false, props: { getContainer: PropTypes.func.isRequired, didUpdate: Function }, setup(props, _ref) { let { slots } = _ref; let isSSR = true; let container; const { shouldRender } = useInjectPortal(); function setContainer() { if (shouldRender.value) { container = props.getContainer(); } } onBeforeMount(() => { isSSR = false; setContainer(); }); onMounted(() => { if (container) return; setContainer(); }); const stopWatch = watch(shouldRender, () => { if (shouldRender.value && !container) { container = props.getContainer(); } if (container) { stopWatch(); } }); onUpdated(() => { nextTick(() => { var _a; if (shouldRender.value) { (_a = props.didUpdate) === null || _a === void 0 ? void 0 : _a.call(props, props); } }); }); return () => { var _a; if (!shouldRender.value) return null; if (isSSR) { return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots); } return container ? createVNode(Teleport, { "to": container }, slots) : null; }; } }); tuple("bottomLeft", "bottomRight", "topLeft", "topRight"); const getTransitionDirection = (placement) => { if (placement !== void 0 && (placement === "topLeft" || placement === "topRight")) { return `slide-down`; } return `slide-up`; }; const getTransitionProps = function(transitionName) { let opt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; const transitionProps = transitionName ? _extends({ name: transitionName, appear: true, // type: 'animation', // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`, // appearActiveClass: `antdv-base-transtion`, // appearToClass: `${transitionName}-appear ${transitionName}-appear-active`, enterFromClass: `${transitionName}-enter ${transitionName}-enter-prepare ${transitionName}-enter-start`, enterActiveClass: `${transitionName}-enter ${transitionName}-enter-prepare`, enterToClass: `${transitionName}-enter ${transitionName}-enter-active`, leaveFromClass: ` ${transitionName}-leave`, leaveActiveClass: `${transitionName}-leave ${transitionName}-leave-active`, leaveToClass: `${transitionName}-leave ${transitionName}-leave-active` }, opt) : _extends({ css: false }, opt); return transitionProps; }; const getTransitionGroupProps = function(transitionName) { let opt = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; const transitionProps = transitionName ? _extends({ name: transitionName, appear: true, // appearFromClass: `${transitionName}-appear ${transitionName}-appear-prepare`, appearActiveClass: `${transitionName}`, appearToClass: `${transitionName}-appear ${transitionName}-appear-active`, enterFromClass: `${transitionName}-appear ${transitionName}-enter ${transitionName}-appear-prepare ${transitionName}-enter-prepare`, enterActiveClass: `${transitionName}`, enterToClass: `${transitionName}-enter ${transitionName}-appear ${transitionName}-appear-active ${transitionName}-enter-active`, leaveActiveClass: `${transitionName} ${transitionName}-leave`, leaveToClass: `${transitionName}-leave-active` }, opt) : _extends({ css: false }, opt); return transitionProps; }; const getTransitionName = (rootPrefixCls, motion, transitionName) => { if (transitionName !== void 0) { return transitionName; } return `${rootPrefixCls}-${motion}`; }; export { Portal as P, getTransitionName as a, getTransitionGroupProps as b, getTransitionDirection as c, getTransitionProps as g, useProvidePortal as u }; //# sourceMappingURL=transition-DB3AYAM2.js.map