From 11078f4c181bf9732bbbc15ab36eaddf6757ba40 Mon Sep 17 00:00:00 2001 From: "lihao.ylh" Date: Mon, 10 Jan 2022 18:49:29 +0800 Subject: [PATCH] refactor: .experimental -> .configure.advanced --- .../bem-tools/border-detecting.tsx | 2 +- .../bem-tools/border-resizing.tsx | 22 +++++++++---------- .../bem-tools/border-selecting.tsx | 2 +- .../builtin-simulator/bem-tools/insertion.tsx | 2 +- .../designer/src/builtin-simulator/host.ts | 2 +- packages/designer/src/component-meta.ts | 10 +++++---- packages/designer/src/designer/designer.ts | 2 +- .../src/designer/drag-ghost/index.tsx | 2 +- .../src/document/node/node-children.ts | 2 +- packages/designer/src/document/node/node.ts | 8 +++---- packages/plugin-outline-pane/src/main.ts | 2 +- packages/types/src/metadata.ts | 8 +++---- packages/utils/src/misc.ts | 14 +++++++++++- packages/utils/src/node-helper.ts | 2 +- 14 files changed, 47 insertions(+), 33 deletions(-) diff --git a/packages/designer/src/builtin-simulator/bem-tools/border-detecting.tsx b/packages/designer/src/builtin-simulator/bem-tools/border-detecting.tsx index fcf74a6e8..6fcbe25ae 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-detecting.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-detecting.tsx @@ -78,7 +78,7 @@ export class BorderDetecting extends Component<{ host: BuiltinSimulatorHost }> { const { current } = this; - const canHoverHook = current?.componentMeta.getMetadata()?.advanced?.callbacks?.onHoverHook; + const canHoverHook = current?.componentMeta.getMetadata()?.configure.advanced?.callbacks?.onHoverHook; const canHover = (canHoverHook && typeof canHoverHook === 'function') ? canHoverHook(current.internalToShellNode()) : true; diff --git a/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx b/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx index c337bd2de..042fca551 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-resizing.tsx @@ -137,38 +137,38 @@ export class BoxResizingInstance extends Component<{ const resize = (e: MouseEvent, direction: string, node: any, moveX: number, moveY: number) => { const metadata = node.componentMeta.getMetadata(); if ( - metadata?.advanced?.callbacks && - typeof metadata.advanced.callbacks.onResize === 'function' + metadata.configure?.advanced?.callbacks && + typeof metadata.configure.advanced.callbacks.onResize === 'function' ) { (e as any).trigger = direction; (e as any).deltaX = moveX; (e as any).deltaY = moveY; const cbNode = node?.isNode ? node.internalToShellNode() : node; - metadata.advanced.callbacks.onResize(e, cbNode); + metadata.configure.advanced.callbacks.onResize(e, cbNode); } }; const resizeStart = (e: MouseEvent, direction: string, node: any) => { const metadata = node.componentMeta.getMetadata(); if ( - metadata?.advanced?.callbacks && - typeof metadata.advanced.callbacks.onResizeStart === 'function' + metadata.configure?.advanced?.callbacks && + typeof metadata.configure.advanced.callbacks.onResizeStart === 'function' ) { (e as any).trigger = direction; const cbNode = node?.isNode ? node.internalToShellNode() : node; - metadata.advanced.callbacks.onResizeStart(e, cbNode); + metadata.configure.advanced.callbacks.onResizeStart(e, cbNode); } }; const resizeEnd = (e: MouseEvent, direction: string, node: any) => { const metadata = node.componentMeta.getMetadata(); if ( - metadata?.advanced?.callbacks && - typeof metadata.advanced.callbacks.onResizeEnd === 'function' + metadata.configure?.advanced?.callbacks && + typeof metadata.configure.advanced.callbacks.onResizeEnd === 'function' ) { (e as any).trigger = direction; const cbNode = node?.isNode ? node.internalToShellNode() : node; - metadata.advanced.callbacks.onResizeEnd(e, cbNode); + metadata.configure.advanced.callbacks.onResizeEnd(e, cbNode); } const editor = globalContext.get(Editor); @@ -241,8 +241,8 @@ export class BoxResizingInstance extends Component<{ const { node, offsetWidth, offsetHeight, offsetTop, offsetLeft } = observed; let triggerVisible: any = []; const metadata = node.componentMeta.getMetadata(); - if (metadata?.advanced?.getResizingHandlers) { - triggerVisible = metadata.advanced.getResizingHandlers(node); + if (metadata.configure?.advanced?.getResizingHandlers) { + triggerVisible = metadata.configure.advanced.getResizingHandlers(node); } const baseSideClass = 'lc-borders lc-resize-side'; 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 2d81d9c18..097d1f596 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/border-selecting.tsx @@ -46,7 +46,7 @@ export class BorderSelectingInstance extends Component<{ dragging, }); - const hideSelectTools = observed.node.componentMeta.getMetadata().advanced?.hideSelectTools; + const hideSelectTools = observed.node.componentMeta.getMetadata().configure.advanced?.hideSelectTools; if (hideSelectTools) { return null; diff --git a/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx b/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx index fc85b9fdb..bdbf25465 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx @@ -123,7 +123,7 @@ export class InsertionView extends Component<{ host: BuiltinSimulatorHost }> { return null; } // 如果是个绝对定位容器,不需要渲染插入标记 - if (loc.target.componentMeta.getMetadata().advanced?.isAbsoluteLayoutContainer) { + if (loc.target.componentMeta.getMetadata().configure.advanced?.isAbsoluteLayoutContainer) { return null; } diff --git a/packages/designer/src/builtin-simulator/host.ts b/packages/designer/src/builtin-simulator/host.ts index 8e449f1d4..674b2b975 100644 --- a/packages/designer/src/builtin-simulator/host.ts +++ b/packages/designer/src/builtin-simulator/host.ts @@ -1139,7 +1139,7 @@ export class BuiltinSimulatorHost implements ISimulatorHost { - const onMoveHook = node.componentMeta?.getMetadata()?.advanced?.callbacks?.onMoveHook; + const onMoveHook = node.componentMeta?.getMetadata()?.configure.advanced?.callbacks?.onMoveHook; const canMove = onMoveHook && typeof onMoveHook === 'function' ? onMoveHook(node.internalToShellNode()) : true; return canMove; diff --git a/packages/designer/src/component-meta.ts b/packages/designer/src/component-meta.ts index df3543a8e..40b396b9c 100644 --- a/packages/designer/src/component-meta.ts +++ b/packages/designer/src/component-meta.ts @@ -13,6 +13,7 @@ import { LiveTextEditingConfig, FieldConfig, } from '@ali/lowcode-types'; +import { deprecate } from '@ali/lowcode-utils'; import { computed, engineConfig } from '@ali/lowcode-editor-core'; import EventEmitter from 'events'; @@ -199,7 +200,7 @@ export class ComponentMeta { : title; } - const liveTextEditing = this._transformedMetadata.advanced?.liveTextEditing || []; + const liveTextEditing = this._transformedMetadata.configure.advanced?.liveTextEditing || []; function collectLiveTextEditing(items: FieldConfig[]) { items.forEach((config) => { @@ -219,7 +220,7 @@ export class ComponentMeta { collectLiveTextEditing(this.configure); this._liveTextEditing = liveTextEditing.length > 0 ? liveTextEditing : undefined; - const isTopFiexd = this._transformedMetadata.advanced?.isTopFixed; + const isTopFiexd = this._transformedMetadata.configure.advanced?.isTopFixed; if (isTopFiexd) { this._isTopFixed = isTopFiexd; @@ -259,8 +260,9 @@ export class ComponentMeta { if (!result.configure) { result.configure = {}; } - if (result.experimental && !result.advanced) { - result.advanced = result.experimental; + if (result.experimental && !result.configure.advanced) { + deprecate(result.experimental, '.experimental', '.configure.advanced'); + result.configure.advanced = result.experimental; } return result as any; } diff --git a/packages/designer/src/designer/designer.ts b/packages/designer/src/designer/designer.ts index 935ced04f..6f83ed42e 100644 --- a/packages/designer/src/designer/designer.ts +++ b/packages/designer/src/designer/designer.ts @@ -524,7 +524,7 @@ export class Designer { if (metaData.devMode === 'lowcode') { maps[key] = metaData.schema; } else { - const view = metaData.advanced?.view; + const view = metaData.configure.advanced?.view; if (view) { maps[key] = view; } else { diff --git a/packages/designer/src/designer/drag-ghost/index.tsx b/packages/designer/src/designer/drag-ghost/index.tsx index 0f58055e0..7e50586ec 100644 --- a/packages/designer/src/designer/drag-ghost/index.tsx +++ b/packages/designer/src/designer/drag-ghost/index.tsx @@ -38,7 +38,7 @@ export default class DragGhost extends Component<{ designer: Designer }> { this.y = e.globalY; if (isSimulatorHost(e.sensor)) { const container = e.sensor.getDropContainer(e); - if (container?.container.componentMeta.getMetadata().advanced?.isAbsoluteLayoutContainer) { + if (container?.container.componentMeta.getMetadata().configure.advanced?.isAbsoluteLayoutContainer) { this.isAbsoluteLayoutContainer = true; return; } diff --git a/packages/designer/src/document/node/node-children.ts b/packages/designer/src/document/node/node-children.ts index dd9a427d4..89154373c 100644 --- a/packages/designer/src/document/node/node-children.ts +++ b/packages/designer/src/document/node/node-children.ts @@ -416,7 +416,7 @@ export class NodeChildren { if (node.isRoot()) { return; } - const callbacks = owner.componentMeta.getMetadata().advanced?.callbacks; + const callbacks = owner.componentMeta.getMetadata().configure.advanced?.callbacks; if (callbacks?.onSubtreeModified) { try { callbacks?.onSubtreeModified.call( diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index f37268dd7..011b28da9 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -223,7 +223,7 @@ export class Node { private autoruns?: Array<() => void>; private setupAutoruns() { - const autoruns = this.componentMeta.getMetadata().advanced?.autoruns; + const autoruns = this.componentMeta.getMetadata().configure.advanced?.autoruns; if (!autoruns || autoruns.length < 1) { return; } @@ -237,7 +237,7 @@ export class Node { private initialChildren(children: any): NodeData[] { // FIXME! this is dirty code if (children == null) { - const initialChildren = this.componentMeta.getMetadata().advanced?.initialChildren; + const initialChildren = this.componentMeta.getMetadata().configure.advanced?.initialChildren; if (initialChildren) { if (typeof initialChildren === 'function') { return initialChildren(this as any) || []; @@ -302,7 +302,7 @@ export class Node { } private didDropIn(dragment: Node) { - const callbacks = this.componentMeta.getMetadata().advanced?.callbacks; + const callbacks = this.componentMeta.getMetadata().configure.advanced?.callbacks; if (callbacks?.onNodeAdd) { const cbThis = this.internalToShellNode(); callbacks?.onNodeAdd.call(cbThis, dragment.internalToShellNode(), cbThis); @@ -313,7 +313,7 @@ export class Node { } private didDropOut(dragment: Node) { - const callbacks = this.componentMeta.getMetadata().advanced?.callbacks; + const callbacks = this.componentMeta.getMetadata().configure.advanced?.callbacks; if (callbacks?.onNodeRemove) { const cbThis = this.internalToShellNode(); callbacks?.onNodeRemove.call(cbThis, dragment.internalToShellNode(), cbThis); diff --git a/packages/plugin-outline-pane/src/main.ts b/packages/plugin-outline-pane/src/main.ts index 10e6c88b5..3658b7b21 100644 --- a/packages/plugin-outline-pane/src/main.ts +++ b/packages/plugin-outline-pane/src/main.ts @@ -146,7 +146,7 @@ export class OutlineMain implements ISensor, ITreeBoard, IScrollable { } const operationalNodes = nodes?.filter((node: any) => { - const onMoveHook = node.componentMeta?.getMetadata()?.advanced?.callbacks?.onMoveHook; + const onMoveHook = node.componentMeta?.getMetadata().configure?.advanced?.callbacks?.onMoveHook; const canMove = onMoveHook && typeof onMoveHook === 'function' ? onMoveHook(node) : true; return canMove; diff --git a/packages/types/src/metadata.ts b/packages/types/src/metadata.ts index b2fb91211..ec6756992 100644 --- a/packages/types/src/metadata.ts +++ b/packages/types/src/metadata.ts @@ -285,6 +285,10 @@ export interface Configure { * 通用扩展面板支持性配置 */ supports?: ConfigureSupport; + /** + * 高级特性配置 + */ + advanced?: Advanced; } /** @@ -388,10 +392,6 @@ export interface ComponentMetadata { * 编辑体验增强 */ configure?: FieldConfig[] | Configure; - /** - * 高级特性配置 - */ - advanced?: Advanced; /** * @deprecated, use advanced instead */ diff --git a/packages/utils/src/misc.ts b/packages/utils/src/misc.ts index ab5aae7e0..3827fc226 100644 --- a/packages/utils/src/misc.ts +++ b/packages/utils/src/misc.ts @@ -66,7 +66,7 @@ export function arrShallowEquals(arr1: any[], arr2: any[]): boolean { * @param meta */ export function isFromVC(meta: ComponentMeta) { - return !!meta?.getMetadata()?.advanced; + return !!meta?.getMetadata().configure?.advanced; } export function executePendingFn(fn: () => void, timeout: number = 2000) { @@ -92,4 +92,16 @@ export function compatStage(stage: TransformStage | number): TransformStage { return stageList[stage - 1] as TransformStage; } return stage as TransformStage; +} + +export function invariant(check: any, message: string, thing?: any) { + if (!check) { + throw new Error(`Invariant failed: ${ message }${thing ? ` in '${thing}'` : ''}`); + } +} + +export function deprecate(fail: any, message: string, alterative?: string) { + if (fail) { + console.warn(`Deprecation: ${message}` + alterative ? `, use ${alterative} instead.'` : ''); + } } \ No newline at end of file diff --git a/packages/utils/src/node-helper.ts b/packages/utils/src/node-helper.ts index 4aadf896d..47189156d 100644 --- a/packages/utils/src/node-helper.ts +++ b/packages/utils/src/node-helper.ts @@ -20,7 +20,7 @@ export const getClosestNode = (node: Node, until: (node: Node) => boolean): Node * @returns {boolean} 是否可点击,true表示可点击 */ export const canClickNode = (node: Node, e: unknown): boolean => { - const onClickHook = node.componentMeta?.getMetadata()?.advanced?.callbacks?.onClickHook; + const onClickHook = node.componentMeta?.getMetadata().configure?.advanced?.callbacks?.onClickHook; const canClick = typeof onClickHook === 'function' ? onClickHook(e as MouseEvent, node) : true; return canClick; };