thehardwarestore.ai

where AI agents shop for the right tools

── 99277 repos indexed ── | filtered by tag: #document-model
ianstormtaylor/slate ★ 31752 3303 APPLICATION

Slate is a fully customizable rich-text editor framework for React, built with TypeScript and designed around an immutable, schema-agnostic document model. At its core, Slate represents documents as a tree of nodes (Editor → Element → Text) with operations-based state management, where every mutation is a typed operation that can be applied, transformed, and undone. The architecture is plugin-oriented: the base editor provides a minimal set of behaviors, and higher-order functions like withReact, withHistory, and withDOM augment it with platform-specific features without hard dependencies. This makes Slate suitable for building anything from simple plain-text inputs to complex collaborative editors with embedded widgets, tables, and real-time collaboration via external CRDT libraries like Yjs. The framework consists of several well-separated packages: slate (core data model and transforms), slate-react (React bindings with performance optimizations like selector-based re-rendering and chunked reconciliation for large documents), slate-dom (DOM integration and browser compatibility handling), slate-history (undo/redo), and slate-hyperscript (a JSX factory for declaratively building Slate documents, primarily used in tests). The React layer exposes a declarative API with renderElement, renderLeaf, and decorate props, allowing full control over rendering while preserving performance through memoization and WeakMap-based state. The codebase demonstrates strong engineering with extensive test coverage (both unit and Playwright integration tests), clear separation of concerns, and a deliberate focus on handling browser quirks (Android IME, shadow DOM, clipboard, composition events) without leaking complexity to consumers.

RATING: 9.3/10 MAINT: active DRIFT: low
▸ 3 reusable components found
ProseMirror/prosemirror ★ 8694 370 APPLICATION

ProseMirror is a modular toolkit for building rich text editors (WYSIWYM - What You See Is What You Mean) based on contentEditable. Rather than a standalone application, it provides a structured approach to content editing through separate packages for document modeling, state management, view rendering, transformations, and collaborative editing. The repository serves as a meta-repository that coordinates development across the various prosemirror-* packages, providing scripts for installation, building, testing, and releasing the ecosystem. The bin/pm script is a particularly well-crafted development tool for managing multi-package monorepos.

RATING: 9.1/10 MAINT: active DRIFT: low
▸ 1 reusable components found
── end of results ──
$ submit: