alibaba / alibaba/lowcode-engine
组件 metadata 的高级特性 getResizingHandlers 类型和实现不对应
- Dominant language
- TypeScript
- Stars
- 15.9k
- Forks
- 2.7k
- PR merge metrics
- No merged PRs in 30d
Description
## **Describe the bug (required)** / **详细描述 bug(必填)**
组件 metadata 的高级特性 `getResizingHandlers` 期望为数组对象,并可配置控制 handler 的出现时机,实际实现只接受触发控制方向的 string[] 字符串数组,该接口是否并未正确实现,还是类型未调整正确?
```ts
/**
* 样式 及 位置,handle 上必须有明确的标识以便事件路由判断,或者主动设置事件独占模式
* NWSE 是交给引擎计算放置位置,ReactElement 必须自己控制初始位置
*
* 用于配置设计器中组件 resize 操作工具的样式和内容
* - hover 时控制柄高亮
* - mousedown 时请求独占
* - dragstart 请求通用 resizing 控制 请求 hud 显示
* - drag 时 计算并设置效果,更新控制柄位置
*/
getResizingHandlers?: (
currentNode: any
) => (Array<{
type: 'N' | 'W' | 'S' | 'E' | 'NW' | 'NE' | 'SE' | 'SW';
content?: ReactElement;
propTarget?: string;
appearOn?: 'mouse-enter' | 'mouse-hover' | 'selected' | 'always';
}> |
ReactElement[]);
```

---
## **To Reproduce (required)** / **如何复现 bug?(必填,非常重要)**
为组件 `metadata.configure.advanced.getResizingHandlers` 配置同类型的对象数组配置时报错,配置为字符串数组时正常,但是该类型与申明类型不匹配,提示类型错误;
```ts
function addResizeCallback(metadata: IPublicTypeTransformedComponentMetadata): IPublicTypeTransformedComponentMetadata {
if (metadata?.configure) {
if (!metadata.configure.advanced) {
metadata.configure.advanced = {};
}
metadata.configure.advanced.getResizingHandlers = (currentNode: IPublicModelNode) => {
return ['N', 'W', 'S', 'E', 'NW', 'NE', 'SE', 'SW'];
};
return metadata;
}
const NodeResizeEnablePlugin = (ctx: IPublicModelPluginContext) => {
return {
name: 'editor-init',
async init() {
const { material } = ctx;
material.registerMetadataTransducer(addResizeCallback, 1, 'node-resize-enable');
},
};
};
```
---
## **Expected behavior (required)** / **预期行为(必填,非常重要)**
期望实现和类型匹配,支持控制 handler 的自定义 `content` 和出现时机 `appearOn` 等参数正常配置
## **Environments (please complete the following information) (required):** / **请提供如下信息(必填)**
- AliLowCodeEngine version: v1.2.2
- AliLowCodeEngineExt version: v1.0.6
- Browser: Chrome V119.0.6045.200 (Official Build) (64-bit)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.