Avertissement
Ce référentiel subira des changements majeurs, nous allons donc suspendre l'acceptation des PR.
Lire la suite: # 9045
Les gens qui sont vraiment sérieux au sujet de l'éditeur devraient faire leur propre cadre.
BlockSuite est une boîte à outils pour construire des éditeurs et des applications collaboratives. Il met en œuvre une série d'infrastructures d'édition de contenu, de composants d'interface utilisateur et d'éditeurs indépendamment.
Vous pouvez considérer BlockSuite en tant que bibliothèque de composants d'interface utilisateur pour la construction de divers éditeurs, sur la base d'un cadre de vanille minimisé comme exécution. Avec Blocksuite, vous pouvez:
PageEditor : un éditeur de documents complet basé sur un bloc, offrant une personnalisation et une flexibilité approfondies.EdgelessEditor : un éditeur graphique avec le support de rendu de canevas Opt-In, mais partage également les mêmes capacités de texte riche avec le PageEditor .? BlockSuite est actuellement à son stade précoce, avec des composants et des capacités d'extension toujours en cours de raffinement. J'espère que vous pouvez rester à l'écoute, essayer ou partager vos commentaires!
Blocksuite est originaire de la base de connaissances affine, avec des objectifs de conception, notamment:
Au cours du développement d'Affine, il est devenu clair que Blocksuite progressait au-delà du simple fait d'être un éditeur interne et de évoluer vers un cadre polyvalent. C'est pourquoi nous avons choisi d'ouvrir l'ouverture et de maintenir de la blocsure indépendante.
Avec les éditeurs BlockSuite, vous pouvez réutiliser sélectivement toutes les fonctionnalités d'édition dans Affine:

Et sous le capot, le framework Blocksuite Vanilla soutient:
Pour essayer BlockSuite, reportez-vous à l'exemple de démarrage rapide et commencez par les éditeurs prédéfinis dans @blocksuite/presets .
La relation entre Blocksuite et Affine est similaire à celle entre l'éditeur Monaco et VScode, mais avec une différence majeure: BlockSuite n'est pas automatiquement générée en fonction de la base de code Affine, mais est maintenue indépendamment avec une pile technologique différente - Affine utilise React tandis que Blocksuite utilise des composants Web.
Cette différence a LED Blocksuite pour fixer des limites claires en fonction d'une philosophie centrée sur les composants, garantissant:
À cette fin, le projet Blocksuite est structuré autour de packages clés qui sont classés en deux groupes: un cadre sans tête et des composants d'édition préfurés.
| Cadre | |
|---|---|
@blocksuite/store | Couche de données pour la modélisation des états de documents collaboratifs. Il est construit en nativement sur la bibliothèque CRDT YJS, alimentant tous les documents BlockSuite avec des capacités de collaboration et de voyage dans le temps intégrées. |
@blocksuite/inline | Minimaux composants de texte riche pour l'édition en ligne. BlockSuite permet de séparer le contenu de texte riche en différents nœuds de bloc en différents éditeurs en ligne, ce qui rend le contenu complexe commodément composable. Cela réduit considérablement la complexité requise pour mettre en œuvre des fonctionnalités traditionnelles d'édition de texte riche. |
@blocksuite/block-std | Bibliothèque agnostique framework pour la modélisation des blocs modifiables. Ses capacités couvrent la structure des champs de bloc, des événements, de la sélection, de la prise en charge du presse-papiers, etc. |
| Composants | |
|---|---|
@blocksuite/blocks | Implémentations de bloc par défaut pour composer les éditeurs prédéfinis, y compris les widgets appartenant à chaque bloc. |
@blocksuite/presets | Composants modifiables de plug-and-play, y compris les éditeurs ( PageEditor / EdgelessEditor ) et les composants d'interface utilisateur auxiliaires nommés fragments ( CopilotPanel , DocTitle ...). |
Voir Building.md pour des instructions sur la façon de construire et de tester la combinaison de la source de la source.
BlockSuite accepte les demandes de traction sur GitHub. Avant de commencer à contribuer, assurez-vous d'avoir lu et accepté notre accord de licence de contributeur. Pour indiquer votre accord, modifiez simplement ce fichier et soumettez une demande de traction.
MPL 2.0