aldehyde 0.2.485 → 0.2.487

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.
Files changed (65) hide show
  1. package/lib/controls/entry-control.d.ts +1 -0
  2. package/lib/controls/entry-control.d.ts.map +1 -1
  3. package/lib/controls/entry-control.js +2 -0
  4. package/lib/controls/entry-control.js.map +1 -1
  5. package/lib/controls/select/index.d.ts +1 -1
  6. package/lib/controls/select/index.d.ts.map +1 -1
  7. package/lib/controls/select/index.js +6 -6
  8. package/lib/controls/select/index.js.map +1 -1
  9. package/lib/draw-canvas-edit/components/asset-bar/index.d.ts.map +1 -1
  10. package/lib/draw-canvas-edit/components/asset-bar/index.js +26 -7
  11. package/lib/draw-canvas-edit/components/asset-bar/index.js.map +1 -1
  12. package/lib/draw-canvas-edit/components/asset-bar/index.less +1 -1
  13. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.d.ts.map +1 -1
  14. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js +9 -5
  15. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js.map +1 -1
  16. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.d.ts.map +1 -1
  17. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js +1 -0
  18. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js.map +1 -1
  19. package/lib/draw-canvas-edit/components/render/index.d.ts.map +1 -1
  20. package/lib/draw-canvas-edit/components/render/index.js +3 -6
  21. package/lib/draw-canvas-edit/components/render/index.js.map +1 -1
  22. package/lib/draw-canvas-edit/components/render/tools/component-factory.d.ts.map +1 -1
  23. package/lib/draw-canvas-edit/components/render/tools/component-factory.js +4 -5
  24. package/lib/draw-canvas-edit/components/render/tools/component-factory.js.map +1 -1
  25. package/lib/draw-canvas-edit/components/render/types.d.ts +1 -0
  26. package/lib/draw-canvas-edit/components/render/types.d.ts.map +1 -1
  27. package/lib/draw-canvas-edit/components/render/types.js.map +1 -1
  28. package/lib/draw-canvas-edit/components/setting-form/index.d.ts.map +1 -1
  29. package/lib/draw-canvas-edit/components/setting-form/index.js +5 -3
  30. package/lib/draw-canvas-edit/components/setting-form/index.js.map +1 -1
  31. package/lib/draw-canvas-edit/index.d.ts.map +1 -1
  32. package/lib/draw-canvas-edit/index.js +12 -3
  33. package/lib/draw-canvas-edit/index.js.map +1 -1
  34. package/lib/module/dtmpl-edit-card.d.ts +1 -1
  35. package/lib/module/dtmpl-edit-card.d.ts.map +1 -1
  36. package/lib/module/dtmpl-edit-card.js +40 -7
  37. package/lib/module/dtmpl-edit-card.js.map +1 -1
  38. package/lib/module/dtmpl-edit-page.d.ts +1 -1
  39. package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
  40. package/lib/module/dtmpl-edit-page.js +40 -7
  41. package/lib/module/dtmpl-edit-page.js.map +1 -1
  42. package/lib/table/act-table.d.ts +1 -0
  43. package/lib/table/act-table.d.ts.map +1 -1
  44. package/lib/table/act-table.js +5 -2
  45. package/lib/table/act-table.js.map +1 -1
  46. package/package.json +1 -1
  47. package/src/aldehyde/controls/entry-control.tsx +3 -0
  48. package/src/aldehyde/controls/select/index.tsx +2 -3
  49. package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.less +1 -1
  50. package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.tsx +19 -6
  51. package/src/aldehyde/draw-canvas-edit/components/render/draws/graph-draw.ts +249 -249
  52. package/src/aldehyde/draw-canvas-edit/components/render/draws/link-draw.ts +1414 -1414
  53. package/src/aldehyde/draw-canvas-edit/components/render/draws/preview-draw.ts +273 -273
  54. package/src/aldehyde/draw-canvas-edit/components/render/draws/ref-line-draw.ts +70 -70
  55. package/src/aldehyde/draw-canvas-edit/components/render/draws/ruler-draw.ts +165 -165
  56. package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-outside-handlers.ts +4 -0
  57. package/src/aldehyde/draw-canvas-edit/components/render/handlers/selection-handlers.ts +1 -0
  58. package/src/aldehyde/draw-canvas-edit/components/render/index.ts +2 -6
  59. package/src/aldehyde/draw-canvas-edit/components/render/tools/component-factory.ts +4 -5
  60. package/src/aldehyde/draw-canvas-edit/components/render/types.ts +1 -0
  61. package/src/aldehyde/draw-canvas-edit/components/setting-form/index.tsx +5 -3
  62. package/src/aldehyde/draw-canvas-edit/index.tsx +12 -3
  63. package/src/aldehyde/module/dtmpl-edit-card.tsx +37 -7
  64. package/src/aldehyde/module/dtmpl-edit-page.tsx +38 -8
  65. package/src/aldehyde/table/act-table.tsx +5 -2
