drawui-core 0.3.1 → 0.3.3
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/index.cjs +17 -17
- package/dist/index.d.cts +35 -6
- package/dist/index.d.ts +35 -6
- package/dist/index.js +17 -17
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -205,6 +205,11 @@ interface ArrowBinding {
|
|
|
205
205
|
handle?: 'top' | 'bottom' | 'left' | 'right';
|
|
206
206
|
isPrecise?: boolean;
|
|
207
207
|
normalizedAnchor?: Vec2;
|
|
208
|
+
/** 自动选择的接入边(创建时按当时几何挑的「最优边」):
|
|
209
|
+
* 渲染/导出时会按两图形的当前相对位置动态重选,
|
|
210
|
+
* 拖动图形后连线始终从最合理的一侧接入。用户显式吸附到某个
|
|
211
|
+
* 连接点/边缘时不含此标记,接入边保持用户选择不变。 */
|
|
212
|
+
auto?: boolean;
|
|
208
213
|
}
|
|
209
214
|
type ArrowHeadType = 'none' | 'start' | 'end' | 'both' | 'inheritance' | 'aggregation' | 'composition'
|
|
210
215
|
/** 依赖(UML dependency):虚线 + 开放箭头 */
|
|
@@ -846,7 +851,13 @@ declare class Editor {
|
|
|
846
851
|
private lineStyle;
|
|
847
852
|
/** 根据生成源(图形+边)计算连线起点绑定 */
|
|
848
853
|
private computeSourceBinding;
|
|
849
|
-
/**
|
|
854
|
+
/**
|
|
855
|
+
* 连线到达目标图形时,应吸附到目标面向来线的那个边。
|
|
856
|
+
* 关键规则:接入边与出线边「同轴」—— 从源图形左右边出线,就优先接目标的
|
|
857
|
+
* 左/右边(面向来线的一侧);从上下边出线,就优先接目标的上/下边。
|
|
858
|
+
* 这样多条分支连线才能共用同一条正交主干总线(飞书式分叉),而不是各自
|
|
859
|
+
* 横着拐进目标的顶边、沿边缘爬进去。
|
|
860
|
+
*/
|
|
850
861
|
private connectHandle;
|
|
851
862
|
/** 仅创建一条从源点引出、末端悬空的线条并选中它 */
|
|
852
863
|
createFloatingLine(context: GenerationContext): string | undefined;
|
|
@@ -1205,8 +1216,14 @@ declare class Renderer {
|
|
|
1205
1216
|
private generateOrthogonalPoints;
|
|
1206
1217
|
/** 去除连续重合点与共线点,精简冗余拐点 */
|
|
1207
1218
|
private collapseLinePoints;
|
|
1208
|
-
/**
|
|
1219
|
+
/** 计算单段直角路由:优先无碰撞、且符合总线轴方向的 H-V-H / V-H-V 折线,必要时绕开障碍 */
|
|
1209
1220
|
private computeOrthogonalRoute;
|
|
1221
|
+
/**
|
|
1222
|
+
* 在停靠偏好对应的总线轴上,从源侧向外逐点平移总线位置,返回第一条「垂直方向和
|
|
1223
|
+
* 末段水平分支都避开所有中间障碍」的总线折线;找不到则返回 null。
|
|
1224
|
+
* 平移的起点越靠源侧越好,这样多条同一来源的连线会用同一条紧贴源点的主干总线。
|
|
1225
|
+
*/
|
|
1226
|
+
private findClearBus;
|
|
1210
1227
|
/** 收集连线绕行所需的障碍包围盒(转为 shape 本地坐标)。
|
|
1211
1228
|
* 将本连线之外的所有图形(含其它连线/箭头/手绘)都作为障碍;
|
|
1212
1229
|
* 连接端点所在图形使用小间距(CONNECTED_PAD),其余图形使用大间距(ROUTE_CLEARANCE)。 */
|
|
@@ -1222,10 +1239,12 @@ declare class Renderer {
|
|
|
1222
1239
|
* 最短避障折线(半径外扩 pad 保证不贴边)。返回不含 from、含 to 的拐点序列。
|
|
1223
1240
|
*/
|
|
1224
1241
|
private routeOrthogonalAvoidance;
|
|
1225
|
-
/**
|
|
1242
|
+
/**
|
|
1243
|
+
* 曲线:用三次贝塞尔拼接出平滑曲线(离散化采样)。
|
|
1244
|
+
* 端点若停靠在图形上(dock.fromN/toN),控制点沿法向伸出,使曲线垂直脱离 / 垂直接入
|
|
1245
|
+
* 图形边缘(飞书/tldraw 风格);中间折点用 Catmull-Rom 切线保持连续平滑。
|
|
1246
|
+
*/
|
|
1226
1247
|
private generateCurvePoints;
|
|
1227
|
-
/** 计算贝塞尔曲线控制点 */
|
|
1228
|
-
private computeCurveControlPoint;
|
|
1229
1248
|
/**
|
|
1230
1249
|
* 获取文本的显示行(换行 + 截断),结果按 shape/文本/尺寸缓存,
|
|
1231
1250
|
* 避免每帧渲染都对文本逐字符 measureText。
|
|
@@ -1235,6 +1254,16 @@ declare class Renderer {
|
|
|
1235
1254
|
private getTextBounds;
|
|
1236
1255
|
private wrapLine;
|
|
1237
1256
|
private truncateLine;
|
|
1257
|
+
/** 连接点句柄 → 外法向(页面坐标单位向量) */
|
|
1258
|
+
private static readonly HANDLE_NORMALS;
|
|
1259
|
+
/**
|
|
1260
|
+
* 自动接入边选择:与出线边「同轴」优先 —— 从源图形左右边出线就接目标的
|
|
1261
|
+
* 左/右边(面向来线一侧),从上下边出线就接上/下边;这样分支连线才能共用
|
|
1262
|
+
* 同一条正交主干总线,而不是横着拐进目标顶边。无出线方向信息时退回主方向规则。
|
|
1263
|
+
*/
|
|
1264
|
+
private pickAutoHandle;
|
|
1265
|
+
/** auto 绑定 → 按当前几何重选接入边;显式绑定原样返回 */
|
|
1266
|
+
private resolveAutoEndBinding;
|
|
1238
1267
|
private getBindingPoint;
|
|
1239
1268
|
/**
|
|
1240
1269
|
* 计算端点所在图形的外法向(垂直于该侧边缘,页面坐标单位向量)。
|
|
@@ -1419,7 +1448,7 @@ declare class SelectTool extends Tool {
|
|
|
1419
1448
|
/** 生成点位命中阈值 / 单击 vs 拖动判定阈值 */
|
|
1420
1449
|
private static readonly GEN_HIT_THRESHOLD;
|
|
1421
1450
|
private static readonly CLICK_MOVE_THRESHOLD;
|
|
1422
|
-
/**
|
|
1451
|
+
/** 收集选中图形上的全部生成点位(图形四边中点/快捷连线按钮) */
|
|
1423
1452
|
private computeGenPoints;
|
|
1424
1453
|
/** 命中检测:指针是否落在某个生成点位附近(取最近的) */
|
|
1425
1454
|
private hitGenPoint;
|
package/dist/index.d.ts
CHANGED
|
@@ -205,6 +205,11 @@ interface ArrowBinding {
|
|
|
205
205
|
handle?: 'top' | 'bottom' | 'left' | 'right';
|
|
206
206
|
isPrecise?: boolean;
|
|
207
207
|
normalizedAnchor?: Vec2;
|
|
208
|
+
/** 自动选择的接入边(创建时按当时几何挑的「最优边」):
|
|
209
|
+
* 渲染/导出时会按两图形的当前相对位置动态重选,
|
|
210
|
+
* 拖动图形后连线始终从最合理的一侧接入。用户显式吸附到某个
|
|
211
|
+
* 连接点/边缘时不含此标记,接入边保持用户选择不变。 */
|
|
212
|
+
auto?: boolean;
|
|
208
213
|
}
|
|
209
214
|
type ArrowHeadType = 'none' | 'start' | 'end' | 'both' | 'inheritance' | 'aggregation' | 'composition'
|
|
210
215
|
/** 依赖(UML dependency):虚线 + 开放箭头 */
|
|
@@ -846,7 +851,13 @@ declare class Editor {
|
|
|
846
851
|
private lineStyle;
|
|
847
852
|
/** 根据生成源(图形+边)计算连线起点绑定 */
|
|
848
853
|
private computeSourceBinding;
|
|
849
|
-
/**
|
|
854
|
+
/**
|
|
855
|
+
* 连线到达目标图形时,应吸附到目标面向来线的那个边。
|
|
856
|
+
* 关键规则:接入边与出线边「同轴」—— 从源图形左右边出线,就优先接目标的
|
|
857
|
+
* 左/右边(面向来线的一侧);从上下边出线,就优先接目标的上/下边。
|
|
858
|
+
* 这样多条分支连线才能共用同一条正交主干总线(飞书式分叉),而不是各自
|
|
859
|
+
* 横着拐进目标的顶边、沿边缘爬进去。
|
|
860
|
+
*/
|
|
850
861
|
private connectHandle;
|
|
851
862
|
/** 仅创建一条从源点引出、末端悬空的线条并选中它 */
|
|
852
863
|
createFloatingLine(context: GenerationContext): string | undefined;
|
|
@@ -1205,8 +1216,14 @@ declare class Renderer {
|
|
|
1205
1216
|
private generateOrthogonalPoints;
|
|
1206
1217
|
/** 去除连续重合点与共线点,精简冗余拐点 */
|
|
1207
1218
|
private collapseLinePoints;
|
|
1208
|
-
/**
|
|
1219
|
+
/** 计算单段直角路由:优先无碰撞、且符合总线轴方向的 H-V-H / V-H-V 折线,必要时绕开障碍 */
|
|
1209
1220
|
private computeOrthogonalRoute;
|
|
1221
|
+
/**
|
|
1222
|
+
* 在停靠偏好对应的总线轴上,从源侧向外逐点平移总线位置,返回第一条「垂直方向和
|
|
1223
|
+
* 末段水平分支都避开所有中间障碍」的总线折线;找不到则返回 null。
|
|
1224
|
+
* 平移的起点越靠源侧越好,这样多条同一来源的连线会用同一条紧贴源点的主干总线。
|
|
1225
|
+
*/
|
|
1226
|
+
private findClearBus;
|
|
1210
1227
|
/** 收集连线绕行所需的障碍包围盒(转为 shape 本地坐标)。
|
|
1211
1228
|
* 将本连线之外的所有图形(含其它连线/箭头/手绘)都作为障碍;
|
|
1212
1229
|
* 连接端点所在图形使用小间距(CONNECTED_PAD),其余图形使用大间距(ROUTE_CLEARANCE)。 */
|
|
@@ -1222,10 +1239,12 @@ declare class Renderer {
|
|
|
1222
1239
|
* 最短避障折线(半径外扩 pad 保证不贴边)。返回不含 from、含 to 的拐点序列。
|
|
1223
1240
|
*/
|
|
1224
1241
|
private routeOrthogonalAvoidance;
|
|
1225
|
-
/**
|
|
1242
|
+
/**
|
|
1243
|
+
* 曲线:用三次贝塞尔拼接出平滑曲线(离散化采样)。
|
|
1244
|
+
* 端点若停靠在图形上(dock.fromN/toN),控制点沿法向伸出,使曲线垂直脱离 / 垂直接入
|
|
1245
|
+
* 图形边缘(飞书/tldraw 风格);中间折点用 Catmull-Rom 切线保持连续平滑。
|
|
1246
|
+
*/
|
|
1226
1247
|
private generateCurvePoints;
|
|
1227
|
-
/** 计算贝塞尔曲线控制点 */
|
|
1228
|
-
private computeCurveControlPoint;
|
|
1229
1248
|
/**
|
|
1230
1249
|
* 获取文本的显示行(换行 + 截断),结果按 shape/文本/尺寸缓存,
|
|
1231
1250
|
* 避免每帧渲染都对文本逐字符 measureText。
|
|
@@ -1235,6 +1254,16 @@ declare class Renderer {
|
|
|
1235
1254
|
private getTextBounds;
|
|
1236
1255
|
private wrapLine;
|
|
1237
1256
|
private truncateLine;
|
|
1257
|
+
/** 连接点句柄 → 外法向(页面坐标单位向量) */
|
|
1258
|
+
private static readonly HANDLE_NORMALS;
|
|
1259
|
+
/**
|
|
1260
|
+
* 自动接入边选择:与出线边「同轴」优先 —— 从源图形左右边出线就接目标的
|
|
1261
|
+
* 左/右边(面向来线一侧),从上下边出线就接上/下边;这样分支连线才能共用
|
|
1262
|
+
* 同一条正交主干总线,而不是横着拐进目标顶边。无出线方向信息时退回主方向规则。
|
|
1263
|
+
*/
|
|
1264
|
+
private pickAutoHandle;
|
|
1265
|
+
/** auto 绑定 → 按当前几何重选接入边;显式绑定原样返回 */
|
|
1266
|
+
private resolveAutoEndBinding;
|
|
1238
1267
|
private getBindingPoint;
|
|
1239
1268
|
/**
|
|
1240
1269
|
* 计算端点所在图形的外法向(垂直于该侧边缘,页面坐标单位向量)。
|
|
@@ -1419,7 +1448,7 @@ declare class SelectTool extends Tool {
|
|
|
1419
1448
|
/** 生成点位命中阈值 / 单击 vs 拖动判定阈值 */
|
|
1420
1449
|
private static readonly GEN_HIT_THRESHOLD;
|
|
1421
1450
|
private static readonly CLICK_MOVE_THRESHOLD;
|
|
1422
|
-
/**
|
|
1451
|
+
/** 收集选中图形上的全部生成点位(图形四边中点/快捷连线按钮) */
|
|
1423
1452
|
private computeGenPoints;
|
|
1424
1453
|
/** 命中检测:指针是否落在某个生成点位附近(取最近的) */
|
|
1425
1454
|
private hitGenPoint;
|