aldehyde 0.2.472 → 0.2.474

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 (116) hide show
  1. package/lib/controls/entity-select/entity-select.js +1 -1
  2. package/lib/controls/entity-select/entity-select.js.map +1 -1
  3. package/lib/controls/entry-control.js +2 -2
  4. package/lib/controls/entry-control.js.map +1 -1
  5. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +47 -3
  6. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js +12 -12
  7. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js.map +1 -1
  8. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +77 -0
  9. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.ttf +0 -0
  10. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff +0 -0
  11. package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff2 +0 -0
  12. package/lib/draw-canvas/edit/components/asset-bar/index.d.ts +5 -0
  13. package/lib/draw-canvas/edit/components/asset-bar/index.d.ts.map +1 -0
  14. package/lib/draw-canvas/edit/components/asset-bar/index.js +78 -0
  15. package/lib/draw-canvas/edit/components/asset-bar/index.js.map +1 -0
  16. package/lib/draw-canvas/edit/components/asset-bar/index.less +36 -0
  17. package/lib/draw-canvas/edit/components/main-header/index.d.ts +14 -0
  18. package/lib/draw-canvas/edit/components/main-header/index.d.ts.map +1 -0
  19. package/lib/draw-canvas/edit/components/main-header/index.js +163 -0
  20. package/lib/draw-canvas/edit/components/main-header/index.js.map +1 -0
  21. package/lib/draw-canvas/edit/components/main-header/index.less +21 -0
  22. package/lib/draw-canvas/edit/components/render/index.d.ts +86 -0
  23. package/lib/draw-canvas/edit/components/render/index.d.ts.map +1 -0
  24. package/lib/draw-canvas/edit/components/render/index.js +686 -0
  25. package/lib/draw-canvas/edit/components/render/index.js.map +1 -0
  26. package/lib/draw-canvas/edit/components/render/types.d.ts +243 -0
  27. package/lib/draw-canvas/edit/components/render/types.d.ts.map +1 -0
  28. package/lib/draw-canvas/edit/components/render/types.js +66 -0
  29. package/lib/draw-canvas/edit/components/render/types.js.map +1 -0
  30. package/lib/draw-canvas/edit/components/setting-form/index.d.ts +19 -0
  31. package/lib/draw-canvas/edit/components/setting-form/index.d.ts.map +1 -0
  32. package/lib/draw-canvas/edit/components/setting-form/index.js +164 -0
  33. package/lib/draw-canvas/edit/components/setting-form/index.js.map +1 -0
  34. package/lib/draw-canvas/edit/index.d.ts +5 -0
  35. package/lib/draw-canvas/edit/index.d.ts.map +1 -0
  36. package/lib/draw-canvas/edit/index.js +112 -0
  37. package/lib/draw-canvas/edit/index.js.map +1 -0
  38. package/lib/draw-canvas/edit/index.less +34 -0
  39. package/lib/form/form-Item-group.d.ts.map +1 -1
  40. package/lib/form/form-Item-group.js +1 -1
  41. package/lib/form/form-Item-group.js.map +1 -1
  42. package/lib/icon/local-aliIcon/iconfont.js +5 -5
  43. package/lib/icon/local-aliIcon/iconfont.js.map +1 -1
  44. package/lib/table/relation-table.d.ts +4 -0
  45. package/lib/table/relation-table.d.ts.map +1 -1
  46. package/lib/tmpl/hcservice-v3.d.ts +1 -0
  47. package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
  48. package/lib/tmpl/hcservice-v3.js +27 -0
  49. package/lib/tmpl/hcservice-v3.js.map +1 -1
  50. package/lib/tmpl/interface.d.ts +4 -0
  51. package/lib/tmpl/interface.d.ts.map +1 -1
  52. package/lib/tmpl/interface.js.map +1 -1
  53. package/lib/units/index.d.ts +1 -0
  54. package/lib/units/index.d.ts.map +1 -1
  55. package/lib/units/index.js +16 -0
  56. package/lib/units/index.js.map +1 -1
  57. package/package.json +1 -1
  58. package/src/aldehyde/controls/entity-select/entity-select.tsx +1 -1
  59. package/src/aldehyde/controls/entry-control.tsx +2 -2
  60. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +47 -3
  61. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.js +1 -1
  62. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +77 -0
  63. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.ttf +0 -0
  64. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff +0 -0
  65. package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.woff2 +0 -0
  66. package/src/aldehyde/draw-canvas/edit/components/asset-bar/index.less +36 -0
  67. package/src/aldehyde/draw-canvas/edit/components/asset-bar/index.tsx +93 -0
  68. package/src/aldehyde/draw-canvas/edit/components/main-header/index.less +21 -0
  69. package/src/aldehyde/draw-canvas/edit/components/main-header/index.tsx +187 -0
  70. package/src/aldehyde/draw-canvas/edit/components/render/draws/bg-draw.ts +98 -0
  71. package/src/aldehyde/draw-canvas/edit/components/render/draws/contextmenu-draw.ts +307 -0
  72. package/src/aldehyde/draw-canvas/edit/components/render/draws/graph-draw.ts +251 -0
  73. package/src/aldehyde/draw-canvas/edit/components/render/draws/index.ts +7 -0
  74. package/src/aldehyde/draw-canvas/edit/components/render/draws/link-draw.ts +1416 -0
  75. package/src/aldehyde/draw-canvas/edit/components/render/draws/preview-draw.ts +257 -0
  76. package/src/aldehyde/draw-canvas/edit/components/render/draws/ref-line-draw.ts +72 -0
  77. package/src/aldehyde/draw-canvas/edit/components/render/draws/ruler-draw.ts +167 -0
  78. package/src/aldehyde/draw-canvas/edit/components/render/graphs/base-graph.ts +241 -0
  79. package/src/aldehyde/draw-canvas/edit/components/render/graphs/bezier.ts +542 -0
  80. package/src/aldehyde/draw-canvas/edit/components/render/graphs/circle.ts +700 -0
  81. package/src/aldehyde/draw-canvas/edit/components/render/graphs/curve.ts +501 -0
  82. package/src/aldehyde/draw-canvas/edit/components/render/graphs/index.ts +6 -0
  83. package/src/aldehyde/draw-canvas/edit/components/render/graphs/line.ts +494 -0
  84. package/src/aldehyde/draw-canvas/edit/components/render/graphs/rect.ts +681 -0
  85. package/src/aldehyde/draw-canvas/edit/components/render/handlers/drag-handlers.ts +69 -0
  86. package/src/aldehyde/draw-canvas/edit/components/render/handlers/drag-outside-handlers.ts +162 -0
  87. package/src/aldehyde/draw-canvas/edit/components/render/handlers/graph-handlers.ts +108 -0
  88. package/src/aldehyde/draw-canvas/edit/components/render/handlers/index.ts +9 -0
  89. package/src/aldehyde/draw-canvas/edit/components/render/handlers/key-move-handlers.ts +50 -0
  90. package/src/aldehyde/draw-canvas/edit/components/render/handlers/link-handlers.ts +46 -0
  91. package/src/aldehyde/draw-canvas/edit/components/render/handlers/selection-handlers.ts +385 -0
  92. package/src/aldehyde/draw-canvas/edit/components/render/handlers/shutcut-handlers.ts +46 -0
  93. package/src/aldehyde/draw-canvas/edit/components/render/handlers/text-handlers.ts +82 -0
  94. package/src/aldehyde/draw-canvas/edit/components/render/handlers/zoom-handlers.ts +60 -0
  95. package/src/aldehyde/draw-canvas/edit/components/render/index.ts +768 -0
  96. package/src/aldehyde/draw-canvas/edit/components/render/tools/align-tool.ts +91 -0
  97. package/src/aldehyde/draw-canvas/edit/components/render/tools/asset-tool.ts +142 -0
  98. package/src/aldehyde/draw-canvas/edit/components/render/tools/attract-tool.ts +440 -0
  99. package/src/aldehyde/draw-canvas/edit/components/render/tools/copy-tool.ts +269 -0
  100. package/src/aldehyde/draw-canvas/edit/components/render/tools/import-export-tool.ts +603 -0
  101. package/src/aldehyde/draw-canvas/edit/components/render/tools/index.ts +9 -0
  102. package/src/aldehyde/draw-canvas/edit/components/render/tools/link-tool.ts +225 -0
  103. package/src/aldehyde/draw-canvas/edit/components/render/tools/position-tool.ts +212 -0
  104. package/src/aldehyde/draw-canvas/edit/components/render/tools/selection-tool.ts +132 -0
  105. package/src/aldehyde/draw-canvas/edit/components/render/tools/z-index-tool.ts +227 -0
  106. package/src/aldehyde/draw-canvas/edit/components/render/types.ts +287 -0
  107. package/src/aldehyde/draw-canvas/edit/components/render/utils/a-star.ts +116 -0
  108. package/src/aldehyde/draw-canvas/edit/components/render/utils/bezier-scene-func.ts +73 -0
  109. package/src/aldehyde/draw-canvas/edit/components/setting-form/index.tsx +200 -0
  110. package/src/aldehyde/draw-canvas/edit/index.less +34 -0
  111. package/src/aldehyde/draw-canvas/edit/index.tsx +138 -0
  112. package/src/aldehyde/form/form-Item-group.tsx +1 -0
  113. package/src/aldehyde/icon/local-aliIcon/iconfont.js +1 -1
  114. package/src/aldehyde/tmpl/hcservice-v3.tsx +14 -0
  115. package/src/aldehyde/tmpl/interface.tsx +2 -0
  116. package/src/aldehyde/units/index.tsx +15 -0
