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.

80 lines (79 loc) 2.36 kB
import "../chunk-G2ADBYYC.js"; import { ResizeObserver } from "@opentiny/utils"; const observeContainerSize = ({ nextTick, vm, state }) => () => { nextTick(() => { const observedElement = vm.$el; if (observedElement) { state.temporary.observer = new ResizeObserver(() => { window.requestAnimationFrame(() => { var _a; if (vm.$refs.chart) { vm.$refs.chart.refresh({ graphWidth: observedElement.offsetWidth, adjustX: -(((_a = state == null ? void 0 : state.config) == null ? void 0 : _a.nodeWrapperSize) || 0) / 2 }); } }); }); state.temporary.observer.observe(observedElement); state.temporary.observed = observedElement; } }); }; const unobserveContainerSize = (state) => () => { if (state.temporary.observer) { state.temporary.observer.unobserve(state.temporary.observed); state.temporary.observer.disconnect(); state.temporary.observer = null; state.temporary.observed = null; } }; const fetchData = ({ Loading, props, state, vm, markRaw, api, nextTick }) => () => { if (typeof props.fetch === "function") { api.unobserveContainerSize(); state.loading = true; state.temporary.loadingInstance = Loading.service({ target: vm.$el }); state.temporary.final = true; const onFinally = () => { if (state.temporary.final) { state.temporary.final = false; state.temporary.loadingInstance.close(); state.loading = false; nextTick(() => api.observeContainerSize()); } }; props.fetch().then(({ data, config }) => { if (data) { state.data = markRaw(data); state.config = markRaw(config); } }).then(onFinally).catch(onFinally); } }; const handleClickNode = (emit) => (afterNode, e) => emit("click-node", afterNode, e); const handleClickLink = (emit) => (afterLink, e) => emit("click-link", afterLink, e); const handleClickBlank = (emit) => (param, e) => emit("click-blank", param, e); const handleClickGroup = (emit) => (afterGroup, e) => emit("click-group", afterGroup, e); const refresh = (api) => () => api.fetchData(); export { fetchData, handleClickBlank, handleClickGroup, handleClickLink, handleClickNode, observeContainerSize, refresh, unobserveContainerSize };