New:Socket for Asana Is Now Available.Learn more
Sign In

@intent-driven/adapter-antd-blockeditor-tiptap

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@intent-driven/adapter-antd-blockeditor-tiptap

Tiptap-backed BlockEditor primitive для @intent-driven/adapter-antd (опциональный upgrade поверх reference textarea-impl)

latest
Source
npmnpm
Version
0.3.1
Version published
Maintainers
1
Created
Source

@intent-driven/adapter-antd-blockeditor-tiptap

Tiptap-backed BlockEditor primitive для @intent-driven/adapter-antd. Опциональный upgrade поверх reference textarea-impl: rich-text inline-formatting (bold / italic / code) через ProseMirror StarterKit, родная Tiptap-обработка структурных kind'ов (paragraph / heading 1–3 / lists / quote / code / hr), slash-commands menu (Notion-style /heading, /todo и т.п.), InlineBubbleMenu для inline-formatting на selection.

Закрывает SDK backlog §12.10 P0 (Notion field-test BlockEditor primitive). Drag-handles и indent — v0.3+ (BlockNote upgrade-path).

Установка

npm install @intent-driven/adapter-antd-blockeditor-tiptap
# peer deps уже стоят: react, react-dom, antd, @intent-driven/adapter-antd

Использование

import { antdAdapter } from "@intent-driven/adapter-antd";
import { registerUIAdapter } from "@intent-driven/renderer";
import { applyTiptapBlockEditor } from "@intent-driven/adapter-antd-blockeditor-tiptap";

applyTiptapBlockEditor(antdAdapter);
registerUIAdapter(antdAdapter);

applyTiptapBlockEditor() mutating заменяет adapter.primitive.blockEditor и обновляет adapter.capabilities.primitive.blockEditor descriptor:

{
  kinds: ["paragraph", "heading-1..3", "bulleted-list-item",
          "numbered-list-item", "to-do", "quote", "code", "divider"],
  slashCommands: true,    // v0.2 — Notion-style /heading /todo /code и т.п.
  indent: false,
  dragHandles: false,
  inlineFormatting: true, // v0.2 — InlineBubbleMenu (B/I/S/code marks)
}

Вызывающему коду (host wrapper, e.g. notion BlockCanvas через <BlockEditor> из @intent-driven/renderer) ничего менять не нужно — primitive получит блоки в том же contract'е (blocks / onChange / onKindChange / readOnly).

Архитектура (v0.2)

  • Per-block Tiptap editor instance. Один блок ↔ один ProseMirror. Прозрачное reverse-mapping (text/kind/checked) и stable IDs из domain. Trade-off: нет «слитного» selection через границу блока, нет автоматической slice-операции через несколько блоков.
  • AntD Select over each block — kind transition (paragraph → heading-2, и т. п.) как fallback к slash-меню.
  • StarterKit-only block extensions — paragraph, heading 1–3, bulletList, orderedList, taskList, blockquote, codeBlock, horizontalRule, hardBreak. Inline marks: bold, italic, code, strike.
  • Slash-commands menu (/) — @tiptap/suggestion extension + React popup через createPortal. 10 опций с aliases (h1/title, h2, todo/task/check, hr/rule и т.п.). Keyboard: ↑/↓/Enter/Escape. Pure helper filterSlashOptions(query) экспортирован.
  • InlineBubbleMenuBubbleMenu из @tiptap/react/menus над selection. 4 mark-toggle кнопки (B/I/S/code), скрыт в codeBlock и при readOnly.
  • Реактивный sync через useEffect: если родитель сменил block.content извне (другой пользователь/agent через intent), editor setContent без emitUpdate.

Roadmap (v0.3+)

ФичаСтатусDependency
Drag-handles & block-reorderTODOBlockNote или custom NodeView
Indent / outdentTODOtree-aware editor (BlockNote)
Image / bookmark blocksTODO@tiptap/extension-image + uploader contract
Mention / cross-block linkresearch@tiptap/extension-mention

Reader-симметрия

Соответствует §23 axiom 5 манифеста IDF: voice / agent-API / document материализаторы читают block-tree из Φ напрямую через ontology+materializers, pixels-reader (этот пакет) делегирует rich-text визуализацию Tiptap'у. Renderer-bundle не растёт на размер ProseMirror — потребитель устанавливает пакет только если ему нужен этот UX.

License

MIT

Keywords

idf

FAQs

Package last updated on 27 Apr 2026

Related posts