Sobre o projeto

Arranger é um motor de editor de texto rico declarativo de código aberto e um ecossistema de UI para Compose Multiplatform. O README posiciona-o como uma estrutura fundamental para criar experiências completas de edição de texto no Compose, comparável em papel a ProseMirror ou Lexical. Ele oferece formatação de parágrafos pronta a usar, estratégias dinâmicas para a tecla Enter, consulta de atributos semânticos, desfazer/refazer atómico e interoperabilidade futura com Markdown/WYSIWYG. O projeto está explicitamente marcado como trabalho em curso: as APIs são instáveis e podem mudar sem aviso; feedback, pedidos de funcionalidades e relatórios de erros são bem-vindos através do GitHub Issues. Suporte de plataformas: Android API Level 26+, Desktop JVM em macOS, Windows e Linux, iOS e Web via WasmJs. Os requisitos indicam Kotlin 2.4.10+. Arranger é publicado no Maven Central sob dev.mkeeda.arranger; os artefactos incluem arranger-richtext-editor, arranger-richtext, arranger-richtext-markdown, arranger-richtext-html e arranger-richtext-editor-material3 para resolução de estilos Material 3. As capacidades incluem atributos personalizados com segurança de tipos, como SpanStyle, e chaves de domínio como Mention, Hashtag e LinkKey; comportamentos de editor de alto nível que abrangem cabeçalhos, citações em bloco, alinhamentos, listas com marcas e listas ordenadas; uma DSL declarativa de mutações para operações atómicas de texto e formatação; Runs semânticos para iterar, pesquisar e editar em lote blocos com atributos idênticos; e conversores de importação/exportação Markdown/HTML entre RichString e esses formatos. A integração com Compose separa o RichTextState sem interface do rendering de UI do RichTextEditor nos alvos suportados. Exemplos de editor abrangem escrita dinâmica que mantém spans existentes, formatação avançada de parágrafos, listas com marcas e ordenadas com marcadores e indentação automáticos, ListMarkerResolver personalizado e opções de EnterKeyStrategy: InheritParagraphStrategy, ListEnterStrategy e HeadingEnterStrategy. Hiperligações usam LinkKey com estilização automática e navegação por LocalUriHandler, além de UrlParser e detectAndApplyLinks para ligação automática. Atributos personalizados podem ser mapeados para estilos Compose através de AttributeStyleResolver. Pesquisa e edição em lote usam rangesOf, editAll e runs(key) ou runs com um predicado. Mutações como inserir, eliminar e substituir são realizadas dentro de RichTextState.edit com deslocamento automático de spans. Usos potenciais incluem edição de texto rico, tomada de notas, edição de documentos ou interfaces de mensagens criadas com Compose Multiplatform. O README inclui snippets de instalação para projetos Kotlin Multiplatform commonMain e apenas Android, juntamente com composables de exemplo e imagens de demonstração. O README não fornece afirmações de desempenho nem benchmarks.