flow-document-config.ts 969 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /**
  2. * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
  3. * SPDX-License-Identifier: MIT
  4. */
  5. import { inject, injectable, optional } from 'inversify';
  6. import { Emitter } from '@flowgram.ai/utils';
  7. export const FlowDocumentConfigDefaultData = Symbol('FlowDocumentConfigDefaultData');
  8. /**
  9. * 用于文档扩展配置
  10. */
  11. @injectable()
  12. export class FlowDocumentConfig {
  13. private onDataChangeEmitter = new Emitter<string>();
  14. readonly onChange = this.onDataChangeEmitter.event;
  15. constructor(
  16. @inject(FlowDocumentConfigDefaultData)
  17. @optional()
  18. private _data: Record<string, any> = {},
  19. ) {}
  20. get(key: string): any {
  21. return this._data[key];
  22. }
  23. set(key: string, value: any): void {
  24. if (this.get(key) !== value) {
  25. this._data[key] = value;
  26. this.onDataChangeEmitter.fire(key);
  27. }
  28. }
  29. registerConfigs(config: Record<string, any>) {
  30. Object.keys(config).forEach(key => {
  31. this.set(key, config[key]);
  32. });
  33. }
  34. }