@@ -1,70 +1,70 @@
1
- import Konva from 'konva';
2
- import { BaseDraw, Draw, Handler, Render } from '../types';
3
-
4
- // 参考线
5
-
6
- export interface RefLineDrawOption {
7
- padding: number
8
- }
9
-
10
- export class RefLineDraw extends BaseDraw implements Draw, Handler {
11
- option: RefLineDrawOption;
12
-
13
- constructor(render: Render, layer: Konva.Layer, option: RefLineDrawOption) {
14
- super(render, layer);
15
- this.option = option;
16
- this.group.listening(false);
17
- }
18
-
19
- override draw() {
20
- this.clear();
21
- const stageState = this.render.getStageState();
22
- const group = new Konva.Group();
23
- const pos = this.render.stage.getPointerPosition();
24
- if (pos) {
25
- if (pos.y >= this.option.padding) {
26
- // 横
27
- group.add(
28
- new Konva.Line({
29
- name: this.constructor.name,
30
- points: [
31
- [this.render.toStageValue(-stageState.x), this.render.toStageValue(pos.y - stageState.y)],
32
- [this.render.toStageValue(stageState.width - stageState.x + this.render.rulerSize), this.render.toStageValue(pos.y - stageState.y)]
33
- ].flat(),
34
- stroke: 'rgba(255,0,0,0.2)',
35
- strokeWidth: this.render.toStageValue(1),
36
- listening: false
37
- })
38
- );
39
- }
40
- if (pos.x >= this.option.padding) {
41
- // 竖
42
- group.add(
43
- new Konva.Line({
44
- name: this.constructor.name,
45
- points: [
46
- [this.render.toStageValue(pos.x - stageState.x), this.render.toStageValue(-stageState.y)],
47
- [this.render.toStageValue(pos.x - stageState.x), this.render.toStageValue(stageState.height - stageState.y + this.render.rulerSize)]
48
- ].flat(),
49
- stroke: 'rgba(255,0,0,0.2)',
50
- strokeWidth: this.render.toStageValue(1),
51
- listening: false
52
- })
53
- );
54
- }
55
- }
56
- this.group.add(group);
57
- }
58
- handlers = {
59
- dom: {
60
- mousemove: () => {
61
- // 更新参考线
62
- this.draw();
63
- },
64
- mouseout: () => {
65
- // 清除参考线
66
- this.clear();
67
- }
68
- }
69
- }
70
- }
1
+ import Konva from 'konva';
2
+ import { BaseDraw, Draw, Handler, Render } from '../types';
3
+
4
+ // 参考线
5
+
6
+ export interface RefLineDrawOption {
7
+ padding: number
8
+ }
9
+
10
+ export class RefLineDraw extends BaseDraw implements Draw, Handler {
11
+ option: RefLineDrawOption;
12
+
13
+ constructor(render: Render, layer: Konva.Layer, option: RefLineDrawOption) {
14
+ super(render, layer);
15
+ this.option = option;
16
+ this.group.listening(false);
17
+ }
18
+
19
+ override draw() {
20
+ this.clear();
21
+ const stageState = this.render.getStageState();
22
+ const group = new Konva.Group();
23
+ const pos = this.render.stage.getPointerPosition();
24
+ if (pos) {
25
+ if (pos.y >= this.option.padding) {
26
+ // 横
27
+ group.add(
28
+ new Konva.Line({
29
+ name: this.constructor.name,
30
+ points: [
31
+ [this.render.toStageValue(-stageState.x), this.render.toStageValue(pos.y - stageState.y)],
32
+ [this.render.toStageValue(stageState.width - stageState.x + this.render.rulerSize), this.render.toStageValue(pos.y - stageState.y)]
33
+ ].flat(),
34
+ stroke: 'rgba(255,0,0,0.2)',
35
+ strokeWidth: this.render.toStageValue(1),
36
+ listening: false
37
+ })
38
+ );
39
+ }
40
+ if (pos.x >= this.option.padding) {
41
+ // 竖
42
+ group.add(
43
+ new Konva.Line({
44
+ name: this.constructor.name,
45
+ points: [
46
+ [this.render.toStageValue(pos.x - stageState.x), this.render.toStageValue(-stageState.y)],
47
+ [this.render.toStageValue(pos.x - stageState.x), this.render.toStageValue(stageState.height - stageState.y + this.render.rulerSize)]
48
+ ].flat(),
49
+ stroke: 'rgba(255,0,0,0.2)',
50
+ strokeWidth: this.render.toStageValue(1),
51
+ listening: false
52
+ })
53
+ );
54
+ }
55
+ }
56
+ this.group.add(group);
57
+ }
58
+ handlers = {
59
+ dom: {
60
+ mousemove: () => {
61
+ // 更新参考线
62
+ this.draw();
63
+ },
64
+ mouseout: () => {
65
+ // 清除参考线
66
+ this.clear();
67
+ }
68
+ }
69
+ }
70
+ }
@@ -1,165 +1,165 @@
1
- import Konva from 'konva';
2
- import { BaseDraw, Render, Draw } from '../types';
3
-
4
- // 画布比例尺
5
-
6
- export interface RulerDrawOption {
7
- size: number
8
- }
9
-
10
- export class RulerDraw extends BaseDraw implements Draw {
11
- option: RulerDrawOption;
12
-
13
- constructor(render: Render, layer: Konva.Layer, option: RulerDrawOption) {
14
- super(render, layer);
15
- this.option = option;
16
- this.group.listening(false);
17
- }
18
-
19
- override draw() {
20
- this.clear();
21
- const stageState = this.render.getStageState();
22
- // 格子大小
23
- const cellSize = 20;
24
- const fontSizeMax = 12;
25
- const lenX = Math.ceil(this.render.toStageValue(stageState.width) / cellSize); // 列数
26
- const lenY = Math.ceil(this.render.toStageValue(stageState.height) / cellSize); // 行数
27
- const startX = -Math.ceil(this.render.toStageValue(stageState.x - this.option.size) / cellSize);
28
- const startY = -Math.ceil(this.render.toStageValue(stageState.y - this.option.size) / cellSize);
29
- const group = new Konva.Group();
30
- // 比例尺 - 上
31
- const groupTop = new Konva.Group({
32
- x: this.render.toStageValue(-stageState.x + this.option.size),
33
- y: this.render.toStageValue(-stageState.y),
34
- width: this.render.toStageValue(stageState.width - this.option.size + this.render.rulerSize),
35
- height: this.render.toStageValue(this.option.size)
36
- });
37
- // 比例尺 - 左
38
- const groupLeft = new Konva.Group({
39
- x: this.render.toStageValue(-stageState.x),
40
- y: this.render.toStageValue(-stageState.y + this.option.size),
41
- width: this.render.toStageValue(this.option.size),
42
- height: this.render.toStageValue(stageState.height - this.option.size + this.render.rulerSize)
43
- });
44
- {
45
- groupTop.add(
46
- // 上
47
- new Konva.Rect({
48
- name: this.constructor.name,
49
- x: 0,
50
- y: 0,
51
- width: groupTop.width(),
52
- height: groupTop.height(),
53
- fill: '#ddd'
54
- })
55
- );
56
- for (let x = lenX + startX - 1; x >= startX; x--) {
57
- const nx = -groupTop.x() + cellSize * x;
58
- const long = (this.render.toStageValue(this.option.size) / 5) * 4;
59
- const short = (this.render.toStageValue(this.option.size) / 5) * 3;
60
- if (nx >= 0) {
61
- groupTop.add(
62
- new Konva.Line({
63
- name: this.constructor.name,
64
- points: [
65
- [nx, x % 5 ? long : short],
66
- [nx, this.render.toStageValue(this.option.size)]
67
- ].flat(),
68
- stroke: '#999',
69
- strokeWidth: this.render.toStageValue(1),
70
- listening: false
71
- })
72
- );
73
- if (x % 5 === 0) {
74
- let fontSize = fontSizeMax;
75
- const text = new Konva.Text({
76
- name: this.constructor.name,
77
- y: this.render.toStageValue(this.option.size / 2 - fontSize),
78
- text: (x * cellSize).toString(),
79
- fontSize: this.render.toStageValue(fontSize),
80
- fill: '#999',
81
- align: 'center',
82
- verticalAlign: 'middle',
83
- lineHeight: 1.6
84
- });
85
- while (this.render.toStageValue(text.width()) > this.render.toStageValue(cellSize) * 4.6) {
86
- fontSize -= 1;
87
- text.fontSize(this.render.toStageValue(fontSize));
88
- text.y(this.render.toStageValue(this.option.size / 2 - fontSize));
89
- }
90
- text.x(nx - text.width() / 2);
91
- groupTop.add(text);
92
- }
93
- }
94
- }
95
- }
96
- {
97
- groupLeft.add(
98
- // 左
99
- new Konva.Rect({
100
- name: this.constructor.name,
101
- x: 0,
102
- y: 0,
103
- width: groupLeft.width(),
104
- height: groupLeft.height(),
105
- fill: '#ddd'
106
- })
107
- );
108
- for (let y = lenY + startY - 1; y >= startY; y--) {
109
- const ny = -groupLeft.y() + cellSize * y;
110
- const long = (this.render.toStageValue(this.option.size) / 5) * 4;
111
- const short = (this.render.toStageValue(this.option.size) / 5) * 3;
112
- if (ny >= 0) {
113
- groupLeft.add(
114
- new Konva.Line({
115
- name: this.constructor.name,
116
- points: [
117
- [y % 5 ? long : short, ny],
118
- [this.render.toStageValue(this.option.size), ny]
119
- ].flat(),
120
- stroke: '#999',
121
- strokeWidth: this.render.toStageValue(1),
122
- listening: false
123
- })
124
- );
125
- if (y % 5 === 0) {
126
- let fontSize = fontSizeMax;
127
- const text = new Konva.Text({
128
- name: this.constructor.name,
129
- x: 0,
130
- y: ny,
131
- text: (y * cellSize).toString(),
132
- fontSize: this.render.toStageValue(fontSize),
133
- fill: '#999',
134
- align: 'right',
135
- verticalAlign: 'bottom',
136
- lineHeight: 1.6,
137
- wrap: 'none'
138
- });
139
- while (text.width() > short * 0.8) {
140
- fontSize -= 1;
141
- text.fontSize(this.render.toStageValue(fontSize));
142
- }
143
- text.y(ny - text.height() / 2);
144
- text.width(short - this.render.toStageValue(1));
145
- groupLeft.add(text);
146
- }
147
- }
148
- }
149
- }
150
- group.add(
151
- // 角
152
- new Konva.Rect({
153
- name: this.constructor.name,
154
- x: this.render.toStageValue(-stageState.x),
155
- y: this.render.toStageValue(-stageState.y),
156
- width: this.render.toStageValue(this.option.size),
157
- height: this.render.toStageValue(this.option.size),
158
- fill: '#ddd'
159
- })
160
- );
161
- group.add(groupTop);
162
- group.add(groupLeft);
163
- this.group.add(group);
164
- }
165
- }
1
+ import Konva from 'konva';
2
+ import { BaseDraw, Render, Draw } from '../types';
3
+
4
+ // 画布比例尺
5
+
6
+ export interface RulerDrawOption {
7
+ size: number
8
+ }
9
+
10
+ export class RulerDraw extends BaseDraw implements Draw {
11
+ option: RulerDrawOption;
12
+
13
+ constructor(render: Render, layer: Konva.Layer, option: RulerDrawOption) {
14
+ super(render, layer);
15
+ this.option = option;
16
+ this.group.listening(false);
17
+ }
18
+
19
+ override draw() {
20
+ this.clear();
21
+ const stageState = this.render.getStageState();
22
+ // 格子大小
23
+ const cellSize = 20;
24
+ const fontSizeMax = 12;
25
+ const lenX = Math.ceil(this.render.toStageValue(stageState.width) / cellSize); // 列数
26
+ const lenY = Math.ceil(this.render.toStageValue(stageState.height) / cellSize); // 行数
27
+ const startX = -Math.ceil(this.render.toStageValue(stageState.x - this.option.size) / cellSize);
28
+ const startY = -Math.ceil(this.render.toStageValue(stageState.y - this.option.size) / cellSize);
29
+ const group = new Konva.Group();
30
+ // 比例尺 - 上
31
+ const groupTop = new Konva.Group({
32
+ x: this.render.toStageValue(-stageState.x + this.option.size),
33
+ y: this.render.toStageValue(-stageState.y),
34
+ width: this.render.toStageValue(stageState.width - this.option.size + this.render.rulerSize),
35
+ height: this.render.toStageValue(this.option.size)
36
+ });
37
+ // 比例尺 - 左
38
+ const groupLeft = new Konva.Group({
39
+ x: this.render.toStageValue(-stageState.x),
40
+ y: this.render.toStageValue(-stageState.y + this.option.size),
41
+ width: this.render.toStageValue(this.option.size),
42
+ height: this.render.toStageValue(stageState.height - this.option.size + this.render.rulerSize)
43
+ });
44
+ {
45
+ groupTop.add(
46
+ // 上
47
+ new Konva.Rect({
48
+ name: this.constructor.name,
49
+ x: 0,
50
+ y: 0,
51
+ width: groupTop.width(),
52
+ height: groupTop.height(),
53
+ fill: '#ddd'
54
+ })
55
+ );
56
+ for (let x = lenX + startX - 1; x >= startX; x--) {
57
+ const nx = -groupTop.x() + cellSize * x;
58
+ const long = (this.render.toStageValue(this.option.size) / 5) * 4;
59
+ const short = (this.render.toStageValue(this.option.size) / 5) * 3;
60
+ if (nx >= 0) {
61
+ groupTop.add(
62
+ new Konva.Line({
63
+ name: this.constructor.name,
64
+ points: [
65
+ [nx, x % 5 ? long : short],
66
+ [nx, this.render.toStageValue(this.option.size)]
67
+ ].flat(),
68
+ stroke: '#999',
69
+ strokeWidth: this.render.toStageValue(1),
70
+ listening: false
71
+ })
72
+ );
73
+ if (x % 5 === 0) {
74
+ let fontSize = fontSizeMax;
75
+ const text = new Konva.Text({
76
+ name: this.constructor.name,
77
+ y: this.render.toStageValue(this.option.size / 2 - fontSize),
78
+ text: (x * cellSize).toString(),
79
+ fontSize: this.render.toStageValue(fontSize),
80
+ fill: '#999',
81
+ align: 'center',
82
+ verticalAlign: 'middle',
83
+ lineHeight: 1.6
84
+ });
85
+ while (this.render.toStageValue(text.width()) > this.render.toStageValue(cellSize) * 4.6) {
86
+ fontSize -= 1;
87
+ text.fontSize(this.render.toStageValue(fontSize));
88
+ text.y(this.render.toStageValue(this.option.size / 2 - fontSize));
89
+ }
90
+ text.x(nx - text.width() / 2);
91
+ groupTop.add(text);
92
+ }
93
+ }
94
+ }
95
+ }
96
+ {
97
+ groupLeft.add(
98
+ // 左
99
+ new Konva.Rect({
100
+ name: this.constructor.name,
101
+ x: 0,
102
+ y: 0,
103
+ width: groupLeft.width(),
104
+ height: groupLeft.height(),
105
+ fill: '#ddd'
106
+ })
107
+ );
108
+ for (let y = lenY + startY - 1; y >= startY; y--) {
109
+ const ny = -groupLeft.y() + cellSize * y;
110
+ const long = (this.render.toStageValue(this.option.size) / 5) * 4;
111
+ const short = (this.render.toStageValue(this.option.size) / 5) * 3;
112
+ if (ny >= 0) {
113
+ groupLeft.add(
114
+ new Konva.Line({
115
+ name: this.constructor.name,
116
+ points: [
117
+ [y % 5 ? long : short, ny],
118
+ [this.render.toStageValue(this.option.size), ny]
119
+ ].flat(),
120
+ stroke: '#999',
121
+ strokeWidth: this.render.toStageValue(1),
122
+ listening: false
123
+ })
124
+ );
125
+ if (y % 5 === 0) {
126
+ let fontSize = fontSizeMax;
127
+ const text = new Konva.Text({
128
+ name: this.constructor.name,
129
+ x: 0,
130
+ y: ny,
131
+ text: (y * cellSize).toString(),
132
+ fontSize: this.render.toStageValue(fontSize),
133
+ fill: '#999',
134
+ align: 'right',
135
+ verticalAlign: 'bottom',
136
+ lineHeight: 1.6,
137
+ wrap: 'none'
138
+ });
139
+ while (text.width() > short * 0.8) {
140
+ fontSize -= 1;
141
+ text.fontSize(this.render.toStageValue(fontSize));
142
+ }
143
+ text.y(ny - text.height() / 2);
144
+ text.width(short - this.render.toStageValue(1));
145
+ groupLeft.add(text);
146
+ }
147
+ }
148
+ }
149
+ }
150
+ group.add(
151
+ // 角
152
+ new Konva.Rect({
153
+ name: this.constructor.name,
154
+ x: this.render.toStageValue(-stageState.x),
155
+ y: this.render.toStageValue(-stageState.y),
156
+ width: this.render.toStageValue(this.option.size),
157
+ height: this.render.toStageValue(this.option.size),
158
+ fill: '#ddd'
159
+ })
160
+ );
161
+ group.add(groupTop);
162
+ group.add(groupLeft);
163
+ this.group.add(group);
164
+ }
165
+ }
@@ -21,6 +21,7 @@ export class DragOutsideHandlers implements Handler {
21
21
  },
