feat(editor): support file column and member column for database block (#10932)

close: BS-2630, BS-2631, BS-2629, BS-2632, BS-2635
This commit is contained in:
zzj3720
2025-03-18 14:51:45 +00:00
parent 321e3449ec
commit 3939cc1c52
34 changed files with 1796 additions and 77 deletions
@@ -2,12 +2,13 @@ import { DebugLogger } from '@affine/debug';
import { BlockStdScope } from '@blocksuite/affine/block-std';
import { PageEditorBlockSpecs } from '@blocksuite/affine/extensions';
import type { Store } from '@blocksuite/affine/store';
import { useMemo } from 'react';
import { useEffect, useMemo, useState } from 'react';
import { Observable } from 'rxjs';
const logger = new DebugLogger('doc-info');
interface ReadonlySignal<T> {
value: T;
subscribe: (fn: (value: T) => void) => () => void;
}
@@ -23,6 +24,20 @@ export function signalToObservable<T>(
};
});
}
export function useSignalValue<T>(signal: ReadonlySignal<T>): T;
export function useSignalValue<T>(signal?: ReadonlySignal<T>): T | undefined;
export function useSignalValue<T>(signal?: ReadonlySignal<T>): T | undefined {
const [value, setValue] = useState<T | undefined>(signal?.value);
useEffect(() => {
if (signal == null) {
return;
}
return signal.subscribe(value => {
setValue(value);
});
}, [signal]);
return value;
}
// todo(pengx17): use rc pool?
export function createBlockStdScope(doc: Store) {
@@ -68,9 +68,6 @@ export class MemberSearchService extends Service {
}
search(searchText?: string) {
if (this.searchText$.value === searchText) {
return;
}
this.reset();
this.searchText$.setValue(searchText ?? '');
this.loadMore();