mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-29 16:19:43 +08:00
refactor(editor): remove legacy dnd config (#9291)
This commit is contained in:
@@ -1,60 +1,6 @@
|
||||
import type { MenuOptions } from '@blocksuite/affine-components/context-menu';
|
||||
import {
|
||||
type DatabaseBlockModel,
|
||||
DatabaseBlockSchema,
|
||||
} from '@blocksuite/affine-model';
|
||||
import { DragHandleConfigExtension } from '@blocksuite/affine-shared/services';
|
||||
import { captureEventTarget } from '@blocksuite/affine-shared/utils';
|
||||
import { type DatabaseBlockModel } from '@blocksuite/affine-model';
|
||||
|
||||
export interface DatabaseOptionsConfig {
|
||||
configure: (model: DatabaseBlockModel, options: MenuOptions) => MenuOptions;
|
||||
}
|
||||
|
||||
let canDrop = false;
|
||||
export const DatabaseDragHandleOption = DragHandleConfigExtension({
|
||||
flavour: DatabaseBlockSchema.model.flavour,
|
||||
onDragMove: ({ state }) => {
|
||||
const target = captureEventTarget(state.raw.target);
|
||||
const database = target?.closest('affine-database');
|
||||
if (!database) return false;
|
||||
const view = database.view;
|
||||
if (view && target instanceof HTMLElement && database.contains(target)) {
|
||||
canDrop = view.showIndicator?.(state.raw) ?? false;
|
||||
return false;
|
||||
}
|
||||
if (canDrop) {
|
||||
view?.hideIndicator?.();
|
||||
canDrop = false;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
onDragEnd: ({ state, draggingElements, editorHost }) => {
|
||||
const target = state.raw.target;
|
||||
const targetEl = captureEventTarget(state.raw.target);
|
||||
const database = targetEl?.closest('affine-database');
|
||||
if (!database) {
|
||||
return false;
|
||||
}
|
||||
const view = database.view;
|
||||
if (
|
||||
canDrop &&
|
||||
view &&
|
||||
view.moveTo &&
|
||||
target instanceof HTMLElement &&
|
||||
database.parentElement?.contains(target)
|
||||
) {
|
||||
const blocks = draggingElements.map(v => v.model);
|
||||
editorHost.doc.moveBlocks(blocks, database.model);
|
||||
blocks.forEach(model => {
|
||||
view.moveTo?.(model.id, state.raw);
|
||||
});
|
||||
view.hideIndicator?.();
|
||||
return false;
|
||||
}
|
||||
if (canDrop) {
|
||||
view?.hideIndicator?.();
|
||||
canDrop = false;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
});
|
||||
|
||||
@@ -9,7 +9,6 @@ import { literal } from 'lit/static-html.js';
|
||||
|
||||
import { DatabaseBlockAdapterExtensions } from './adapters/extension.js';
|
||||
import { commands } from './commands.js';
|
||||
import { DatabaseDragHandleOption } from './config.js';
|
||||
import { DatabaseBlockService } from './database-service.js';
|
||||
|
||||
export const DatabaseBlockSpec: ExtensionType[] = [
|
||||
@@ -17,7 +16,6 @@ export const DatabaseBlockSpec: ExtensionType[] = [
|
||||
DatabaseBlockService,
|
||||
CommandExtension(commands),
|
||||
BlockViewExtension('affine:database', literal`affine-database`),
|
||||
DatabaseDragHandleOption,
|
||||
DatabaseSelectionExtension,
|
||||
DatabaseBlockAdapterExtensions,
|
||||
].flat();
|
||||
|
||||
Reference in New Issue
Block a user