22
22
  drop: async (e: GlobalEventHandlersEventMap['drop']) => {
23
23
  const componentItem = JSON.parse(e.dataTransfer?.getData('componentItem') || '{}');
24
+ const defaultValues = JSON.parse(e.dataTransfer?.getData('defaultValues') || '{}');
24
25
  const src = e.dataTransfer?.getData('src');
25
26
  const componentType = e.dataTransfer?.getData('componentType'); // 组件类型
26
27
  const showPoints = e.dataTransfer?.getData('showPoints'); // 是否显示连接点
@@ -56,6 +57,9 @@ export class DragOutsideHandlers implements Handler {
56
57
  group.setAttrs({ x, y });
57
58
  // 更新坐标记录
58
59
  this.render.setAssetSettings(group, this.render.getAssetSettings(group), false);
60
+ if (Object.keys(defaultValues).length > 0) { // 设置默认值
61
+ this.render.setAssetSettings(group, { ...this.render.getAssetSettings(group), ...defaultValues }, false);
62
+ }
59
63
  // 设置连接点
60
64
  this.render.componentFactory.createComponentLinkPoints({ group, points, showPoints });
61
65
  // 组件鼠标移入移出事件
@@ -302,6 +302,7 @@ export class SelectionHandlers implements Handler {
302
302
  }
303
303
  this.render.emit('asset-position-change', groups);
304
304
  this.render.emit('asset-rotation-change', groups);
305
+ this.render.emit('asset-size-change', groups);
305
306
  }
306
307
  this.render.redraw([GraphDraw.name, LinkDraw.name, PreviewDraw.name]);
307
308
  },
