refactor(editor): use lodash (#10657)

This commit is contained in:
Saul-Mirone
2025-03-06 09:00:00 +00:00
parent 8062893603
commit 7ae9daa6f6
46 changed files with 160 additions and 555 deletions

View File

@@ -57,7 +57,7 @@ import {
type SerializedXYWH,
Vec,
} from '@blocksuite/global/gfx';
import { assertType, DisposableGroup, nToLast } from '@blocksuite/global/utils';
import { assertType, DisposableGroup } from '@blocksuite/global/utils';
import {
type BlockSnapshot,
BlockSnapshotSchema,
@@ -1168,13 +1168,13 @@ export class EdgelessClipboardController extends PageClipboard {
const bGroups = b.groups as SurfaceGroupLikeModel[];
let i = 1;
let aGroup: GfxModel | undefined = nToLast(aGroups, i);
let bGroup: GfxModel | undefined = nToLast(bGroups, i);
let aGroup: GfxModel | undefined = aGroups.at(-i);
let bGroup: GfxModel | undefined = bGroups.at(-i);
while (aGroup === bGroup && aGroup) {
++i;
aGroup = nToLast(aGroups, i);
bGroup = nToLast(bGroups, i);
aGroup = aGroups.at(-i);
bGroup = bGroups.at(-i);
}
aGroup = aGroup ?? a;

View File

@@ -56,7 +56,7 @@ import {
normalizeDegAngle,
} from '@blocksuite/global/gfx';
import type { Disposable } from '@blocksuite/global/utils';
import { assertType, pickValues, Slot } from '@blocksuite/global/utils';
import { assertType, Slot } from '@blocksuite/global/utils';
import { css, html, nothing } from 'lit';
import { state } from 'lit/decorators.js';
import { ifDefined } from 'lit/directives/if-defined.js';
@@ -1310,13 +1310,17 @@ export class EdgelessSelectedRectWidget extends WidgetComponent<
gfx.viewport.viewportUpdated.on(this._updateOnViewportChange)
);
pickValues(gfx.surface!, [
'elementAdded',
'elementRemoved',
'elementUpdated',
]).forEach(slot => {
_disposables.add(slot.on(this._updateOnElementChange));
});
if (gfx.surface) {
_disposables.add(
gfx.surface.elementAdded.on(this._updateOnElementChange)
);
_disposables.add(
gfx.surface.elementRemoved.on(this._updateOnElementChange)
);
_disposables.add(
gfx.surface.elementUpdated.on(this._updateOnElementChange)
);
}
_disposables.add(
this.doc.slots.blockUpdated.on(this._updateOnElementChange)

View File

@@ -1,5 +1,3 @@
import { keys } from '@blocksuite/global/utils';
import type {
Template,
TemplateCategory,
@@ -40,7 +38,7 @@ const flat = <T>(arr: T[][]) =>
}, []);
export const builtInTemplates = {
list: async (category: string) => {
list: async (category: string): Promise<Template[]> => {
const extendTemplates = flat(
await Promise.all(extendTemplate.map(manager => manager.list(category)))
);
@@ -52,15 +50,12 @@ export const builtInTemplates = {
const result: Template[] =
cate.templates instanceof Function
? await cate.templates()
: await Promise.all(
// @ts-expect-error FIXME: ts error
keys(cate.templates).map(key => cate.templates[key]())
);
: await Promise.all(Object.values(cate.templates));
return result.concat(extendTemplates);
},
categories: async () => {
categories: async (): Promise<string[]> => {
const extendCates = flat(
await Promise.all(extendTemplate.map(manager => manager.categories()))
);
@@ -69,7 +64,7 @@ export const builtInTemplates = {
return templates.map(cate => cate.name).concat(extendCates);
},
search: async (keyword: string, cateName?: string) => {
search: async (keyword: string, cateName?: string): Promise<Template[]> => {
const candidates: Template[] = flat(
await Promise.all(
extendTemplate.map(manager => manager.search(keyword, cateName))
@@ -86,18 +81,15 @@ export const builtInTemplates = {
}
if (categroy.templates instanceof Function) {
return;
return categroy.templates();
}
return Promise.all(
keys(categroy.templates).map(async name => {
Object.entries(categroy.templates).map(async ([name, template]) => {
if (
lcs(keyword, (name as string).toLocaleLowerCase()) ===
keyword.length
) {
// @ts-expect-error FIXME: ts error
const template = await categroy.templates[name]();
candidates.push(template);
}
})

View File

@@ -1,7 +1,7 @@
import type { PointerEventState } from '@blocksuite/block-std';
import type { GfxElementModelView } from '@blocksuite/block-std/gfx';
import { Bound } from '@blocksuite/global/gfx';
import { last } from '@blocksuite/global/utils';
import last from 'lodash-es/last';
import { DefaultModeDragType, DefaultToolExt } from './ext.js';

View File

@@ -9,7 +9,7 @@ import {
type MindmapRoot,
} from '@blocksuite/affine-model';
import { Bound } from '@blocksuite/global/gfx';
import { last } from '@blocksuite/global/utils';
import last from 'lodash-es/last';
const isOnEdge = (node: MindmapNode, direction: 'tail' | 'head') => {
let current = node;

View File

@@ -19,7 +19,7 @@ import {
toRadian,
Vec,
} from '@blocksuite/global/gfx';
import { last } from '@blocksuite/global/utils';
import last from 'lodash-es/last';
export class MindMapIndicatorOverlay extends Overlay {
static INDICATOR_SIZE = [48, 22];

View File

@@ -43,9 +43,10 @@ import {
} from '@blocksuite/block-std/gfx';
import type { IVec } from '@blocksuite/global/gfx';
import { Bound, getCommonBoundWithRotation, Vec } from '@blocksuite/global/gfx';
import { DisposableGroup, last, noop } from '@blocksuite/global/utils';
import { DisposableGroup, noop } from '@blocksuite/global/utils';
import { effect } from '@preact/signals-core';
import clamp from 'lodash-es/clamp';
import last from 'lodash-es/last';
import type { EdgelessRootBlockComponent } from '../edgeless-root-block.js';
import { prepareCloneData } from '../utils/clone-utils.js';

View File

@@ -19,8 +19,8 @@ import {
type SerializedElement,
} from '@blocksuite/block-std/gfx';
import { getCommonBoundWithRotation } from '@blocksuite/global/gfx';
import { groupBy } from '@blocksuite/global/utils';
import { type BlockSnapshot, BlockSnapshotSchema } from '@blocksuite/store';
import groupBy from 'lodash-es/groupBy';
import type { EdgelessRootBlockComponent } from '../edgeless-root-block.js';
import { getSortedCloneElements, prepareCloneData } from './clone-utils.js';