epic-designer-dev
Version:
基于vue3的设计器,可视化开发页面表单。在epic-designer的基础上新增了字典选择器
51 lines (50 loc) • 1.34 kB
JavaScript
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
};