UNPKG

@opentiny/vue-renderless

Version:

An enterprise-class UI component library, support both Vue.js 2 and Vue.js 3, as well as PC and mobile.

110 lines (109 loc) 2.71 kB
import "../chunk-G2ADBYYC.js"; import { compute, computeMf, isMf, buildAfterNode, buildAfterLink, drawAfterLink, refresh, getAllItem, initDropdowns, getVars, isLinkHover, omitText, buildHoverState, addListeners, removeListeners, setListeners, hitTest, clearHoverAfterLink, clickNode, clearDropdown, antialiasing, getNodeDef, getNode, clickGroup, setAdjustY, runAdjustYTask } from "./index"; import { throttle } from "@opentiny/utils"; const api = [ "state", "clearHoverAfterLink", "clickNode", "getVars", "omitText", "refresh", "clearDropdown", "clickGroup" ]; const renderless = (props, { reactive, markRaw, onMounted, onBeforeUnmount, provide }, { vm, nextTick, emit, mode }, { emitter }) => { const state = reactive({ afterData: null, refreshKey: 0, wrapperStyle: "", dropdowns: {} }); state.temporary = { graphWidth: 0, adjustX: 0, emitter: emitter(), customLinks: [], lastRowAfterNodes: [], adjustY: 0 }; const api2 = { state, omitText, getVars: getVars(), initDropdowns: initDropdowns(), buildAfterNode: buildAfterNode(props), buildAfterLink: buildAfterLink(), isLinkHover: isLinkHover(state), clearDropdown: clearDropdown(state), getAllItem: getAllItem(props), buildHoverState: buildHoverState(props), removeListeners: removeListeners({ state, vm }), isMf: isMf(mode), antialiasing: antialiasing(vm), getNodeDef: getNodeDef(props), clickGroup: clickGroup(emit) }; Object.assign(api2, { compute: compute({ api: api2, markRaw, props, state }), computeMf: computeMf({ api: api2, markRaw, props, state }), drawAfterLink: drawAfterLink({ api: api2, props, state, vm }), refresh: refresh({ api: api2, nextTick, state }), addListeners: addListeners({ api: api2, state, vm }), setListeners: setListeners({ api: api2, emit, props, state, vm }), hitTest: hitTest({ api: api2, state, vm }), clearHoverAfterLink: throttle(10, clearHoverAfterLink({ api: api2, state, vm })), clickNode: clickNode({ api: api2, emit }), getNode: getNode(api2), setAdjustY: setAdjustY({ api: api2, state }), runAdjustYTask: runAdjustYTask({ api: api2, state }) }); provide("graphEmitter", state.temporary.emitter); provide("graphInstance", { setAdjustY: api2.setAdjustY }); if (api2.isMf()) { api2.computeMf(); } else { api2.compute(); } onMounted(() => { nextTick(() => { api2.antialiasing(); api2.drawAfterLink(); api2.addListeners(); }); }); onBeforeUnmount(() => { api2.removeListeners(); }); return api2; }; export { api, renderless };