refactor(editor): remove global gfx tool types (#12119)

This commit is contained in:
Saul-Mirone
2025-05-04 13:53:27 +00:00
parent 30a2e5b4fb
commit 676c5d8de6
20 changed files with 2 additions and 219 deletions

View File

@@ -1,77 +0,0 @@
import {
CanvasElementType,
DefaultTool,
EdgelessCRUDIdentifier,
type IModelCoord,
} from '@blocksuite/affine-block-surface';
import { TextElementModel } from '@blocksuite/affine-model';
import { Bound } from '@blocksuite/global/gfx';
import type { BlockComponent, PointerEventState } from '@blocksuite/std';
import { GfxControllerIdentifier } from '@blocksuite/std/gfx';
import * as Y from 'yjs';
import { EdgelessTextEditor } from './edgeless-text-editor';
import { getCursorByCoord } from './element-renderer/utils';
export function mountTextElementEditor(
textElement: TextElementModel,
edgeless: BlockComponent,
focusCoord?: IModelCoord
) {
let cursorIndex = textElement.text.length;
if (focusCoord) {
cursorIndex = Math.min(
getCursorByCoord(textElement, focusCoord),
cursorIndex
);
}
const textEditor = new EdgelessTextEditor();
textEditor.element = textElement;
edgeless.append(textEditor);
textEditor.updateComplete
.then(() => {
textEditor.inlineEditor?.focusIndex(cursorIndex);
})
.catch(console.error);
const gfx = edgeless.std.get(GfxControllerIdentifier);
gfx.tool.setTool(DefaultTool);
gfx.selection.set({
elements: [textElement.id],
editing: true,
});
}
/**
* @deprecated
*
* Canvas Text has been deprecated
*/
export function addText(edgeless: BlockComponent, event: PointerEventState) {
const gfx = edgeless.std.get(GfxControllerIdentifier);
const crud = edgeless.std.get(EdgelessCRUDIdentifier);
const [x, y] = gfx.viewport.toModelCoord(event.x, event.y);
const selected = gfx.getElementByPoint(x, y);
if (!selected) {
const [modelX, modelY] = gfx.viewport.toModelCoord(event.x, event.y);
const id = edgeless.std
.get(EdgelessCRUDIdentifier)
.addElement(CanvasElementType.TEXT, {
xywh: new Bound(modelX, modelY, 32, 32).serialize(),
text: new Y.Text(),
});
if (!id) return;
edgeless.doc.captureSync();
const textElement = crud.getElementById(id);
if (!textElement) return;
if (textElement instanceof TextElementModel) {
mountTextElementEditor(textElement, edgeless);
}
}
}

View File

@@ -10,7 +10,7 @@ import { BaseTool, type GfxController } from '@blocksuite/std/gfx';
import * as Y from 'yjs';
import { insertEdgelessTextCommand } from './commands/insert-edgeless-text';
import { mountTextElementEditor } from './mount-text-editor';
import { mountTextElementEditor } from './edgeless-text-editor';
function addText(gfx: GfxController, event: PointerEventState) {
const [x, y] = gfx.viewport.toModelCoord(event.x, event.y);
@@ -64,9 +64,3 @@ export class TextTool extends BaseTool {
});
}
}
declare module '@blocksuite/std/gfx' {
interface GfxToolsMap {
text: TextTool;
}
}