Merge remote-tracking branch 'origin/develop' into fix/autofocus-board-editor

This commit is contained in:
alt0
2022-08-18 16:49:34 +08:00
2 changed files with 18 additions and 7 deletions
@@ -11,7 +11,7 @@ import {
import type { BlockEditor } from '@toeverything/components/editor-core';
import { MIN_PAGE_WIDTH } from '@toeverything/components/editor-core';
import { styled } from '@toeverything/components/ui';
import type { SyntheticEvent } from 'react';
import type { MouseEvent, SyntheticEvent } from 'react';
import { memo, useCallback, useEffect, useRef } from 'react';
import {
defaultTextStyle,
@@ -149,6 +149,15 @@ export class EditorUtil extends TDShapeUtil<T, E> {
})();
}, [isEditing]);
const onMouseDown = useCallback(
(e: MouseEvent) => {
if (e.detail === 2) {
app.setEditingText(shape.id);
}
},
[app, shape.id]
);
return (
<HTMLContainer ref={ref} {...events}>
<Container
@@ -157,6 +166,7 @@ export class EditorUtil extends TDShapeUtil<T, E> {
onPointerDown={stopPropagation}
onMouseEnter={activateIfEditing}
onDragEnter={activateIfEditing}
onMouseDown={onMouseDown}
>
<MemoAffineEditor
workspace={workspace}
@@ -1,6 +1,5 @@
/* eslint-disable max-lines */
import HotKeys from 'hotkeys-js';
import LRUCache from 'lru-cache';
import type { PatchNode } from '@toeverything/components/ui';
import type {
@@ -46,10 +45,7 @@ export interface EditorCtorProps {
}
export class Editor implements Virgo {
private _cacheManager = new LRUCache<string, Promise<AsyncBlock | null>>({
max: 8192,
ttl: 1000 * 60 * 30,
});
private _cacheManager = new Map<string, Promise<AsyncBlock | null>>();
public mouseManager = new MouseManager(this);
public selectionManager = new SelectionManager(this);
public keyboardManager = new KeyboardManager(this);
@@ -234,7 +230,12 @@ export class Editor implements Virgo {
return await services.api.editorBlock.update(patches);
},
remove: async ({ workspace, id }: WorkspaceAndBlockId) => {
return await services.api.editorBlock.delete({ workspace, id });
const ret = await services.api.editorBlock.delete({
workspace,
id,
});
this._cacheManager.delete(id);
return ret;
},
observe: async (
{ workspace, id }: WorkspaceAndBlockId,