Об этом проекте
Arranger — это фреймворк с открытым исходным кодом для Compose Multiplatform, включающий декларативный движок редактирования текста и набор инструментов для пользовательского интерфейса. В README его позиционируют как базовый фреймворк для создания полнофункциональных текстовых редакторов на Compose, аналогичный по роли ProseMirror или Lexical. Из коробки предоставляются: форматирование абзацев, динамические стратегии обработки нажатия клавиши Enter, запросы семантических атрибутов, атомарная отмена/повтор и будущая совместимость Markdown/WYSIWYG. Проект явно отмечен как находящийся в разработке: API нестабильны и могут измениться без предупреждения; отзывы, запросы функций и сообщения об ошибках принимаются через GitHub Issues.
Поддержка платформ: Android (API Level 26+), Desktop JVM на macOS, Windows и Linux, iOS и Web через WasmJs. Требования включают Kotlin 2.4.10+. Arranger опубликован в Maven Central под координатами dev.mkeeda.arranger; артефакты включают arranger-richtext-editor, arranger-richtext, arranger-richtext-markdown, arranger-richtext-html и arranger-richtext-editor-material3 для применения стилей Material 3.
Возможности включают типобезопасные пользовательские атрибуты, такие как SpanStyle и доменные ключи Mention, Hashtag и LinkKey; высокоуровневые поведенческие механизмы редактора, охватывающие заголовки, цитаты, выравнивание, маркированные и нумерованные списки; декларативный DSL для мутаций, обеспечивающий атомарные операции с текстом и форматированием; семантические Runs для итерации, поиска и пакетного редактирования фрагментов с одинаковыми атрибутами; а также конвертеры импорта/экспорта Markdown/HTML между RichString и этими форматами. Интеграция с Compose разделяет headless RichTextState и рендеринг UI RichTextEditor на всех поддерживаемых платформах.
Примеры редактора охватывают динамический ввод с сохранением существующих span-объектов, расширенное форматирование абзацев, списки с автоматическими маркерами и отступами, пользовательский ListMarkerResolver, а также варианты EnterKeyStrategy: InheritParagraphStrategy, ListEnterStrategy и HeadingEnterStrategy. Гиперссылки используют LinkKey с автоматическим стилированием и навигацией через LocalUriHandler, плюс UrlParser и detectAndApplyLinks для автопреобразования ссылок. Пользовательские атрибуты могут быть сопоставлены со стилями Compose через AttributeStyleResolver. Поиск и пакетное редактирование используют функции rangesOf, editAll и runs(key) или runs с предикатом. Мутации, такие как insert, delete и replace, выполняются внутри RichTextState.edit с автоматическим смещением span-объектов.
Потенциальные области применения включают редактирование текста, заметки, редактирование документов или интерфейсы обмена сообщениями на Compose Multiplatform. В README приведены фрагменты кода для установки в commonMain для Kotlin Multiplatform и в Android-only проектах, а также примеры композаблов и скриншоты демо. В README отсутствуют заявления о производительности или бенчмарки.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.