UNPKG

epic-designer-dev

Version:

基于vue3的设计器,可视化开发页面表单。在epic-designer的基础上新增了字典选择器

51 lines (50 loc) 1.34 kB
import { ref as y } from "vue"; /* empty css */ import "vuedraggable"; import { findSchemaInfoById as s, generateNewSchema as m, deepClone as c } from "../../../utils/src/common/data.js"; import "@vueuse/core"; import "../store/index.js"; import "../../../utils/src/manager/pluginManager.js"; function z(o, a, p) { const u = y(null); function x(n) { return n != null && n.id ? (u.value = c(n), !0) : !1; } function h(n) { if (!u.value) return !1; const r = s( o.schemas, n ?? "root" ); if (!r) return !1; const { index: i, list: t } = r, f = m(u.value); return t.splice(i + 1, 0, f), a(f), p("粘贴组件"), !0; } function b(n) { const r = s( o.schemas, n ?? "root" ); if (!r) return !1; const { index: i, schema: t, list: f } = r, l = m(t); return f.splice(i + 1, 0, l), a(l), p("复制组件"), !0; } function v(n) { if (!(n != null && n.id)) return !1; u.value = c(n); const r = s(o.schemas, n.id); if (!r) return !1; const { index: i, list: t } = r; return t.splice(i, 1), i === t.length ? a(t[i - 1] || null) : a(t[i] || null), p("剪切组件"), !0; } return { clipboardNode: u, copy: x, cut: v, duplicate: b, paste: h }; } export { z as useClipboard };