@@ -540,11 +540,8 @@ export class Render {
540
540
 
541
541
  // 获取素材设置
542
542
  getAssetSettings(asset?: Konva.Node): AssetSettings {
543
- if (!asset) {
544
- return { ...Render.AssetSettingsDefault };
545
- }
546
- const attrs = asset.attrs;
547
- const base = attrs.assetSettings ?? { ...Render.AssetSettingsDefault };
543
+ const attrs = asset?.attrs || {};
544
+ const base = attrs?.assetSettings ?? { ...Render.AssetSettingsDefault };
548
545
  return {
549
546
  // 特定
550
547
  ...base,
@@ -554,7 +551,6 @@ export class Render {
554
551
  fontSize: base.fontSize || this.getPageSettings().fontSize,
555
552
  textFill: base.textFill || this.getPageSettings().textFill,
556
553
  // 绘制图形,默认不填充
557
- fill: base.fill || "transparent",
558
554
  x: parseFloat((asset?.position().x ?? 0).toFixed(1)),
559
555
  y: parseFloat((asset?.position().y ?? 0).toFixed(1)),
560
556
  rotation: parseFloat((asset?.rotation() ?? 0).toFixed(1)),
@@ -133,17 +133,16 @@ export class ComponentFactory {
133
133
  async createTypedComponent(options: CreateImageComponentOptions) {
134
134
  const { src, type, componentType } = options;
135
135
  let comGroup: { group: Konva.Group; points: AssetInfoPoint[] };
136
- let group: Konva.Group;
137
- let points: AssetInfoPoint[];
138
136
  switch (componentType) {
139
137
  case "workstation": // 工位
140
- return this.workstationComponent.create(src, type);
138
+ comGroup = await this.workstationComponent.create(src, type);
139
+ break;
141
140
  default:
142
141
  comGroup = await this.createImageComponent({ src, type, componentType });
143
- group = comGroup.group;
144
- points = comGroup.points;
145
142
  break;
146
143
  }
144
+ const group: Konva.Group = comGroup.group;
145
+ const points: AssetInfoPoint[] = comGroup.points;
147
146
  return { group, points };
148
147
  }
149
148
 
@@ -30,6 +30,7 @@ export type RenderEvents = {
30
30
  ['link-selection-change']: Konva.Line | undefined;
31
31
  ['asset-position-change']: Konva.Node[];
32
32
  ['asset-rotation-change']: Konva.Node[];
33
+ ['asset-size-change']: Konva.Node[];
33
34
  }
34
35
 
35
36
  export interface Handler {
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useMemo, useState } from 'react';
1
+ import React, { useEffect, useMemo, useState, useRef } from 'react';
2
2
  import { Form as AntdForm, Collapse, Row, Col } from "antd";
3
3
  import _ from "lodash";
4
4
  import FormItemGroup from "../../../form/form-Item-group";
@@ -124,6 +124,7 @@ const Index = (props: Props) => {
124
124
  const [form] = AntdForm.useForm();
125
125
  const [formConfigs, setFormConfigs] = useState<{ [key: string]: any }>([]);
126
126
  const { translate } = useLocale();
127
+ const isValChangeRef = useRef<boolean>(false);
127
128
 
128
129
  // 自定义表单项
129
130
  const customFormItem = (items: { [key: string]: any }[], layout?: "vertical" | "horizontal") => {
@@ -234,6 +235,7 @@ const Index = (props: Props) => {
234
235
 
235
236
  // 更新数据
236
237
  const onValuesChange = (val: { [key: string]: any }) => {
238
+ isValChangeRef.current = true;
237
239
  const temVal = val;
238
240
  Object.keys(val).forEach((key) => { // 使用公共表单组件,转换指定类型值
239
241
  const extControlType = formConfigs.find((item: any) => item.id === key)?.extControlType;
@@ -261,7 +263,6 @@ const Index = (props: Props) => {
261
263
  background = null;
262
264
  backgroundImg = null;
263
265
  }
264
- form.setFieldsValue({ background, backgroundImg, ...temVal });
265
266
  // 默认画布配置
266
267
  onPageSettingsChange({ ...pageSettings, background, backgroundImg, ...temVal });
267
268
  }
@@ -284,9 +285,10 @@ const Index = (props: Props) => {
284
285
 
285
286
  // 表单数据实时回显更新
286
287
  useEffect(() => {
287
- if (formConfigs?.length && formData) {
288
+ if (formConfigs?.length && formData && !isValChangeRef.current) {
288
289
  formSetFieldsValue();
289
290
  }
291
+ isValChangeRef.current = false;
290
292
  }, [formData, formConfigs]);
291
293
 
292
294
  return <AntdForm
@@ -81,7 +81,7 @@ const Index = (props: Props) => {
81
81
  render.on('selection-change', (nodes: Konva.Node[]) => { // 监听选中组件
82
82
  assetCurrentRef.current = nodes.length === 1 ? nodes[0] : undefined;
83
83
  setAssetCurrent(assetCurrentRef.current);
84
- setAssetSettings(nodes.length === 1 ? render.getAssetSettings(nodes[0]) : undefined);
84
+ setAssetSettings(assetCurrentRef.current ? render.getAssetSettings(assetCurrentRef.current) : undefined);
85
85
  });
86
86
  render.on('link-selection-change', (link?: Konva.Line) => { // 监听选中连线
87
87
  setLinkCurrent(link);
@@ -101,6 +101,13 @@ const Index = (props: Props) => {
101
101
  setAssetSettings(s => s ? { ...s, rotation: +rotation.toFixed(1) } : undefined);
102
102
  }
103
103
  });
104
+ render.on('asset-size-change', (nodes: Konva.Node[]) => { // 监听组件宽高变化
105
+ const node = nodes.find(n => n.id() === assetCurrentRef.current?.id());
106
+ if (node) {
107
+ const settings = render.getAssetSettings(node);
108
+ setAssetSettings(s => s ? { ...s, width: settings.width, height: settings.height } : undefined);
109
+ }
110
+ });
104
111
  render.on('texting-change', setTexting); // 监听插入文本状态
105
112
  render.on('graph-type-change', setGraphType); // 监听插入基础图形类型
106
113
  }, []);
@@ -135,8 +142,10 @@ const Index = (props: Props) => {
135
142
  if (!(assetCurrent && renderRef.current)) {
136
143
  return;
137
144
  }
138
- setAssetSettings({ ...assetSettings, ...val });
139
- renderRef.current.setAssetSettings(assetCurrent, { ...assetSettings, ...val }, true);
145
+ setAssetSettings(oldVal => {
146
+ renderRef.current.setAssetSettings(assetCurrent, { ...oldVal, ...val }, true);
147
+ return { ...oldVal, ...val };
148
+ });
140
149
  }
141
150
 
142
151
  // 更新连线配置