create-ide-event-emitter.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { Emitter } from 'strict-event-emitter'
  2. import { Project } from '../../../../types/project'
  3. import { PermissionsLevel } from '@/features/ide-react/types/permissions-level'
  4. import { ShareJsDoc } from '@/features/ide-react/editor/share-js-doc'
  5. import { GotoLineOptions } from '@/features/ide-react/types/goto-line-options'
  6. import { CursorPosition } from '@/features/ide-react/types/cursor-position'
  7. import { FileTreeFindResult } from '@/features/ide-react/types/file-tree'
  8. export type IdeEvents = {
  9. 'project:joined': [{ project: Project; permissionsLevel: PermissionsLevel }]
  10. // TODO: MIGRATION: This doesn't seem to be used. Investigate whether it can be removed
  11. 'document:opened': [doc: ShareJsDoc]
  12. 'document:closed': [doc: ShareJsDoc]
  13. 'doc:changed': [{ doc_id: string }]
  14. 'doc:saved': [{ doc_id: string }]
  15. 'doc:opened': []
  16. 'ide:opAcknowledged': [{ doc_id: string; op: any }]
  17. 'store-doc-position': []
  18. 'editor:gotoOffset': [gotoOffset: number]
  19. 'editor:gotoLine': [options: GotoLineOptions]
  20. 'cursor:editor:update': [position: CursorPosition]
  21. 'outline-toggled': [isOpen: boolean]
  22. 'cursor:editor:syncToPdf': []
  23. 'scroll:editor:update': []
  24. 'comment:start_adding': []
  25. 'references:should-reindex': []
  26. 'entity:deleted': [entity: FileTreeFindResult]
  27. }
  28. export type IdeEventEmitter = Emitter<IdeEvents>
  29. export function createIdeEventEmitter(): IdeEventEmitter {
  30. return new Emitter<IdeEvents>()
  31. }