This repository provides a Canvas/SVG-based WYSIWYG rich text editor (`@hufe921/canvas-editor`) designed for serious document scenarios such as electronic medical records (EMR), contracts, and official reports. It implements pixel-perfect rendering with native pagination and a comprehensive feature set including text formatting, tables, images, hyperlinks, LaTeX formulas, form controls (text, select, checkbox, radio, date, number) with cascading expressions and validation, revision tracking (trace), spellcheck, macros, plugins, and internationalization. The architecture follows a command pattern with a central `Draw` rendering engine, an event bus for decoupled communication, and a plugin system for extensibility. The editor exposes over 154 command APIs and supports multiple modes (edit, readonly, form, print). It is published as an npm package and includes a full-featured demo application.
Lion is a monorepo maintained by ING Bank that provides a comprehensive, white-label web component library built on LitElement. It focuses on accessible, performant, and extensible form controls (inputs, checkboxes, radio groups, selects, datepickers, IBAN, phone, file, etc.), overlays (dialog, tooltip, popover, drawer), navigation components (accordion, tabs, pagination, steps), and localization/internationalization utilities. The library is architected around a rich mixin system (e.g., FormControlMixin, ValidateMixin, OverlayMixin, LocalizeMixin) that allows deep customization without sacrificing encapsulation. It also includes Node.js tooling: an AST-based dependency analyzer (providence-analytics), a documentation publishing tool, and a Babel plugin for extending docs. The codebase demonstrates strong software engineering practices: extensive test suites, accessibility-first design, scoped custom element registries, and a modular export map. However, there are signs of technical drift (outdated dependencies like ESLint 8, TypeScript 4.9, Chai 4) and some duplicated code (e.g., localizeNamespaceLoader switch statements repeated across packages, translation drift). The monorepo uses changesets for versioning and has active CI/CD.
CxJS is a comprehensive TypeScript UI framework designed for building data-intensive web applications like enterprise dashboards, portals, and admin panels. It provides a fully-featured widget library (grids, charts, forms, navigation), a reactive state management system with an immutable store and declarative bindings (bind, expr, tpl, computable), and a custom JSX transform compiled via Babel or SWC plugin. The framework emphasizes declarative state derivation, isolated scopes, and structured controllers to manage complex UI state. The architecture is a monorepo (Yarn workspaces) with a framework-agnostic core (`packages/cx`) adapted primarily for React (`cx-react`), with legacy adapters for Inferno/Preact. Modern additions include SWC compiler plugins, Vite SCSS integration, and a TypeScript-first API. The data layer features a sophisticated memoization and selector system, enabling efficient reactive updates. Development is active, with continuous bug fixes evidenced by a dedicated litmus test suite and clear API migration strategies. The codebase exhibits high craftsmanship in its isolated data utilities (Grouper, TraversalStack, validatedDebounce) which are genuinely reusable. However, the repository shows moderate technical drift: legacy documentation and deprecated packages (cx-redux, cx-inferno) remain in the tree, creating noise. Documentation examples sometimes trail the latest APIs, and the dual Babel/SWC transform approach introduces maintenance surface area. Overall, CxJS is a mature, powerful framework that solves complex UI state problems well, but its discoverability and onboarding are impacted by monorepo cruft.