cardbuddy 0.7.0 → 0.9.0
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/README.md +21 -0
- package/dist/cli.js +5 -0
- package/dist/preview-editor/assets/index-CrcrVs4F.css +1 -0
- package/dist/preview-editor/assets/index-DnpHHKWl.js +80 -0
- package/dist/preview-editor/index.html +2 -2
- package/dist/server-core/codeBridge.js +359 -0
- package/dist/server-core/index.js +27 -2
- package/dist/server-core/logStream.js +275 -0
- package/dist/standalone.js +33 -6
- package/dist/vendored/App.vue +28 -19
- package/dist/vendored/ansi.js +185 -0
- package/dist/vendored/api.js +164 -28
- package/dist/vendored/components/ApiCallPanel.vue +13 -1
- package/dist/vendored/components/ApiPayloadTree.vue +34 -1
- package/dist/vendored/components/CardGallery.vue +2 -2
- package/dist/vendored/components/ComponentPalette.vue +46 -39
- package/dist/vendored/components/ConfirmDialog.vue +2 -2
- package/dist/vendored/components/DebugPanel.vue +420 -69
- package/dist/vendored/components/EventEditor.vue +29 -3
- package/dist/vendored/components/LogValue.vue +2 -1
- package/dist/vendored/components/NodeInspector.vue +1 -1
- package/dist/vendored/components/PropControl.vue +6 -2
- package/dist/vendored/components/RemotePreview.vue +3 -1
- package/dist/vendored/components/StructureTree.vue +2 -0
- package/dist/vendored/components/setters/SetCode.vue +111 -3
- package/dist/vendored/styles/app.css +529 -96
- package/dist/vendored/styles/card-gallery.css +4 -11
- package/dist/vendored/styles/card-select.css +0 -15
- package/dist/vendored/styles/dropdown.css +3 -15
- package/dist/vendored/styles/json-tree.css +1 -1
- package/dist/vendored/styles/node-inspector.css +204 -131
- package/dist/vendored/styles/setters.css +91 -2
- package/dist/vendored/styles/structure-tree.css +27 -12
- package/package.json +1 -1
- package/dist/preview-editor/assets/index-BlscexDE.js +0 -79
- package/dist/preview-editor/assets/index-dlbSPb5W.css +0 -1
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
display: flex;
|
|
11
11
|
align-items: center;
|
|
12
12
|
justify-content: center;
|
|
13
|
-
/*
|
|
14
|
-
background:
|
|
13
|
+
/* 半透明遮罩:与确认框 / 组件面板等全局模态统一(--scrim-modal + 轻 blur) */
|
|
14
|
+
background: var(--scrim-modal);
|
|
15
|
+
backdrop-filter: blur(var(--scrim-modal-blur));
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
.ni-panel {
|
|
@@ -33,28 +34,28 @@
|
|
|
33
34
|
display: flex;
|
|
34
35
|
align-items: center;
|
|
35
36
|
justify-content: space-between;
|
|
36
|
-
padding:
|
|
37
|
+
padding: 10px 16px;
|
|
37
38
|
border-bottom: 1px solid var(--border);
|
|
38
39
|
flex-shrink: 0;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
.ni-title {
|
|
42
|
-
font-size:
|
|
43
|
+
font-size: 13px;
|
|
43
44
|
font-weight: 600;
|
|
44
45
|
color: var(--text);
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
.ni-close {
|
|
48
|
-
width:
|
|
49
|
-
height:
|
|
49
|
+
width: 22px;
|
|
50
|
+
height: 22px;
|
|
50
51
|
display: inline-flex;
|
|
51
52
|
align-items: center;
|
|
52
53
|
justify-content: center;
|
|
53
|
-
background:
|
|
54
|
-
border:
|
|
54
|
+
background: none;
|
|
55
|
+
border: none;
|
|
55
56
|
border-radius: 6px;
|
|
56
|
-
color: var(--text-
|
|
57
|
-
font-size:
|
|
57
|
+
color: var(--text-faint);
|
|
58
|
+
font-size: 15px;
|
|
58
59
|
cursor: pointer;
|
|
59
60
|
line-height: 1;
|
|
60
61
|
transition: background 0.15s, color 0.15s;
|
|
@@ -87,8 +88,8 @@
|
|
|
87
88
|
min-height: 0;
|
|
88
89
|
overflow-y: auto;
|
|
89
90
|
/* 仅给内容留 16px 横向间距,滚动条(右侧)紧贴面板边缘;
|
|
90
|
-
|
|
91
|
-
padding: 0 16px
|
|
91
|
+
底栏已改普通贴底 flex 行(不再悬浮),留 12px 收尾呼吸即可 */
|
|
92
|
+
padding: 0 16px 12px;
|
|
92
93
|
}
|
|
93
94
|
|
|
94
95
|
.ni-body > .ni-sec {
|
|
@@ -103,7 +104,7 @@
|
|
|
103
104
|
display: flex;
|
|
104
105
|
align-items: center;
|
|
105
106
|
gap: 8px;
|
|
106
|
-
font-size:
|
|
107
|
+
font-size: 13px;
|
|
107
108
|
font-weight: 600;
|
|
108
109
|
color: var(--text);
|
|
109
110
|
margin-bottom: 12px;
|
|
@@ -199,7 +200,7 @@ select.ni-input {
|
|
|
199
200
|
border: 1px solid var(--border);
|
|
200
201
|
border-radius: 8px;
|
|
201
202
|
margin-bottom: 8px;
|
|
202
|
-
background:
|
|
203
|
+
background: transparent;
|
|
203
204
|
}
|
|
204
205
|
|
|
205
206
|
.ni-prop-label {
|
|
@@ -291,7 +292,8 @@ select.ni-input {
|
|
|
291
292
|
font-size: 12px;
|
|
292
293
|
padding: 6px 10px;
|
|
293
294
|
border-radius: 6px;
|
|
294
|
-
background:
|
|
295
|
+
background: transparent;
|
|
296
|
+
border: 1px solid var(--border);
|
|
295
297
|
}
|
|
296
298
|
|
|
297
299
|
.ni-key {
|
|
@@ -314,7 +316,7 @@ select.ni-input {
|
|
|
314
316
|
margin-left: auto;
|
|
315
317
|
font-size: 12px;
|
|
316
318
|
padding: 2px 8px;
|
|
317
|
-
background: var(--
|
|
319
|
+
background: var(--accent-soft);
|
|
318
320
|
border-radius: 4px;
|
|
319
321
|
color: var(--accent);
|
|
320
322
|
}
|
|
@@ -325,7 +327,7 @@ select.ni-input {
|
|
|
325
327
|
padding: 0 10px;
|
|
326
328
|
font-size: 12px;
|
|
327
329
|
border: 1px solid var(--border-strong);
|
|
328
|
-
background:
|
|
330
|
+
background: transparent;
|
|
329
331
|
color: var(--text-dim);
|
|
330
332
|
border-radius: 6px;
|
|
331
333
|
cursor: pointer;
|
|
@@ -362,8 +364,9 @@ select.ni-input {
|
|
|
362
364
|
align-items: center;
|
|
363
365
|
gap: 8px;
|
|
364
366
|
padding: 7px 10px;
|
|
365
|
-
background:
|
|
366
|
-
border
|
|
367
|
+
background: transparent;
|
|
368
|
+
border: 1px solid var(--border);
|
|
369
|
+
border-radius: 6px;
|
|
367
370
|
}
|
|
368
371
|
|
|
369
372
|
.ni-event-name {
|
|
@@ -388,9 +391,9 @@ select.ni-input {
|
|
|
388
391
|
display: flex;
|
|
389
392
|
align-items: center;
|
|
390
393
|
gap: 8px;
|
|
391
|
-
padding: 8px
|
|
394
|
+
padding: 6px 8px;
|
|
392
395
|
border-radius: 6px;
|
|
393
|
-
background:
|
|
396
|
+
background: transparent;
|
|
394
397
|
cursor: pointer;
|
|
395
398
|
user-select: none;
|
|
396
399
|
transition: background 0.15s;
|
|
@@ -403,7 +406,7 @@ select.ni-input {
|
|
|
403
406
|
.ptree__group-name {
|
|
404
407
|
flex: 1 1 auto;
|
|
405
408
|
min-width: 0;
|
|
406
|
-
font-size:
|
|
409
|
+
font-size: 12px;
|
|
407
410
|
font-weight: 600;
|
|
408
411
|
color: var(--text);
|
|
409
412
|
white-space: nowrap;
|
|
@@ -452,9 +455,10 @@ select.ni-input {
|
|
|
452
455
|
}
|
|
453
456
|
|
|
454
457
|
.ptree__label {
|
|
455
|
-
flex: 0 0
|
|
458
|
+
flex: 0 0 88px;
|
|
456
459
|
font-size: 12px;
|
|
457
460
|
color: var(--text-dim);
|
|
461
|
+
text-align: right;
|
|
458
462
|
white-space: nowrap;
|
|
459
463
|
overflow: hidden;
|
|
460
464
|
text-overflow: ellipsis;
|
|
@@ -465,21 +469,16 @@ select.ni-input {
|
|
|
465
469
|
min-width: 0;
|
|
466
470
|
}
|
|
467
471
|
|
|
468
|
-
/*
|
|
472
|
+
/* 底栏:普通 flex 行贴底,发丝线分隔,不叠悬浮阴影(与事件抽屉 .ee-foot 统一) */
|
|
469
473
|
.ni-foot {
|
|
470
|
-
|
|
471
|
-
left: 0;
|
|
472
|
-
right: 0;
|
|
473
|
-
bottom: 0;
|
|
474
|
-
z-index: 1;
|
|
474
|
+
flex: 0 0 auto;
|
|
475
475
|
display: flex;
|
|
476
476
|
align-items: center;
|
|
477
477
|
justify-content: space-between;
|
|
478
478
|
gap: 10px;
|
|
479
|
-
padding:
|
|
480
|
-
background: var(--bg-
|
|
479
|
+
padding: 10px 16px;
|
|
480
|
+
background: var(--bg-bar);
|
|
481
481
|
border-top: 1px solid var(--border);
|
|
482
|
-
box-shadow: 0 -8px 24px var(--shadow-card);
|
|
483
482
|
}
|
|
484
483
|
|
|
485
484
|
.ni-tip {
|
|
@@ -497,30 +496,29 @@ select.ni-input {
|
|
|
497
496
|
.ni-btn {
|
|
498
497
|
white-space: nowrap;
|
|
499
498
|
height: var(--ctrl-sm);
|
|
500
|
-
padding: 0
|
|
501
|
-
font-size:
|
|
499
|
+
padding: 0 14px;
|
|
500
|
+
font-size: 12px;
|
|
502
501
|
border-radius: 6px;
|
|
503
|
-
border: 1px solid var(--accent);
|
|
504
|
-
background:
|
|
505
|
-
color: var(--
|
|
502
|
+
border: 1px solid var(--accent-border);
|
|
503
|
+
background: transparent;
|
|
504
|
+
color: var(--accent);
|
|
506
505
|
cursor: pointer;
|
|
507
|
-
transition:
|
|
506
|
+
transition: background 0.15s, color 0.15s;
|
|
508
507
|
}
|
|
509
508
|
|
|
510
509
|
.ni-btn:hover {
|
|
511
|
-
|
|
510
|
+
background: var(--accent-soft);
|
|
512
511
|
}
|
|
513
512
|
|
|
514
513
|
.ni-btn--ghost {
|
|
515
514
|
background: transparent;
|
|
516
|
-
color: var(--text);
|
|
515
|
+
color: var(--text-dim);
|
|
517
516
|
border-color: var(--border-strong);
|
|
518
517
|
}
|
|
519
518
|
|
|
520
519
|
.ni-btn--ghost:hover {
|
|
521
|
-
|
|
522
|
-
color: var(--
|
|
523
|
-
opacity: 1;
|
|
520
|
+
background: var(--bg-hover);
|
|
521
|
+
color: var(--text);
|
|
524
522
|
}
|
|
525
523
|
|
|
526
524
|
/* ===================== 事件页签(开关式:事件列表 + 开关 + 动作参数) ===================== */
|
|
@@ -535,19 +533,19 @@ select.ni-input {
|
|
|
535
533
|
border: 1px solid var(--border);
|
|
536
534
|
border-radius: 8px;
|
|
537
535
|
overflow: hidden;
|
|
538
|
-
background:
|
|
536
|
+
background: transparent;
|
|
539
537
|
}
|
|
540
538
|
|
|
541
539
|
.ni-evt-head {
|
|
542
540
|
display: flex;
|
|
543
541
|
align-items: center;
|
|
544
542
|
gap: 10px;
|
|
545
|
-
padding: 12px
|
|
543
|
+
padding: 8px 12px;
|
|
546
544
|
}
|
|
547
545
|
|
|
548
546
|
.ni-evt-name {
|
|
549
547
|
flex: 0 0 auto;
|
|
550
|
-
font-size:
|
|
548
|
+
font-size: 12px;
|
|
551
549
|
font-weight: 500;
|
|
552
550
|
color: var(--text);
|
|
553
551
|
white-space: nowrap;
|
|
@@ -563,39 +561,41 @@ select.ni-input {
|
|
|
563
561
|
text-overflow: ellipsis;
|
|
564
562
|
}
|
|
565
563
|
|
|
566
|
-
/*
|
|
564
|
+
/* 开关:与 setter 家族 .st-switch 同语言(发丝线轨道 + soft 开启态),不用实心 accent 填充 */
|
|
567
565
|
.ni-switch {
|
|
568
566
|
flex: 0 0 auto;
|
|
569
567
|
position: relative;
|
|
570
|
-
width:
|
|
571
|
-
height:
|
|
568
|
+
width: 34px;
|
|
569
|
+
height: 18px;
|
|
572
570
|
padding: 0;
|
|
573
571
|
margin: 0;
|
|
574
|
-
border:
|
|
575
|
-
border-radius:
|
|
576
|
-
background: var(--
|
|
572
|
+
border: 1px solid var(--border-strong);
|
|
573
|
+
border-radius: 999px;
|
|
574
|
+
background: var(--bg-hover);
|
|
577
575
|
cursor: pointer;
|
|
578
|
-
transition: background 0.
|
|
576
|
+
transition: background 0.16s, border-color 0.16s;
|
|
579
577
|
flex-shrink: 0;
|
|
580
578
|
}
|
|
581
579
|
|
|
582
580
|
.ni-switch.is-on {
|
|
583
|
-
background: var(--accent);
|
|
581
|
+
background: var(--accent-soft);
|
|
582
|
+
border-color: var(--accent-border);
|
|
584
583
|
}
|
|
585
584
|
|
|
586
585
|
.ni-switch__dot {
|
|
587
586
|
position: absolute;
|
|
588
|
-
top:
|
|
589
|
-
left:
|
|
590
|
-
width:
|
|
591
|
-
height:
|
|
587
|
+
top: 1px;
|
|
588
|
+
left: 1px;
|
|
589
|
+
width: 14px;
|
|
590
|
+
height: 14px;
|
|
592
591
|
border-radius: 50%;
|
|
593
|
-
background: var(--
|
|
594
|
-
transition: transform 0.
|
|
592
|
+
background: var(--text-dim);
|
|
593
|
+
transition: transform 0.16s, background 0.16s;
|
|
595
594
|
}
|
|
596
595
|
|
|
597
596
|
.ni-switch.is-on .ni-switch__dot {
|
|
598
597
|
transform: translateX(16px);
|
|
598
|
+
background: var(--accent);
|
|
599
599
|
}
|
|
600
600
|
|
|
601
601
|
.ni-evt-body {
|
|
@@ -643,20 +643,18 @@ select.ni-input {
|
|
|
643
643
|
}
|
|
644
644
|
|
|
645
645
|
/* ===================== 事件编辑抽屉(EventEditor.vue,右侧滑出) ===================== */
|
|
646
|
-
/* 100vh × calc(100vw - 预览面板宽度)
|
|
647
|
-
|
|
646
|
+
/* 100vh × calc(100vw - 预览面板宽度);上下排布:顶部事件 chip 行 + 动作/脚本编辑区;
|
|
647
|
+
抽屉主体不产生滚动条,脚本编辑区填满剩余高度。轻 chrome:事件列表为顶部可换行
|
|
648
|
+
内联事件项行(不单独占列),底栏发丝线不叠阴影;仅抽屉最外层保留投影区分层级。 */
|
|
648
649
|
|
|
649
650
|
.ee-overlay {
|
|
650
651
|
position: fixed;
|
|
651
|
-
|
|
652
|
-
right: 0;
|
|
653
|
-
bottom: 0;
|
|
654
|
-
/* 左缘 = 当前预览面板宽度(由 App 根节点注入的 --preview-width 实时驱动),
|
|
655
|
-
不再写死 375px;面板宽度随之 = 100vw − 预览面板宽度,随分隔条拖拽动态变化 */
|
|
656
|
-
left: var(--preview-width, 375px);
|
|
652
|
+
inset: 0;
|
|
657
653
|
z-index: var(--z-appmodal);
|
|
658
|
-
/*
|
|
659
|
-
|
|
654
|
+
/* 半透明遮罩:与确认框 / 组件面板等全局模态统一(--scrim-modal + 轻 blur);
|
|
655
|
+
抽屉主体仍右缘贴边满高 */
|
|
656
|
+
background: var(--scrim-modal);
|
|
657
|
+
backdrop-filter: blur(var(--scrim-modal-blur));
|
|
660
658
|
}
|
|
661
659
|
|
|
662
660
|
/* 抽屉主体:右侧贴边、满高、宽度 = 视口减去手机宽度 */
|
|
@@ -676,13 +674,29 @@ select.ni-input {
|
|
|
676
674
|
overflow: hidden;
|
|
677
675
|
}
|
|
678
676
|
|
|
679
|
-
/*
|
|
677
|
+
/* 进出场动画(DebugPanel 中 <Transition name="ee-drawer"> 驱动):
|
|
678
|
+
遮罩只做淡入/淡出,抽屉主体单独从右往左滑入/滑出——全屏遮罩不应跟随主体平移。
|
|
679
|
+
离场遮罩淡出与主体滑动同长(0.26s),保证滑动过程可见;入场遮罩淡入稍快。 */
|
|
680
680
|
.ee-drawer-enter-active,
|
|
681
681
|
.ee-drawer-leave-active {
|
|
682
|
-
transition:
|
|
682
|
+
transition: opacity 0.18s ease;
|
|
683
|
+
}
|
|
684
|
+
.ee-drawer-leave-active {
|
|
685
|
+
transition: opacity 0.24s ease;
|
|
686
|
+
}
|
|
687
|
+
/* 主体滑入带一点弹性(过冲后回稳);滑出干脆不回弹 */
|
|
688
|
+
.ee-drawer-enter-active .ee-panel {
|
|
689
|
+
transition: transform 0.34s cubic-bezier(0.32, 1.32, 0.45, 1);
|
|
690
|
+
}
|
|
691
|
+
.ee-drawer-leave-active .ee-panel {
|
|
692
|
+
transition: transform 0.24s cubic-bezier(0.4, 0, 0.6, 1);
|
|
683
693
|
}
|
|
684
694
|
.ee-drawer-enter-from,
|
|
685
695
|
.ee-drawer-leave-to {
|
|
696
|
+
opacity: 0;
|
|
697
|
+
}
|
|
698
|
+
.ee-drawer-enter-from .ee-panel,
|
|
699
|
+
.ee-drawer-leave-to .ee-panel {
|
|
686
700
|
transform: translateX(100%);
|
|
687
701
|
}
|
|
688
702
|
|
|
@@ -690,13 +704,13 @@ select.ni-input {
|
|
|
690
704
|
display: flex;
|
|
691
705
|
align-items: center;
|
|
692
706
|
justify-content: space-between;
|
|
693
|
-
padding:
|
|
707
|
+
padding: 10px 16px;
|
|
694
708
|
border-bottom: 1px solid var(--border);
|
|
695
709
|
flex-shrink: 0;
|
|
696
710
|
}
|
|
697
711
|
|
|
698
712
|
.ee-title {
|
|
699
|
-
font-size:
|
|
713
|
+
font-size: 13px;
|
|
700
714
|
font-weight: 600;
|
|
701
715
|
color: var(--text);
|
|
702
716
|
}
|
|
@@ -714,11 +728,11 @@ select.ni-input {
|
|
|
714
728
|
display: inline-flex;
|
|
715
729
|
align-items: center;
|
|
716
730
|
justify-content: center;
|
|
717
|
-
background:
|
|
718
|
-
border:
|
|
731
|
+
background: none;
|
|
732
|
+
border: none;
|
|
719
733
|
border-radius: 6px;
|
|
720
|
-
color: var(--text-
|
|
721
|
-
font-size:
|
|
734
|
+
color: var(--text-faint);
|
|
735
|
+
font-size: 15px;
|
|
722
736
|
cursor: pointer;
|
|
723
737
|
line-height: 1;
|
|
724
738
|
transition: background 0.15s, color 0.15s;
|
|
@@ -727,7 +741,7 @@ select.ni-input {
|
|
|
727
741
|
.ee-close::before { content: '✕'; }
|
|
728
742
|
.ee-close:hover { background: var(--bg-hover); color: var(--text); }
|
|
729
743
|
|
|
730
|
-
/*
|
|
744
|
+
/* 主体:上事件 chip 行 + 下动作/脚本编辑区,纵向排布 */
|
|
731
745
|
.ee-body {
|
|
732
746
|
flex: 1 1 auto;
|
|
733
747
|
min-height: 0;
|
|
@@ -736,61 +750,80 @@ select.ni-input {
|
|
|
736
750
|
overflow: hidden;
|
|
737
751
|
}
|
|
738
752
|
|
|
739
|
-
/*
|
|
753
|
+
/* 顶部事件条:左事件项、右帮助图标,两端对齐 + 垂直居中;
|
|
754
|
+
事件过多的滚动交给 .ee-evt-list 自身,side 不滚动(避免裁切帮助弹层) */
|
|
740
755
|
.ee-side {
|
|
756
|
+
position: relative;
|
|
741
757
|
flex: 0 0 auto;
|
|
742
|
-
max-height: 40%;
|
|
743
758
|
min-width: 0;
|
|
744
759
|
display: flex;
|
|
745
|
-
|
|
760
|
+
align-items: center;
|
|
761
|
+
justify-content: space-between;
|
|
762
|
+
gap: 10px;
|
|
746
763
|
border-bottom: 1px solid var(--border);
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
764
|
+
padding: 8px 16px;
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
.ee-side > .ee-empty {
|
|
768
|
+
flex: 1 1 auto;
|
|
750
769
|
}
|
|
751
770
|
|
|
752
771
|
.ee-evt-list {
|
|
772
|
+
flex: 1 1 auto;
|
|
773
|
+
min-width: 0;
|
|
753
774
|
display: flex;
|
|
754
|
-
flex-
|
|
755
|
-
gap:
|
|
775
|
+
flex-wrap: wrap;
|
|
776
|
+
gap: 2px 8px;
|
|
777
|
+
/* 约三行高度封顶,超出内部滚动 */
|
|
778
|
+
max-height: 108px;
|
|
779
|
+
overflow-y: auto;
|
|
756
780
|
}
|
|
757
781
|
|
|
782
|
+
/* 事件项:内联字段组(名称 + 开关),不是按钮——无描边无胶囊,仅靠文字色与浅底表达状态:
|
|
783
|
+
关闭 = 弱色名称;开启 = 常色名称;正在编辑 = 浅底 + accent 名称 */
|
|
758
784
|
.ee-evt {
|
|
759
785
|
display: flex;
|
|
760
786
|
align-items: center;
|
|
761
|
-
gap:
|
|
762
|
-
height:
|
|
763
|
-
padding: 0
|
|
764
|
-
border:
|
|
765
|
-
border-radius:
|
|
766
|
-
background:
|
|
787
|
+
gap: 6px;
|
|
788
|
+
height: 24px;
|
|
789
|
+
padding: 0 8px 0 6px;
|
|
790
|
+
border: none;
|
|
791
|
+
border-radius: 6px;
|
|
792
|
+
background: transparent;
|
|
767
793
|
cursor: pointer;
|
|
768
|
-
transition: background 0.15s
|
|
794
|
+
transition: background 0.15s;
|
|
769
795
|
}
|
|
770
796
|
|
|
771
797
|
.ee-evt:hover {
|
|
772
798
|
background: var(--bg-hover);
|
|
773
799
|
}
|
|
774
|
-
|
|
800
|
+
.ee-evt.is-on .ee-evt-name {
|
|
801
|
+
color: var(--text);
|
|
802
|
+
}
|
|
803
|
+
.ee-evt.is-sel {
|
|
804
|
+
background: var(--bg-input);
|
|
805
|
+
}
|
|
806
|
+
.ee-evt.is-sel .ee-evt-name {
|
|
807
|
+
color: var(--accent);
|
|
808
|
+
}
|
|
775
809
|
.ee-evt-name {
|
|
776
810
|
flex: 1 1 auto;
|
|
777
811
|
min-width: 0;
|
|
778
|
-
font-size:
|
|
812
|
+
font-size: 12px;
|
|
779
813
|
font-weight: 500;
|
|
780
|
-
color: var(--text);
|
|
814
|
+
color: var(--text-faint);
|
|
781
815
|
white-space: nowrap;
|
|
782
816
|
overflow: hidden;
|
|
783
817
|
text-overflow: ellipsis;
|
|
784
818
|
}
|
|
785
819
|
|
|
786
|
-
/*
|
|
820
|
+
/* 右侧详情区:填满剩余高度;底栏为普通 flex 行,无需预留悬浮高度 */
|
|
787
821
|
.ee-detail {
|
|
788
822
|
flex: 1 1 auto;
|
|
789
823
|
min-width: 0;
|
|
790
824
|
display: flex;
|
|
791
825
|
flex-direction: column;
|
|
792
|
-
|
|
793
|
-
padding: 16px 24px 76px;
|
|
826
|
+
padding: 12px 16px;
|
|
794
827
|
overflow: hidden;
|
|
795
828
|
}
|
|
796
829
|
|
|
@@ -803,7 +836,7 @@ select.ni-input {
|
|
|
803
836
|
min-height: 0;
|
|
804
837
|
display: flex;
|
|
805
838
|
flex-direction: column;
|
|
806
|
-
margin-top:
|
|
839
|
+
margin-top: 8px;
|
|
807
840
|
overflow: hidden;
|
|
808
841
|
}
|
|
809
842
|
|
|
@@ -820,6 +853,11 @@ select.ni-input {
|
|
|
820
853
|
flex: 1 1 auto;
|
|
821
854
|
min-height: 0;
|
|
822
855
|
}
|
|
856
|
+
/* 代码行语义已由上文(动作类型 / 描述)说明,去掉独占的 label 列把整宽还给编辑器;
|
|
857
|
+
语言改由编辑器右上角 JS 标签标示 */
|
|
858
|
+
.ee-detail-body .ptree__row--block .ptree__label {
|
|
859
|
+
display: none;
|
|
860
|
+
}
|
|
823
861
|
.ee-detail-body .st-code {
|
|
824
862
|
flex: 1 1 auto;
|
|
825
863
|
min-height: 0;
|
|
@@ -875,7 +913,7 @@ select.ni-input {
|
|
|
875
913
|
}
|
|
876
914
|
|
|
877
915
|
.ee-field-label {
|
|
878
|
-
flex: 0 0
|
|
916
|
+
flex: 0 0 64px;
|
|
879
917
|
font-size: 12px;
|
|
880
918
|
color: var(--text-dim);
|
|
881
919
|
text-align: right;
|
|
@@ -902,23 +940,65 @@ select.ni-input {
|
|
|
902
940
|
|
|
903
941
|
select.ee-input { height: 32px; }
|
|
904
942
|
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
943
|
+
/* 帮助图标按钮:与事件项同排的纯图标弱按钮 */
|
|
944
|
+
.ee-help {
|
|
945
|
+
flex: 0 0 auto;
|
|
946
|
+
display: inline-flex;
|
|
947
|
+
align-items: center;
|
|
948
|
+
justify-content: center;
|
|
949
|
+
width: 22px;
|
|
950
|
+
height: 22px;
|
|
951
|
+
padding: 0;
|
|
952
|
+
background: none;
|
|
953
|
+
border: none;
|
|
954
|
+
border-radius: 6px;
|
|
908
955
|
color: var(--text-faint);
|
|
909
|
-
|
|
956
|
+
cursor: pointer;
|
|
957
|
+
transition: color 0.15s, background 0.15s;
|
|
958
|
+
}
|
|
959
|
+
.ee-help:hover {
|
|
960
|
+
color: var(--text);
|
|
961
|
+
background: var(--bg-hover);
|
|
962
|
+
}
|
|
963
|
+
/* 弹层外点击关闭:透明遮罩铺满视口 */
|
|
964
|
+
.ee-help__mask {
|
|
965
|
+
position: fixed;
|
|
966
|
+
inset: 0;
|
|
967
|
+
z-index: 6;
|
|
968
|
+
}
|
|
969
|
+
/* 使用说明弹层:锚定事件条右下角,浮于详情区之上 */
|
|
970
|
+
.ee-help__pop {
|
|
971
|
+
position: absolute;
|
|
972
|
+
top: calc(100% + 4px);
|
|
973
|
+
right: 12px;
|
|
974
|
+
z-index: 7;
|
|
975
|
+
/* 弹层锚定右上帮助图标:弹性缩放自该角生长 */
|
|
976
|
+
transform-origin: top right;
|
|
977
|
+
width: min(340px, 78%);
|
|
978
|
+
padding: 8px 10px;
|
|
979
|
+
border: 1px solid var(--border-strong);
|
|
980
|
+
border-radius: 8px;
|
|
981
|
+
background: var(--bg-panel);
|
|
982
|
+
box-shadow: var(--shadow-3);
|
|
983
|
+
}
|
|
984
|
+
.ee-help__text {
|
|
985
|
+
margin: 0;
|
|
986
|
+
font-size: 11px;
|
|
987
|
+
line-height: 1.6;
|
|
988
|
+
color: var(--text-dim);
|
|
989
|
+
white-space: pre-wrap;
|
|
910
990
|
}
|
|
911
991
|
|
|
912
992
|
/* 开关 */
|
|
913
993
|
.ee-switch {
|
|
914
994
|
flex: 0 0 auto;
|
|
915
995
|
position: relative;
|
|
916
|
-
width:
|
|
917
|
-
height:
|
|
996
|
+
width: 30px;
|
|
997
|
+
height: 16px;
|
|
918
998
|
padding: 0;
|
|
919
999
|
margin: 0;
|
|
920
1000
|
border: none;
|
|
921
|
-
border-radius:
|
|
1001
|
+
border-radius: 8px;
|
|
922
1002
|
background: var(--border-strong);
|
|
923
1003
|
cursor: pointer;
|
|
924
1004
|
transition: background 0.18s;
|
|
@@ -930,14 +1010,14 @@ select.ee-input { height: 32px; }
|
|
|
930
1010
|
position: absolute;
|
|
931
1011
|
top: 2px;
|
|
932
1012
|
left: 2px;
|
|
933
|
-
width:
|
|
934
|
-
height:
|
|
1013
|
+
width: 12px;
|
|
1014
|
+
height: 12px;
|
|
935
1015
|
border-radius: 50%;
|
|
936
1016
|
background: var(--on-accent);
|
|
937
1017
|
transition: transform 0.18s;
|
|
938
1018
|
}
|
|
939
1019
|
|
|
940
|
-
.ee-switch.is-on .ee-switch__dot { transform: translateX(
|
|
1020
|
+
.ee-switch.is-on .ee-switch__dot { transform: translateX(14px); }
|
|
941
1021
|
|
|
942
1022
|
.ee-evt-orphan {
|
|
943
1023
|
flex: 0 0 auto;
|
|
@@ -946,22 +1026,16 @@ select.ee-input { height: 32px; }
|
|
|
946
1026
|
color: var(--warn);
|
|
947
1027
|
}
|
|
948
1028
|
|
|
949
|
-
/*
|
|
950
|
-
/* 底部:悬浮操作条,不占布局高度(内容可滚到其下方) */
|
|
1029
|
+
/* 底栏:普通 flex 行贴底,发丝线分隔,不用悬浮阴影 */
|
|
951
1030
|
.ee-foot {
|
|
952
|
-
|
|
953
|
-
left: 0;
|
|
954
|
-
right: 0;
|
|
955
|
-
bottom: 0;
|
|
956
|
-
z-index: 1;
|
|
1031
|
+
flex: 0 0 auto;
|
|
957
1032
|
display: flex;
|
|
958
1033
|
align-items: center;
|
|
959
1034
|
justify-content: space-between;
|
|
960
1035
|
gap: 10px;
|
|
961
|
-
padding:
|
|
962
|
-
background: var(--bg-
|
|
1036
|
+
padding: 10px 16px;
|
|
1037
|
+
background: var(--bg-bar);
|
|
963
1038
|
border-top: 1px solid var(--border);
|
|
964
|
-
box-shadow: 0 -8px 24px var(--shadow-card);
|
|
965
1039
|
}
|
|
966
1040
|
|
|
967
1041
|
.ee-tip {
|
|
@@ -979,25 +1053,24 @@ select.ee-input { height: 32px; }
|
|
|
979
1053
|
.ee-btn {
|
|
980
1054
|
white-space: nowrap;
|
|
981
1055
|
height: var(--ctrl-sm);
|
|
982
|
-
padding: 0
|
|
983
|
-
font-size:
|
|
1056
|
+
padding: 0 14px;
|
|
1057
|
+
font-size: 12px;
|
|
984
1058
|
border-radius: 6px;
|
|
985
|
-
border: 1px solid var(--accent);
|
|
986
|
-
background:
|
|
987
|
-
color: var(--
|
|
1059
|
+
border: 1px solid var(--accent-border);
|
|
1060
|
+
background: transparent;
|
|
1061
|
+
color: var(--accent);
|
|
988
1062
|
cursor: pointer;
|
|
989
|
-
transition:
|
|
1063
|
+
transition: background 0.15s, color 0.15s;
|
|
990
1064
|
}
|
|
991
1065
|
|
|
992
|
-
.ee-btn:hover {
|
|
1066
|
+
.ee-btn:hover { background: var(--accent-soft); }
|
|
993
1067
|
|
|
994
1068
|
.ee-btn--ghost {
|
|
995
1069
|
background: transparent;
|
|
996
|
-
color: var(--text);
|
|
1070
|
+
color: var(--text-dim);
|
|
997
1071
|
border-color: var(--border-strong);
|
|
998
1072
|
}
|
|
999
1073
|
|
|
1000
1074
|
.ee-btn--ghost:hover {
|
|
1001
1075
|
background: var(--bg-hover);
|
|
1002
|
-
opacity: 1;
|
|
1003
1076
|
}
|