mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-30 00:29:46 +08:00
refactor(editor): unify directories naming (#11516)
**Directory Structure Changes** - Renamed multiple block-related directories by removing the "block-" prefix: - `block-attachment` → `attachment` - `block-bookmark` → `bookmark` - `block-callout` → `callout` - `block-code` → `code` - `block-data-view` → `data-view` - `block-database` → `database` - `block-divider` → `divider` - `block-edgeless-text` → `edgeless-text` - `block-embed` → `embed`
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
import { BaseSelection, SelectionExtension } from '@blocksuite/store';
|
||||
import { z } from 'zod';
|
||||
|
||||
const TableAreaSelectionSchema = z.object({
|
||||
type: z.literal('area'),
|
||||
rowStartIndex: z.number(),
|
||||
rowEndIndex: z.number(),
|
||||
columnStartIndex: z.number(),
|
||||
columnEndIndex: z.number(),
|
||||
});
|
||||
|
||||
export type TableAreaSelection = z.TypeOf<typeof TableAreaSelectionSchema>;
|
||||
|
||||
const TableRowSelectionSchema = z.object({
|
||||
type: z.literal('row'),
|
||||
rowId: z.string(),
|
||||
});
|
||||
|
||||
const TableColumnSelectionSchema = z.object({
|
||||
type: z.literal('column'),
|
||||
columnId: z.string(),
|
||||
});
|
||||
|
||||
const TableSelectionDataSchema = z.union([
|
||||
TableAreaSelectionSchema,
|
||||
TableRowSelectionSchema,
|
||||
TableColumnSelectionSchema,
|
||||
]);
|
||||
|
||||
export type TableSelectionData = z.TypeOf<typeof TableSelectionDataSchema>;
|
||||
export const TableSelectionData = {
|
||||
equals(a?: TableSelectionData, b?: TableSelectionData) {
|
||||
if (a === b) {
|
||||
return true;
|
||||
}
|
||||
if (a == null || b == null) {
|
||||
return a === b;
|
||||
}
|
||||
if (a.type !== b.type) {
|
||||
return false;
|
||||
}
|
||||
if (a.type === 'area' && b.type === 'area') {
|
||||
return (
|
||||
a.rowStartIndex === b.rowStartIndex &&
|
||||
a.rowEndIndex === b.rowEndIndex &&
|
||||
a.columnStartIndex === b.columnStartIndex &&
|
||||
a.columnEndIndex === b.columnEndIndex
|
||||
);
|
||||
}
|
||||
if (a.type === 'row' && b.type === 'row') {
|
||||
return a.rowId === b.rowId;
|
||||
}
|
||||
if (a.type === 'column' && b.type === 'column') {
|
||||
return a.columnId === b.columnId;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
};
|
||||
|
||||
const TableSelectionSchema = z.object({
|
||||
blockId: z.string(),
|
||||
data: TableSelectionDataSchema,
|
||||
});
|
||||
|
||||
export class TableSelection extends BaseSelection {
|
||||
static override group = 'note';
|
||||
|
||||
static override type = 'table';
|
||||
|
||||
readonly data: TableSelectionData;
|
||||
|
||||
constructor({
|
||||
blockId,
|
||||
data,
|
||||
}: {
|
||||
blockId: string;
|
||||
data: TableSelectionData;
|
||||
}) {
|
||||
super({
|
||||
blockId,
|
||||
});
|
||||
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
static override fromJSON(json: Record<string, unknown>): TableSelection {
|
||||
TableSelectionSchema.parse(json);
|
||||
return new TableSelection({
|
||||
blockId: json.blockId as string,
|
||||
data: json.data as TableSelectionData,
|
||||
});
|
||||
}
|
||||
|
||||
override equals(other: BaseSelection): boolean {
|
||||
if (!(other instanceof TableSelection)) {
|
||||
return false;
|
||||
}
|
||||
return this.blockId === other.blockId;
|
||||
}
|
||||
|
||||
override toJSON(): Record<string, unknown> {
|
||||
return {
|
||||
type: 'table',
|
||||
blockId: this.blockId,
|
||||
data: this.data,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export const TableSelectionExtension = SelectionExtension(TableSelection);
|
||||
Reference in New Issue
Block a user