AppFlowy/frontend/rust-lib/flowy-document2/src/entities.rs

160 lines
2.8 KiB
Rust
Raw Normal View History

use std::collections::HashMap;
use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
#[derive(Default, ProtoBuf)]
pub struct OpenDocumentPayloadPBV2 {
#[pb(index = 1)]
pub document_id: String,
// Support customize initial data
}
#[derive(Default, ProtoBuf)]
pub struct CreateDocumentPayloadPBV2 {
#[pb(index = 1)]
pub document_id: String,
// Support customize initial data
}
#[derive(Default, ProtoBuf)]
pub struct CloseDocumentPayloadPBV2 {
#[pb(index = 1)]
pub document_id: String,
// Support customize initial data
}
#[derive(Default, ProtoBuf, Debug)]
pub struct ApplyActionPayloadPBV2 {
#[pb(index = 1)]
pub document_id: String,
#[pb(index = 2)]
pub actions: Vec<BlockActionPB>,
}
feat: integrate new editor (#2536) * feat: update editor * feat: integrate new editor * feat: integrate the document2 into folder2 * feat: integrate the new editor * chore: cargo fix * chore: active document feature for flowy-error * feat: convert the editor action to collab action * feat: migrate the grid and board * feat: migrate the callout block * feat: migrate the divider * chore: migrate the callout and math equation * feat: migrate the code block * feat: add shift + enter command in code block * feat: support tab and shift+tab in code block * fix: cursor error after inserting divider * feat: migrate the grid and board * feat: migrate the emoji picker * feat: migrate openai * feat: integrate floating toolbar * feat: migrate the smart editor * feat: migrate the cover * feat: add option block action * chore: implement block selection and delete option * feat: support background color * feat: dismiss color picker afer setting color * feat: migrate the cover block * feat: resize the font * chore: cutomsize the padding * chore: wrap the option button with ignore widget * feat: customize the heading style * chore: optimize the divider line height * fix: the option button can't dismiss * ci: rust test * chore: flutter analyze * fix: code block selection * fix: dismiss the emoji picker after selecting one * chore: optimize the transaction adapter * fix: can't save the new content * feat: show export page when some errors happen * feat: implement get_view_data for document --------- Co-authored-by: nathan <nathan@appflowy.io>
2023-05-16 06:58:24 +00:00
#[derive(Default, ProtoBuf)]
pub struct GetDocumentDataPayloadPBV2 {
#[pb(index = 1)]
pub document_id: String,
// Support customize initial data
}
#[derive(Default, ProtoBuf)]
pub struct DocumentDataPB2 {
#[pb(index = 1)]
pub page_id: String,
#[pb(index = 2)]
2023-04-13 12:30:28 +00:00
pub blocks: HashMap<String, BlockPB>,
#[pb(index = 3)]
pub meta: MetaPB,
}
#[derive(Default, ProtoBuf, Debug)]
pub struct BlockPB {
#[pb(index = 1)]
pub id: String,
#[pb(index = 2)]
pub ty: String,
#[pb(index = 3)]
pub data: String,
#[pb(index = 4)]
pub parent_id: String,
#[pb(index = 5)]
pub children_id: String,
}
#[derive(Default, ProtoBuf)]
pub struct MetaPB {
#[pb(index = 1)]
pub children_map: HashMap<String, ChildrenPB>,
}
#[derive(Default, ProtoBuf)]
pub struct ChildrenPB {
#[pb(index = 1)]
pub children: Vec<String>,
}
// Actions
#[derive(Default, ProtoBuf, Debug)]
pub struct BlockActionPB {
#[pb(index = 1)]
pub action: BlockActionTypePB,
#[pb(index = 2)]
pub payload: BlockActionPayloadPB,
}
#[derive(Default, ProtoBuf, Debug)]
pub struct BlockActionPayloadPB {
#[pb(index = 1)]
pub block: BlockPB,
#[pb(index = 2, one_of)]
pub prev_id: Option<String>,
#[pb(index = 3, one_of)]
pub parent_id: Option<String>,
}
#[derive(ProtoBuf_Enum, Debug)]
pub enum BlockActionTypePB {
Insert = 0,
Update = 1,
Delete = 2,
Move = 3,
}
impl Default for BlockActionTypePB {
fn default() -> Self {
Self::Insert
}
}
#[derive(ProtoBuf_Enum)]
pub enum DeltaTypePB {
Inserted = 0,
Updated = 1,
Removed = 2,
}
impl Default for DeltaTypePB {
fn default() -> Self {
Self::Inserted
}
}
#[derive(Default, ProtoBuf)]
pub struct DocEventPB {
#[pb(index = 1)]
pub events: Vec<BlockEventPB>,
#[pb(index = 2)]
pub is_remote: bool,
}
#[derive(Default, ProtoBuf)]
pub struct BlockEventPB {
#[pb(index = 1)]
pub event: Vec<BlockEventPayloadPB>,
}
#[derive(Default, ProtoBuf)]
pub struct BlockEventPayloadPB {
#[pb(index = 1)]
pub command: DeltaTypePB,
#[pb(index = 2)]
pub path: Vec<String>,
#[pb(index = 3)]
pub id: String,
#[pb(index = 4)]
pub value: String,
}