Sobre o projeto

O Monaco Editor é o editor de código completo do VS Code, empacotado como uma biblioteca que roda no navegador. Ele é publicado no npm como `monaco-editor` e inclui um build ESM (compatível com bundlers como webpack) além de um build AMD obsoleto, mantido para compatibilidade com versões anteriores. A superfície pública com versionamento é descrita em `monaco.d.ts`; tudo o mais é considerado privado e pode mudar entre versões. Conceitos principais: - Models representam o conteúdo aberto: guardam texto, determinam a linguagem e rastreiam o histórico de edição. Um model não precisa corresponder a um arquivo real. - URIs identificam models, então dois models não podem compartilhar uma URI. Models criados sem URI recebem URIs geradas do tipo `inmemory://model/N`. Escolher URIs significativas é importante porque alguns recursos inteligentes (por exemplo, resolução de importação TypeScript ou seleção de schema JSON) dependem da URI do arquivo. - Editors são as visualizações voltadas ao usuário, anexadas ao DOM; eles exibem um model, gerenciam o estado da visualização e executam ações ou comandos. - Providers fornecem recursos inteligentes de edição, como conclusão e informações de hover, geralmente mapeando para recursos do Language Server Protocol. - Muitos objetos expõem `.dispose()` para limpeza; descartar um model libera sua URI, e os editors devem ser descartados para liberar recursos e listeners. A localização é tratada carregando o script nls correspondente (por exemplo, `esm/nls.messages.de.js`) antes do script principal do editor. O README aponta para um playground interativo para testar recursos, experimentar versões e construir reproduções mínimas, além de exemplos completos de integração, documentação da API, um guia de acessibilidade para integradores e um playground Monarch para criar tokenizers para novas linguagens. O FAQ esclarece que o Monaco é gerado a partir do código-fonte do VS Code com shims para rodar no navegador, que sua versão não acompanha a versão do VS Code e que extensões do VS Code geralmente não funcionam nele, a menos que sejam totalmente baseadas em LSP com um servidor de linguagem em JavaScript. Os serviços de linguagem usam web workers; páginas carregadas via `file://` não conseguem criar workers, então o editor deve ser servido via http ou https. Navegadores móveis e frameworks de aplicativos web móveis não são suportados, e gramáticas TextMate não são embutidas (um projeto comunitário separado combina monaco-editor com vscode-oniguruma e vscode-textmate). O projeto é licenciado sob MIT e aceita contribuições da comunidade.