Aviso
Esse repositório passará por grandes mudanças, por isso suspenderemos a aceitação de PRs.
Leia mais: #9045
As pessoas que levam a sério o editor devem fazer sua própria estrutura.
Blocksuite é um kit de ferramentas para editores de construção e aplicações colaborativas. Ele implementa uma série de infraestruturas de edição de conteúdo, componentes da interface do usuário e editores de forma independente.
Você pode considerar o BlockSuite como uma biblioteca de componentes da interface do usuário para criar vários editores, com base em uma estrutura de baunilha minimizada como tempo de execução. Com Blocksuite, você pode:
PageEditor : um editor abrangente de documentos baseado em blocos, oferecendo uma extensa personalização e flexibilidade.EdgelessEditor : um editor de gráficos com suporte de renderização de lona opt-in, mas também compartilha os mesmos recursos de texto rico com o PageEditor .? A Blocksuite está atualmente em seu estágio inicial, com componentes e recursos de extensão ainda sob refinamento. Espero que você possa ficar atento, experimente ou compartilhar seus comentários!
Blocksuite se originou da Base de Conhecimento Affine, com metas de design, incluindo:
Durante o desenvolvimento do afine, ficou claro que Blocksuite estava avançando além de apenas ser um editor interno e evoluindo para uma estrutura versátil. É por isso que optamos por abrir o código -fonte e manter o Blocksuite de forma independente.
Com os editores do BlockSuite, você pode reutilizar seletivamente todos os recursos de edição do Affine:

E sob o capô, a estrutura de baunilha Blocksuite suporta:
Para experimentar o BlockSuite, consulte o exemplo de início rápido e comece com os editores predefinidos no @blocksuite/presets .
A relação entre Blocksuite e Affine é semelhante à entre o editor de Mônaco e o VSCode, mas com uma grande diferença: Blocksuite não é gerado automaticamente com base na base de código Affine, mas é mantido independentemente com uma pilha de tecnologia diferente - o Affine usa o React, enquanto o conjunto de blocos usa componentes da Web.
Essa diferença levou o BlockSuite a definir limites claros com base em uma filosofia centrada no componente, garantindo:
Para esse fim, o projeto Blocksuite é estruturado em torno dos principais pacotes que são categorizados em dois grupos: uma estrutura sem cabeça e componentes de edição pré -construída.
| Estrutura | |
|---|---|
@blocksuite/store | Camada de dados para modelar estados de documentos colaborativos. Ele é construído nativamente nos YJs da Biblioteca do CRDT, alimentando todos os documentos do Blocksuite com colaboração em tempo real e recursos de viagem no tempo. |
@blocksuite/inline | Componentes de texto ricos mínimos para edição em linha. O BlockSuite permite dividir o conteúdo rico de texto em diferentes nós de bloco em diferentes editores embutidos, tornando o conteúdo complexo convenientemente composível. Isso reduz significativamente a complexidade necessária para implementar recursos tradicionais de edição de texto ricos. |
@blocksuite/block-std | Biblioteca-Framework-Agnóstica para Modelando Blocos Editáveis. Seus recursos cobrem a estrutura dos campos de bloco, eventos, seleção, suporte à área de transferência etc. |
| Componentes | |
|---|---|
@blocksuite/blocks | Implementações de bloco padrão para compor editores predefinidos, incluindo widgets pertencentes a cada bloco. |
@blocksuite/presets | Componentes editáveis plug-and-play, incluindo editores ( PageEditor / EdgelessEditor ) e componentes da interface do usuário auxiliares chamados fragmentos ( CopilotPanel , DocTitle ...). |
Consulte o Building.md para obter instruções sobre como criar e testar blocksuite a partir da fonte.
Blocksuite aceita solicitações de puxar no Github. Antes de começar a contribuir, verifique se você leu e aceitou nosso contrato de licença de colaborador. Para indicar seu contrato, basta editar este arquivo e enviar uma solicitação de tração.
MPL 2.0