rs-grid

Un moteur de data grid headless construit en Rust et compile en WebAssembly. Concu pour des millions de lignes avec un rendu fluide a 60 fps sur Canvas2D.

  • Demarrage rapide -- Installez rs-grid et affichez votre premiere grille en quelques minutes.
  • Architecture -- Comprendre le pipeline unidirectionnel de l'etat au canvas.
  • Fonctionnalites -- Colonnes, edition, tri, filtrage, presse-papiers, et plus encore.
  • Theming -- Personnalisez les couleurs, polices et espacements avec des variables CSS.
  • Sources de donnees -- Donnees en memoire, virtuelles ou paginee cote serveur.
  • Reference API -- Reference complete de GridState, GridCommand et tous les types.

Fonctionnalites cles

  • Virtualisation du viewport -- seules les cellules visibles sont rendues, quelle que soit la taille du jeu de donnees
  • Hit-testing O(1) -- offsets de colonnes precalcules et hauteur de ligne uniforme
  • Edition inline -- editeurs de saisie texte et liste deroulante avec annuler/retablir
  • Tri et filtrage -- tri et filtre texte par colonne, cote client ou serveur
  • Copier/couper/coller -- presse-papiers TSV avec support RFC 4180
  • Recherche Ctrl+F -- recherche plein texte insensible a la casse avec surlignage
  • Operations sur les colonnes -- redimensionner, deplacer, epingler, ajustement automatique
  • 3 sources de donnees -- en memoire, virtuelle (basee sur des closures), cache de pages asynchrone
  • 4 themes integres -- light, dark, Material 3, Material 3 Dark
  • Renderer-agnostique -- graphe de scene en primitives, le backend est interchangeable
  • Barres de defilement personnalisees -- themees, coherentes entre plateformes
  • Menu contextuel -- actions integrees et personnalisables
  • Leptos, Dioxus, Yew et vanilla JS -- utilisable avec Leptos CSR, Dioxus CSR ou en JavaScript pur

Architecture en un coup d'oeil

GridState → SceneBuilder → SceneFrame → CanvasRenderer → <canvas>

Toutes les mutations passent par GridState::apply(GridCommand). Pas de callbacks, pas de bindings bidirectionnels. Le pipeline est deterministe et facile a tester.

Crates du workspace

CrateRoleWASM
rs-grid-coreLogique headless -- modele, viewport, selection, hit-testingNon
rs-grid-sceneConvertit GridState en primitives renderer-agnostiques ScenePrimitiveNon
rs-grid-render-canvasRenderer Canvas2D via wasm-bindgenOui
rs-grid-webCouche navigateur -- evenements, DPR, requestAnimationFrameOui
rs-grid-leptosComposant Leptos CSR <GridCanvas>Oui
Warning

Les dependances vont dans un seul sens : leptos → web → render-canvas → scene → core. N'introduisez jamais de dependance inverse.