feat(editor): add block meta for table block (#10915)

This commit is contained in:
Saul-Mirone
2025-03-17 05:20:10 +00:00
parent 6eb34d70c1
commit 808c053c3c
3 changed files with 20 additions and 3 deletions
@@ -6,6 +6,8 @@ import {
defineBlockSchema,
} from '@blocksuite/store';
import type { BlockMeta } from '../../utils/types';
export type TableCell = {
text: Text;
};
@@ -23,7 +25,7 @@ export interface TableColumn {
width?: number;
}
export interface TableBlockProps {
export interface TableBlockProps extends BlockMeta {
rows: Record<string, TableRow>;
columns: Record<string, TableColumn>;
// key = `${rowId}:${columnId}`
@@ -50,6 +52,10 @@ export const TableBlockSchema = defineBlockSchema({
rows: {},
columns: {},
cells: {},
'meta:createdAt': undefined,
'meta:createdBy': undefined,
'meta:updatedAt': undefined,
'meta:updatedBy': undefined,
}),
metadata: {
isFlatData: true,
@@ -61,6 +61,7 @@ function updateSignal(
basePath,
initialized,
onDispose,
shouldByPassYjs,
} = options;
const fullPath = basePath ? `${basePath}.${prop}` : prop;
@@ -69,6 +70,7 @@ function updateSignal(
root,
firstKey,
shouldByPassSignal,
shouldByPassYjs,
byPassSignalUpdate,
onChange,
basePath,
@@ -3,7 +3,12 @@ import type { CreateProxyOptions } from './types';
type UpdateSignalOptions = Pick<
CreateProxyOptions,
'shouldByPassSignal' | 'root' | 'onChange' | 'byPassSignalUpdate' | 'basePath'
| 'shouldByPassSignal'
| 'root'
| 'onChange'
| 'byPassSignalUpdate'
| 'basePath'
| 'shouldByPassYjs'
> & {
firstKey: string;
value: unknown;
@@ -19,6 +24,7 @@ export function signalUpdater({
basePath,
value,
handleNestedUpdate,
shouldByPassYjs,
}: UpdateSignalOptions): void {
const isRoot = !basePath;
if (shouldByPassSignal()) {
@@ -44,6 +50,9 @@ export function signalUpdater({
: prev;
// @ts-expect-error allow magic props
root[signalKey].value = next;
onChange?.(firstKey, true);
// If the update is from yjs, it's already called from y-event-handler
if (!shouldByPassYjs()) {
onChange?.(firstKey, true);
}
});
}