$ show GrapesJS/grapesjs
GrapesJS is a client-side visual web page builder framework distributed as a pnpm monorepo. The core package exposes a `grapesjs.init()` entry point that creates an `Editor` backed by `EditorModel`, with pluggable modules for the component tree, iframe-based canvas, CSS rule composer, style manager with custom property types, block/asset/layer/trait managers, command registry, HTML/CSS parsers, code generators, storage adapters, internationalization, keyboard shortcuts, undo/redo, and a plugin system. The CLI package scaffolds, builds, and serves plugins. Although it contains a `DataSources` subsystem, this is an application feature for binding external records to component content, attributes, and styles, not a data-research pipeline; the repository is a software library, not research code.
The LLM identified 4 files worth highlighting for reuse:
A self-contained rate limiter used to throttle high-frequency pointer/drag events during drag-and-drop. It caps callback invocation to a fixed interval while preserving trailing execution, making it easy to extract for any UI needing performance-safe event handling.
Encapsulates tree-geometry logic for computing whether a drop should occur before, after, or inside a hierarchical component/layer node. It is decoupled from the DOM and can be reused in any tree-based drag-and-drop UI that provides node dimensions and coordinates.
A generic pointer-driven resize engine with min/max constraints, aspect-ratio locking, step snapping, unit handling, and start/change/end callbacks. It powers canvas resize handles but is editor-agnostic enough to extract into any draggable-resize widget.
Monitors pointer position near container edges and scrolls the viewport during drag operations. It cleanly separates edge-scroll behavior from drop logic and can be reused in any drag-and-drop interface requiring automatic scrolling.