diff --git a/src/core/createEditor.ts b/src/core/createEditor.ts index 33b26ac..198987b 100644 --- a/src/core/createEditor.ts +++ b/src/core/createEditor.ts @@ -211,6 +211,9 @@ export async function createEditor( const addModuleDeclaration = (url: string, moduleName?: string) => ts.addModuleDeclaration(monaco, url, moduleName) + const getNavigationBarItems = (uri?: InstanceType) => + ts.getNavigationBarItems(monaco, uri || getModel()?.uri) + return { monaco, setValue, @@ -236,6 +239,7 @@ export async function createEditor( compileTS, updateCompilerOptions, addModuleDeclaration, + getNavigationBarItems, } } diff --git a/src/core/typescript.ts b/src/core/typescript.ts index a35427b..b000a1b 100644 --- a/src/core/typescript.ts +++ b/src/core/typescript.ts @@ -6,6 +6,7 @@ */ import { getReferencePaths, resolvePath } from '../utils' import { CompilerOptions, IMonaco } from './monaco' +import type typescript from 'typescript' export const getTypescriptDefaults = (monaco: IMonaco) => monaco.languages.typescript.typescriptDefaults @@ -43,6 +44,16 @@ export const compileTS = async ( } } +export const getNavigationBarItems = async ( + monaco: IMonaco, + uri: InstanceType +): Promise => { + const tsWorker = await monaco.languages.typescript.getTypeScriptWorker() + const client = await tsWorker(uri) + const fileName = uri.toString() + return client.getNavigationBarItems(fileName) +} + export const updateCompilerOptions = ( monaco: IMonaco, options: CompilerOptions