| 9 | const logger = getLogger({ level: 'warn', bizName: 'shell-setters' }); |
| 10 | |
| 11 | export class Setters implements IPublicApiSetters { |
| 12 | readonly [innerSettersSymbol]: ISetters; |
| 13 | |
| 14 | get [settersSymbol](): ISetters { |
| 15 | if (this.workspaceMode) { |
| 16 | return this[innerSettersSymbol]; |
| 17 | } |
| 18 | |
| 19 | const workspace = globalContext.get('workspace'); |
| 20 | if (workspace.isActive) { |
| 21 | return untracked(() => { |
| 22 | if (!workspace.window?.innerSetters) { |
| 23 | logger.error('setter api 调用时机出现问题,请检查'); |
| 24 | return this[innerSettersSymbol]; |
| 25 | } |
| 26 | return workspace.window.innerSetters; |
| 27 | }); |
| 28 | } |
| 29 | |
| 30 | return this[innerSettersSymbol]; |
| 31 | } |
| 32 | |
| 33 | constructor(innerSetters: ISetters, readonly workspaceMode = false) { |
| 34 | this[innerSettersSymbol] = innerSetters; |
| 35 | } |
| 36 | |
| 37 | /** |
| 38 | * 获取指定 setter |
| 39 | * @param type |
| 40 | * @returns |
| 41 | */ |
| 42 | getSetter = (type: string) => { |
| 43 | return this[settersSymbol].getSetter(type); |
| 44 | }; |
| 45 | |
| 46 | /** |
| 47 | * 获取已注册的所有 settersMap |
| 48 | * @returns |
| 49 | */ |
| 50 | getSettersMap = (): Map<string, IPublicTypeRegisteredSetter & { |
| 51 | type: string; |
| 52 | }> => { |
| 53 | return this[settersSymbol].getSettersMap(); |
| 54 | }; |
| 55 | |
| 56 | /** |
| 57 | * 注册一个 setter |
| 58 | * @param typeOrMaps |
| 59 | * @param setter |
| 60 | * @returns |
| 61 | */ |
| 62 | registerSetter = ( |
| 63 | typeOrMaps: string | { [key: string]: IPublicTypeCustomView | IPublicTypeRegisteredSetter }, |
| 64 | setter?: IPublicTypeCustomView | IPublicTypeRegisteredSetter | undefined, |
| 65 | ) => { |
| 66 | return this[settersSymbol].registerSetter(typeOrMaps, setter); |
| 67 | }; |
| 68 |
nothing calls this directly
no test coverage detected
searching dependent graphs…