diff --git a/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx b/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx
index 919bcf876..0a09dd1d9 100644
--- a/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx
+++ b/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx
@@ -46,6 +46,12 @@ export class BorderSelectingInstance extends Component<{
dragging,
});
+ const hideSelectTools = observed.node.componentMeta.getMetadata().experimental?.hideSelectTools;
+
+ if (hideSelectTools) {
+ return null;
+ }
+
return (
{!dragging && }
diff --git a/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts b/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts
index b155b957a..6b64156b2 100644
--- a/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts
+++ b/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts
@@ -137,6 +137,7 @@ export interface OldPrototypeConfig {
isContainer?: boolean; // => configure.component.isContainer
isAbsoluteLayoutContainer?: boolean; // => meta.experimental.isAbsoluteLayoutContainer 是否是绝对定位容器
+ hideSelectTools?: boolean; // => meta.experimental.hideSelectTools
isModal?: boolean; // => configure.component.isModal
isFloating?: boolean; // => configure.component.isFloating
descriptor?: string; // => configure.component.descriptor
@@ -595,6 +596,7 @@ export function upgradeMetadata(oldConfig: OldPrototypeConfig) {
transducers,
isContainer,
isAbsoluteLayoutContainer,
+ hideSelectTools,
rectSelector,
isModal,
isFloating,
@@ -684,6 +686,7 @@ export function upgradeMetadata(oldConfig: OldPrototypeConfig) {
// 未考虑清楚的,放在实验性段落
const experimental: any = {
isAbsoluteLayoutContainer,
+ hideSelectTools,
};
if (context) {
// for prototype.getContextInfo
diff --git a/packages/types/src/metadata.ts b/packages/types/src/metadata.ts
index 4fdefa653..36e99b731 100644
--- a/packages/types/src/metadata.ts
+++ b/packages/types/src/metadata.ts
@@ -66,6 +66,7 @@ export interface Experimental {
callbacks?: Callbacks;
initialChildren?: NodeData[] | ((target: SettingTarget) => NodeData[]);
isAbsoluteLayoutContainer: boolean;
+ hideSelectTools?: boolean;
// 样式 及 位置,handle上必须有明确的标识以便事件路由判断,或者主动设置事件独占模式
// NWSE 是交给引擎计算放置位置,ReactElement 必须自己控制初始位置