@formily-djd/designer 0.0.17 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter-BXdJuA0B.d.mts +30 -0
- package/dist/element-plus.d.mts +6 -0
- package/dist/element-plus.mjs +1 -0
- package/dist/index.css +50 -25
- package/dist/index.d.mts +2 -1
- package/dist/index.mjs +3 -1
- package/package.json +7 -7
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Component, InjectionKey } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/core/adapter.d.ts
|
|
4
|
+
interface DesignerSetterComponents {
|
|
5
|
+
ArrayItems: Component;
|
|
6
|
+
Checkbox: Component;
|
|
7
|
+
FormItem: Component;
|
|
8
|
+
Input: Component;
|
|
9
|
+
InputNumber: Component;
|
|
10
|
+
Radio: Component;
|
|
11
|
+
Select: Component;
|
|
12
|
+
Space: Component;
|
|
13
|
+
Switch: Component;
|
|
14
|
+
}
|
|
15
|
+
interface DesignerIcons {
|
|
16
|
+
Bottom: Component;
|
|
17
|
+
CirclePlus: Component;
|
|
18
|
+
CopyDocument: Component;
|
|
19
|
+
Delete: Component;
|
|
20
|
+
FolderAdd: Component;
|
|
21
|
+
Search: Component;
|
|
22
|
+
Top: Component;
|
|
23
|
+
}
|
|
24
|
+
interface DesignerAdapter {
|
|
25
|
+
setterComponents?: Partial<DesignerSetterComponents>;
|
|
26
|
+
icons?: Partial<DesignerIcons>;
|
|
27
|
+
}
|
|
28
|
+
declare const DesignerAdapterKey: InjectionKey<DesignerAdapter | null>;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { DesignerSetterComponents as i, DesignerAdapterKey as n, DesignerIcons as r, DesignerAdapter as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Bottom as e,CirclePlus as t,CopyDocument as n,Delete as r,FolderAdd as i,Search as a,Top as o}from"@element-plus/icons-vue";import{ArrayItems as s,Checkbox as c,FormItem as l,Input as u,InputNumber as d,Radio as f,Select as p,Space as m,Switch as h}from"@formily/element-plus";const g={setterComponents:{ArrayItems:s,Checkbox:c,FormItem:l,Input:u,InputNumber:d,Radio:f,Select:p,Space:m,Switch:h},icons:{Bottom:e,CirclePlus:t,CopyDocument:n,Delete:r,FolderAdd:i,Search:a,Top:o}};export{g as elementPlusAdapter};
|
package/dist/index.css
CHANGED
|
@@ -231,23 +231,23 @@
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
|
|
234
|
-
.config-panel[data-v-
|
|
234
|
+
.config-panel[data-v-56b65526] {
|
|
235
235
|
height: 100%;
|
|
236
236
|
display: flex;
|
|
237
237
|
flex-direction: column;
|
|
238
238
|
}
|
|
239
|
-
.config-empty[data-v-
|
|
239
|
+
.config-empty[data-v-56b65526] {
|
|
240
240
|
padding: 20px;
|
|
241
241
|
text-align: center;
|
|
242
242
|
color: #909399;
|
|
243
243
|
}
|
|
244
|
-
.config-content[data-v-
|
|
244
|
+
.config-content[data-v-56b65526] {
|
|
245
245
|
height: 100%;
|
|
246
246
|
display: flex;
|
|
247
247
|
flex-direction: column;
|
|
248
248
|
overflow: hidden;
|
|
249
249
|
}
|
|
250
|
-
.config-title[data-v-
|
|
250
|
+
.config-title[data-v-56b65526] {
|
|
251
251
|
margin: 0;
|
|
252
252
|
padding: 16px;
|
|
253
253
|
font-size: 16px;
|
|
@@ -256,17 +256,42 @@
|
|
|
256
256
|
background-color: #fff;
|
|
257
257
|
flex-shrink: 0;
|
|
258
258
|
}
|
|
259
|
-
.config-
|
|
259
|
+
.config-operate[data-v-56b65526] {
|
|
260
|
+
padding: 12px 16px;
|
|
261
|
+
border-bottom: 1px solid #ebeef5;
|
|
262
|
+
background-color: #fff;
|
|
263
|
+
}
|
|
264
|
+
.config-adapter-guide[data-v-56b65526] {
|
|
265
|
+
padding: 12px 16px;
|
|
266
|
+
overflow-y: auto;
|
|
267
|
+
background-color: #fff;
|
|
268
|
+
}
|
|
269
|
+
.guide-title[data-v-56b65526] {
|
|
270
|
+
margin: 12px 0 8px;
|
|
271
|
+
font-weight: 600;
|
|
272
|
+
color: #303133;
|
|
273
|
+
}
|
|
274
|
+
.guide-code[data-v-56b65526] {
|
|
275
|
+
margin: 0;
|
|
276
|
+
padding: 10px 12px;
|
|
277
|
+
background-color: #f5f7fa;
|
|
278
|
+
border-radius: 6px;
|
|
279
|
+
font-size: 12px;
|
|
280
|
+
line-height: 1.5;
|
|
281
|
+
color: #606266;
|
|
282
|
+
white-space: pre-wrap;
|
|
283
|
+
}
|
|
284
|
+
.config-section[data-v-56b65526] {
|
|
260
285
|
background-color: #fff;
|
|
261
286
|
flex: 1;
|
|
262
287
|
overflow-y: auto;
|
|
263
288
|
border: none;
|
|
264
289
|
padding: 0 16px;
|
|
265
290
|
}
|
|
266
|
-
.config-section[data-v-
|
|
291
|
+
.config-section[data-v-56b65526] .el-collapse-item__header {
|
|
267
292
|
font-weight: 600;
|
|
268
293
|
}
|
|
269
|
-
.config-section[data-v-
|
|
294
|
+
.config-section[data-v-56b65526] .el-form-item {
|
|
270
295
|
margin-bottom: 18px;
|
|
271
296
|
}
|
|
272
297
|
|
|
@@ -456,57 +481,57 @@
|
|
|
456
481
|
}
|
|
457
482
|
|
|
458
483
|
|
|
459
|
-
.schema-tree[data-v-
|
|
484
|
+
.schema-tree[data-v-7b073e0c] {
|
|
460
485
|
height: 100%;
|
|
461
486
|
display: flex;
|
|
462
487
|
flex-direction: column;
|
|
463
488
|
background: var(--el-bg-color);
|
|
464
489
|
}
|
|
465
|
-
.tree-toolbar[data-v-
|
|
490
|
+
.tree-toolbar[data-v-7b073e0c] {
|
|
466
491
|
padding: 16px;
|
|
467
492
|
border-bottom: 1px solid var(--el-border-color-light);
|
|
468
493
|
}
|
|
469
|
-
.toolbar-buttons[data-v-
|
|
494
|
+
.toolbar-buttons[data-v-7b073e0c] {
|
|
470
495
|
display: flex;
|
|
471
496
|
gap: 8px;
|
|
472
497
|
margin-top: 8px;
|
|
473
498
|
}
|
|
474
|
-
.tree-content[data-v-
|
|
499
|
+
.tree-content[data-v-7b073e0c] {
|
|
475
500
|
flex: 1;
|
|
476
501
|
overflow-y: auto;
|
|
477
502
|
padding: 16px;
|
|
478
503
|
}
|
|
479
|
-
.tree-node[data-v-
|
|
504
|
+
.tree-node[data-v-7b073e0c] {
|
|
480
505
|
display: flex;
|
|
481
506
|
align-items: center;
|
|
482
507
|
gap: 8px;
|
|
483
508
|
flex: 1;
|
|
484
509
|
padding: 4px 0;
|
|
485
510
|
}
|
|
486
|
-
.tree-node.is-container[data-v-
|
|
511
|
+
.tree-node.is-container[data-v-7b073e0c] {
|
|
487
512
|
font-weight: 600;
|
|
488
513
|
color: var(--el-color-primary);
|
|
489
514
|
}
|
|
490
|
-
.node-icon[data-v-
|
|
515
|
+
.node-icon[data-v-7b073e0c] {
|
|
491
516
|
font-size: 16px;
|
|
492
517
|
flex-shrink: 0;
|
|
493
518
|
}
|
|
494
|
-
.node-label[data-v-
|
|
519
|
+
.node-label[data-v-7b073e0c] {
|
|
495
520
|
flex: 1;
|
|
496
521
|
font-size: 14px;
|
|
497
522
|
}
|
|
498
|
-
.node-component[data-v-
|
|
523
|
+
.node-component[data-v-7b073e0c] {
|
|
499
524
|
font-size: 12px;
|
|
500
525
|
color: var(--el-text-color-secondary);
|
|
501
526
|
}
|
|
502
|
-
[data-v-
|
|
527
|
+
[data-v-7b073e0c] .el-tree-node.is-drop-inner > .el-tree-node__content {
|
|
503
528
|
background-color: var(--el-color-primary-light-9) !important;
|
|
504
529
|
border: 2px dashed var(--el-color-primary);
|
|
505
530
|
}
|
|
506
|
-
[data-v-
|
|
531
|
+
[data-v-7b073e0c] .el-tree-node.is-current > .el-tree-node__content {
|
|
507
532
|
background-color: var(--el-color-primary-light-9);
|
|
508
533
|
}
|
|
509
|
-
[data-v-
|
|
534
|
+
[data-v-7b073e0c] .el-tree-node__content:hover {
|
|
510
535
|
background-color: var(--el-fill-color-light);
|
|
511
536
|
}
|
|
512
537
|
|
|
@@ -541,36 +566,36 @@
|
|
|
541
566
|
}
|
|
542
567
|
|
|
543
568
|
|
|
544
|
-
.designer[data-v-
|
|
569
|
+
.designer[data-v-7a43b822] {
|
|
545
570
|
width: 100%;
|
|
546
571
|
/* height 通过 style 绑定设置 */
|
|
547
572
|
}
|
|
548
|
-
.designer-layout[data-v-
|
|
573
|
+
.designer-layout[data-v-7a43b822] {
|
|
549
574
|
display: flex;
|
|
550
575
|
height: 100%;
|
|
551
576
|
overflow: hidden;
|
|
552
577
|
}
|
|
553
|
-
.designer-material[data-v-
|
|
578
|
+
.designer-material[data-v-7a43b822] {
|
|
554
579
|
width: 280px;
|
|
555
580
|
height: 100%;
|
|
556
581
|
overflow-y: auto;
|
|
557
582
|
flex-shrink: 0;
|
|
558
583
|
}
|
|
559
|
-
.designer-canvas[data-v-
|
|
584
|
+
.designer-canvas[data-v-7a43b822] {
|
|
560
585
|
flex: 1;
|
|
561
586
|
height: 100%;
|
|
562
587
|
border-left: 1px solid #dcdfe6;
|
|
563
588
|
border-right: 1px solid #dcdfe6;
|
|
564
589
|
overflow: hidden;
|
|
565
590
|
}
|
|
566
|
-
.designer-config[data-v-
|
|
591
|
+
.designer-config[data-v-7a43b822] {
|
|
567
592
|
width: 300px;
|
|
568
593
|
height: 100%;
|
|
569
594
|
background-color: #f5f7fa;
|
|
570
595
|
overflow: hidden;
|
|
571
596
|
flex-shrink: 0;
|
|
572
597
|
}
|
|
573
|
-
.designer-preview[data-v-
|
|
598
|
+
.designer-preview[data-v-7a43b822] {
|
|
574
599
|
width: 100%;
|
|
575
600
|
height: 100%;
|
|
576
601
|
padding: 16px;
|
package/dist/index.d.mts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { i as DesignerSetterComponents, n as DesignerAdapterKey, r as DesignerIcons, t as DesignerAdapter } from "./adapter-BXdJuA0B.mjs";
|
|
1
2
|
import { InjectionKey, Ref } from "vue";
|
|
2
3
|
import { ISchema } from "@formily/vue";
|
|
3
4
|
|
|
@@ -264,4 +265,4 @@ declare const MaterialPanel: any;
|
|
|
264
265
|
declare const Designer: any;
|
|
265
266
|
declare const Render: any;
|
|
266
267
|
//#endregion
|
|
267
|
-
export { Canvas, ConfigPanel, DesignStore, DesignStoreKey, Designer, MaterialPanel, Render, schemaToSetterValues, setterValuesToSchema, useCreateDesignStore, useDesignStore };
|
|
268
|
+
export { Canvas, ConfigPanel, DesignStore, DesignStoreKey, Designer, DesignerAdapter, DesignerAdapterKey, DesignerIcons, DesignerSetterComponents, MaterialPanel, Render, schemaToSetterValues, setterValuesToSchema, useCreateDesignStore, useDesignStore };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
import{Fragment as e,computed as t,createBlock as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createTextVNode as o,createVNode as s,defineComponent as c,h as l,inject as u,isRef as d,mergeProps as f,nextTick as p,normalizeClass as m,normalizeProps as h,normalizeStyle as g,onBeforeUnmount as _,openBlock as v,provide as y,ref as b,renderList as x,renderSlot as S,resolveComponent as C,resolveDynamicComponent as w,shallowRef as T,toDisplayString as E,toRef as D,unref as O,watch as k,withCtx as A,withModifiers as j}from"vue";import{uid as M}from"@formily/shared";import{deleteByPath as N,getByPath as P,getFieldNameFromPath as F,setByPath as I}from"@formily-djd/utils";import{ArrayItems as L,Checkbox as R,FormItem as z,Input as B,InputNumber as V,Radio as H,Select as U,Space as W,Switch as ee}from"@formily/element-plus";import{FormProvider as G,RecursionField as te,createSchemaField as ne,useField as re,useFieldSchema as ie}from"@formily/vue";import{createForm as ae,isVoidField as K,onFormValuesChange as oe}from"@formily/core";import{Bottom as se,CirclePlus as q,CopyDocument as ce,Delete as le,FolderAdd as ue,Search as de,Top as fe}from"@element-plus/icons-vue";import{observer as pe}from"@formily/reactive-vue";const J=Symbol(`DesignStore`);function Y(){let e=u(J);if(!e)throw Error(`[useDesignStore] 必须在 Designer 组件内使用`);return e}const me=Symbol(`ComponentSettings`),he=Symbol(`ArrayField`),ge=Symbol(`ArrayItemKey`),_e=Symbol(`LeftPanel`),ve=Symbol(`RenderDisabled`);function ye(e,n=`.canvas-content`){return t(()=>{if(!e.value)return null;let t=document.querySelector(`[data-node-id="${e.value}"]`);if(!t)return null;let r=document.querySelector(n);if(!r)return null;let i=t.getBoundingClientRect(),a=r.getBoundingClientRect();return{x:i.x-a.x+r.scrollLeft,y:i.y-a.y+r.scrollTop,width:i.width,height:i.height}})}function X(e,t,n=!0){let r=e=>{if(!n)return 0;let t=e*.1;return t>20?20:t<10?10:t},i=r(t.width),a=r(t.height);return e.x>=t.x+i&&e.x<=t.x+t.width-i&&e.y>=t.y+a&&e.y<=t.y+t.height-a}function be(e,t){let n=Math.min(Math.abs(e.x-t.x),Math.abs(e.x-(t.x+t.width))),r=Math.min(Math.abs(e.y-t.y),Math.abs(e.y-(t.y+t.height)));return e.x>=t.x&&e.x<=t.x+t.width&&(n=0),e.y>=t.y&&e.y<=t.y+t.height&&(r=0),Math.sqrt(n**2+r**2)}function xe(e,t,n){return n?e.x>=t.x+t.width/2:e.y>=t.y+t.height/2}function Se(e){return e.width>e.height}let Z=function(e){return e.Before=`BEFORE`,e.After=`AFTER`,e.Upper=`UPPER`,e.Under=`UNDER`,e.Inner=`INNER`,e.InnerBefore=`INNER_BEFORE`,e.InnerAfter=`INNER_AFTER`,e.ForbidBefore=`FORBID_BEFORE`,e.ForbidAfter=`FORBID_AFTER`,e.ForbidUpper=`FORBID_UPPER`,e.ForbidUnder=`FORBID_UNDER`,e.ForbidInner=`FORBID_INNER`,e.ForbidInnerBefore=`FORBID_INNER_BEFORE`,e.ForbidInnerAfter=`FORBID_INNER_AFTER`,e.Forbid=`FORBID`,e}({});var Ce=class{sensitive;forceBlock;dragNodes=b([]);touchNode=b(null);closestNode=b(null);closestPosition=b(Z.Before);closestRect=b(null);getNodeRect;getNodeSchema;getCanvasRect;findChildNodes;constructor(e,t){this.sensitive=t?.sensitive??!0,this.forceBlock=t?.forceBlock??!1,this.getNodeRect=e.getNodeRect,this.getNodeSchema=e.getNodeSchema,this.getCanvasRect=e.getCanvasRect,this.findChildNodes=e.findChildNodes}setDragNodes(e){this.dragNodes.value=e}calculate(e){let{point:t,touchNode:n,closestNode:r,closestPosition:i}=e;if(r!==void 0&&i!==void 0){this.closestNode.value=r,this.closestPosition.value=i,r&&(this.closestRect.value=this.getNodeRect(r));return}if(!t)return;n!==void 0&&(this.touchNode.value=n);let a=this.getClosestNode(t);if(this.closestNode.value=a,!a){this.closestPosition.value=Z.Before,this.closestRect.value=null;return}this.closestPosition.value=this.getClosestPosition(t,a),this.closestRect.value=this.getNodeRect(a)}getClosestNode(e){let t=this.touchNode.value;if(!t)return null;let n=this.getNodeRect(t);if(!n)return null;let r=this.findChildNodes(t);if(r.length===0)return t;let i=X(e,n,this.sensitive)?0:be(e,n),a=t;for(let t of r){let n=this.getNodeRect(t);if(!n)continue;let r=X(e,n,this.sensitive)?0:be(e,n);r<=i&&(i=r,a=t)}return a}getClosestPosition(e,t){console.log(`[Dragon] getClosestPosition`,t);let n=this.getNodeRect(t),r=this.getNodeSchema(t);if(!n||!r)return Z.Forbid;let i=this.getLayout(n)===`horizontal`,a=X(e,n,this.sensitive),o=this.isContainer(r),s=this.canInsertSibling(t),c=xe(e,n,i);return a?o&&this.canDropInside(t)?this.findChildNodes(t).length===0?Z.Inner:c?Z.InnerAfter:Z.InnerBefore:s?i?c?Z.After:Z.Before:c?Z.Under:Z.Upper:Z.Forbid:s?i?c?Z.ForbidAfter:Z.ForbidBefore:c?Z.ForbidUnder:Z.ForbidUpper:Z.Forbid}getLayout(e){return this.forceBlock?`vertical`:Se(e)?`horizontal`:`vertical`}isContainer(e){return!e||e[`x-droppable`]===!1?!1:e.type===`object`||e.type===`void`||e.type===`array`}canInsertSibling(e){return!(e===``||e==null)}canDropInside(e){if(this.getNodeSchema(e)?.[`x-droppable`]===!1)return!1;let t=this.dragNodes.value;if(t.length===0)return!0;for(let n of t)if(n.nodePath===e||e.startsWith(`${n.nodePath}.`))return!1;return!0}clear(){this.dragNodes.value=[],this.touchNode.value=null,this.closestNode.value=null,this.closestPosition.value=Z.Before,this.closestRect.value=null}};function we(e=!1){let t=b({type:`object`,properties:{}}),n=b(null),r=b(null),i=b(null),a=b(!1),o=b([]),s=b(null),c=b(null),l=b(Z.Before);function u(e){let t=document.querySelector(`[data-node-id="${e}"]`);if(!t)return null;let n=document.querySelector(`.canvas-content`);if(!n)return null;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect();return{x:r.x-i.x,y:r.y-i.y,width:r.width,height:r.height}}function d(){let e=document.querySelector(`.canvas-content`);if(!e)return{x:0,y:0,width:0,height:0};let t=e.getBoundingClientRect();return{x:t.x,y:t.y,width:t.width,height:t.height}}let f=new Ce({getNodeRect:u,getNodeSchema:e=>P(t.value.properties,e),getCanvasRect:d,findChildNodes:e=>{let n=P(t.value.properties,e);if(!n)return[];let r=[];return n.properties&&Object.keys(n.properties).forEach(t=>{r.push(`${e}.properties.${t}`)}),n.items?.properties&&Object.keys(n.items.properties).forEach(t=>{r.push(`${e}.items.properties.${t}`)}),r}},{sensitive:!0,forceBlock:!1});function p(e,n){t.value.properties||(t.value.properties={}),t.value.properties[e]=n}function m(e,n){I(t.value.properties,e,n)}function h(e){n.value=e}function g(){return n.value&&P(t.value.properties,n.value)||null}function _(e){r.value=e,n.value=e}function v(e){i.value=e}function x(e){a.value=!0,o.value=e,f.setDragNodes(e)}function S(e,t){if(!a.value)return;t!==void 0&&(s.value=t);let n=d(),r={x:e.x-n.x,y:e.y-n.y};f.calculate({point:r,touchNode:s.value||void 0}),c.value=f.closestNode.value,l.value=f.closestPosition.value}function C(){if(console.log(`[DesignStore] drop`),!a.value)return;let e=c.value,t=l.value;if(!e){w();return}if(t.includes(`FORBID`)){w();return}let n=o.value;if(n.length===0){w();return}n.length===1&&T(n[0].nodePath,e,t),w()}function w(){a.value=!1,o.value=[],s.value=null,c.value=null,l.value=Z.Before,f.clear()}function T(e,n,r){let i=N(t.value.properties,e);if(!i)return;let a=F(e);if(r===Z.Inner||r===Z.InnerAfter||r===Z.InnerBefore){let e=P(t.value.properties,n);if(!e)return;let o,s;if(e.type===`array`?(e.items||={type:`object`,properties:{}},e.items.properties||(e.items.properties={}),o=e.items.properties,s=`${n}.items.properties`):(e.properties||={},o=e.properties,s=`${n}.properties`),r===Z.InnerBefore){let e={[a]:i,...o};I(t.value.properties,s,e)}else I(t.value.properties,`${s}.${a}`,i)}else{let e=r===Z.Before||r===Z.Upper?`before`:`after`,o=n.split(`.`),s=o[o.length-1],c,l=o.includes(`items`);if(o.length===1)c=``;else if(l){let e=o.lastIndexOf(`items`);c=`${o.slice(0,e).join(`.`)}.items.properties`}else{let e=o.lastIndexOf(`properties`);c=o.slice(0,e+1).join(`.`)}let u=c?P(t.value.properties,c):t.value.properties;if(!u){console.warn(`父节点的 properties 不存在:`,c);return}let d=Object.entries(u),f=d.findIndex(([e])=>e===s);if(f===-1){console.warn(`目标字段不存在:`,s);return}let p=e===`after`?f+1:f,m=[...d.slice(0,p),[a,i],...d.slice(p)],h={};m.forEach(([e,t])=>{h[e]=t}),c?I(t.value.properties,c,h):t.value.properties=h}}function E(e,n,r,i){if(!e){t.value.properties||(t.value.properties={}),t.value.properties[n]=r;return}if(i===Z.Inner||i===Z.InnerAfter||i===Z.InnerBefore){let a=P(t.value.properties,e);if(!a)return;let o,s;if(a.type===`array`?(a.items||={type:`object`,properties:{}},a.items.properties||(a.items.properties={}),o=a.items.properties,s=`${e}.items.properties`):(a.properties||={},o=a.properties,s=`${e}.properties`),i===Z.InnerBefore){let e={[n]:r,...o};I(t.value.properties,s,e)}else I(t.value.properties,`${s}.${n}`,r)}else{let a=i===Z.Before||i===Z.Upper?`before`:`after`,o=e.split(`.`),s=o[o.length-1],c;o.length===1&&(c=``);let l=o.lastIndexOf(`properties`);c=o.slice(0,l+1).join(`.`);let u=c?P(t.value.properties,c):t.value.properties;if(!u){console.warn(`父节点的 properties 不存在:`,c);return}let d=Object.entries(u),f=d.findIndex(([e])=>e===s);if(f===-1){console.warn(`目标字段不存在:`,s);return}let p=a===`after`?f+1:f,m=[...d.slice(0,p),[n,r],...d.slice(p)],h={};m.forEach(([e,t])=>{h[e]=t}),c?I(t.value.properties,c,h):t.value.properties=h}}function D(e){return P(t.value.properties,e)}function O(e){let n=P(t.value.properties,e);if(!n)return[];let r=[];return n.properties&&Object.keys(n.properties).forEach(t=>{let n=e?`${e}.properties.${t}`:t;r.push(n)}),n.items?.properties&&Object.keys(n.items.properties).forEach(t=>{let n=`${e}.items.properties.${t}`;r.push(n)}),r}let k={formSchema:t,selectedFieldName:n,selectedNodeId:r,hoveredNodeId:i,draggable:e,dragon:f,isDragging:a,dragNodes:o,touchNode:s,closestNode:c,closestPosition:l,addField:p,updateFieldSchema:m,selectField:h,selectNode:_,getSelectedField:g,setHover:v,startDrag:x,updateDragPosition:S,drop:C,cancelDrag:w,moveField:T,insertField:E,getNodeSchema:D,findChildNodes:O};return y(J,k),k}function Te(e,t){let n={};return Object.entries(t.properties||{}).forEach(([t,r])=>{let i=r[`x-path`];if(i){let r=P(e,i);r!==void 0&&(n[t]=r)}}),n}function Ee(e,t,n){let r=JSON.parse(JSON.stringify(n));return Object.entries(t.properties||{}).forEach(([t,n])=>{let i=n[`x-path`];i&&e[t]!==void 0&&I(r,i,e[t])}),r}var Q=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},De=Q(c({__name:`HoverBox`,setup(e){let n=Y(),a=ye(n.hoveredNodeId),o=t(()=>!n.hoveredNodeId.value||!n.selectedNodeId.value?!1:n.hoveredNodeId.value===n.selectedNodeId.value),s=t(()=>{let e={position:`absolute`,top:0,left:0,boxSizing:`border-box`,pointerEvents:`none`,zIndex:2,visibility:`hidden`};return a.value&&!o.value&&(e.transform=`perspective(1px) translate3d(${a.value.x}px, ${a.value.y}px, 0)`,e.width=`${a.value.width}px`,e.height=`${a.value.height}px`,e.visibility=`visible`),e}),c=t(()=>a.value&&!o.value);return(e,t)=>c.value?(v(),i(`div`,{key:0,class:`hover-box`,style:g(s.value)},null,4)):r(``,!0)}}),[[`__scopeId`,`data-v-2759debe`]]),Oe=Q(c({__name:`Insertion`,setup(e){let n=Y(),a=t(()=>{if(!n.isDragging.value||!n.closestNode.value)return{display:`none`};let e=n.closestPosition.value,t=n.dragon.closestRect.value;if(!t)return{display:`none`};let r=e.toString().includes(`FORBID`),i={position:`absolute`,backgroundColor:r?`#ef4444`:`#3b82f6`,pointerEvents:`none`,zIndex:10,transition:`all 0.15s cubic-bezier(0.4, 0, 0.2, 1)`,boxShadow:r?`0 0 8px rgba(239, 68, 68, 0.5)`:`0 0 8px rgba(59, 130, 246, 0.5)`};switch(e){case Z.Before:case Z.ForbidBefore:Object.assign(i,{width:`2px`,height:`${t.height}px`,transform:`perspective(1px) translate3d(${t.x}px, ${t.y}px, 0)`});break;case Z.After:case Z.ForbidAfter:Object.assign(i,{width:`2px`,height:`${t.height}px`,transform:`perspective(1px) translate3d(${t.x+t.width-2}px, ${t.y}px, 0)`});break;case Z.Upper:case Z.ForbidUpper:Object.assign(i,{width:`${t.width}px`,height:`2px`,transform:`perspective(1px) translate3d(${t.x}px, ${t.y}px, 0)`});break;case Z.Under:case Z.ForbidUnder:Object.assign(i,{width:`${t.width}px`,height:`2px`,transform:`perspective(1px) translate3d(${t.x}px, ${t.y+t.height-2}px, 0)`});break;case Z.Inner:case Z.InnerBefore:case Z.InnerAfter:case Z.ForbidInner:case Z.ForbidInnerBefore:case Z.ForbidInnerAfter:Object.assign(i,{width:`${t.width}px`,height:`${t.height}px`,transform:`perspective(1px) translate3d(${t.x}px, ${t.y}px, 0)`,backgroundColor:`transparent`,border:r?`2px dashed #ef4444`:`2px dashed #3b82f6`});break;case Z.Forbid:return{display:`none`};default:return{display:`none`}}return i});return(e,t)=>O(n).draggable?(v(),i(`div`,{key:0,class:`insertion-indicator`,style:g(a.value)},null,4)):r(``,!0)}}),[[`__scopeId`,`data-v-9dbef644`]]),ke=Q(c({__name:`SelectionBox`,setup(e){let n=ye(Y().selectedNodeId),o=t(()=>{let e={position:`absolute`,top:0,left:0,boxSizing:`border-box`,pointerEvents:`none`,zIndex:4,visibility:`hidden`};return n.value&&(e.transform=`perspective(1px) translate3d(${n.value.x-2}px, ${n.value.y-2}px, 0)`,e.width=`${n.value.width+4}px`,e.height=`${n.value.height+4}px`,e.visibility=`visible`),e}),s=t(()=>n.value!==null);return(e,t)=>s.value?(v(),i(`div`,{key:0,class:`selection-box`,style:g(o.value)},[...t[0]||=[a(`div`,{class:`selection-box-inner`},null,-1)]],4)):r(``,!0)}}),[[`__scopeId`,`data-v-c58abee5`]]);const Ae={class:`aux-tool-widget`};var je=Q(c({__name:`AuxToolWidget`,setup(e){return(e,t)=>(v(),i(`div`,Ae,[s(De),s(ke),s(Oe)]))}}),[[`__scopeId`,`data-v-2d0e316d`]]);function Me(e,t){let n={...e?.[`x-component-props`]||{}};return t.basicSetter&&Object.entries(t.basicSetter).forEach(([t,r])=>{let i=r[`x-path`];if(i){let r=P(e,i);r!==void 0&&(n[t]=r)}}),t.componentSetter?.properties&&Object.entries(t.componentSetter.properties).forEach(([t,r])=>{let i=r[`x-path`];if(i){let r=P(e,i);r!==void 0&&(n[t]=r)}}),n}function Ne(e){if(e?.[`x-droppable`]===!1)return!1;let t=e.type;return(t===`object`||t===`void`||t===`array`)&&!!e.properties}function Pe(e){return e.type===`array`&&!!e.items}const Fe=[`data-node-id`,`draggable`],Ie={key:0,class:`empty-container-placeholder`},Le={key:0,class:`empty-container-placeholder`};var Re=Q(c({name:`CanvasField`,__name:`index`,props:{schema:{},fieldName:{},nodePath:{}},setup(o){let s=o,c=u(me)??{},l=Y(),d=t(()=>s.schema?.[`x-component`]),p=t(()=>s.nodePath?s.fieldName?s.nodePath?`${s.nodePath}.${s.fieldName}`:s.fieldName:s.nodePath:s.fieldName||``),g=t(()=>l.selectedNodeId.value===p.value),_=t(()=>!l.draggable||!s.fieldName?!1:g.value);function y(){return s.schema?.type===`array`?p.value?`${p.value}.items`:``:p.value?`${p.value}.properties`:``}let b=t(()=>{let e=s.schema;if(!e||e[`x-droppable`]===!1)return!1;let t=e.type===`object`||e.type===`void`,n=!e.properties||Object.keys(e.properties).length===0;return t&&n});function S(e){if(!_.value||!e.dataTransfer)return;let t={type:`move-component`,nodePath:p.value,fieldName:s.fieldName,schema:s.schema};e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`application/json`,JSON.stringify(t)),l.startDrag([{nodePath:p.value,fieldName:s.fieldName||``,schema:s.schema}])}function T(){l.cancelDrag()}return(t,o)=>{let l=C(`CanvasField`);return s.schema?(v(),i(`div`,{key:0,"data-node-id":p.value,class:m({"is-draggable":_.value,"is-selected":g.value}),draggable:_.value,onDragstart:S,onDragend:T},[d.value&&O(c)[d.value]?(v(),n(w(O(c)[d.value].component),h(f({key:0},O(Me)(s.schema,O(c)[d.value].setterSchema))),{default:A(()=>[b.value?(v(),i(`div`,Ie,[...o[0]||=[a(`svg`,{class:`placeholder-icon`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},[a(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,stroke:`currentColor`,"stroke-width":`2`}),a(`path`,{d:`M12 8v8M8 12h8`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})],-1),a(`span`,{class:`placeholder-text`},`添加组件到这里`,-1)]])):r(``,!0),O(Pe)(s.schema)?(v(),n(l,{key:1,schema:s.schema.items,"node-path":`${y()}`},null,8,[`schema`,`node-path`])):r(``,!0),O(Ne)(s.schema)?(v(!0),i(e,{key:2},x(Object.keys(s.schema?.properties||{}),e=>(v(),n(l,{key:e,schema:s.schema?.properties?.[e],"field-name":e,"node-path":y()},null,8,[`schema`,`field-name`,`node-path`]))),128)):r(``,!0)]),_:1},16)):(v(),i(e,{key:1},[b.value?(v(),i(`div`,Le,[...o[1]||=[a(`svg`,{class:`placeholder-icon`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},[a(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,stroke:`currentColor`,"stroke-width":`2`}),a(`path`,{d:`M12 8v8M8 12h8`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})],-1),a(`span`,{class:`placeholder-text`},`添加组件到这里`,-1)]])):r(``,!0),(v(!0),i(e,null,x(Object.keys(s.schema?.properties||{}),e=>(v(),n(l,{key:e,schema:s.schema?.properties?.[e],"field-name":e,"node-path":y()},null,8,[`schema`,`field-name`,`node-path`]))),128))],64))],42,Fe)):r(``,!0)}}}),[[`__scopeId`,`data-v-18008a74`]]);const ze={class:`canvas djd-design`};var Be=Q(c({__name:`canvas`,props:{components:{}},setup(e){y(me,e.components);let o=Y(),c=b(!1),l=t(()=>{let e=o.formSchema.value?.properties;return!e||Object.keys(e).length===0});function u(e){let t=e.target.closest(`[data-node-id]`);if(t){let e=t.getAttribute(`data-node-id`);e&&(console.log(e),o.selectNode(e))}else o.selectNode(null)}function d(e){let t=e.target.closest(`[data-node-id]`)?.getAttribute(`data-node-id`);if(o.setHover(t||null),o.isDragging.value){let n={x:e.clientX,y:e.clientY};o.updateDragPosition(n,t||void 0)}}function f(){o.setHover(null)}function p(e){if(!o.draggable||(e.preventDefault(),e.stopPropagation(),!e.dataTransfer))return;let t=o.dragNodes.value.length>0;e.dataTransfer.dropEffect=t?`move`:`copy`,c.value=!0,o.isDragging.value||o.startDrag([]);let n=e.target.closest(`[data-node-id]`)?.getAttribute(`data-node-id`),r={x:e.clientX,y:e.clientY};o.updateDragPosition(r,n||void 0)}function h(e){e.target.classList.contains(`canvas-content`)&&(c.value=!1)}function g(e){if(o.draggable&&(console.log(`[Canvas] handleDrop`),e.preventDefault(),e.stopPropagation(),c.value=!1,e.dataTransfer))try{let t=e.dataTransfer.getData(`application/json`);if(!t)return;let n=JSON.parse(t);console.log(`dragData`,n),n.type===`new-component`?_(n):n.type===`move-component`&&x()}catch(e){console.error(`解析拖拽数据失败:`,e)}}function _(e){let{componentKey:t,defaultSchema:n}=e;if(!n){console.warn(`组件缺少 defaultSchema:`,t);return}let r=`f_${M()}`,i=o.closestNode.value,a=o.closestPosition.value;i?o.insertField(i,r,n,a):o.addField(r,n),o.selectNode(r),o.cancelDrag()}function x(){o.drop()}return(e,t)=>(v(),i(`div`,ze,[a(`div`,{class:m([`canvas-content`,{"drag-over":c.value,empty:l.value}]),onClick:u,onMousemove:d,onMouseleave:f,onDragover:p,onDragleave:h,onDrop:g},[O(o).formSchema.value?(v(),n(Re,{key:0,schema:O(o).formSchema.value},null,8,[`schema`])):r(``,!0),s(je)],34)]))}}),[[`__scopeId`,`data-v-b174a160`]]);function Ve(e,t){let n=t.getSelectedField();return ae({values:n?Te(n,e):{},effects(){oe(n=>{let r=t.getSelectedField(),i=t.selectedFieldName.value;if(!r||!i)return;let a=Ee(n.values,e,r);t.updateFieldSchema(i,a)})}})}function He(){return{source:``,property:`value`,name:``,type:`any`}}function Ue(e){return!e?.dependencies||!Array.isArray(e.dependencies)?[]:e.dependencies.map(e=>({source:e?.source||``,property:e?.property||`value`,name:e?.name||``,type:e?.type||`any`}))}function We(e){return e?.fulfill?.state?Object.entries(e.fulfill.state).map(([e,t])=>({state:e,expression:String(t).replace(/^\{\{|\}\}$/g,``).trim()})):[]}function Ge(){let e=b([]),t=b([]);function n(n){e.value=Ue(n),t.value=We(n)}function r(){e.value.push(He())}function i(t){e.value.splice(t,1)}function a(e){!e.name&&e.source&&(e.name=`${e.source.split(`.`).pop()||e.source}_${e.property}`)}function o(){t.value.push({state:`visible`,expression:``})}function s(e){t.value.splice(e,1)}function c(){let n={};return e.value.length>0&&(n.dependencies=e.value.filter(e=>e.source).map(e=>({source:e.source,property:e.property,name:e.name,type:e.type}))),t.value.length>0&&(n.fulfill={state:{}},t.value.forEach(e=>{e.state&&e.expression&&(n.fulfill.state[e.state]=`{{${e.expression}}}`)})),n}return{dependencies:e,stateRules:t,loadAdvancedConfig:n,addDependency:r,removeDependency:i,handleFieldChange:a,addStateRule:o,removeStateRule:s,buildAdvancedReactions:c}}function Ke(e,t){let n=t.split(`.`),r=e;for(let e of n){if(!r)return;if(!(e===`properties`&&r.properties))if(e===`items`&&r.items)r=r.items;else if(r.properties&&r.properties[e])r=r.properties[e];else return}return r}function qe(e,t){let n=t.split(`.`),r=``,i=``,a=0;for(let t=0;t<n.length;t++){let o=n[t];r=r?`${r}.${o}`:o;let s=Ke(e,r);s?.type===`array`&&s.items&&(i=`${r}.items.properties`,a=n.length-t-1,n[t+1]===`items`&&t++,n[t+1]===`properties`&&t++)}return i?{scopePath:i,depth:a}:null}function Je(e,t,n=``){if(!e)return[];let r=[];return Object.entries(e).forEach(([e,i])=>{let a=n?`${n}.${e}`:e,o=i.title||e;if(t&&(a===t||a.startsWith(`${t}.`))||i.type===`array`)return;let s=i.type===`object`||i.type===`void`,c={value:a,label:`${o} (${e})`,disabled:s,children:void 0};if(i.properties){let e=Je(i.properties,t,a);e.length>0&&(c.children=e)}r.push(c)}),r}function Ye(e,t,n,r=``){if(!e)return[];let i=[];return Object.entries(e).forEach(([e,a])=>{let o=r?`${r}.${e}`:e,s=a.title||e;if(t&&(o===t||o.startsWith(`${t}.`)))return;let c=`${n}${o}`,l=a.type===`object`||a.type===`void`,u={value:c,label:`${s} (${e})`,disabled:l,children:void 0};if(a.properties){let e=Ye(a.properties,t,n,o);e.length>0&&(u.children=e)}i.push(u)}),i}function Xe(e,t,n=``){if(!e)return[];let r=[];return Object.entries(e).forEach(([e,i])=>{let a=n?`${n}.${e}`:e,o=i.title||e;if(t&&(a===t||a.startsWith(`${t}.`)))return;let s={value:a,label:`${o} (${e})`,children:void 0};if(i.properties){let e=Xe(i.properties,t,a);e.length>0&&(s.children=e)}r.push(s)}),r}function Ze(e,n,r){return{fieldTree:t(()=>{let t=O(e),i=O(n),a=O(r)||{};if(!t)return[];if(a.isArrayMode&&i){let e=qe(t,i);if(e){let n=Ke(t,e.scopePath);if(n){let t=`${e.scopePath}.`,r=i.startsWith(t)?i.slice(t.length):i,a=Math.ceil(r.split(`.`).length/2);console.log(`depth`,a,r);let o=`${`.`.repeat(a)}.[].`;return Ye(n.properties,r,o)}}return[]}return a.filterArrayFields?Je(t.properties,i):Xe(t.properties,i)}),isInArray:t(()=>O(n)?.includes(`.items.properties.`))}}function Qe(e){return String(e??``).replace(/^\{\{|\}\}$/g,``).trim()}function $e(e){let t=e.trim();for(;t.startsWith(`(`)&&t.endsWith(`)`);){let e=0,n=!0;for(let r=0;r<t.length;r++)if(t[r]===`(`?e++:t[r]===`)`&&e--,e===0&&r<t.length-1){n=!1;break}if(n)t=t.slice(1,-1).trim();else break}return t}function $(e){let t=e.trim().replace(/^\(|\)$/g,``).trim();try{let e=JSON.parse(t);return typeof e==`string`?e:String(e)}catch{return t.replace(/^['"]|['"]$/g,``)}}function et(e,t){let n=$e(e),r=n.match(/^\$deps\.([a-zA-Z0-9_]+)\s*===\s*(.+)$/);if(r){let[,e,n]=r,i=t.get(e);return i?{field:i,operator:`eq`,value:$(n)}:null}let i=n.match(/^\$deps\.([a-zA-Z0-9_]+)\s*!==\s*(.+)$/);if(i){let[,e,n]=i,r=t.get(e);return r?{field:r,operator:`neq`,value:$(n)}:null}let a=n.match(/^Array\.isArray\(\s*\$deps\.([a-zA-Z0-9_]+)\s*\)\s*&&\s*\$deps\.\1\.includes\((.+)\)$/);if(a){let[,e,n]=a,r=t.get(e);return r?{field:r,operator:`includes`,value:$(n)}:null}let o=n.match(/^Array\.isArray\(\s*\$deps\.([a-zA-Z0-9_]+)\s*\)\s*&&\s*!\s*\$deps\.\1\.includes\((.+)\)$/);if(o){let[,e,n]=o,r=t.get(e);return r?{field:r,operator:`notIncludes`,value:$(n)}:null}return null}function tt(e){let t=[],n=0,r=``,i=0;for(;i<e.length;){let a=e[i];if(a===`(`?n++:a===`)`&&(n=Math.max(0,n-1)),n===0){let n=e.slice(i,i+2);if(n===`&&`||n===`||`){t.push({expression:r.trim(),connector:n}),r=``,i+=2;continue}}r+=a,i++}return r.trim()&&t.push({expression:r.trim()}),t}function nt(e){if(!e?.fulfill?.state?.visible||!Array.isArray(e.dependencies))return null;let t=Qe(e.fulfill.state.visible);if(!t)return null;let n=new Map;if(e.dependencies.forEach(e=>{e?.name&&e?.source&&e?.property===`value`&&n.set(e.name,e.source)}),n.size===0)return null;let r=et(t,n);if(r)return[{...r,connector:void 0}];let i=tt(t);if(!i.length)return null;let a=[];for(let e=0;e<i.length;e++){let t=i[e],r=et(t.expression,n);if(!r)return null;a.push({...r,connector:t.connector?t.connector===`||`?`or`:`and`:void 0})}return a.length&&(a[a.length-1].connector=void 0),a.length?a:null}function rt(e){let t=(e??``).toString().trim();if(!t)return``;try{return JSON.parse(t)}catch{return t.replace(/^['"]|['"]$/g,``)}}function it(e){let t=rt(e);return JSON.stringify(t)}function at(e,t,n){if(t.has(e))return t.get(e);let r=`${e.split(`.`).pop()||e}_value`,i=r,a=1;for(;n.has(i);)i=`${r}_${a}`,a++;return t.set(e,i),n.add(i),i}function ot(e){let t=e.map((t,n)=>({...t,connector:n<e.length-1?t.connector||`and`:void 0})).filter(e=>e.field&&e.value!==``);if(!t.length)return null;let n=[],r=new Map,i=new Set,a=[];return t.forEach(e=>{let t=at(e.field,r,i);n.find(n=>n.source===e.field&&n.name===t)||n.push({source:e.field,property:`value`,name:t,type:`any`});let o=`$deps.${t}`,s=it(e.value),c=``;switch(e.operator){case`eq`:c=`${o} === ${s}`;break;case`neq`:c=`${o} !== ${s}`;break;case`includes`:c=`Array.isArray(${o}) && ${o}.includes(${s})`;break;case`notIncludes`:c=`Array.isArray(${o}) && !${o}.includes(${s})`;break}a.push(`(${c})`)}),{dependencies:n,fulfill:{state:{visible:`{{${a.reduce((e,n,r)=>r===0?n:`${e} ${t[r-1].connector===`or`?`||`:`&&`} ${n}`,``)}}}`}}}}function st(e){return e.includes(`[]`)||e.startsWith(`.`)}function ct(){return{field:``,operator:`eq`,value:``,connector:void 0,isArrayMode:!1}}function lt(){let e=b([ct()]);function t(){e.value=[ct()]}function n(){if(e.value.length>0){let t=e.value[e.value.length-1];t.connector||=`and`}e.value.push(ct())}function r(n){if(e.value.splice(n,1),!e.value.length){t();return}n>0&&n===e.value.length&&(e.value[n-1].connector=void 0)}function i(n){let r=nt(n);return r?(e.value=r.map(e=>({...e,isArrayMode:st(e.field)})),!0):(t(),!1)}return{simpleConditions:e,addSimpleCondition:n,removeSimpleCondition:r,resetSimpleConditions:t,loadSimpleConditions:i,buildSimpleReactions:()=>ot(e.value)}}const ut=[{label:`显示/隐藏 (visible)`,value:`visible`},{label:`禁用 (disabled)`,value:`disabled`},{label:`只读 (readOnly)`,value:`readOnly`},{label:`值 (value)`,value:`value`},{label:`显示模式 (display)`,value:`display`},{label:`模式 (pattern)`,value:`pattern`},{label:`必填 (required)`,value:`required`},{label:`标题 (title)`,value:`title`},{label:`描述 (description)`,value:`description`}],dt=[{label:`值 (value)`,value:`value`},{label:`显示模式 (display)`,value:`display`},{label:`模式 (pattern)`,value:`pattern`},{label:`初始值 (initialValue)`,value:`initialValue`},{label:`错误信息 (errors)`,value:`errors`},{label:`验证状态 (valid)`,value:`valid`}],ft=[{label:`任意类型 (any)`,value:`any`},{label:`字符串 (string)`,value:`string`},{label:`数字 (number)`,value:`number`},{label:`布尔值 (boolean)`,value:`boolean`},{label:`数组 (array)`,value:`array`},{label:`对象 (object)`,value:`object`}],pt=[{label:`等于`,value:`eq`},{label:`不等于`,value:`neq`},{label:`包含`,value:`includes`},{label:`不包含`,value:`notIncludes`}],mt={class:`reactions-editor`},ht={class:`section`},gt={class:`section-header`},_t={key:0,class:`empty-tip`},vt={key:1,class:`simple-condition-list`},yt={class:`simple-condition-item`},bt={class:`simple-condition-header`},xt={class:`simple-condition-index`},St={class:`field-select-row`},Ct={class:`array-mode-switch`},wt={key:0,class:`simple-connector`},Tt={class:`section`},Et={class:`section-header`},Dt={key:0,class:`empty-tip`},Ot={key:1,class:`dependency-list`},kt={class:`dependency-header`},At={class:`dependency-index`},jt={class:`section`},Mt={class:`section-header`},Nt={key:0,class:`empty-tip`},Pt={key:1,class:`state-rule-list`},Ft={class:`state-rule-header`},It={class:`state-rule-index`};var Lt=Q(c({__name:`ReactionsEditor`,props:{modelValue:{type:Boolean},schema:{},currentFieldName:{},initialReactions:{}},emits:[`update:modelValue`,`save`],setup(c,{emit:l}){let u=c,d=l,f=t({get:()=>u.modelValue,set:e=>d(`update:modelValue`,e)}),p=b(`simple`),m=t(()=>({filterArrayFields:!0})),{fieldTree:h,isInArray:g}=Ze(D(u,`schema`),D(u,`currentFieldName`),m),_=t(()=>({isArrayMode:!0})),{fieldTree:y}=Ze(D(u,`schema`),D(u,`currentFieldName`),_);function S(e){return e?y.value:h.value}function w(e){e.field=``}let{dependencies:T,stateRules:k,loadAdvancedConfig:j,addDependency:M,removeDependency:N,handleFieldChange:P,addStateRule:F,removeStateRule:I,buildAdvancedReactions:L}=Ge(),{simpleConditions:R,addSimpleCondition:z,removeSimpleCondition:B,resetSimpleConditions:V,loadSimpleConditions:H,buildSimpleReactions:U}=lt();function W(){let e=u.initialReactions;if(j(e),!e){V(),p.value=`simple`;return}p.value=H(e)?`simple`:`advanced`}function ee(){W()}function G(){d(`save`,(p.value===`simple`?U():L())||{}),f.value=!1}function te(){f.value=!1}return(t,c)=>{let l=C(`ElButton`),u=C(`ElTreeSelect`),d=C(`ElSwitch`),m=C(`ElTooltip`),_=C(`ElFormItem`),y=C(`ElOption`),b=C(`ElSelect`),D=C(`ElInput`),j=C(`ElForm`),L=C(`ElRadioButton`),V=C(`ElRadioGroup`),H=C(`ElTabPane`),U=C(`ElTabs`),W=C(`ElDialog`);return v(),n(W,{modelValue:f.value,"onUpdate:modelValue":c[1]||=e=>f.value=e,title:`条件渲染配置`,width:`800px`,onOpen:ee},{footer:A(()=>[s(l,{onClick:te},{default:A(()=>[...c[15]||=[o(` 取消 `,-1)]]),_:1}),s(l,{type:`primary`,onClick:G},{default:A(()=>[...c[16]||=[o(` 保存 `,-1)]]),_:1})]),default:A(()=>[a(`div`,mt,[s(U,{modelValue:p.value,"onUpdate:modelValue":c[0]||=e=>p.value=e},{default:A(()=>[s(H,{label:`简单配置`,name:`simple`},{default:A(()=>[a(`div`,ht,[a(`div`,gt,[c[3]||=a(`span`,{class:`section-title`},`条件组合`,-1),s(l,{size:`small`,type:`primary`,onClick:O(z)},{default:A(()=>[...c[2]||=[o(` 添加条件 `,-1)]]),_:1},8,[`onClick`])]),O(R).length===0?(v(),i(`div`,_t,` 暂无条件,点击"添加条件"按钮添加 `)):(v(),i(`div`,vt,[(v(!0),i(e,null,x(O(R),(t,f)=>(v(),i(e,{key:f},[a(`div`,yt,[a(`div`,bt,[a(`span`,xt,`条件 `+E(f+1),1),s(l,{size:`small`,type:`danger`,text:``,onClick:e=>O(B)(f)},{default:A(()=>[...c[4]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]),s(j,{"label-width":`80px`},{default:A(()=>[s(_,{label:`字段`},{default:A(()=>[a(`div`,St,[s(u,{modelValue:t.field,"onUpdate:modelValue":e=>t.field=e,data:S(t.isArrayMode),placeholder:`选择依赖的字段`,clearable:``,"check-strictly":``,"render-after-expand":!1,class:`field-select`},null,8,[`modelValue`,`onUpdate:modelValue`,`data`]),O(g)?(v(),n(m,{key:0,content:`开启后可选择当前数组内的字段(相对路径)`,placement:`top`},{default:A(()=>[a(`div`,Ct,[c[5]||=a(`span`,{class:`array-mode-label`},`数组内`,-1),s(d,{modelValue:t.isArrayMode,"onUpdate:modelValue":e=>t.isArrayMode=e,size:`small`,onChange:e=>w(t)},null,8,[`modelValue`,`onUpdate:modelValue`,`onChange`])])]),_:2},1024)):r(``,!0)])]),_:2},1024),s(_,{label:`操作`},{default:A(()=>[s(b,{modelValue:t.operator,"onUpdate:modelValue":e=>t.operator=e,placeholder:`选择操作`},{default:A(()=>[(v(!0),i(e,null,x(O(pt),e=>(v(),n(y,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1024),s(_,{label:`值`},{default:A(()=>[s(D,{modelValue:t.value,"onUpdate:modelValue":e=>t.value=e,placeholder:`输入匹配值`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1024)]),_:2},1024)]),f<O(R).length-1?(v(),i(`div`,wt,[s(V,{modelValue:t.connector,"onUpdate:modelValue":e=>t.connector=e,size:`small`},{default:A(()=>[s(L,{label:`and`},{default:A(()=>[...c[6]||=[o(` 与 `,-1)]]),_:1}),s(L,{label:`or`},{default:A(()=>[...c[7]||=[o(` 或 `,-1)]]),_:1})]),_:1},8,[`modelValue`,`onUpdate:modelValue`])])):r(``,!0)],64))),128))]))])]),_:1}),s(H,{label:`高级配置`,name:`advanced`},{default:A(()=>[a(`div`,Tt,[a(`div`,Et,[c[9]||=a(`span`,{class:`section-title`},`依赖字段`,-1),s(l,{size:`small`,type:`primary`,onClick:O(M)},{default:A(()=>[...c[8]||=[o(` 添加依赖 `,-1)]]),_:1},8,[`onClick`])]),O(T).length===0?(v(),i(`div`,Dt,` 暂无依赖字段,点击"添加依赖"按钮添加 `)):(v(),i(`div`,Ot,[(v(!0),i(e,null,x(O(T),(t,r)=>(v(),i(`div`,{key:r,class:`dependency-item`},[a(`div`,kt,[a(`span`,At,`依赖 `+E(r+1),1),s(l,{size:`small`,type:`danger`,text:``,onClick:e=>O(N)(r)},{default:A(()=>[...c[10]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]),s(j,{"label-width":`80px`},{default:A(()=>[s(_,{label:`字段`},{default:A(()=>[s(u,{modelValue:t.source,"onUpdate:modelValue":e=>t.source=e,data:O(h),placeholder:`选择依赖的字段`,clearable:``,"check-strictly":``,"render-after-expand":!1,onChange:e=>O(P)(t)},null,8,[`modelValue`,`onUpdate:modelValue`,`data`,`onChange`])]),_:2},1024),s(_,{label:`属性`},{default:A(()=>[s(b,{modelValue:t.property,"onUpdate:modelValue":e=>t.property=e,placeholder:`选择属性`,onChange:e=>O(P)(t)},{default:A(()=>[(v(!0),i(e,null,x(O(dt),e=>(v(),n(y,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`onUpdate:modelValue`,`onChange`])]),_:2},1024),s(_,{label:`变量名`},{default:A(()=>[s(D,{modelValue:t.name,"onUpdate:modelValue":e=>t.name=e,placeholder:`在表达式中使用的变量名`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1024),s(_,{label:`类型`},{default:A(()=>[s(b,{modelValue:t.type,"onUpdate:modelValue":e=>t.type=e,placeholder:`选择类型`},{default:A(()=>[(v(!0),i(e,null,x(O(ft),e=>(v(),n(y,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1024)]),_:2},1024)]))),128))]))]),a(`div`,jt,[a(`div`,Mt,[c[12]||=a(`span`,{class:`section-title`},`状态控制`,-1),s(l,{size:`small`,type:`primary`,onClick:O(F)},{default:A(()=>[...c[11]||=[o(` 添加规则 `,-1)]]),_:1},8,[`onClick`])]),O(k).length===0?(v(),i(`div`,Nt,` 暂无状态规则,点击"添加规则"按钮添加 `)):(v(),i(`div`,Pt,[(v(!0),i(e,null,x(O(k),(t,r)=>(v(),i(`div`,{key:r,class:`state-rule-item`},[a(`div`,Ft,[a(`span`,It,`规则 `+E(r+1),1),s(l,{size:`small`,type:`danger`,text:``,onClick:e=>O(I)(r)},{default:A(()=>[...c[13]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]),s(j,{"label-width":`80px`},{default:A(()=>[s(_,{label:`状态属性`},{default:A(()=>[s(b,{modelValue:t.state,"onUpdate:modelValue":e=>t.state=e,placeholder:`选择要控制的状态`},{default:A(()=>[(v(!0),i(e,null,x(O(ut),e=>(v(),n(y,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1024),s(_,{label:`表达式`},{default:A(()=>[s(D,{modelValue:t.expression,"onUpdate:modelValue":e=>t.expression=e,type:`textarea`,rows:2,placeholder:`输入 JS 表达式,如:$deps.username_value === '123'`},null,8,[`modelValue`,`onUpdate:modelValue`]),c[14]||=a(`div`,{class:`expression-tip`},` 使用 $deps.变量名 访问依赖字段的值 `,-1)]),_:2},1024)]),_:2},1024)]))),128))]))])]),_:1})]),_:1},8,[`modelValue`])])]),_:1},8,[`modelValue`])}}}),[[`__scopeId`,`data-v-6b415c60`]]);const Rt={class:`config-panel`},zt={key:0,class:`config-empty`},Bt={key:1,class:`config-content`},Vt={class:`config-title`};var Ht=Q(c({__name:`index`,props:{components:{}},setup(e){let c=e,l=Y(),{SchemaField:u}=ne({components:{FormItem:z,Input:B,InputNumber:V,Checkbox:R,Radio:H,Switch:ee,Select:U,Space:W,ArrayItems:L}}),d=T(null),f=t(()=>l.getSelectedField()),p=t(()=>f.value?f.value[`x-component`]:null),m=t(()=>{let e=p.value;return e?c.components[e]?.setterSchema:null}),h=t(()=>{if(!m.value)return null;let e=m.value.basicSetter;return!e||Object.keys(e).length===0?null:{type:`object`,properties:e}}),g=t(()=>{if(!m.value)return null;let e=m.value.componentSetter;return!e||!e.properties||Object.keys(e.properties).length===0?null:e}),_=t(()=>{if(!m.value)return null;let e=m.value.basicSetter||{},t=m.value.componentSetter?.properties||{};return{type:`object`,properties:{...e,...t}}});k(()=>l.selectedFieldName.value,()=>{f.value&&_.value?d.value=Ve(_.value,l):d.value=null},{immediate:!0});let y=T([`base`,`operate`,`component`]),x=t(()=>l.selectedFieldName.value||`empty`),S=b(!1);function w(){S.value=!0}function D(e){let t=l.selectedFieldName.value;if(!t)return;let n=l.getSelectedField();if(!n)return;let r={...n,"x-reactions":Object.keys(e).length>0?e:void 0};l.updateFieldSchema(t,r)}return(e,t)=>{let c=C(`ElCollapseItem`),m=C(`ElButton`),_=C(`ElCollapse`);return v(),i(`div`,Rt,[f.value?(v(),i(`div`,Bt,[a(`h3`,Vt,E(p.value)+` 配置 `,1),d.value?(v(),n(O(G),{key:x.value,form:d.value},{default:A(()=>[s(_,{modelValue:y.value,"onUpdate:modelValue":t[0]||=e=>y.value=e,class:`config-section`},{default:A(()=>[h.value?(v(),n(c,{key:0,name:`base`,title:`基本配置`},{default:A(()=>[s(O(u),{schema:h.value},null,8,[`schema`])]),_:1})):r(``,!0),s(c,{name:`operate`,title:`操作配置`},{default:A(()=>[a(`div`,null,[s(m,{type:`primary`,onClick:w},{default:A(()=>[...t[3]||=[o(` 条件渲染 `,-1)]]),_:1})])]),_:1}),g.value?(v(),n(c,{key:1,name:`component`,title:`组件配置`},{default:A(()=>[s(O(u),{schema:g.value},null,8,[`schema`])]),_:1})):r(``,!0)]),_:1},8,[`modelValue`])]),_:1},8,[`form`])):r(``,!0),s(O(Lt),{modelValue:S.value,"onUpdate:modelValue":t[1]||=e=>S.value=e,schema:O(l).formSchema.value,"current-field-name":O(l).selectedFieldName.value,"initial-reactions":f.value?.[`x-reactions`],onSave:D},null,8,[`modelValue`,`schema`,`current-field-name`,`initial-reactions`])])):(v(),i(`div`,zt,[...t[2]||=[a(`p`,null,`请选择一个字段`,-1)]]))])}}}),[[`__scopeId`,`data-v-66ec4854`]]);const Ut={class:`material-panel`},Wt={class:`panel-content`},Gt={class:`category-title`},Kt={class:`component-grid`},qt=[`onClick`,`onDragstart`],Jt={class:`component-icon`},Yt={class:`component-name`},Xt={key:0,class:`component-desc`};var Zt=Q(c({__name:`materialPanel`,props:{components:{}},setup(n){let o=n,s=u(_e,null),c=t(()=>{let e={};return Object.entries(o.components).forEach(([t,n])=>{if(n.config?.hidden===!0)return;let r=n.config?.category||`其他`;e[r]||(e[r]=[]),e[r].push({key:t,component:n})}),e});function l(e,t,n){if(!e.dataTransfer)return;let r={type:`new-component`,componentKey:t,componentName:n.config.name,defaultSchema:n.defaultSchema};e.dataTransfer.effectAllowed=`copy`,e.dataTransfer.setData(`application/json`,JSON.stringify(r));let i=e.target;e.dataTransfer.setDragImage(i,10,10),setTimeout(()=>{s?.switchToTreeTab()},100)}function d(e){let t=e.target;t.style.opacity=`1`}function f(e){console.log(`点击组件:`,e)}return(t,n)=>(v(),i(`div`,Ut,[n[0]||=a(`div`,{class:`panel-header`},[a(`h3`,null,`组件库`)],-1),a(`div`,Wt,[(v(!0),i(e,null,x(c.value,(t,n)=>(v(),i(`div`,{key:n,class:`category-group`},[a(`div`,Gt,E(n),1),a(`div`,Kt,[(v(!0),i(e,null,x(t,({key:e,component:t})=>(v(),i(`div`,{key:e,class:`component-item`,draggable:`true`,onClick:t=>f(e),onDragstart:n=>l(n,e,t),onDragend:d},[a(`div`,Jt,E(t.config?.icon?.slice(0,3)),1),a(`div`,Yt,E(t.config?.name||e),1),t.config?.description?(v(),i(`div`,Xt,E(t.config.description),1)):r(``,!0)],40,qt))),128))])]))),128))])]))}}),[[`__scopeId`,`data-v-93609a69`]]);const Qt={key:0,class:`clipboard-paste-section`},$t={class:`component-picker-content`},en={class:`picker-category-title`},tn={class:`picker-component-grid`},nn=[`onClick`],rn={class:`picker-component-icon`},an={class:`picker-component-name`};var on=Q(c({__name:`ComponentPicker`,props:{visible:{type:Boolean},groupedComponents:{}},emits:[`update:visible`,`select`,`pasteSchema`],setup(t,{emit:c}){let l=t,u=c,d=b(null);async function f(){d.value=null;try{let e=await navigator.clipboard.readText();if(!e)return;let t=JSON.parse(e);t&&typeof t==`object`&&t[`x-component`]&&(d.value=t)}catch{}}function p(){d.value&&(u(`pasteSchema`,d.value),u(`update:visible`,!1))}return k(()=>l.visible,e=>{e&&f()}),(t,c)=>{let f=C(`ElButton`),m=C(`ElDialog`);return v(),n(m,{"model-value":l.visible,title:`选择组件`,width:`600px`,"close-on-click-modal":!1,"onUpdate:modelValue":c[0]||=e=>u(`update:visible`,e)},{default:A(()=>[d.value?(v(),i(`div`,Qt,[s(f,{type:`primary`,onClick:p},{default:A(()=>[o(` 从剪切板粘贴 (`+E(d.value[`x-component`])+`) `,1)]),_:1})])):r(``,!0),a(`div`,$t,[(v(!0),i(e,null,x(l.groupedComponents,(t,n)=>(v(),i(`div`,{key:n,class:`picker-category-group`},[a(`div`,en,E(n),1),a(`div`,tn,[(v(!0),i(e,null,x(t,({key:e,component:t})=>(v(),i(`div`,{key:e,class:`picker-component-item`,onClick:n=>u(`select`,e,t)},[a(`div`,rn,E(t.config?.icon?.slice(0,3)),1),a(`div`,an,E(t.config?.name||e),1)],8,nn))),128))])]))),128))])]),_:1},8,[`model-value`])}}}),[[`__scopeId`,`data-v-2f266708`]]);const sn={class:`context-menu`},cn={key:0,class:`menu-divider`},ln=[`onClick`];var un=Q(c({__name:`ContextMenu`,props:{visible:{type:Boolean},virtualRef:{},menuItems:{}},emits:[`update:visible`,`select`],setup(t,{emit:r}){let o=t,c=r;return(t,r)=>{let l=C(`ElIcon`),u=C(`ElPopover`);return v(),n(u,{visible:o.visible,"virtual-ref":o.virtualRef,"virtual-triggering":``,"show-arrow":!1,"popper-class":`schema-tree-context-menu`,placement:`bottom-start`,offset:6,"onUpdate:visible":r[0]||=e=>c(`update:visible`,e)},{default:A(()=>[a(`div`,sn,[(v(!0),i(e,null,x(o.menuItems,(t,r)=>(v(),i(e,{key:r},[t===`divider`?(v(),i(`div`,cn)):(v(),i(`div`,{key:1,class:`menu-item`,onClick:e=>c(`select`,t.type)},[s(l,null,{default:A(()=>[(v(),n(w(t.icon)))]),_:2},1024),a(`span`,null,E(t.label),1)],8,ln))],64))),128))])]),_:1},8,[`visible`,`virtual-ref`])}}}),[[`__scopeId`,`data-v-1ef29c4a`]]);function dn(){let e=b(!1),n=b(null),r=b(`node`),i=b(null),a=b(null),o=t(()=>{if(r.value===`empty`)return[{type:`insertRoot`,label:`插入组件`,icon:q}];let e=n.value;if(!e)return[];let t=[{type:`copy`,label:`复制`,icon:ce},{type:`copyTemplate`,label:`复制模板`,icon:ce},{type:`delete`,label:`删除`,icon:le},`divider`,{type:`moveUp`,label:`上移`,icon:fe},{type:`moveDown`,label:`下移`,icon:se},`divider`,{type:`insertBefore`,label:`上方插入`,icon:q},{type:`insertAfter`,label:`下方插入`,icon:q}];return e.isContainer&&t.push({type:`insertInner`,label:`插入内部`,icon:ue}),t}),s=e=>{let t=new DOMRect(e.clientX,e.clientY,0,0);i.value={getBoundingClientRect:()=>t,contextElement:document.body}},c=()=>{a.value&&=(document.removeEventListener(`click`,a.value),null)},l=()=>{e.value=!1,c()},u=()=>{c();let e=()=>{l()};a.value=e,document.addEventListener(`click`,e)},d=(t,i,a)=>{t.preventDefault(),t.stopPropagation(),r.value=i,n.value=a,s(t),e.value=!0,setTimeout(()=>{u()},0)};return _(()=>{c()}),{contextMenuVisible:e,contextMenuNode:n,contextMenuMode:r,contextMenuVirtualRef:i,menuItems:o,handleEmptyContextMenu:e=>{d(e,`empty`,null)},handleNodeContextMenu:(e,t)=>{d(e,`node`,t)},closeContextMenu:l}}function fn(e){return JSON.parse(JSON.stringify(e))}function pn(e){return e.split(`.`).filter(e=>e!==`properties`&&e!==`items`)}function mn(e,t,n){let r=pn(t),i=[...r.slice(0,-1),n],a=new Map,o=(e,t,n)=>{let r=fn(e);if(a.set(t.join(`.`),n.join(`.`)),e.properties&&typeof e.properties==`object`){let i={};Object.entries(e.properties).forEach(([e,r])=>{let a=`f_${M()}`;i[a]=o(r,[...t,e],[...n,a])}),r.properties=i}return e.items&&typeof e.items==`object`&&(r.items=o(e.items,[...t,`items`],[...n,`items`])),r},s=e=>{if(a.has(e))return a.get(e)||null;for(let[t,n]of a.entries())if(e.startsWith(`${t}.`))return`${n}${e.slice(t.length)}`;return null},c=e=>{if(!e||typeof e!=`object`)return;let t=e[`x-reactions`];t&&Array.isArray(t.dependencies)&&(t.dependencies=t.dependencies.map(e=>{if(e&&typeof e.source==`string`){let t=s(e.source);if(t)return{...e,source:t}}return e}),e[`x-reactions`]=t),e.properties&&Object.values(e.properties).forEach(e=>c(e)),e.items&&c(e.items)},l=o(e,r,i);return c(l),l}function hn(e){return e[`x-droppable`]===!1?!1:!![`object`,`void`,`array`].includes(e.type)}function gn(e,t=``){let n=[];return!e||typeof e!=`object`?n:(e.properties&&typeof e.properties==`object`&&Object.entries(e.properties).forEach(([e,r])=>{let i=t?`${t}.properties.${e}`:e,a=r[`x-component`]||`Unknown`,o=r.title||e,s={path:i,label:o,title:o,component:a,isContainer:hn(r),children:gn(r,i)};n.push(s)}),e.items?.properties&&Object.entries(e.items.properties).forEach(([e,r])=>{let i=`${t}.items.properties.${e}`,a=r[`x-component`]||`Unknown`,o=r.title||e,s={path:i,label:o,title:o,component:a,isContainer:hn(r),children:gn(r,i)};n.push(s)}),n)}function _n(e){let t=[];return e.forEach(e=>{t.push(e.path),e.children&&e.children.length>0&&t.push(..._n(e.children))}),t}function vn(e,t){let n=t.getBoundingClientRect(),r=e.clientY-n.top,i=n.height*.2;return r<i?`before`:r>n.height-i?`after`:`inner`}function yn(e,t,n){let r=document.elementFromPoint(t,n)?.closest(`.el-tree-node`);if(!r)return null;let i=r.querySelector(`.el-tree-node__content`);if(!i)return null;let a=(e,t)=>{for(let n of e){if(n.path===t)return n;if(n.children){let e=a(n.children,t);if(e)return e}}return null},o=r.getAttribute(`data-path`)||i.getAttribute(`data-path`);if(o){let t=a(e,o);if(t)return{element:r,data:t}}let s=document.querySelectorAll(`.el-tree-node`),c=Array.from(s).indexOf(r);return c>=0&&c<e.length?{element:r,data:e[c]}:null}function bn(e){let{components:n,contextMenuNode:r,closeContextMenu:i,treeData:a,expandAll:o,store:s}=e,c=b(!1),l=b(null),u=t(()=>{let e={};return Object.entries(n||{}).forEach(([t,n])=>{if(n.config?.hidden===!0)return;let r=n.config?.category||`其他`;e[r]||(e[r]=[]),e[r].push({key:t,component:n})}),e}),d=(e,t,n)=>{let{defaultSchema:r}=e,i=`f_${M()}`,a;a=n===`inner`?Z.Inner:n===`before`?Z.Before:Z.After,s.insertField(t.path,i,r,a),p(()=>{let e;if(n===`inner`)e=s.getNodeSchema(t.path)?.type===`array`?`${t.path}.items.properties.${i}`:`${t.path}.properties.${i}`;else{let n=t.path.split(`.`).slice(0,-1).join(`.`);e=n?`${n}.${i}`:i}s.selectNode(e),o()})},f=e=>{let{defaultSchema:t}=e,n=`f_${M()}`;s.addField(n,t),s.selectNode(n),p(()=>{o()})},m=(e,t)=>{l.value={targetNode:e,position:t},c.value=!0},h=(e,t)=>{if(!l.value)return;let{targetNode:n,position:r}=l.value,i={componentKey:e,defaultSchema:JSON.parse(JSON.stringify(t.defaultSchema))};r===`root`?f(i):n&&d(i,n,r),c.value=!1,l.value=null},g=e=>{if(!l.value)return;let{targetNode:t,position:n}=l.value,r=mn(e,`paste`,`f_${M()}`),i={componentKey:e[`x-component`]||`Unknown`,defaultSchema:r};n===`root`?f(i):t&&d(i,t,n),c.value=!1,l.value=null},_=e=>{let t=e.split(`.`),n=t[t.length-1],r=t.includes(`items`)&&t.includes(`properties`),i=``;if(r){let e=t.lastIndexOf(`items`);i=t.slice(0,e).join(`.`)}else{let e=t.lastIndexOf(`properties`);e>0&&(i=t.slice(0,e).join(`.`))}let a,o;return i?(a=s.getNodeSchema(i),a&&(o=a.type===`array`?a.items?.properties:a.properties)):(a=s.formSchema.value,o=a.properties),{parentSchema:a,propertiesObj:o,fieldName:n}},v=()=>{if(!r.value)return;let e=r.value.path,t=s.getNodeSchema(e);if(!t)return;let{parentSchema:n,propertiesObj:a,fieldName:o}=_(e);if(!n||!a)return;let c=`f_${M()}`,l=mn(t,e,c),u=Object.entries(a),d=u.findIndex(([e])=>e===o),f=d>=0?d+1:u.length;u.splice(f,0,[c,l]);let p={};u.forEach(([e,t])=>{p[e]=t});let m=e.split(`.`);if(m.length===1)s.formSchema.value.properties=p;else{let e=m.includes(`items`),t;if(e){let e=m.lastIndexOf(`items`);t=`${m.slice(0,e).join(`.`)}.items.properties`}else{let e=m.lastIndexOf(`properties`);t=m.slice(0,e+1).join(`.`)}I(s.formSchema.value.properties,t,p)}i()},y=()=>{if(!r.value)return;let e=r.value.path,t=s.getNodeSchema(e);if(!t)return;let n=JSON.stringify(t);navigator.clipboard.writeText(n),i()},x=()=>{if(!r.value)return;let e=r.value.path;N(s.formSchema.value.properties,e),i()},S=()=>{if(!r.value)return;let e=r.value.path,{parentSchema:t,propertiesObj:n,fieldName:a}=_(e);if(!n||!t)return;let o=Object.entries(n),c=o.findIndex(([e])=>e===a);if(c<=0)return;let l=o[c];o[c]=o[c-1],o[c-1]=l;let u={};o.forEach(([e,t])=>{u[e]=t});let d=e.split(`.`);if(d.length===1)s.formSchema.value.properties=u;else{let e=d.includes(`items`),t;if(e){let e=d.lastIndexOf(`items`);t=`${d.slice(0,e).join(`.`)}.items.properties`}else{let e=d.lastIndexOf(`properties`);t=d.slice(0,e+1).join(`.`)}I(s.formSchema.value.properties,t,u)}i()},C=()=>{if(!r.value)return;let e=r.value.path,{parentSchema:t,propertiesObj:n,fieldName:a}=_(e);if(!n||!t)return;let o=Object.entries(n),c=o.findIndex(([e])=>e===a);if(c===-1||c>=o.length-1)return;let l=o[c];o[c]=o[c+1],o[c+1]=l;let u={};o.forEach(([e,t])=>{u[e]=t});let d=e.split(`.`);if(d.length===1)s.formSchema.value.properties=u;else{let e=d.includes(`items`),t;if(e){let e=d.lastIndexOf(`items`);t=`${d.slice(0,e).join(`.`)}.items.properties`}else{let e=d.lastIndexOf(`properties`);t=d.slice(0,e+1).join(`.`)}I(s.formSchema.value.properties,t,u)}i()};return{groupedComponents:u,componentPickerVisible:c,handleMenuClick:e=>{switch(e){case`insertRoot`:m(null,`root`);break;case`insertBefore`:m(r.value,`before`);break;case`insertAfter`:m(r.value,`after`);break;case`insertInner`:m(r.value,`inner`);break;case`copy`:v();return;case`copyTemplate`:y();return;case`delete`:x();return;case`moveUp`:S();return;case`moveDown`:C();return}i()},handleSelectComponent:h,handlePasteSchema:g,handleExternalDrop:e=>{if(e.preventDefault(),e.stopPropagation(),e.dataTransfer)try{let t=e.dataTransfer.getData(`application/json`);if(!t)return;let n=JSON.parse(t);if(n.type!==`new-component`)return;let{componentKey:r,defaultSchema:i}=n;if(!i){console.warn(`组件缺少 defaultSchema:`,r);return}let o=yn(a.value,e.clientX,e.clientY);if(console.log(`targetNode`,o),o){let t=vn(e,o.element);d(n,o.data,t)}else f(n)}catch(e){console.error(`解析拖拽数据失败:`,e)}}}}function xn(e=Y()){let n=b(),r=b(``),i=t(()=>gn(e.formSchema.value));return{treeRef:n,filterText:r,treeData:i,treeProps:{children:`children`,label:`label`},filterNode:(e,t)=>e?t.label.toLowerCase().includes(e.toLowerCase()):!0,handleFilterChange:e=>{n.value?.filter(e)},expandAll:()=>{_n(i.value).forEach(e=>{let t=n.value?.getNode(e);t&&(t.expanded=!0)})},collapseAll:()=>{_n(i.value).forEach(e=>{let t=n.value?.getNode(e);t&&(t.expanded=!1)})},handleNodeClick:t=>{e.selectNode(t.path)},handleAllowDrag:e=>!0,handleAllowDrop:(e,t,n)=>{let r=t.data;return n===`inner`?r.isContainer:!0},handleNodeDrop:(t,n,r,i)=>{let a=t.data,o=n.data,s;s=r===`inner`?`INNER`:r===`before`?`BEFORE`:`AFTER`,e.moveField(a.path,o.path,s)}}}const Sn={class:`schema-tree`},Cn={class:`tree-toolbar`},wn={class:`toolbar-buttons`},Tn={class:`node-label`},En={class:`node-component`};var Dn=Q(c({__name:`SchemaTree`,setup(e){let t=Y(),n=u(`designerComponents`,{}),{treeRef:r,filterText:c,treeData:l,treeProps:f,filterNode:h,handleFilterChange:g,expandAll:_,collapseAll:y,handleNodeClick:b,handleAllowDrop:x,handleAllowDrag:S,handleNodeDrop:w}=xn(t),{contextMenuVisible:T,contextMenuNode:D,contextMenuVirtualRef:k,menuItems:M,handleEmptyContextMenu:N,handleNodeContextMenu:P,closeContextMenu:F}=dn(),{groupedComponents:I,componentPickerVisible:L,handleMenuClick:R,handleSelectComponent:z,handlePasteSchema:B,handleExternalDrop:V}=bn({store:t,components:n,contextMenuNode:D,closeContextMenu:F,treeData:l,expandAll:_});return p(()=>{_()}),(e,t)=>{let n=C(`ElIcon`),u=C(`ElInput`),p=C(`ElButton`),D=C(`ElEmpty`),F=C(`ElTree`);return v(),i(`div`,Sn,[a(`div`,Cn,[s(u,{modelValue:O(c),"onUpdate:modelValue":t[0]||=e=>d(c)?c.value=e:null,placeholder:`搜索组件`,clearable:``,size:`small`,onInput:O(g)},{prefix:A(()=>[s(n,null,{default:A(()=>[s(O(de))]),_:1})]),_:1},8,[`modelValue`,`onInput`]),a(`div`,wn,[s(p,{size:`small`,text:``,onClick:O(_)},{default:A(()=>[...t[7]||=[o(` 全部展开 `,-1)]]),_:1},8,[`onClick`]),s(p,{size:`small`,text:``,onClick:O(y)},{default:A(()=>[...t[8]||=[o(` 全部折叠 `,-1)]]),_:1},8,[`onClick`])])]),a(`div`,{class:`tree-content`,onDrop:t[2]||=(...e)=>O(V)&&O(V)(...e),onDragover:t[3]||=j(()=>{},[`prevent`]),onContextmenu:t[4]||=(...e)=>O(N)&&O(N)(...e)},[s(F,{ref_key:`treeRef`,ref:r,style:{height:`100%`},data:O(l),props:O(f),"node-key":`path`,draggable:``,"allow-drop":O(x),"allow-drag":O(S),"filter-node-method":(e,t)=>O(h)(e,t),"default-expand-all":``,"highlight-current":``,onNodeClick:O(b),onNodeDrop:O(w),onNodeContextmenu:t[1]||=(e,t)=>O(P)(e,t)},{default:A(({data:e})=>[a(`div`,{class:m([`tree-node`,{"is-container":e.isContainer}])},[a(`span`,Tn,E(e.label),1),a(`span`,En,`(`+E(e.component)+`)`,1)],2)]),empty:A(()=>[s(D,{description:`暂无组件,请点击右键插入`})]),_:1},8,[`data`,`props`,`allow-drop`,`allow-drag`,`filter-node-method`,`onNodeClick`,`onNodeDrop`])],32),s(un,{visible:O(T),"onUpdate:visible":t[5]||=e=>d(T)?T.value=e:null,"virtual-ref":O(k),"menu-items":O(M),onSelect:O(R)},null,8,[`visible`,`virtual-ref`,`menu-items`,`onSelect`]),s(on,{visible:O(L),"onUpdate:visible":t[6]||=e=>d(L)?L.value=e:null,"grouped-components":O(I),onSelect:O(z),onPasteSchema:O(B)},null,8,[`visible`,`grouped-components`,`onSelect`,`onPasteSchema`])])}}}),[[`__scopeId`,`data-v-c20e7234`]]);const On={class:`left-panel`};var kn=Q(c({__name:`index`,props:{components:{},draggable:{type:Boolean,default:!1}},setup(e){let t=e,r=b(`materials`);function a(){r.value!==`tree`&&(r.value=`tree`)}return y(_e,{switchToTreeTab:a}),(a,o)=>{let c=C(`ElTabPane`),l=C(`ElTabs`);return v(),i(`div`,On,[t.draggable?(v(),n(l,{key:0,modelValue:r.value,"onUpdate:modelValue":o[0]||=e=>r.value=e,class:`panel-tabs`},{default:A(()=>[s(c,{label:`组件库`,name:`materials`},{default:A(()=>[s(Zt,{components:e.components},null,8,[`components`])]),_:1}),s(c,{label:`组件树`,name:`tree`},{default:A(()=>[s(Dn)]),_:1})]),_:1},8,[`modelValue`])):(v(),n(Dn,{key:1}))])}}}),[[`__scopeId`,`data-v-7b552cf6`]]),An=c({name:`ArrayInner`,inheritAttrs:!1,__name:`arrayInner`,setup(e){return y(he,re()),(e,t)=>S(e.$slots,`default`)}}),jn=c({inheritAttrs:!1,__name:`arrayItemInner`,props:{index:{}},setup(e){return y(ge,e),(e,t)=>S(e.$slots,`default`)}});function Mn(e){return Array.isArray(e?.items)?Mn(e.items[0]):e?.items?.type===`array`||e?.items?.type===`object`}function Nn(e){let t=Mn(e),n=null;return n=t?new WeakMap:[],_(()=>{n=null}),{getKey:(e,t)=>n instanceof WeakMap?(n.has(e)||n.set(e,M()),`${n.get(e)}-${t}`):(n&&!n[t]&&(n[t]=M()),n?`${n[t]}-${t}`:void 0)}}function Pn(e){return pe(c({name:`SchemaWrapper`,props:{value:{type:[String,Number,Boolean,Array,Object],default:void 0},onChange:{type:Function,default:void 0}},setup(n,r){let{setterSchema:i}=e,a=re(),o=ie(),s=u(he,void 0),c=u(ge,void 0),d=u(ve,t(()=>!1)),{getKey:f}=Nn(o.value),p=t(()=>{let e=a.value,t={...o.value?.[`x-component-props`]||{},value:n.value,onChange:n.onChange};if(e&&!K(e)&&(t.pattern=e.pattern),i.basicSetter)for(let[e,n]of Object.entries(i.basicSetter)){let r=n[`x-path`];if(r){let n=P(o.value,r);n!==void 0&&(t[e]=n)}}if(i.componentSetter?.properties)for(let[e,n]of Object.entries(i.componentSetter.properties)){let r=n[`x-path`];if(r){let n=P(o.value,r);n!==void 0&&(t[e]=n)}}e&&!K(e)&&(t.pattern=e.pattern);let r=o.value?.type===`array`?a.value:s?.value;return r&&(t.onAdd=()=>r.push({}),t.onPush=()=>r.push({}),t.onUnshift=()=>r.unshift({}),t.onRemove=e=>r.remove(e),t.onMove=(e,t)=>r.move(e,t),t.onMoveUp=e=>{e>0&&r.move(e,e-1)},t.onMoveDown=e=>{e<r.value.length-1&&r.move(e,e+1)},c?.index!==void 0&&(t.pattern=r.pattern)),c?.index!==void 0&&(t.arrayIndex=c.index),d.value&&(t.pattern=`disabled`),t});return()=>{let t=a.value;if(!t||t.display!==`visible`)return l(`template`,{},{});let n=()=>{if(!t||K(t))return null;let e=t.errors||[];return e.length===0?null:l(`div`,{class:`formily-validation-errors`,style:{color:`#f56c6c`,fontSize:`12px`,marginTop:`4px`,lineHeight:`1.5`}},l(`div`,{class:`formily-validation-error-item`},e[0].messages))};if(o.value?.type===`array`){let r=t?.value||[],i=r.length>0?r.map((e,t)=>l(jn,{index:t},{default:()=>l(te,{key:f(e,t),schema:o.value.items,name:t})})):null;return l(`div`,{},[l(An,{},{default:()=>l(e.component,p.value,{default:()=>i})}),n()])}return l(`div`,{},[l(e.component,p.value,r.slots),n()])}}}))}var Fn=c({__name:`index`,props:{values:{},schema:{},components:{},disabled:{type:Boolean}},setup(e,{expose:r}){let i=e,a=ae({values:i.values??{}});y(ve,t(()=>i.disabled??!1));let{SchemaField:o}=ne({components:Object.keys(i.components).reduce((e,t)=>(e[t]=Pn(i.components[t]),e),{})});return r({form:a}),(t,r)=>(v(),n(O(G),{form:O(a)},{default:A(()=>[s(O(o),{schema:e.schema},null,8,[`schema`])]),_:1},8,[`form`]))}});const In={key:0,class:`designer-layout`},Ln={class:`designer-material`},Rn={class:`designer-canvas`},zn={class:`designer-config`},Bn={key:1,class:`designer-preview`};var Vn=Q(c({__name:`designer`,props:{components:{},mode:{default:`edit`},modelValue:{},draggable:{type:Boolean,default:!1},height:{default:`100vh`}},emits:[`update:modelValue`],setup(e,{expose:n,emit:r}){let o=e,c=r,l=we(o.draggable);y(`designerComponents`,o.components);let u=b(null);k(()=>o.modelValue,e=>{e&&JSON.stringify(e)!==JSON.stringify(l.formSchema.value)&&(l.formSchema.value=e)},{immediate:!0,deep:!0}),k(()=>l.formSchema.value,e=>{c(`update:modelValue`,e)},{deep:!0});function d(){return u.value?.form?.values||{}}return n({getFormValues:d,schema:t(()=>l.formSchema.value),store:l}),(t,n)=>(v(),i(`div`,{class:`designer`,style:g({height:o.height})},[o.mode===`edit`?(v(),i(`div`,In,[a(`div`,Ln,[s(kn,{components:e.components,draggable:e.draggable},null,8,[`components`,`draggable`])]),a(`div`,Rn,[s(Be,{components:e.components},null,8,[`components`])]),a(`div`,zn,[s(Ht,{components:e.components},null,8,[`components`])])])):(v(),i(`div`,Bn,[s(Fn,{ref_key:`renderRef`,ref:u,schema:O(l).formSchema.value,components:e.components},null,8,[`schema`,`components`])]))],4))}}),[[`__scopeId`,`data-v-be54faba`]]);const Hn=Be,Un=Ht,Wn=Zt,Gn=Vn,Kn=Fn;export{Hn as Canvas,Un as ConfigPanel,J as DesignStoreKey,Gn as Designer,Wn as MaterialPanel,Kn as Render,Te as schemaToSetterValues,Ee as setterValuesToSchema,we as useCreateDesignStore,Y as useDesignStore};
|
|
1
|
+
import{Fragment as e,computed as t,createBlock as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createTextVNode as o,createVNode as s,defineComponent as c,h as l,inject as u,isRef as d,mergeProps as f,nextTick as p,normalizeClass as m,normalizeProps as h,normalizeStyle as g,onBeforeUnmount as _,openBlock as v,provide as y,ref as b,renderList as x,renderSlot as S,resolveComponent as C,resolveDynamicComponent as w,shallowRef as T,toDisplayString as E,toRef as D,unref as O,watch as k,withCtx as A,withModifiers as j}from"vue";import{uid as M}from"@formily/shared";import{deleteByPath as N,getByPath as P,getFieldNameFromPath as F,setByPath as I}from"@formily-djd/utils";import{FormProvider as L,RecursionField as R,createSchemaField as z,useField as B,useFieldSchema as V}from"@formily/vue";import{createForm as H,isVoidField as U,onFormValuesChange as W}from"@formily/core";import{observer as G}from"@formily/reactive-vue";const K=Symbol(`DesignStore`);function q(){let e=u(K);if(!e)throw Error(`[useDesignStore] 必须在 Designer 组件内使用`);return e}const ee=Symbol(`ComponentSettings`),te=Symbol(`ArrayField`),ne=Symbol(`ArrayItemKey`),re=Symbol(`LeftPanel`),ie=Symbol(`RenderDisabled`);function ae(e,n=`.canvas-content`){return t(()=>{if(!e.value)return null;let t=document.querySelector(`[data-node-id="${e.value}"]`);if(!t)return null;let r=document.querySelector(n);if(!r)return null;let i=t.getBoundingClientRect(),a=r.getBoundingClientRect();return{x:i.x-a.x+r.scrollLeft,y:i.y-a.y+r.scrollTop,width:i.width,height:i.height}})}const J=Symbol(`DesignerAdapter`);function Y(e,t,n=!0){let r=e=>{if(!n)return 0;let t=e*.1;return t>20?20:t<10?10:t},i=r(t.width),a=r(t.height);return e.x>=t.x+i&&e.x<=t.x+t.width-i&&e.y>=t.y+a&&e.y<=t.y+t.height-a}function oe(e,t){let n=Math.min(Math.abs(e.x-t.x),Math.abs(e.x-(t.x+t.width))),r=Math.min(Math.abs(e.y-t.y),Math.abs(e.y-(t.y+t.height)));return e.x>=t.x&&e.x<=t.x+t.width&&(n=0),e.y>=t.y&&e.y<=t.y+t.height&&(r=0),Math.sqrt(n**2+r**2)}function se(e,t,n){return n?e.x>=t.x+t.width/2:e.y>=t.y+t.height/2}function ce(e){return e.width>e.height}let X=function(e){return e.Before=`BEFORE`,e.After=`AFTER`,e.Upper=`UPPER`,e.Under=`UNDER`,e.Inner=`INNER`,e.InnerBefore=`INNER_BEFORE`,e.InnerAfter=`INNER_AFTER`,e.ForbidBefore=`FORBID_BEFORE`,e.ForbidAfter=`FORBID_AFTER`,e.ForbidUpper=`FORBID_UPPER`,e.ForbidUnder=`FORBID_UNDER`,e.ForbidInner=`FORBID_INNER`,e.ForbidInnerBefore=`FORBID_INNER_BEFORE`,e.ForbidInnerAfter=`FORBID_INNER_AFTER`,e.Forbid=`FORBID`,e}({});var le=class{sensitive;forceBlock;dragNodes=b([]);touchNode=b(null);closestNode=b(null);closestPosition=b(X.Before);closestRect=b(null);getNodeRect;getNodeSchema;getCanvasRect;findChildNodes;constructor(e,t){this.sensitive=t?.sensitive??!0,this.forceBlock=t?.forceBlock??!1,this.getNodeRect=e.getNodeRect,this.getNodeSchema=e.getNodeSchema,this.getCanvasRect=e.getCanvasRect,this.findChildNodes=e.findChildNodes}setDragNodes(e){this.dragNodes.value=e}calculate(e){let{point:t,touchNode:n,closestNode:r,closestPosition:i}=e;if(r!==void 0&&i!==void 0){this.closestNode.value=r,this.closestPosition.value=i,r&&(this.closestRect.value=this.getNodeRect(r));return}if(!t)return;n!==void 0&&(this.touchNode.value=n);let a=this.getClosestNode(t);if(this.closestNode.value=a,!a){this.closestPosition.value=X.Before,this.closestRect.value=null;return}this.closestPosition.value=this.getClosestPosition(t,a),this.closestRect.value=this.getNodeRect(a)}getClosestNode(e){let t=this.touchNode.value;if(!t)return null;let n=this.getNodeRect(t);if(!n)return null;let r=this.findChildNodes(t);if(r.length===0)return t;let i=Y(e,n,this.sensitive)?0:oe(e,n),a=t;for(let t of r){let n=this.getNodeRect(t);if(!n)continue;let r=Y(e,n,this.sensitive)?0:oe(e,n);r<=i&&(i=r,a=t)}return a}getClosestPosition(e,t){console.log(`[Dragon] getClosestPosition`,t);let n=this.getNodeRect(t),r=this.getNodeSchema(t);if(!n||!r)return X.Forbid;let i=this.getLayout(n)===`horizontal`,a=Y(e,n,this.sensitive),o=this.isContainer(r),s=this.canInsertSibling(t),c=se(e,n,i);return a?o&&this.canDropInside(t)?this.findChildNodes(t).length===0?X.Inner:c?X.InnerAfter:X.InnerBefore:s?i?c?X.After:X.Before:c?X.Under:X.Upper:X.Forbid:s?i?c?X.ForbidAfter:X.ForbidBefore:c?X.ForbidUnder:X.ForbidUpper:X.Forbid}getLayout(e){return this.forceBlock?`vertical`:ce(e)?`horizontal`:`vertical`}isContainer(e){return!e||e[`x-droppable`]===!1?!1:e.type===`object`||e.type===`void`||e.type===`array`}canInsertSibling(e){return!(e===``||e==null)}canDropInside(e){if(this.getNodeSchema(e)?.[`x-droppable`]===!1)return!1;let t=this.dragNodes.value;if(t.length===0)return!0;for(let n of t)if(n.nodePath===e||e.startsWith(`${n.nodePath}.`))return!1;return!0}clear(){this.dragNodes.value=[],this.touchNode.value=null,this.closestNode.value=null,this.closestPosition.value=X.Before,this.closestRect.value=null}};function ue(e=!1){let t=b({type:`object`,properties:{}}),n=b(null),r=b(null),i=b(null),a=b(!1),o=b([]),s=b(null),c=b(null),l=b(X.Before);function u(e){let t=document.querySelector(`[data-node-id="${e}"]`);if(!t)return null;let n=document.querySelector(`.canvas-content`);if(!n)return null;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect();return{x:r.x-i.x,y:r.y-i.y,width:r.width,height:r.height}}function d(){let e=document.querySelector(`.canvas-content`);if(!e)return{x:0,y:0,width:0,height:0};let t=e.getBoundingClientRect();return{x:t.x,y:t.y,width:t.width,height:t.height}}let f=new le({getNodeRect:u,getNodeSchema:e=>P(t.value.properties,e),getCanvasRect:d,findChildNodes:e=>{let n=P(t.value.properties,e);if(!n)return[];let r=[];return n.properties&&Object.keys(n.properties).forEach(t=>{r.push(`${e}.properties.${t}`)}),n.items?.properties&&Object.keys(n.items.properties).forEach(t=>{r.push(`${e}.items.properties.${t}`)}),r}},{sensitive:!0,forceBlock:!1});function p(e,n){t.value.properties||(t.value.properties={}),t.value.properties[e]=n}function m(e,n){I(t.value.properties,e,n)}function h(e){n.value=e}function g(){return n.value&&P(t.value.properties,n.value)||null}function _(e){r.value=e,n.value=e}function v(e){i.value=e}function x(e){a.value=!0,o.value=e,f.setDragNodes(e)}function S(e,t){if(!a.value)return;t!==void 0&&(s.value=t);let n=d(),r={x:e.x-n.x,y:e.y-n.y};f.calculate({point:r,touchNode:s.value||void 0}),c.value=f.closestNode.value,l.value=f.closestPosition.value}function C(){if(console.log(`[DesignStore] drop`),!a.value)return;let e=c.value,t=l.value;if(!e){w();return}if(t.includes(`FORBID`)){w();return}let n=o.value;if(n.length===0){w();return}n.length===1&&T(n[0].nodePath,e,t),w()}function w(){a.value=!1,o.value=[],s.value=null,c.value=null,l.value=X.Before,f.clear()}function T(e,n,r){let i=N(t.value.properties,e);if(!i)return;let a=F(e);if(r===X.Inner||r===X.InnerAfter||r===X.InnerBefore){let e=P(t.value.properties,n);if(!e)return;let o,s;if(e.type===`array`?(e.items||={type:`object`,properties:{}},e.items.properties||(e.items.properties={}),o=e.items.properties,s=`${n}.items.properties`):(e.properties||={},o=e.properties,s=`${n}.properties`),r===X.InnerBefore){let e={[a]:i,...o};I(t.value.properties,s,e)}else I(t.value.properties,`${s}.${a}`,i)}else{let e=r===X.Before||r===X.Upper?`before`:`after`,o=n.split(`.`),s=o[o.length-1],c,l=o.includes(`items`);if(o.length===1)c=``;else if(l){let e=o.lastIndexOf(`items`);c=`${o.slice(0,e).join(`.`)}.items.properties`}else{let e=o.lastIndexOf(`properties`);c=o.slice(0,e+1).join(`.`)}let u=c?P(t.value.properties,c):t.value.properties;if(!u){console.warn(`父节点的 properties 不存在:`,c);return}let d=Object.entries(u),f=d.findIndex(([e])=>e===s);if(f===-1){console.warn(`目标字段不存在:`,s);return}let p=e===`after`?f+1:f,m=[...d.slice(0,p),[a,i],...d.slice(p)],h={};m.forEach(([e,t])=>{h[e]=t}),c?I(t.value.properties,c,h):t.value.properties=h}}function E(e,n,r,i){if(!e){t.value.properties||(t.value.properties={}),t.value.properties[n]=r;return}if(i===X.Inner||i===X.InnerAfter||i===X.InnerBefore){let a=P(t.value.properties,e);if(!a)return;let o,s;if(a.type===`array`?(a.items||={type:`object`,properties:{}},a.items.properties||(a.items.properties={}),o=a.items.properties,s=`${e}.items.properties`):(a.properties||={},o=a.properties,s=`${e}.properties`),i===X.InnerBefore){let e={[n]:r,...o};I(t.value.properties,s,e)}else I(t.value.properties,`${s}.${n}`,r)}else{let a=i===X.Before||i===X.Upper?`before`:`after`,o=e.split(`.`),s=o[o.length-1],c;o.length===1&&(c=``);let l=o.lastIndexOf(`properties`);c=o.slice(0,l+1).join(`.`);let u=c?P(t.value.properties,c):t.value.properties;if(!u){console.warn(`父节点的 properties 不存在:`,c);return}let d=Object.entries(u),f=d.findIndex(([e])=>e===s);if(f===-1){console.warn(`目标字段不存在:`,s);return}let p=a===`after`?f+1:f,m=[...d.slice(0,p),[n,r],...d.slice(p)],h={};m.forEach(([e,t])=>{h[e]=t}),c?I(t.value.properties,c,h):t.value.properties=h}}function D(e){return P(t.value.properties,e)}function O(e){let n=P(t.value.properties,e);if(!n)return[];let r=[];return n.properties&&Object.keys(n.properties).forEach(t=>{let n=e?`${e}.properties.${t}`:t;r.push(n)}),n.items?.properties&&Object.keys(n.items.properties).forEach(t=>{let n=`${e}.items.properties.${t}`;r.push(n)}),r}let k={formSchema:t,selectedFieldName:n,selectedNodeId:r,hoveredNodeId:i,draggable:e,dragon:f,isDragging:a,dragNodes:o,touchNode:s,closestNode:c,closestPosition:l,addField:p,updateFieldSchema:m,selectField:h,selectNode:_,getSelectedField:g,setHover:v,startDrag:x,updateDragPosition:S,drop:C,cancelDrag:w,moveField:T,insertField:E,getNodeSchema:D,findChildNodes:O};return y(K,k),k}function de(e,t){let n={};return Object.entries(t.properties||{}).forEach(([t,r])=>{let i=r[`x-path`];if(i){let r=P(e,i);r!==void 0&&(n[t]=r)}}),n}function fe(e,t,n){let r=JSON.parse(JSON.stringify(n));return Object.entries(t.properties||{}).forEach(([t,n])=>{let i=n[`x-path`];i&&e[t]!==void 0&&I(r,i,e[t])}),r}var Z=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},pe=Z(c({__name:`HoverBox`,setup(e){let n=q(),a=ae(n.hoveredNodeId),o=t(()=>!n.hoveredNodeId.value||!n.selectedNodeId.value?!1:n.hoveredNodeId.value===n.selectedNodeId.value),s=t(()=>{let e={position:`absolute`,top:0,left:0,boxSizing:`border-box`,pointerEvents:`none`,zIndex:2,visibility:`hidden`};return a.value&&!o.value&&(e.transform=`perspective(1px) translate3d(${a.value.x}px, ${a.value.y}px, 0)`,e.width=`${a.value.width}px`,e.height=`${a.value.height}px`,e.visibility=`visible`),e}),c=t(()=>a.value&&!o.value);return(e,t)=>c.value?(v(),i(`div`,{key:0,class:`hover-box`,style:g(s.value)},null,4)):r(``,!0)}}),[[`__scopeId`,`data-v-2759debe`]]),me=Z(c({__name:`Insertion`,setup(e){let n=q(),a=t(()=>{if(!n.isDragging.value||!n.closestNode.value)return{display:`none`};let e=n.closestPosition.value,t=n.dragon.closestRect.value;if(!t)return{display:`none`};let r=e.toString().includes(`FORBID`),i={position:`absolute`,backgroundColor:r?`#ef4444`:`#3b82f6`,pointerEvents:`none`,zIndex:10,transition:`all 0.15s cubic-bezier(0.4, 0, 0.2, 1)`,boxShadow:r?`0 0 8px rgba(239, 68, 68, 0.5)`:`0 0 8px rgba(59, 130, 246, 0.5)`};switch(e){case X.Before:case X.ForbidBefore:Object.assign(i,{width:`2px`,height:`${t.height}px`,transform:`perspective(1px) translate3d(${t.x}px, ${t.y}px, 0)`});break;case X.After:case X.ForbidAfter:Object.assign(i,{width:`2px`,height:`${t.height}px`,transform:`perspective(1px) translate3d(${t.x+t.width-2}px, ${t.y}px, 0)`});break;case X.Upper:case X.ForbidUpper:Object.assign(i,{width:`${t.width}px`,height:`2px`,transform:`perspective(1px) translate3d(${t.x}px, ${t.y}px, 0)`});break;case X.Under:case X.ForbidUnder:Object.assign(i,{width:`${t.width}px`,height:`2px`,transform:`perspective(1px) translate3d(${t.x}px, ${t.y+t.height-2}px, 0)`});break;case X.Inner:case X.InnerBefore:case X.InnerAfter:case X.ForbidInner:case X.ForbidInnerBefore:case X.ForbidInnerAfter:Object.assign(i,{width:`${t.width}px`,height:`${t.height}px`,transform:`perspective(1px) translate3d(${t.x}px, ${t.y}px, 0)`,backgroundColor:`transparent`,border:r?`2px dashed #ef4444`:`2px dashed #3b82f6`});break;case X.Forbid:return{display:`none`};default:return{display:`none`}}return i});return(e,t)=>O(n).draggable?(v(),i(`div`,{key:0,class:`insertion-indicator`,style:g(a.value)},null,4)):r(``,!0)}}),[[`__scopeId`,`data-v-9dbef644`]]),he=Z(c({__name:`SelectionBox`,setup(e){let n=ae(q().selectedNodeId),o=t(()=>{let e={position:`absolute`,top:0,left:0,boxSizing:`border-box`,pointerEvents:`none`,zIndex:4,visibility:`hidden`};return n.value&&(e.transform=`perspective(1px) translate3d(${n.value.x-2}px, ${n.value.y-2}px, 0)`,e.width=`${n.value.width+4}px`,e.height=`${n.value.height+4}px`,e.visibility=`visible`),e}),s=t(()=>n.value!==null);return(e,t)=>s.value?(v(),i(`div`,{key:0,class:`selection-box`,style:g(o.value)},[...t[0]||=[a(`div`,{class:`selection-box-inner`},null,-1)]],4)):r(``,!0)}}),[[`__scopeId`,`data-v-c58abee5`]]);const ge={class:`aux-tool-widget`};var _e=Z(c({__name:`AuxToolWidget`,setup(e){return(e,t)=>(v(),i(`div`,ge,[s(pe),s(he),s(me)]))}}),[[`__scopeId`,`data-v-2d0e316d`]]);function ve(e,t){let n={...e?.[`x-component-props`]||{}};return t.basicSetter&&Object.entries(t.basicSetter).forEach(([t,r])=>{let i=r[`x-path`];if(i){let r=P(e,i);r!==void 0&&(n[t]=r)}}),t.componentSetter?.properties&&Object.entries(t.componentSetter.properties).forEach(([t,r])=>{let i=r[`x-path`];if(i){let r=P(e,i);r!==void 0&&(n[t]=r)}}),n}function ye(e){if(e?.[`x-droppable`]===!1)return!1;let t=e.type;return(t===`object`||t===`void`||t===`array`)&&!!e.properties}function be(e){return e.type===`array`&&!!e.items}const xe=[`data-node-id`,`draggable`],Se={key:0,class:`empty-container-placeholder`},Ce={key:0,class:`empty-container-placeholder`};var we=Z(c({name:`CanvasField`,__name:`index`,props:{schema:{},fieldName:{},nodePath:{}},setup(o){let s=o,c=u(ee)??{},l=q(),d=t(()=>s.schema?.[`x-component`]),p=t(()=>s.nodePath?s.fieldName?s.nodePath?`${s.nodePath}.${s.fieldName}`:s.fieldName:s.nodePath:s.fieldName||``),g=t(()=>l.selectedNodeId.value===p.value),_=t(()=>!l.draggable||!s.fieldName?!1:g.value);function y(){return s.schema?.type===`array`?p.value?`${p.value}.items`:``:p.value?`${p.value}.properties`:``}let b=t(()=>{let e=s.schema;if(!e||e[`x-droppable`]===!1)return!1;let t=e.type===`object`||e.type===`void`,n=!e.properties||Object.keys(e.properties).length===0;return t&&n});function S(e){if(!_.value||!e.dataTransfer)return;let t={type:`move-component`,nodePath:p.value,fieldName:s.fieldName,schema:s.schema};e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`application/json`,JSON.stringify(t)),l.startDrag([{nodePath:p.value,fieldName:s.fieldName||``,schema:s.schema}])}function T(){l.cancelDrag()}return(t,o)=>{let l=C(`CanvasField`);return s.schema?(v(),i(`div`,{key:0,"data-node-id":p.value,class:m({"is-draggable":_.value,"is-selected":g.value}),draggable:_.value,onDragstart:S,onDragend:T},[d.value&&O(c)[d.value]?(v(),n(w(O(c)[d.value].component),h(f({key:0},O(ve)(s.schema,O(c)[d.value].setterSchema))),{default:A(()=>[b.value?(v(),i(`div`,Se,[...o[0]||=[a(`svg`,{class:`placeholder-icon`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},[a(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,stroke:`currentColor`,"stroke-width":`2`}),a(`path`,{d:`M12 8v8M8 12h8`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})],-1),a(`span`,{class:`placeholder-text`},`添加组件到这里`,-1)]])):r(``,!0),O(be)(s.schema)?(v(),n(l,{key:1,schema:s.schema.items,"node-path":`${y()}`},null,8,[`schema`,`node-path`])):r(``,!0),O(ye)(s.schema)?(v(!0),i(e,{key:2},x(Object.keys(s.schema?.properties||{}),e=>(v(),n(l,{key:e,schema:s.schema?.properties?.[e],"field-name":e,"node-path":y()},null,8,[`schema`,`field-name`,`node-path`]))),128)):r(``,!0)]),_:1},16)):(v(),i(e,{key:1},[b.value?(v(),i(`div`,Ce,[...o[1]||=[a(`svg`,{class:`placeholder-icon`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},[a(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,stroke:`currentColor`,"stroke-width":`2`}),a(`path`,{d:`M12 8v8M8 12h8`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})],-1),a(`span`,{class:`placeholder-text`},`添加组件到这里`,-1)]])):r(``,!0),(v(!0),i(e,null,x(Object.keys(s.schema?.properties||{}),e=>(v(),n(l,{key:e,schema:s.schema?.properties?.[e],"field-name":e,"node-path":y()},null,8,[`schema`,`field-name`,`node-path`]))),128))],64))],42,xe)):r(``,!0)}}}),[[`__scopeId`,`data-v-18008a74`]]);const Te={class:`canvas djd-design`};var Ee=Z(c({__name:`canvas`,props:{components:{}},setup(e){y(ee,e.components);let o=q(),c=b(!1),l=t(()=>{let e=o.formSchema.value?.properties;return!e||Object.keys(e).length===0});function u(e){let t=e.target.closest(`[data-node-id]`);if(t){let e=t.getAttribute(`data-node-id`);e&&(console.log(e),o.selectNode(e))}else o.selectNode(null)}function d(e){let t=e.target.closest(`[data-node-id]`)?.getAttribute(`data-node-id`);if(o.setHover(t||null),o.isDragging.value){let n={x:e.clientX,y:e.clientY};o.updateDragPosition(n,t||void 0)}}function f(){o.setHover(null)}function p(e){if(!o.draggable||(e.preventDefault(),e.stopPropagation(),!e.dataTransfer))return;let t=o.dragNodes.value.length>0;e.dataTransfer.dropEffect=t?`move`:`copy`,c.value=!0,o.isDragging.value||o.startDrag([]);let n=e.target.closest(`[data-node-id]`)?.getAttribute(`data-node-id`),r={x:e.clientX,y:e.clientY};o.updateDragPosition(r,n||void 0)}function h(e){e.target.classList.contains(`canvas-content`)&&(c.value=!1)}function g(e){if(o.draggable&&(console.log(`[Canvas] handleDrop`),e.preventDefault(),e.stopPropagation(),c.value=!1,e.dataTransfer))try{let t=e.dataTransfer.getData(`application/json`);if(!t)return;let n=JSON.parse(t);console.log(`dragData`,n),n.type===`new-component`?_(n):n.type===`move-component`&&x()}catch(e){console.error(`解析拖拽数据失败:`,e)}}function _(e){let{componentKey:t,defaultSchema:n}=e;if(!n){console.warn(`组件缺少 defaultSchema:`,t);return}let r=`f_${M()}`,i=o.closestNode.value,a=o.closestPosition.value;i?o.insertField(i,r,n,a):o.addField(r,n),o.selectNode(r),o.cancelDrag()}function x(){o.drop()}return(e,t)=>(v(),i(`div`,Te,[a(`div`,{class:m([`canvas-content`,{"drag-over":c.value,empty:l.value}]),onClick:u,onMousemove:d,onMouseleave:f,onDragover:p,onDragleave:h,onDrop:g},[O(o).formSchema.value?(v(),n(we,{key:0,schema:O(o).formSchema.value},null,8,[`schema`])):r(``,!0),s(_e)],34)]))}}),[[`__scopeId`,`data-v-b174a160`]]);function De(e,t){let n=t.getSelectedField();return H({values:n?de(n,e):{},effects(){W(n=>{let r=t.getSelectedField(),i=t.selectedFieldName.value;if(!r||!i)return;let a=fe(n.values,e,r);t.updateFieldSchema(i,a)})}})}function Oe(){return{source:``,property:`value`,name:``,type:`any`}}function ke(e){return!e?.dependencies||!Array.isArray(e.dependencies)?[]:e.dependencies.map(e=>({source:e?.source||``,property:e?.property||`value`,name:e?.name||``,type:e?.type||`any`}))}function Ae(e){return e?.fulfill?.state?Object.entries(e.fulfill.state).map(([e,t])=>({state:e,expression:String(t).replace(/^\{\{|\}\}$/g,``).trim()})):[]}function je(){let e=b([]),t=b([]);function n(n){e.value=ke(n),t.value=Ae(n)}function r(){e.value.push(Oe())}function i(t){e.value.splice(t,1)}function a(e){!e.name&&e.source&&(e.name=`${e.source.split(`.`).pop()||e.source}_${e.property}`)}function o(){t.value.push({state:`visible`,expression:``})}function s(e){t.value.splice(e,1)}function c(){let n={};return e.value.length>0&&(n.dependencies=e.value.filter(e=>e.source).map(e=>({source:e.source,property:e.property,name:e.name,type:e.type}))),t.value.length>0&&(n.fulfill={state:{}},t.value.forEach(e=>{e.state&&e.expression&&(n.fulfill.state[e.state]=`{{${e.expression}}}`)})),n}return{dependencies:e,stateRules:t,loadAdvancedConfig:n,addDependency:r,removeDependency:i,handleFieldChange:a,addStateRule:o,removeStateRule:s,buildAdvancedReactions:c}}function Me(e,t){let n=t.split(`.`),r=e;for(let e of n){if(!r)return;if(!(e===`properties`&&r.properties))if(e===`items`&&r.items)r=r.items;else if(r.properties&&r.properties[e])r=r.properties[e];else return}return r}function Ne(e,t){let n=t.split(`.`),r=``,i=``,a=0;for(let t=0;t<n.length;t++){let o=n[t];r=r?`${r}.${o}`:o;let s=Me(e,r);s?.type===`array`&&s.items&&(i=`${r}.items.properties`,a=n.length-t-1,n[t+1]===`items`&&t++,n[t+1]===`properties`&&t++)}return i?{scopePath:i,depth:a}:null}function Pe(e,t,n=``){if(!e)return[];let r=[];return Object.entries(e).forEach(([e,i])=>{let a=n?`${n}.${e}`:e,o=i.title||e;if(t&&(a===t||a.startsWith(`${t}.`))||i.type===`array`)return;let s=i.type===`object`||i.type===`void`,c={value:a,label:`${o} (${e})`,disabled:s,children:void 0};if(i.properties){let e=Pe(i.properties,t,a);e.length>0&&(c.children=e)}r.push(c)}),r}function Fe(e,t,n,r=``){if(!e)return[];let i=[];return Object.entries(e).forEach(([e,a])=>{let o=r?`${r}.${e}`:e,s=a.title||e;if(t&&(o===t||o.startsWith(`${t}.`)))return;let c=`${n}${o}`,l=a.type===`object`||a.type===`void`,u={value:c,label:`${s} (${e})`,disabled:l,children:void 0};if(a.properties){let e=Fe(a.properties,t,n,o);e.length>0&&(u.children=e)}i.push(u)}),i}function Ie(e,t,n=``){if(!e)return[];let r=[];return Object.entries(e).forEach(([e,i])=>{let a=n?`${n}.${e}`:e,o=i.title||e;if(t&&(a===t||a.startsWith(`${t}.`)))return;let s={value:a,label:`${o} (${e})`,children:void 0};if(i.properties){let e=Ie(i.properties,t,a);e.length>0&&(s.children=e)}r.push(s)}),r}function Le(e,n,r){return{fieldTree:t(()=>{let t=O(e),i=O(n),a=O(r)||{};if(!t)return[];if(a.isArrayMode&&i){let e=Ne(t,i);if(e){let n=Me(t,e.scopePath);if(n){let t=`${e.scopePath}.`,r=i.startsWith(t)?i.slice(t.length):i,a=Math.ceil(r.split(`.`).length/2);console.log(`depth`,a,r);let o=`${`.`.repeat(a)}.[].`;return Fe(n.properties,r,o)}}return[]}return a.filterArrayFields?Pe(t.properties,i):Ie(t.properties,i)}),isInArray:t(()=>O(n)?.includes(`.items.properties.`))}}function Re(e){return String(e??``).replace(/^\{\{|\}\}$/g,``).trim()}function ze(e){let t=e.trim();for(;t.startsWith(`(`)&&t.endsWith(`)`);){let e=0,n=!0;for(let r=0;r<t.length;r++)if(t[r]===`(`?e++:t[r]===`)`&&e--,e===0&&r<t.length-1){n=!1;break}if(n)t=t.slice(1,-1).trim();else break}return t}function Q(e){let t=e.trim().replace(/^\(|\)$/g,``).trim();try{let e=JSON.parse(t);return typeof e==`string`?e:String(e)}catch{return t.replace(/^['"]|['"]$/g,``)}}function Be(e,t){let n=ze(e),r=n.match(/^\$deps\.([a-zA-Z0-9_]+)\s*===\s*(.+)$/);if(r){let[,e,n]=r,i=t.get(e);return i?{field:i,operator:`eq`,value:Q(n)}:null}let i=n.match(/^\$deps\.([a-zA-Z0-9_]+)\s*!==\s*(.+)$/);if(i){let[,e,n]=i,r=t.get(e);return r?{field:r,operator:`neq`,value:Q(n)}:null}let a=n.match(/^Array\.isArray\(\s*\$deps\.([a-zA-Z0-9_]+)\s*\)\s*&&\s*\$deps\.\1\.includes\((.+)\)$/);if(a){let[,e,n]=a,r=t.get(e);return r?{field:r,operator:`includes`,value:Q(n)}:null}let o=n.match(/^Array\.isArray\(\s*\$deps\.([a-zA-Z0-9_]+)\s*\)\s*&&\s*!\s*\$deps\.\1\.includes\((.+)\)$/);if(o){let[,e,n]=o,r=t.get(e);return r?{field:r,operator:`notIncludes`,value:Q(n)}:null}return null}function Ve(e){let t=[],n=0,r=``,i=0;for(;i<e.length;){let a=e[i];if(a===`(`?n++:a===`)`&&(n=Math.max(0,n-1)),n===0){let n=e.slice(i,i+2);if(n===`&&`||n===`||`){t.push({expression:r.trim(),connector:n}),r=``,i+=2;continue}}r+=a,i++}return r.trim()&&t.push({expression:r.trim()}),t}function He(e){if(!e?.fulfill?.state?.visible||!Array.isArray(e.dependencies))return null;let t=Re(e.fulfill.state.visible);if(!t)return null;let n=new Map;if(e.dependencies.forEach(e=>{e?.name&&e?.source&&e?.property===`value`&&n.set(e.name,e.source)}),n.size===0)return null;let r=Be(t,n);if(r)return[{...r,connector:void 0}];let i=Ve(t);if(!i.length)return null;let a=[];for(let e=0;e<i.length;e++){let t=i[e],r=Be(t.expression,n);if(!r)return null;a.push({...r,connector:t.connector?t.connector===`||`?`or`:`and`:void 0})}return a.length&&(a[a.length-1].connector=void 0),a.length?a:null}function Ue(e){let t=(e??``).toString().trim();if(!t)return``;try{return JSON.parse(t)}catch{return t.replace(/^['"]|['"]$/g,``)}}function We(e){let t=Ue(e);return JSON.stringify(t)}function Ge(e,t,n){if(t.has(e))return t.get(e);let r=`${e.split(`.`).pop()||e}_value`,i=r,a=1;for(;n.has(i);)i=`${r}_${a}`,a++;return t.set(e,i),n.add(i),i}function Ke(e){let t=e.map((t,n)=>({...t,connector:n<e.length-1?t.connector||`and`:void 0})).filter(e=>e.field&&e.value!==``);if(!t.length)return null;let n=[],r=new Map,i=new Set,a=[];return t.forEach(e=>{let t=Ge(e.field,r,i);n.find(n=>n.source===e.field&&n.name===t)||n.push({source:e.field,property:`value`,name:t,type:`any`});let o=`$deps.${t}`,s=We(e.value),c=``;switch(e.operator){case`eq`:c=`${o} === ${s}`;break;case`neq`:c=`${o} !== ${s}`;break;case`includes`:c=`Array.isArray(${o}) && ${o}.includes(${s})`;break;case`notIncludes`:c=`Array.isArray(${o}) && !${o}.includes(${s})`;break}a.push(`(${c})`)}),{dependencies:n,fulfill:{state:{visible:`{{${a.reduce((e,n,r)=>r===0?n:`${e} ${t[r-1].connector===`or`?`||`:`&&`} ${n}`,``)}}}`}}}}function qe(e){return e.includes(`[]`)||e.startsWith(`.`)}function Je(){return{field:``,operator:`eq`,value:``,connector:void 0,isArrayMode:!1}}function Ye(){let e=b([Je()]);function t(){e.value=[Je()]}function n(){if(e.value.length>0){let t=e.value[e.value.length-1];t.connector||=`and`}e.value.push(Je())}function r(n){if(e.value.splice(n,1),!e.value.length){t();return}n>0&&n===e.value.length&&(e.value[n-1].connector=void 0)}function i(n){let r=He(n);return r?(e.value=r.map(e=>({...e,isArrayMode:qe(e.field)})),!0):(t(),!1)}return{simpleConditions:e,addSimpleCondition:n,removeSimpleCondition:r,resetSimpleConditions:t,loadSimpleConditions:i,buildSimpleReactions:()=>Ke(e.value)}}const Xe=[{label:`显示/隐藏 (visible)`,value:`visible`},{label:`禁用 (disabled)`,value:`disabled`},{label:`只读 (readOnly)`,value:`readOnly`},{label:`值 (value)`,value:`value`},{label:`显示模式 (display)`,value:`display`},{label:`模式 (pattern)`,value:`pattern`},{label:`必填 (required)`,value:`required`},{label:`标题 (title)`,value:`title`},{label:`描述 (description)`,value:`description`}],Ze=[{label:`值 (value)`,value:`value`},{label:`显示模式 (display)`,value:`display`},{label:`模式 (pattern)`,value:`pattern`},{label:`初始值 (initialValue)`,value:`initialValue`},{label:`错误信息 (errors)`,value:`errors`},{label:`验证状态 (valid)`,value:`valid`}],Qe=[{label:`任意类型 (any)`,value:`any`},{label:`字符串 (string)`,value:`string`},{label:`数字 (number)`,value:`number`},{label:`布尔值 (boolean)`,value:`boolean`},{label:`数组 (array)`,value:`array`},{label:`对象 (object)`,value:`object`}],$e=[{label:`等于`,value:`eq`},{label:`不等于`,value:`neq`},{label:`包含`,value:`includes`},{label:`不包含`,value:`notIncludes`}],et={class:`reactions-editor`},tt={class:`section`},nt={class:`section-header`},rt={key:0,class:`empty-tip`},it={key:1,class:`simple-condition-list`},at={class:`simple-condition-item`},ot={class:`simple-condition-header`},st={class:`simple-condition-index`},ct={class:`field-select-row`},lt={class:`array-mode-switch`},ut={key:0,class:`simple-connector`},dt={class:`section`},ft={class:`section-header`},pt={key:0,class:`empty-tip`},mt={key:1,class:`dependency-list`},ht={class:`dependency-header`},gt={class:`dependency-index`},_t={class:`section`},vt={class:`section-header`},yt={key:0,class:`empty-tip`},bt={key:1,class:`state-rule-list`},xt={class:`state-rule-header`},St={class:`state-rule-index`};var Ct=Z(c({__name:`ReactionsEditor`,props:{modelValue:{type:Boolean},schema:{},currentFieldName:{},initialReactions:{}},emits:[`update:modelValue`,`save`],setup(c,{emit:l}){let u=c,d=l,f=t({get:()=>u.modelValue,set:e=>d(`update:modelValue`,e)}),p=b(`simple`),m=t(()=>({filterArrayFields:!0})),{fieldTree:h,isInArray:g}=Le(D(u,`schema`),D(u,`currentFieldName`),m),_=t(()=>({isArrayMode:!0})),{fieldTree:y}=Le(D(u,`schema`),D(u,`currentFieldName`),_);function S(e){return e?y.value:h.value}function w(e){e.field=``}let{dependencies:T,stateRules:k,loadAdvancedConfig:j,addDependency:M,removeDependency:N,handleFieldChange:P,addStateRule:F,removeStateRule:I,buildAdvancedReactions:L}=je(),{simpleConditions:R,addSimpleCondition:z,removeSimpleCondition:B,resetSimpleConditions:V,loadSimpleConditions:H,buildSimpleReactions:U}=Ye();function W(){let e=u.initialReactions;if(j(e),!e){V(),p.value=`simple`;return}p.value=H(e)?`simple`:`advanced`}function G(){W()}function K(){d(`save`,(p.value===`simple`?U():L())||{}),f.value=!1}function q(){f.value=!1}return(t,c)=>{let l=C(`ElButton`),u=C(`ElTreeSelect`),d=C(`ElSwitch`),m=C(`ElTooltip`),_=C(`ElFormItem`),y=C(`ElOption`),b=C(`ElSelect`),D=C(`ElInput`),j=C(`ElForm`),L=C(`ElRadioButton`),V=C(`ElRadioGroup`),H=C(`ElTabPane`),U=C(`ElTabs`),W=C(`ElDialog`);return v(),n(W,{modelValue:f.value,"onUpdate:modelValue":c[1]||=e=>f.value=e,title:`条件渲染配置`,width:`800px`,onOpen:G},{footer:A(()=>[s(l,{onClick:q},{default:A(()=>[...c[15]||=[o(` 取消 `,-1)]]),_:1}),s(l,{type:`primary`,onClick:K},{default:A(()=>[...c[16]||=[o(` 保存 `,-1)]]),_:1})]),default:A(()=>[a(`div`,et,[s(U,{modelValue:p.value,"onUpdate:modelValue":c[0]||=e=>p.value=e},{default:A(()=>[s(H,{label:`简单配置`,name:`simple`},{default:A(()=>[a(`div`,tt,[a(`div`,nt,[c[3]||=a(`span`,{class:`section-title`},`条件组合`,-1),s(l,{size:`small`,type:`primary`,onClick:O(z)},{default:A(()=>[...c[2]||=[o(` 添加条件 `,-1)]]),_:1},8,[`onClick`])]),O(R).length===0?(v(),i(`div`,rt,` 暂无条件,点击"添加条件"按钮添加 `)):(v(),i(`div`,it,[(v(!0),i(e,null,x(O(R),(t,f)=>(v(),i(e,{key:f},[a(`div`,at,[a(`div`,ot,[a(`span`,st,`条件 `+E(f+1),1),s(l,{size:`small`,type:`danger`,text:``,onClick:e=>O(B)(f)},{default:A(()=>[...c[4]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]),s(j,{"label-width":`80px`},{default:A(()=>[s(_,{label:`字段`},{default:A(()=>[a(`div`,ct,[s(u,{modelValue:t.field,"onUpdate:modelValue":e=>t.field=e,data:S(t.isArrayMode),placeholder:`选择依赖的字段`,clearable:``,"check-strictly":``,"render-after-expand":!1,class:`field-select`},null,8,[`modelValue`,`onUpdate:modelValue`,`data`]),O(g)?(v(),n(m,{key:0,content:`开启后可选择当前数组内的字段(相对路径)`,placement:`top`},{default:A(()=>[a(`div`,lt,[c[5]||=a(`span`,{class:`array-mode-label`},`数组内`,-1),s(d,{modelValue:t.isArrayMode,"onUpdate:modelValue":e=>t.isArrayMode=e,size:`small`,onChange:e=>w(t)},null,8,[`modelValue`,`onUpdate:modelValue`,`onChange`])])]),_:2},1024)):r(``,!0)])]),_:2},1024),s(_,{label:`操作`},{default:A(()=>[s(b,{modelValue:t.operator,"onUpdate:modelValue":e=>t.operator=e,placeholder:`选择操作`},{default:A(()=>[(v(!0),i(e,null,x(O($e),e=>(v(),n(y,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1024),s(_,{label:`值`},{default:A(()=>[s(D,{modelValue:t.value,"onUpdate:modelValue":e=>t.value=e,placeholder:`输入匹配值`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1024)]),_:2},1024)]),f<O(R).length-1?(v(),i(`div`,ut,[s(V,{modelValue:t.connector,"onUpdate:modelValue":e=>t.connector=e,size:`small`},{default:A(()=>[s(L,{label:`and`},{default:A(()=>[...c[6]||=[o(` 与 `,-1)]]),_:1}),s(L,{label:`or`},{default:A(()=>[...c[7]||=[o(` 或 `,-1)]]),_:1})]),_:1},8,[`modelValue`,`onUpdate:modelValue`])])):r(``,!0)],64))),128))]))])]),_:1}),s(H,{label:`高级配置`,name:`advanced`},{default:A(()=>[a(`div`,dt,[a(`div`,ft,[c[9]||=a(`span`,{class:`section-title`},`依赖字段`,-1),s(l,{size:`small`,type:`primary`,onClick:O(M)},{default:A(()=>[...c[8]||=[o(` 添加依赖 `,-1)]]),_:1},8,[`onClick`])]),O(T).length===0?(v(),i(`div`,pt,` 暂无依赖字段,点击"添加依赖"按钮添加 `)):(v(),i(`div`,mt,[(v(!0),i(e,null,x(O(T),(t,r)=>(v(),i(`div`,{key:r,class:`dependency-item`},[a(`div`,ht,[a(`span`,gt,`依赖 `+E(r+1),1),s(l,{size:`small`,type:`danger`,text:``,onClick:e=>O(N)(r)},{default:A(()=>[...c[10]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]),s(j,{"label-width":`80px`},{default:A(()=>[s(_,{label:`字段`},{default:A(()=>[s(u,{modelValue:t.source,"onUpdate:modelValue":e=>t.source=e,data:O(h),placeholder:`选择依赖的字段`,clearable:``,"check-strictly":``,"render-after-expand":!1,onChange:e=>O(P)(t)},null,8,[`modelValue`,`onUpdate:modelValue`,`data`,`onChange`])]),_:2},1024),s(_,{label:`属性`},{default:A(()=>[s(b,{modelValue:t.property,"onUpdate:modelValue":e=>t.property=e,placeholder:`选择属性`,onChange:e=>O(P)(t)},{default:A(()=>[(v(!0),i(e,null,x(O(Ze),e=>(v(),n(y,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`onUpdate:modelValue`,`onChange`])]),_:2},1024),s(_,{label:`变量名`},{default:A(()=>[s(D,{modelValue:t.name,"onUpdate:modelValue":e=>t.name=e,placeholder:`在表达式中使用的变量名`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1024),s(_,{label:`类型`},{default:A(()=>[s(b,{modelValue:t.type,"onUpdate:modelValue":e=>t.type=e,placeholder:`选择类型`},{default:A(()=>[(v(!0),i(e,null,x(O(Qe),e=>(v(),n(y,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1024)]),_:2},1024)]))),128))]))]),a(`div`,_t,[a(`div`,vt,[c[12]||=a(`span`,{class:`section-title`},`状态控制`,-1),s(l,{size:`small`,type:`primary`,onClick:O(F)},{default:A(()=>[...c[11]||=[o(` 添加规则 `,-1)]]),_:1},8,[`onClick`])]),O(k).length===0?(v(),i(`div`,yt,` 暂无状态规则,点击"添加规则"按钮添加 `)):(v(),i(`div`,bt,[(v(!0),i(e,null,x(O(k),(t,r)=>(v(),i(`div`,{key:r,class:`state-rule-item`},[a(`div`,xt,[a(`span`,St,`规则 `+E(r+1),1),s(l,{size:`small`,type:`danger`,text:``,onClick:e=>O(I)(r)},{default:A(()=>[...c[13]||=[o(` 删除 `,-1)]]),_:1},8,[`onClick`])]),s(j,{"label-width":`80px`},{default:A(()=>[s(_,{label:`状态属性`},{default:A(()=>[s(b,{modelValue:t.state,"onUpdate:modelValue":e=>t.state=e,placeholder:`选择要控制的状态`},{default:A(()=>[(v(!0),i(e,null,x(O(Xe),e=>(v(),n(y,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1024),s(_,{label:`表达式`},{default:A(()=>[s(D,{modelValue:t.expression,"onUpdate:modelValue":e=>t.expression=e,type:`textarea`,rows:2,placeholder:`输入 JS 表达式,如:$deps.username_value === '123'`},null,8,[`modelValue`,`onUpdate:modelValue`]),c[14]||=a(`div`,{class:`expression-tip`},` 使用 $deps.变量名 访问依赖字段的值 `,-1)]),_:2},1024)]),_:2},1024)]))),128))]))])]),_:1})]),_:1},8,[`modelValue`])])]),_:1},8,[`modelValue`])}}}),[[`__scopeId`,`data-v-6b415c60`]]);const wt={class:`config-panel`},Tt={key:0,class:`config-empty`},Et={key:1,class:`config-content`},Dt={class:`config-title`},Ot={class:`config-operate`},kt={key:0,class:`config-adapter-guide`};var At=Z(c({__name:`index`,props:{components:{}},setup(e){let c=e,l=[`FormItem`,`Input`,`InputNumber`,`Checkbox`,`Radio`,`Switch`,`Select`,`Space`,`ArrayItems`],d=q(),f=u(J,null),p=t(()=>l.every(e=>!!f?.setterComponents?.[e])),m=t(()=>{if(!p.value)return null;let e=f?.setterComponents;if(!e)return null;let{SchemaField:t}=z({components:e});return t}),h=T(null),g=t(()=>d.getSelectedField()),_=t(()=>g.value?g.value[`x-component`]:null),y=t(()=>{let e=_.value;return e?c.components[e]?.setterSchema:null}),x=t(()=>{if(!y.value)return null;let e=y.value.basicSetter;return!e||Object.keys(e).length===0?null:{type:`object`,properties:e}}),S=t(()=>{if(!y.value)return null;let e=y.value.componentSetter;return!e||!e.properties||Object.keys(e.properties).length===0?null:e}),D=t(()=>{if(!y.value)return null;let e=y.value.basicSetter||{},t=y.value.componentSetter?.properties||{};return{type:`object`,properties:{...e,...t}}});k(()=>d.selectedFieldName.value,()=>{g.value&&D.value?h.value=De(D.value,d):h.value=null},{immediate:!0});let j=T([`base`,`component`]),M=t(()=>d.selectedFieldName.value||`empty`),N=b(!1);function P(){N.value=!0}function F(e){let t=d.selectedFieldName.value;if(!t)return;let n=d.getSelectedField();if(!n)return;let r={...n,"x-reactions":Object.keys(e).length>0?e:void 0};d.updateFieldSchema(t,r)}return(e,t)=>{let c=C(`ElButton`),l=C(`ElAlert`),u=C(`ElCollapseItem`),f=C(`ElCollapse`);return v(),i(`div`,wt,[g.value?(v(),i(`div`,Et,[a(`h3`,Dt,E(_.value)+` 配置 `,1),a(`div`,Ot,[s(c,{type:`primary`,onClick:P},{default:A(()=>[...t[3]||=[o(` 条件渲染 `,-1)]]),_:1})]),p.value?h.value&&m.value?(v(),n(O(L),{key:M.value,form:h.value},{default:A(()=>[s(f,{modelValue:j.value,"onUpdate:modelValue":t[0]||=e=>j.value=e,class:`config-section`},{default:A(()=>[x.value?(v(),n(u,{key:0,name:`base`,title:`基本配置`},{default:A(()=>[(v(),n(w(m.value),{schema:x.value},null,8,[`schema`]))]),_:1})):r(``,!0),S.value?(v(),n(u,{key:1,name:`component`,title:`组件配置`},{default:A(()=>[(v(),n(w(m.value),{schema:S.value},null,8,[`schema`]))]),_:1})):r(``,!0)]),_:1},8,[`modelValue`])]),_:1},8,[`form`])):r(``,!0):(v(),i(`div`,kt,[s(l,{title:`未配置 Setter 适配器`,type:`warning`,closable:!1,"show-icon":``,description:`当前 Designer 未注入 adapter,无法编辑基础配置和组件配置。`}),t[4]||=a(`p`,{class:`guide-title`},` 接入示例: `,-1),t[5]||=a(`pre`,{class:`guide-code`},[a(`code`,null,`import { elementPlusAdapter } from '@formily-djd/designer/element-plus'
|
|
2
|
+
|
|
3
|
+
<Designer :adapter="elementPlusAdapter" ... />`)],-1)])),s(O(Ct),{modelValue:N.value,"onUpdate:modelValue":t[1]||=e=>N.value=e,schema:O(d).formSchema.value,"current-field-name":O(d).selectedFieldName.value,"initial-reactions":g.value?.[`x-reactions`],onSave:F},null,8,[`modelValue`,`schema`,`current-field-name`,`initial-reactions`])])):(v(),i(`div`,Tt,[...t[2]||=[a(`p`,null,`请选择一个字段`,-1)]]))])}}}),[[`__scopeId`,`data-v-56b65526`]]);const jt={class:`material-panel`},Mt={class:`panel-content`},Nt={class:`category-title`},Pt={class:`component-grid`},Ft=[`onClick`,`onDragstart`],It={class:`component-icon`},Lt={class:`component-name`},Rt={key:0,class:`component-desc`};var zt=Z(c({__name:`materialPanel`,props:{components:{}},setup(n){let o=n,s=u(re,null),c=t(()=>{let e={};return Object.entries(o.components).forEach(([t,n])=>{if(n.config?.hidden===!0)return;let r=n.config?.category||`其他`;e[r]||(e[r]=[]),e[r].push({key:t,component:n})}),e});function l(e,t,n){if(!e.dataTransfer)return;let r={type:`new-component`,componentKey:t,componentName:n.config.name,defaultSchema:n.defaultSchema};e.dataTransfer.effectAllowed=`copy`,e.dataTransfer.setData(`application/json`,JSON.stringify(r));let i=e.target;e.dataTransfer.setDragImage(i,10,10),setTimeout(()=>{s?.switchToTreeTab()},100)}function d(e){let t=e.target;t.style.opacity=`1`}function f(e){console.log(`点击组件:`,e)}return(t,n)=>(v(),i(`div`,jt,[n[0]||=a(`div`,{class:`panel-header`},[a(`h3`,null,`组件库`)],-1),a(`div`,Mt,[(v(!0),i(e,null,x(c.value,(t,n)=>(v(),i(`div`,{key:n,class:`category-group`},[a(`div`,Nt,E(n),1),a(`div`,Pt,[(v(!0),i(e,null,x(t,({key:e,component:t})=>(v(),i(`div`,{key:e,class:`component-item`,draggable:`true`,onClick:t=>f(e),onDragstart:n=>l(n,e,t),onDragend:d},[a(`div`,It,E(t.config?.icon?.slice(0,3)),1),a(`div`,Lt,E(t.config?.name||e),1),t.config?.description?(v(),i(`div`,Rt,E(t.config.description),1)):r(``,!0)],40,Ft))),128))])]))),128))])]))}}),[[`__scopeId`,`data-v-93609a69`]]);const Bt={key:0,class:`clipboard-paste-section`},Vt={class:`component-picker-content`},Ht={class:`picker-category-title`},Ut={class:`picker-component-grid`},Wt=[`onClick`],Gt={class:`picker-component-icon`},Kt={class:`picker-component-name`};var qt=Z(c({__name:`ComponentPicker`,props:{visible:{type:Boolean},groupedComponents:{}},emits:[`update:visible`,`select`,`pasteSchema`],setup(t,{emit:c}){let l=t,u=c,d=b(null);async function f(){d.value=null;try{let e=await navigator.clipboard.readText();if(!e)return;let t=JSON.parse(e);t&&typeof t==`object`&&t[`x-component`]&&(d.value=t)}catch{}}function p(){d.value&&(u(`pasteSchema`,d.value),u(`update:visible`,!1))}return k(()=>l.visible,e=>{e&&f()}),(t,c)=>{let f=C(`ElButton`),m=C(`ElDialog`);return v(),n(m,{"model-value":l.visible,title:`选择组件`,width:`600px`,"close-on-click-modal":!1,"onUpdate:modelValue":c[0]||=e=>u(`update:visible`,e)},{default:A(()=>[d.value?(v(),i(`div`,Bt,[s(f,{type:`primary`,onClick:p},{default:A(()=>[o(` 从剪切板粘贴 (`+E(d.value[`x-component`])+`) `,1)]),_:1})])):r(``,!0),a(`div`,Vt,[(v(!0),i(e,null,x(l.groupedComponents,(t,n)=>(v(),i(`div`,{key:n,class:`picker-category-group`},[a(`div`,Ht,E(n),1),a(`div`,Ut,[(v(!0),i(e,null,x(t,({key:e,component:t})=>(v(),i(`div`,{key:e,class:`picker-component-item`,onClick:n=>u(`select`,e,t)},[a(`div`,Gt,E(t.config?.icon?.slice(0,3)),1),a(`div`,Kt,E(t.config?.name||e),1)],8,Wt))),128))])]))),128))])]),_:1},8,[`model-value`])}}}),[[`__scopeId`,`data-v-2f266708`]]);const Jt={class:`context-menu`},Yt={key:0,class:`menu-divider`},Xt=[`onClick`];var Zt=Z(c({__name:`ContextMenu`,props:{visible:{type:Boolean},virtualRef:{},menuItems:{}},emits:[`update:visible`,`select`],setup(t,{emit:r}){let o=t,c=r;return(t,r)=>{let l=C(`ElIcon`),u=C(`ElPopover`);return v(),n(u,{visible:o.visible,"virtual-ref":o.virtualRef,"virtual-triggering":``,"show-arrow":!1,"popper-class":`schema-tree-context-menu`,placement:`bottom-start`,offset:6,"onUpdate:visible":r[0]||=e=>c(`update:visible`,e)},{default:A(()=>[a(`div`,Jt,[(v(!0),i(e,null,x(o.menuItems,(t,r)=>(v(),i(e,{key:r},[t===`divider`?(v(),i(`div`,Yt)):(v(),i(`div`,{key:1,class:`menu-item`,onClick:e=>c(`select`,t.type)},[s(l,null,{default:A(()=>[(v(),n(w(t.icon)))]),_:2},1024),a(`span`,null,E(t.label),1)],8,Xt))],64))),128))])]),_:1},8,[`visible`,`virtual-ref`])}}}),[[`__scopeId`,`data-v-1ef29c4a`]]);function $(e,t){return c({name:e,setup(){return()=>l(`svg`,{viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},t())}})}const Qt=$(`DesignerSearchIcon`,()=>[l(`circle`,{cx:11,cy:11,r:7}),l(`path`,{d:`M20 20l-3.5-3.5`})]),$t=$(`DesignerCirclePlusIcon`,()=>[l(`circle`,{cx:12,cy:12,r:9}),l(`path`,{d:`M12 8v8`}),l(`path`,{d:`M8 12h8`})]),en=$(`DesignerCopyDocumentIcon`,()=>[l(`rect`,{x:9,y:9,width:10,height:11,rx:2}),l(`path`,{d:`M15 9V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2`})]),tn=$(`DesignerDeleteIcon`,()=>[l(`path`,{d:`M3 6h18`}),l(`path`,{d:`M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2`}),l(`path`,{d:`M6 6l1 14a1 1 0 0 0 1 .9h8a1 1 0 0 0 1-.9l1-14`}),l(`path`,{d:`M10 11v6`}),l(`path`,{d:`M14 11v6`})]),nn=$(`DesignerTopIcon`,()=>[l(`path`,{d:`M12 6v12`}),l(`path`,{d:`M8 10l4-4 4 4`})]),rn={Search:Qt,Bottom:$(`DesignerBottomIcon`,()=>[l(`path`,{d:`M12 6v12`}),l(`path`,{d:`M8 14l4 4 4-4`})]),CirclePlus:$t,CopyDocument:en,Delete:tn,FolderAdd:$(`DesignerFolderAddIcon`,()=>[l(`path`,{d:`M3 8a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8z`}),l(`path`,{d:`M12 11v5`}),l(`path`,{d:`M9.5 13.5h5`})]),Top:nn};function an(){let e=u(J,null),n=b(!1),r=b(null),i=b(`node`),a=b(null),o=b(null),s=t(()=>({...rn,...e?.icons})),c=t(()=>{if(i.value===`empty`)return[{type:`insertRoot`,label:`插入组件`,icon:s.value.CirclePlus}];let e=r.value;if(!e)return[];let t=[{type:`copy`,label:`复制`,icon:s.value.CopyDocument},{type:`copyTemplate`,label:`复制模板`,icon:s.value.CopyDocument},{type:`delete`,label:`删除`,icon:s.value.Delete},`divider`,{type:`moveUp`,label:`上移`,icon:s.value.Top},{type:`moveDown`,label:`下移`,icon:s.value.Bottom},`divider`,{type:`insertBefore`,label:`上方插入`,icon:s.value.CirclePlus},{type:`insertAfter`,label:`下方插入`,icon:s.value.CirclePlus}];return e.isContainer&&t.push({type:`insertInner`,label:`插入内部`,icon:s.value.FolderAdd}),t}),l=e=>{let t=new DOMRect(e.clientX,e.clientY,0,0);a.value={getBoundingClientRect:()=>t,contextElement:document.body}},d=()=>{o.value&&=(document.removeEventListener(`click`,o.value),null)},f=()=>{n.value=!1,d()},p=()=>{d();let e=()=>{f()};o.value=e,document.addEventListener(`click`,e)},m=(e,t,a)=>{e.preventDefault(),e.stopPropagation(),i.value=t,r.value=a,l(e),n.value=!0,setTimeout(()=>{p()},0)};return _(()=>{d()}),{contextMenuVisible:n,contextMenuNode:r,contextMenuMode:i,contextMenuVirtualRef:a,menuItems:c,handleEmptyContextMenu:e=>{m(e,`empty`,null)},handleNodeContextMenu:(e,t)=>{m(e,`node`,t)},closeContextMenu:f}}function on(e){return JSON.parse(JSON.stringify(e))}function sn(e){return e.split(`.`).filter(e=>e!==`properties`&&e!==`items`)}function cn(e,t,n){let r=sn(t),i=[...r.slice(0,-1),n],a=new Map,o=(e,t,n)=>{let r=on(e);if(a.set(t.join(`.`),n.join(`.`)),e.properties&&typeof e.properties==`object`){let i={};Object.entries(e.properties).forEach(([e,r])=>{let a=`f_${M()}`;i[a]=o(r,[...t,e],[...n,a])}),r.properties=i}return e.items&&typeof e.items==`object`&&(r.items=o(e.items,[...t,`items`],[...n,`items`])),r},s=e=>{if(a.has(e))return a.get(e)||null;for(let[t,n]of a.entries())if(e.startsWith(`${t}.`))return`${n}${e.slice(t.length)}`;return null},c=e=>{if(!e||typeof e!=`object`)return;let t=e[`x-reactions`];t&&Array.isArray(t.dependencies)&&(t.dependencies=t.dependencies.map(e=>{if(e&&typeof e.source==`string`){let t=s(e.source);if(t)return{...e,source:t}}return e}),e[`x-reactions`]=t),e.properties&&Object.values(e.properties).forEach(e=>c(e)),e.items&&c(e.items)},l=o(e,r,i);return c(l),l}function ln(e){return e[`x-droppable`]===!1?!1:!![`object`,`void`,`array`].includes(e.type)}function un(e,t=``){let n=[];return!e||typeof e!=`object`?n:(e.properties&&typeof e.properties==`object`&&Object.entries(e.properties).forEach(([e,r])=>{let i=t?`${t}.properties.${e}`:e,a=r[`x-component`]||`Unknown`,o=r.title||e,s={path:i,label:o,title:o,component:a,isContainer:ln(r),children:un(r,i)};n.push(s)}),e.items?.properties&&Object.entries(e.items.properties).forEach(([e,r])=>{let i=`${t}.items.properties.${e}`,a=r[`x-component`]||`Unknown`,o=r.title||e,s={path:i,label:o,title:o,component:a,isContainer:ln(r),children:un(r,i)};n.push(s)}),n)}function dn(e){let t=[];return e.forEach(e=>{t.push(e.path),e.children&&e.children.length>0&&t.push(...dn(e.children))}),t}function fn(e,t){let n=t.getBoundingClientRect(),r=e.clientY-n.top,i=n.height*.2;return r<i?`before`:r>n.height-i?`after`:`inner`}function pn(e,t,n){let r=document.elementFromPoint(t,n)?.closest(`.el-tree-node`);if(!r)return null;let i=r.querySelector(`.el-tree-node__content`);if(!i)return null;let a=(e,t)=>{for(let n of e){if(n.path===t)return n;if(n.children){let e=a(n.children,t);if(e)return e}}return null},o=r.getAttribute(`data-path`)||i.getAttribute(`data-path`);if(o){let t=a(e,o);if(t)return{element:r,data:t}}let s=document.querySelectorAll(`.el-tree-node`),c=Array.from(s).indexOf(r);return c>=0&&c<e.length?{element:r,data:e[c]}:null}function mn(e){let{components:n,contextMenuNode:r,closeContextMenu:i,treeData:a,expandAll:o,store:s}=e,c=b(!1),l=b(null),u=t(()=>{let e={};return Object.entries(n||{}).forEach(([t,n])=>{if(n.config?.hidden===!0)return;let r=n.config?.category||`其他`;e[r]||(e[r]=[]),e[r].push({key:t,component:n})}),e}),d=(e,t,n)=>{let{defaultSchema:r}=e,i=`f_${M()}`,a;a=n===`inner`?X.Inner:n===`before`?X.Before:X.After,s.insertField(t.path,i,r,a),p(()=>{let e;if(n===`inner`)e=s.getNodeSchema(t.path)?.type===`array`?`${t.path}.items.properties.${i}`:`${t.path}.properties.${i}`;else{let n=t.path.split(`.`).slice(0,-1).join(`.`);e=n?`${n}.${i}`:i}s.selectNode(e),o()})},f=e=>{let{defaultSchema:t}=e,n=`f_${M()}`;s.addField(n,t),s.selectNode(n),p(()=>{o()})},m=(e,t)=>{l.value={targetNode:e,position:t},c.value=!0},h=(e,t)=>{if(!l.value)return;let{targetNode:n,position:r}=l.value,i={componentKey:e,defaultSchema:JSON.parse(JSON.stringify(t.defaultSchema))};r===`root`?f(i):n&&d(i,n,r),c.value=!1,l.value=null},g=e=>{if(!l.value)return;let{targetNode:t,position:n}=l.value,r=cn(e,`paste`,`f_${M()}`),i={componentKey:e[`x-component`]||`Unknown`,defaultSchema:r};n===`root`?f(i):t&&d(i,t,n),c.value=!1,l.value=null},_=e=>{let t=e.split(`.`),n=t[t.length-1],r=t.includes(`items`)&&t.includes(`properties`),i=``;if(r){let e=t.lastIndexOf(`items`);i=t.slice(0,e).join(`.`)}else{let e=t.lastIndexOf(`properties`);e>0&&(i=t.slice(0,e).join(`.`))}let a,o;return i?(a=s.getNodeSchema(i),a&&(o=a.type===`array`?a.items?.properties:a.properties)):(a=s.formSchema.value,o=a.properties),{parentSchema:a,propertiesObj:o,fieldName:n}},v=()=>{if(!r.value)return;let e=r.value.path,t=s.getNodeSchema(e);if(!t)return;let{parentSchema:n,propertiesObj:a,fieldName:o}=_(e);if(!n||!a)return;let c=`f_${M()}`,l=cn(t,e,c),u=Object.entries(a),d=u.findIndex(([e])=>e===o),f=d>=0?d+1:u.length;u.splice(f,0,[c,l]);let p={};u.forEach(([e,t])=>{p[e]=t});let m=e.split(`.`);if(m.length===1)s.formSchema.value.properties=p;else{let e=m.includes(`items`),t;if(e){let e=m.lastIndexOf(`items`);t=`${m.slice(0,e).join(`.`)}.items.properties`}else{let e=m.lastIndexOf(`properties`);t=m.slice(0,e+1).join(`.`)}I(s.formSchema.value.properties,t,p)}i()},y=()=>{if(!r.value)return;let e=r.value.path,t=s.getNodeSchema(e);if(!t)return;let n=JSON.stringify(t);navigator.clipboard.writeText(n),i()},x=()=>{if(!r.value)return;let e=r.value.path;N(s.formSchema.value.properties,e),i()},S=()=>{if(!r.value)return;let e=r.value.path,{parentSchema:t,propertiesObj:n,fieldName:a}=_(e);if(!n||!t)return;let o=Object.entries(n),c=o.findIndex(([e])=>e===a);if(c<=0)return;let l=o[c];o[c]=o[c-1],o[c-1]=l;let u={};o.forEach(([e,t])=>{u[e]=t});let d=e.split(`.`);if(d.length===1)s.formSchema.value.properties=u;else{let e=d.includes(`items`),t;if(e){let e=d.lastIndexOf(`items`);t=`${d.slice(0,e).join(`.`)}.items.properties`}else{let e=d.lastIndexOf(`properties`);t=d.slice(0,e+1).join(`.`)}I(s.formSchema.value.properties,t,u)}i()},C=()=>{if(!r.value)return;let e=r.value.path,{parentSchema:t,propertiesObj:n,fieldName:a}=_(e);if(!n||!t)return;let o=Object.entries(n),c=o.findIndex(([e])=>e===a);if(c===-1||c>=o.length-1)return;let l=o[c];o[c]=o[c+1],o[c+1]=l;let u={};o.forEach(([e,t])=>{u[e]=t});let d=e.split(`.`);if(d.length===1)s.formSchema.value.properties=u;else{let e=d.includes(`items`),t;if(e){let e=d.lastIndexOf(`items`);t=`${d.slice(0,e).join(`.`)}.items.properties`}else{let e=d.lastIndexOf(`properties`);t=d.slice(0,e+1).join(`.`)}I(s.formSchema.value.properties,t,u)}i()};return{groupedComponents:u,componentPickerVisible:c,handleMenuClick:e=>{switch(e){case`insertRoot`:m(null,`root`);break;case`insertBefore`:m(r.value,`before`);break;case`insertAfter`:m(r.value,`after`);break;case`insertInner`:m(r.value,`inner`);break;case`copy`:v();return;case`copyTemplate`:y();return;case`delete`:x();return;case`moveUp`:S();return;case`moveDown`:C();return}i()},handleSelectComponent:h,handlePasteSchema:g,handleExternalDrop:e=>{if(e.preventDefault(),e.stopPropagation(),e.dataTransfer)try{let t=e.dataTransfer.getData(`application/json`);if(!t)return;let n=JSON.parse(t);if(n.type!==`new-component`)return;let{componentKey:r,defaultSchema:i}=n;if(!i){console.warn(`组件缺少 defaultSchema:`,r);return}let o=pn(a.value,e.clientX,e.clientY);if(console.log(`targetNode`,o),o){let t=fn(e,o.element);d(n,o.data,t)}else f(n)}catch(e){console.error(`解析拖拽数据失败:`,e)}}}}function hn(e=q()){let n=b(),r=b(``),i=t(()=>un(e.formSchema.value));return{treeRef:n,filterText:r,treeData:i,treeProps:{children:`children`,label:`label`},filterNode:(e,t)=>e?t.label.toLowerCase().includes(e.toLowerCase()):!0,handleFilterChange:e=>{n.value?.filter(e)},expandAll:()=>{dn(i.value).forEach(e=>{let t=n.value?.getNode(e);t&&(t.expanded=!0)})},collapseAll:()=>{dn(i.value).forEach(e=>{let t=n.value?.getNode(e);t&&(t.expanded=!1)})},handleNodeClick:t=>{e.selectNode(t.path)},handleAllowDrag:e=>!0,handleAllowDrop:(e,t,n)=>{let r=t.data;return n===`inner`?r.isContainer:!0},handleNodeDrop:(t,n,r,i)=>{let a=t.data,o=n.data,s;s=r===`inner`?`INNER`:r===`before`?`BEFORE`:`AFTER`,e.moveField(a.path,o.path,s)}}}const gn={class:`schema-tree`},_n={class:`tree-toolbar`},vn={class:`toolbar-buttons`},yn={class:`node-label`},bn={class:`node-component`};var xn=Z(c({__name:`SchemaTree`,setup(e){let r=q(),c=u(`designerComponents`,{}),l=u(J,null),f=t(()=>l?.icons?.Search??rn.Search),{treeRef:h,filterText:g,treeData:_,treeProps:y,filterNode:b,handleFilterChange:x,expandAll:S,collapseAll:T,handleNodeClick:D,handleAllowDrop:k,handleAllowDrag:M,handleNodeDrop:N}=hn(r),{contextMenuVisible:P,contextMenuNode:F,contextMenuVirtualRef:I,menuItems:L,handleEmptyContextMenu:R,handleNodeContextMenu:z,closeContextMenu:B}=an(),{groupedComponents:V,componentPickerVisible:H,handleMenuClick:U,handleSelectComponent:W,handlePasteSchema:G,handleExternalDrop:K}=mn({store:r,components:c,contextMenuNode:F,closeContextMenu:B,treeData:_,expandAll:S});return p(()=>{S()}),(e,t)=>{let r=C(`ElIcon`),c=C(`ElInput`),l=C(`ElButton`),u=C(`ElEmpty`),p=C(`ElTree`);return v(),i(`div`,gn,[a(`div`,_n,[s(c,{modelValue:O(g),"onUpdate:modelValue":t[0]||=e=>d(g)?g.value=e:null,placeholder:`搜索组件`,clearable:``,size:`small`,onInput:O(x)},{prefix:A(()=>[s(r,null,{default:A(()=>[(v(),n(w(f.value)))]),_:1})]),_:1},8,[`modelValue`,`onInput`]),a(`div`,vn,[s(l,{size:`small`,text:``,onClick:O(S)},{default:A(()=>[...t[7]||=[o(` 全部展开 `,-1)]]),_:1},8,[`onClick`]),s(l,{size:`small`,text:``,onClick:O(T)},{default:A(()=>[...t[8]||=[o(` 全部折叠 `,-1)]]),_:1},8,[`onClick`])])]),a(`div`,{class:`tree-content`,onDrop:t[2]||=(...e)=>O(K)&&O(K)(...e),onDragover:t[3]||=j(()=>{},[`prevent`]),onContextmenu:t[4]||=(...e)=>O(R)&&O(R)(...e)},[s(p,{ref_key:`treeRef`,ref:h,style:{height:`100%`},data:O(_),props:O(y),"node-key":`path`,draggable:``,"allow-drop":O(k),"allow-drag":O(M),"filter-node-method":(e,t)=>O(b)(e,t),"default-expand-all":``,"highlight-current":``,onNodeClick:O(D),onNodeDrop:O(N),onNodeContextmenu:t[1]||=(e,t)=>O(z)(e,t)},{default:A(({data:e})=>[a(`div`,{class:m([`tree-node`,{"is-container":e.isContainer}])},[a(`span`,yn,E(e.label),1),a(`span`,bn,`(`+E(e.component)+`)`,1)],2)]),empty:A(()=>[s(u,{description:`暂无组件,请点击右键插入`})]),_:1},8,[`data`,`props`,`allow-drop`,`allow-drag`,`filter-node-method`,`onNodeClick`,`onNodeDrop`])],32),s(Zt,{visible:O(P),"onUpdate:visible":t[5]||=e=>d(P)?P.value=e:null,"virtual-ref":O(I),"menu-items":O(L),onSelect:O(U)},null,8,[`visible`,`virtual-ref`,`menu-items`,`onSelect`]),s(qt,{visible:O(H),"onUpdate:visible":t[6]||=e=>d(H)?H.value=e:null,"grouped-components":O(V),onSelect:O(W),onPasteSchema:O(G)},null,8,[`visible`,`grouped-components`,`onSelect`,`onPasteSchema`])])}}}),[[`__scopeId`,`data-v-7b073e0c`]]);const Sn={class:`left-panel`};var Cn=Z(c({__name:`index`,props:{components:{},draggable:{type:Boolean,default:!1}},setup(e){let t=e,r=b(`materials`);function a(){r.value!==`tree`&&(r.value=`tree`)}return y(re,{switchToTreeTab:a}),(a,o)=>{let c=C(`ElTabPane`),l=C(`ElTabs`);return v(),i(`div`,Sn,[t.draggable?(v(),n(l,{key:0,modelValue:r.value,"onUpdate:modelValue":o[0]||=e=>r.value=e,class:`panel-tabs`},{default:A(()=>[s(c,{label:`组件库`,name:`materials`},{default:A(()=>[s(zt,{components:e.components},null,8,[`components`])]),_:1}),s(c,{label:`组件树`,name:`tree`},{default:A(()=>[s(xn)]),_:1})]),_:1},8,[`modelValue`])):(v(),n(xn,{key:1}))])}}}),[[`__scopeId`,`data-v-7b552cf6`]]),wn=c({name:`ArrayInner`,inheritAttrs:!1,__name:`arrayInner`,setup(e){return y(te,B()),(e,t)=>S(e.$slots,`default`)}}),Tn=c({inheritAttrs:!1,__name:`arrayItemInner`,props:{index:{}},setup(e){return y(ne,e),(e,t)=>S(e.$slots,`default`)}});function En(e){return Array.isArray(e?.items)?En(e.items[0]):e?.items?.type===`array`||e?.items?.type===`object`}function Dn(e){let t=En(e),n=null;return n=t?new WeakMap:[],_(()=>{n=null}),{getKey:(e,t)=>n instanceof WeakMap?(n.has(e)||n.set(e,M()),`${n.get(e)}-${t}`):(n&&!n[t]&&(n[t]=M()),n?`${n[t]}-${t}`:void 0)}}function On(e){return G(c({name:`SchemaWrapper`,props:{value:{type:[String,Number,Boolean,Array,Object],default:void 0},onChange:{type:Function,default:void 0}},setup(n,r){let{setterSchema:i}=e,a=B(),o=V(),s=u(te,void 0),c=u(ne,void 0),d=u(ie,t(()=>!1)),{getKey:f}=Dn(o.value),p=t(()=>{let e=a.value,t={...o.value?.[`x-component-props`]||{},value:n.value,onChange:n.onChange};if(e&&!U(e)&&(t.pattern=e.pattern),i.basicSetter)for(let[e,n]of Object.entries(i.basicSetter)){let r=n[`x-path`];if(r){let n=P(o.value,r);n!==void 0&&(t[e]=n)}}if(i.componentSetter?.properties)for(let[e,n]of Object.entries(i.componentSetter.properties)){let r=n[`x-path`];if(r){let n=P(o.value,r);n!==void 0&&(t[e]=n)}}e&&!U(e)&&(t.pattern=e.pattern);let r=o.value?.type===`array`?a.value:s?.value;return r&&(t.onAdd=()=>r.push({}),t.onPush=()=>r.push({}),t.onUnshift=()=>r.unshift({}),t.onRemove=e=>r.remove(e),t.onMove=(e,t)=>r.move(e,t),t.onMoveUp=e=>{e>0&&r.move(e,e-1)},t.onMoveDown=e=>{e<r.value.length-1&&r.move(e,e+1)},c?.index!==void 0&&(t.pattern=r.pattern)),c?.index!==void 0&&(t.arrayIndex=c.index),d.value&&(t.pattern=`disabled`),t});return()=>{let t=a.value;if(!t||t.display!==`visible`)return l(`template`,{},{});let n=()=>{if(!t||U(t))return null;let e=t.errors||[];return e.length===0?null:l(`div`,{class:`formily-validation-errors`,style:{color:`#f56c6c`,fontSize:`12px`,marginTop:`4px`,lineHeight:`1.5`}},l(`div`,{class:`formily-validation-error-item`},e[0].messages))};if(o.value?.type===`array`){let r=t?.value||[],i=r.length>0?r.map((e,t)=>l(Tn,{index:t},{default:()=>l(R,{key:f(e,t),schema:o.value.items,name:t})})):null;return l(`div`,{},[l(wn,{},{default:()=>l(e.component,p.value,{default:()=>i})}),n()])}return l(`div`,{},[l(e.component,p.value,r.slots),n()])}}}))}var kn=c({__name:`index`,props:{values:{},schema:{},components:{},disabled:{type:Boolean}},setup(e,{expose:r}){let i=e,a=H({values:i.values??{}});y(ie,t(()=>i.disabled??!1));let{SchemaField:o}=z({components:Object.keys(i.components).reduce((e,t)=>(e[t]=On(i.components[t]),e),{})});return r({form:a}),(t,r)=>(v(),n(O(L),{form:O(a)},{default:A(()=>[s(O(o),{schema:e.schema},null,8,[`schema`])]),_:1},8,[`form`]))}});const An={key:0,class:`designer-layout`},jn={class:`designer-material`},Mn={class:`designer-canvas`},Nn={class:`designer-config`},Pn={key:1,class:`designer-preview`};var Fn=Z(c({__name:`designer`,props:{components:{},mode:{default:`edit`},modelValue:{},draggable:{type:Boolean,default:!1},height:{default:`100vh`},adapter:{}},emits:[`update:modelValue`],setup(e,{expose:n,emit:r}){let o=e,c=r,l=ue(o.draggable);y(`designerComponents`,o.components),y(J,o.adapter??null);let u=b(null);k(()=>o.modelValue,e=>{e&&JSON.stringify(e)!==JSON.stringify(l.formSchema.value)&&(l.formSchema.value=e)},{immediate:!0,deep:!0}),k(()=>l.formSchema.value,e=>{c(`update:modelValue`,e)},{deep:!0});function d(){return u.value?.form?.values||{}}return n({getFormValues:d,schema:t(()=>l.formSchema.value),store:l}),(t,n)=>(v(),i(`div`,{class:`designer`,style:g({height:o.height})},[o.mode===`edit`?(v(),i(`div`,An,[a(`div`,jn,[s(Cn,{components:e.components,draggable:e.draggable},null,8,[`components`,`draggable`])]),a(`div`,Mn,[s(Ee,{components:e.components},null,8,[`components`])]),a(`div`,Nn,[s(At,{components:e.components},null,8,[`components`])])])):(v(),i(`div`,Pn,[s(kn,{ref_key:`renderRef`,ref:u,schema:O(l).formSchema.value,components:e.components},null,8,[`schema`,`components`])]))],4))}}),[[`__scopeId`,`data-v-7a43b822`]]);const In=Ee,Ln=At,Rn=zt,zn=Fn,Bn=kn;export{In as Canvas,Ln as ConfigPanel,K as DesignStoreKey,zn as Designer,J as DesignerAdapterKey,Rn as MaterialPanel,Bn as Render,de as schemaToSetterValues,fe as setterValuesToSchema,ue as useCreateDesignStore,q as useDesignStore};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@formily-djd/designer",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.18",
|
|
5
5
|
"description": "djd formily designer",
|
|
6
6
|
"author": "gaojinsong2010@gmail.com",
|
|
7
7
|
"license": "MIT",
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
"sideEffects": false,
|
|
10
10
|
"exports": {
|
|
11
11
|
".": "./dist/index.mjs",
|
|
12
|
+
"./element-plus": {
|
|
13
|
+
"types": "./dist/element-plus.d.mts",
|
|
14
|
+
"default": "./dist/element-plus.mjs"
|
|
15
|
+
},
|
|
12
16
|
"./package.json": "./package.json",
|
|
13
17
|
"./css": "./dist/index.css"
|
|
14
18
|
},
|
|
@@ -18,10 +22,6 @@
|
|
|
18
22
|
"files": [
|
|
19
23
|
"dist"
|
|
20
24
|
],
|
|
21
|
-
"peerDependencies": {
|
|
22
|
-
"@element-plus/icons-vue": "^2.3.2",
|
|
23
|
-
"@formily/element-plus": "^1.1.0"
|
|
24
|
-
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@formily/core": "^2.3.7",
|
|
27
27
|
"@formily/json-schema": "^2.3.7",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"@formily/shared": "^2.3.7",
|
|
30
30
|
"@formily/vue": "^2.3.7",
|
|
31
31
|
"vue": "^3.5.22",
|
|
32
|
-
"@formily-djd/utils": "0.0.
|
|
32
|
+
"@formily-djd/utils": "0.0.18"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@antfu/eslint-config": "^5.4.1",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"vitest": "^3.2.4",
|
|
62
62
|
"vitest-package-exports": "^0.1.1",
|
|
63
63
|
"yaml": "^2.8.1",
|
|
64
|
-
"@formily-djd/component": "0.0.
|
|
64
|
+
"@formily-djd/component": "0.0.18"
|
|
65
65
|
},
|
|
66
66
|
"publishConfig": {
|
|
67
67
|
"access": "public",
|