@@ -0,0 +1,200 @@
1
+ import React, { useEffect, useMemo, useState } from 'react';
2
+ import { Form as AntdForm, Collapse } from "antd";
3
+ import _ from "lodash";
4
+ import FormItemGroup from "../../../../form/form-Item-group";
5
+ import { PageSettings, AssetSettings, LinkSettings } from '../render/types';
6
+ import type Konva from 'konva';
7
+
8
+ const FormItem = AntdForm.Item;
9
+
10
+ // 坐标配置
11
+ const positionSetting = {
12
+ title: "坐标",
13
+ isGroup: true,
14
+ fields: [
15
+ { title: "X", noStyle: true, id: "x", extControlType: "float", colSpan: 1, style: { width: "100%" } },
16
+ { title: "Y", noStyle: true, id: "y", extControlType: "float", colSpan: 1, style: { width: "100%" } }
17
+ ]
18
+ };
19
+
20
+ // 旋转角度配置
21
+ const rotationSetting = { fields: [{ title: "旋转角度", id: "rotation", extControlType: "int", min: -3600, max: 3600, style: { width: "100%" } }] };
22
+
23
+ // 基础图形配置(矩形、圆形等)
24
+ const baseGraphSetting = [
25
+ {
26
+ fields: [
27
+ { title: "线条颜色", id: "stroke", extControlType: "color", style: { width: "100%" } },
28
+ { title: "线宽", id: "strokeWidth", extControlType: "int", min: 0, style: { width: "100%" } },
29
+ { title: "填充颜色", id: "fill", extControlType: "color", style: { width: "100%" } },
30
+ ]
31
+ },
32
+ positionSetting,
33
+ rotationSetting
34
+ ];
35
+
36
+ // 线条配置(折线、曲线等)
37
+ const linesSetting = [
38
+ { title: "线条颜色", id: "stroke", extControlType: "color", style: { width: "100%" } },
39
+ { title: "线宽", id: "strokeWidth", extControlType: "int", min: 0, style: { width: "100%" } },
40
+ { title: "开始箭头", id: "arrowStart", extControlType: "yes-no-switch", style: { width: "100%" } },
41
+ { title: "结束箭头", id: "arrowEnd", extControlType: "yes-no-switch", style: { width: "100%" } }
42
+ ];
43
+
44
+ // 默认画布、组件配置
45
+ const defFormConfig = {
46
+ pageSetting: [ // 画布
47
+ {
48
+ title: "基本信息",
49
+ groups: [
50
+ {
51
+ title: "画布尺寸",
52
+ isGroup: true,
53
+ fields: [
54
+ { title: "宽", noStyle: true, id: "pageWidth", extControlType: "int", colSpan: 1, min: 0, style: { width: "100%" } },
55
+ { title: "高", noStyle: true, id: "pageHeight", extControlType: "int", colSpan: 1, min: 0, style: { width: "100%" } }
56
+ ]
57
+ },
58
+ {
59
+ fields: [
60
+ { title: "背景色", id: "background", extControlType: "color", style: { width: "100%" } },
61
+ { title: "背景图", id: "backgroundImg", extControlType: "picture", style: { width: "100%" } }
62
+ ]
63
+ }
64
+ ],
65
+ }
66
+ ],
67
+ linkSetting: [{ title: "基本信息", fields: linesSetting }], // 连线配置
68
+ Rect: [{ title: "基本信息", groups: baseGraphSetting }],
69
+ Circle: [{ title: "基本信息", groups: baseGraphSetting }],
70
+ Bezier: [{ title: "基本信息", groups: [{ fields: linesSetting }, positionSetting] }],
71
+ Curve: [{ title: "基本信息", groups: [{ fields: linesSetting }, positionSetting] }],
72
+ Text: [{
73
+ title: "基本信息",
74
+ groups: [
75
+ {
76
+ fields: [
77
+ { title: "文本", id: "text", extControlType: "textarea", style: { width: "100%" } },
78
+ { title: "文本颜色", id: "textFill", extControlType: "color", style: { width: "100%" } },
79
+ { title: "字体大小", id: "fontSize", extControlType: "int", min: 1, style: { width: "100%" } },
80
+ ]
81
+ },
82
+ positionSetting
83
+ ]
84
+ }]
85
+ };
86
+
87
+ interface Props {
88
+ pageSettings?: PageSettings; // 画布配置
89
+ onPageSettingsChange: (s: PageSettings) => void; // 更新画布配置
90
+ assetCurrent?: Konva.Node; // 当前选中组件
91
+ assetSettings?: AssetSettings; // 当前选中组件配置
92
+ onAssetSettingsChange: (s: AssetSettings) => void; // 更新当前选中组件配置
93
+ linkCurrent?: Konva.Line; // 当前选中连线
94
+ linkSettings?: LinkSettings; // 当前选中连线配置
95
+ onLinkSettingsChange: (s: LinkSettings) => void; // 更新当前选中连线配置
96
+ formConfig?: { [key: string]: any }; // 表单配置
97
+ }
98
+
99
+ const Index = (props: Props) => {
100
+ const { pageSettings, onPageSettingsChange, assetCurrent, assetSettings, onAssetSettingsChange, linkCurrent, linkSettings, onLinkSettingsChange, formConfig } = props;
101
+ const formData = assetCurrent ? assetSettings : (linkCurrent ? linkSettings : pageSettings);
102
+ const [form] = AntdForm.useForm();
103
+ const [formConfigs, setFormConfigs] = useState<{ [key: string]: any }>([]);
104
+
105
+ // FormItem渲染
106
+ const renderFormItem = (item: { [key: string]: any }) => {
107
+ if (item.groups) {
108
+ return item.groups.map(r => {
109
+ if (r?.isGroup) { // 表单分组显示
110
+ return <FormItem label={r.title} layout='vertical' style={{ margin: "12px 0", paddingInline: "8px" }}>
111
+ <FormItemGroup fields={r.fields || undefined} valueMap={undefined} />
112
+ </FormItem>;
113
+ }
114
+ return <FormItemGroup layout='vertical' fields={r.fields || undefined} valueMap={undefined} />;
115
+ });
116
+ }
117
+ return <FormItemGroup layout='vertical' fields={item.fields || undefined} valueMap={undefined} />;
118
+ }
119
+
120
+ // 当前表单配置
121
+ const currentFormConfig = useMemo(() => {
122
+ let temFormConfig = formConfig || (linkCurrent ? defFormConfig["linkSetting"] : defFormConfig["pageSetting"]);
123
+ if (assetCurrent) {
124
+ const assetType = assetCurrent.getAttr("assetType");
125
+ const graphType = assetCurrent.getAttr("graphType");
126
+ temFormConfig = defFormConfig[assetType === "Text" ? "Text" : graphType] || temFormConfig;
127
+ }
128
+ const configArr = temFormConfig.map(r => r.groups ? r.groups.map(i => i.fields) : r.fields).flat(Infinity);
129
+ setFormConfigs(configArr);
130
+ return temFormConfig;
131
+ }, [formConfig, linkCurrent, assetCurrent]);
132
+
133
+ const fieldGroupList = () => {
134
+ const items = currentFormConfig?.map((item, index) => ({
135
+ key: index,
136
+ label: item.title,
137
+ children: renderFormItem(item)
138
+ }));
139
+ return <Collapse bordered={false} size="small" defaultActiveKey={0} items={items} />;
140
+ };
141
+
142
+ // 更新数据
143
+ const onValuesChange = (val: { [key: string]: any }) => {
144
+ const temVal = val;
145
+ Object.keys(val).forEach((key) => { // 使用公共表单组件,转换指定类型值
146
+ const extControlType = formConfigs.find((item: any) => item.id === key)?.extControlType;
147
+ if (["yes-no-switch"].includes(extControlType)) { // 处理是否转换boolean值
148
+ temVal[key] = val[key] === "是" ? true : false;
149
+ return;
150
+ }
151
+ if (["float", "int"].includes(extControlType)) { // 处理数字类型转换
152
+ temVal[key] = Number(val[key] || 0);
153
+ return;
154
+ }
155
+ });
156
+ if (assetCurrent) { // 当前选中组件
157
+ onAssetSettingsChange({ ...assetSettings, ...temVal });
158
+ return;
159
+ }
160
+ if (linkCurrent) { // 当前选中连线
161
+ onLinkSettingsChange({ ...linkSettings, ...temVal });
162
+ return;
163
+ }
164
+ // 默认画布配置
165
+ onPageSettingsChange({ ...pageSettings, ...temVal });
166
+ }
167
+
168
+ // 表单数据实时回显更新
169
+ const formSetFieldsValue = () => {
170
+ const temVal = _.cloneDeep(formData);
171
+ Object.keys(temVal).forEach((key) => { // 使用公共表单组件,转换指定类型值
172
+ const extControlType = formConfigs.find((item: any) => item.id === key)?.extControlType;
173
+ if (["yes-no-switch"].includes(extControlType)) { // 处理是否转换boolean值
174
+ temVal[key] = temVal[key] === true ? "是" : "否";
175
+ return;
176
+ }
177
+ });
178
+ form.setFieldsValue(temVal);
179
+ }
180
+
181
+ // 表单数据实时回显更新
182
+ useEffect(() => {
183
+ if (formConfigs?.length && formData) {
184
+ formSetFieldsValue();
185
+ }
186
+ }, [formData, formConfigs]);
187
+
188
+ return <AntdForm
189
+ scrollToFirstError={true}
190
+ labelWrap={true}
191
+ size="small"
192
+ form={form}
193
+ onValuesChange={onValuesChange}
194
+ // onFinish={onValuesChange}
195
+ >
196
+ {fieldGroupList()}
197
+ </AntdForm>;
198
+ };
199
+
200
+ export default Index;
@@ -0,0 +1,34 @@
1
+ .draw {
2
+ width: 100%;
3
+ height: 100%;
4
+ display: flex;
5
+ flex-direction: column;
6
+
7
+ *:focus-visible {
8
+ outline: none;
9
+ }
10
+
11
+ .draw-content {
12
+ display: flex;
13
+ flex-grow: 1;
14
+
15
+ .left {
16
+ overflow: auto;
17
+ border-right: 1px solid #ccc;
18
+ flex-shrink: 0;
19
+ }
20
+
21
+ .center {
22
+ width: 0;
23
+ flex-grow: 1;
24
+ background-color: rgba(0, 0, 0, 0.05);
25
+ z-index: 1;
26
+ }
27
+
28
+ .right {
29
+ width: 220px;
30
+ background-color: #f5f5f5;
31
+ border-left: 1px solid #ccc;
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,138 @@
1
+ import React, { useEffect, useRef, useState, useCallback } from 'react';
2
+ import { Render } from './components/render';
3
+ import { GraphType, PageSettings, AssetSettings, LinkSettings } from './components/render/types';
4
+ import MainHeader from './components/main-header';
5
+ import AssetBar from './components/asset-bar';
6
+ import SettingForm from "./components/setting-form";
7
+ import type Konva from 'konva';
8
+ import './index.less';
9
+
10
+ const Index = () => {
11
+ const boardRef = useRef<HTMLDivElement>(null); // 画布边框
12
+ const stageRef = useRef<HTMLDivElement>(null); // 画布
13
+ const renderRef = useRef<Render | null>(null); // 渲染器实例
14
+ const observerRef = useRef<ResizeObserver | null>(null); // 监听尺寸变化
15
+ const [graphType, setGraphType] = useState<GraphType>(); // 当前画图类型
16
+ const [pageSettings, setPageSettings] = useState<PageSettings>(); // 画布设置
17
+ const [assetSettings, setAssetSettings] = useState<AssetSettings>(); // 当前选中组件设置
18
+ const [linkSettings, setLinkSettings] = useState<LinkSettings>(); // 当前连线设置
19
+ const [assetCurrent, setAssetCurrent] = useState<Konva.Node>(); // 当前选中组件
20
+ const [linkCurrent, setLinkCurrent] = useState<Konva.Line>(); // 当前选中连线
21
+ const [texting, setTexting] = useState<boolean>(false); // 添加文本状态
22
+ const assetCurrentRef = useRef<Konva.Node>(null); // 当前选中组件Ref
23
+
24
+ // 初始化渲染器
25
+ const initRender = useCallback((width: number, height: number) => {
26
+ if (renderRef.current || !stageRef.current) return;
27
+ const render = new Render(stageRef.current, {
28
+ width, height,
29
+ showBg: true, showRuler: true, showRefLine: true,
30
+ showPreview: true, showContextmenu: true,
31
+ attractResize: true, attractBg: true, attractNode: true,
32
+ });
33
+ renderRef.current = render;
34
+ // 初始化设置
35
+ setPageSettings(render.getPageSettings());
36
+ // 事件绑定
37
+ render.on('page-settings-change', setPageSettings); // 监听画布配置变化
38
+ render.on('selection-change', (nodes: Konva.Node[]) => { // 监听选中组件
39
+ assetCurrentRef.current = nodes.length === 1 ? nodes[0] : undefined;
40
+ setAssetCurrent(assetCurrentRef.current);
41
+ setAssetSettings(nodes.length === 1 ? render.getAssetSettings(nodes[0]) : undefined);
42
+ });
43
+ render.on('link-selection-change', (link?: Konva.Line) => { // 监听选中连线
44
+ setLinkCurrent(link);
45
+ setLinkSettings(link ? render.getLinkSettings(link) : undefined);
46
+ });
47
+ render.on('asset-position-change', (nodes: Konva.Node[]) => { // 监听组件位置变化
48
+ const node = nodes.find(n => n.id() === assetCurrentRef.current?.id());
49
+ if (node) {
50
+ const position = node.position();
51
+ setAssetSettings(s => s ? { ...s, x: +position.x.toFixed(1), y: +position.y.toFixed(1) } : undefined);
52
+ }
53
+ });
54
+ render.on('asset-rotation-change', (nodes: Konva.Node[]) => { // 监听组件旋转
55
+ const node = nodes.find(n => n.id() === assetCurrentRef.current?.id());
56
+ if (node) {
57
+ const rotation = node.rotation();
58
+ setAssetSettings(s => s ? { ...s, rotation: +rotation.toFixed(1) } : undefined);
59
+ }
60
+ });
61
+ render.on('texting-change', setTexting); // 监听插入文本状态
62
+ render.on('graph-type-change', setGraphType); // 监听插入基础图形类型
63
+ }, []);
64
+
65
+ // 监听尺寸变化
66
+ useEffect(() => {
67
+ if (!boardRef.current) return;
68
+ const observer = new ResizeObserver(() => {
69
+ const { width, height } = boardRef.current.getBoundingClientRect();
70
+ if (renderRef.current) {
71
+ renderRef.current.resize(width, height);
72
+ } else {
73
+ initRender(width, height);
74
+ }
75
+ })
76
+ observer.observe(boardRef.current);
77
+ observerRef.current = observer;
78
+ return () => observer.disconnect();
79
+ }, [])
80
+
81
+ // 更新画布配置
82
+ const handlePageSetting = (val: { [key: string]: any }) => {
83
+ if (!(renderRef.current)) {
84
+ return;
85
+ }
86
+ renderRef.current.setPageSettings({ ...pageSettings, ...val }, true);
87
+ }
88
+
89
+ // 更新组件配置
90
+ const handleAssetSettings = (val: { [key: string]: any }) => {
91
+ if (!(assetCurrent && renderRef.current)) {
92
+ return;
93
+ }
94
+ setAssetSettings({ ...assetSettings, ...val });
95
+ renderRef.current.setAssetSettings(assetCurrent, { ...assetSettings, ...val }, true);
96
+ }
97
+
98
+ // 更新连线配置
99
+ const handleLinkSettings = (val: { [key: string]: any }) => {
100
+ if (!(linkCurrent && renderRef.current)) {
101
+ return;
102
+ }
103
+ setLinkSettings({ ...linkSettings, ...val });
104
+ renderRef.current.setLinkSettings(linkCurrent, { ...linkSettings, ...val }, true);
105
+ }
106
+
107
+ return (
108
+ <div className="draw">
109
+ <MainHeader
110
+ render={renderRef.current}
111
+ graphType={graphType}
112
+ texting={texting}
113
+ onGraphTypeChange={(val) => renderRef.current.changeGraphType(val)}
114
+ onTexting={() => renderRef.current.changeTexting(true)}
115
+ />
116
+ <div className='draw-content'>
117
+ <div className='left'><AssetBar /></div>
118
+ <div className='center' ref={boardRef} >
119
+ <div ref={stageRef} />
120
+ </div>
121
+ <div className='right'>
122
+ <SettingForm
123
+ pageSettings={pageSettings}
124
+ onPageSettingsChange={handlePageSetting}
125
+ assetCurrent={assetCurrent}
126
+ assetSettings={assetSettings}
127
+ onAssetSettingsChange={handleAssetSettings}
128
+ linkCurrent={linkCurrent}
129
+ linkSettings={linkSettings}
130
+ onLinkSettingsChange={handleLinkSettings}
131
+ />
132
+ </div>
133
+ </div>
134
+ </div>
135
+ )
136
+ }
137
+
138
+ export default Index;
@@ -141,6 +141,7 @@ export default class FormItemGroup extends React.PureComponent<
141
141
  return (
142
142
  <FormItem
143
143
  label={translate("${" + item.title + "}")}
144
+ noStyle={item.noStyle || false}
144
145
  hidden={item.hidden}
145
146
  name={fieldConfig.controlType == "field-history" ? undefined : item[nameAttr]}
146
147
  key={item.id}