From aab8a3a10ec1612164de76aec81f196d5e395dc5 Mon Sep 17 00:00:00 2001 From: liujuping Date: Fri, 21 Apr 2023 16:29:25 +0800 Subject: [PATCH] feat: update setter types --- packages/editor-core/src/di/setter.ts | 11 +++++---- .../src/components/settings/settings-pane.tsx | 13 ++++++----- packages/shell/src/api/setters.ts | 23 +++++++++++-------- packages/types/src/shell/api/setters.ts | 8 +++++++ 4 files changed, 36 insertions(+), 19 deletions(-) diff --git a/packages/editor-core/src/di/setter.ts b/packages/editor-core/src/di/setter.ts index 4139c5939..437d9a89e 100644 --- a/packages/editor-core/src/di/setter.ts +++ b/packages/editor-core/src/di/setter.ts @@ -1,8 +1,7 @@ import { ReactNode } from 'react'; -import { IPublicTypeCustomView, IPublicTypeRegisteredSetter } from '@alilc/lowcode-types'; +import { IPublicApiSetters, IPublicTypeCustomView, IPublicTypeRegisteredSetter } from '@alilc/lowcode-types'; import { createContent, isCustomView } from '@alilc/lowcode-utils'; - const settersMap = new Map(); @@ -44,13 +43,17 @@ function getInitialFromSetter(setter: any) { ) || null; // eslint-disable-line } -export class Setters { - constructor(readonly viewName: string = 'global') {} +export interface ISetters extends IPublicApiSetters { +} + +export class Setters implements ISetters { settersMap = new Map(); + constructor(readonly viewName: string = 'global') {} + getSetter = (type: string): IPublicTypeRegisteredSetter | null => { return this.settersMap.get(type) || null; }; diff --git a/packages/editor-skeleton/src/components/settings/settings-pane.tsx b/packages/editor-skeleton/src/components/settings/settings-pane.tsx index 31ea78cce..9cc8d9cae 100644 --- a/packages/editor-skeleton/src/components/settings/settings-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-pane.tsx @@ -1,14 +1,13 @@ -import { Component, MouseEvent, Fragment } from 'react'; +import { Component, MouseEvent, Fragment, ReactNode } from 'react'; import { shallowIntl, observer, obx, engineConfig, runInAction } from '@alilc/lowcode-editor-core'; import { createContent, isJSSlot, isSetterConfig } from '@alilc/lowcode-utils'; import { Skeleton, Stage } from '@alilc/lowcode-editor-skeleton'; -import { IPublicTypeCustomView } from '@alilc/lowcode-types'; +import { IPublicApiSetters, IPublicTypeCustomView, IPublicTypeDynamicProps } from '@alilc/lowcode-types'; import { ISettingEntry, IComponentMeta, ISettingField, isSettingField, ISettingTopEntry } from '@alilc/lowcode-designer'; import { createField } from '../field'; import PopupService, { PopupPipe } from '../popup'; import { SkeletonContext } from '../../context'; import { intl } from '../../locale'; -import { Setters } from '@alilc/lowcode-shell'; function isStandardComponent(componentMeta: IComponentMeta | null) { if (!componentMeta) return false; @@ -40,7 +39,7 @@ class SettingFieldView extends Component | IPublicTypeDynamicProps = {}; let setterType: any; let initialValue: any = null; @@ -236,7 +237,7 @@ class SettingFieldView extends Component { + if (!workspace.window.innerSetters) { + logger.error('setter api 调用时机出现问题,请检查'); + return this[innerSettersSymbol]; + } + return workspace.window.innerSetters; + }); } return this[innerSettersSymbol]; } - constructor(innerSetters: InnerSetters, readonly workspaceMode = false) { + constructor(innerSetters: ISetters, readonly workspaceMode = false) { this[innerSettersSymbol] = innerSetters; } @@ -64,6 +66,9 @@ export class Setters implements IPublicApiSetters { return this[settersSymbol].registerSetter(typeOrMaps, setter); }; + /** + * @deprecated + */ createSetterContent = (setter: any, props: Record): ReactNode => { return this[settersSymbol].createSetterContent(setter, props); }; diff --git a/packages/types/src/shell/api/setters.ts b/packages/types/src/shell/api/setters.ts index 9ff2e8eda..011a9dcac 100644 --- a/packages/types/src/shell/api/setters.ts +++ b/packages/types/src/shell/api/setters.ts @@ -1,6 +1,9 @@ +import { ReactNode } from 'react'; + import { IPublicTypeRegisteredSetter, IPublicTypeCustomView } from '../type'; export interface IPublicApiSetters { + /** * 获取指定 setter * get setter by type @@ -29,4 +32,9 @@ export interface IPublicApiSetters { typeOrMaps: string | { [key: string]: IPublicTypeCustomView | IPublicTypeRegisteredSetter }, setter?: IPublicTypeCustomView | IPublicTypeRegisteredSetter | undefined ): void; + + /** + * @deprecated + */ + createSetterContent (setter: any, props: Record): ReactNode; }