refactor(editor): separate lit and slot in global (#10666)

This commit is contained in:
Saul-Mirone
2025-03-06 10:24:59 +00:00
parent 56b842f2e1
commit 84e2dda3f8
322 changed files with 366 additions and 353 deletions

View File

@@ -1,4 +1,4 @@
import { SignalWatcher, WithDisposable } from '@blocksuite/global/utils';
import { SignalWatcher, WithDisposable } from '@blocksuite/global/lit';
import type { ExtensionType, Store } from '@blocksuite/store';
import { html } from 'lit';
import { customElement, property } from 'lit/decorators.js';

View File

@@ -1,5 +1,5 @@
import { IS_ANDROID, IS_MAC } from '@blocksuite/global/env';
import { DisposableGroup } from '@blocksuite/global/utils';
import { DisposableGroup } from '@blocksuite/global/slot';
import {
type UIEventHandler,

View File

@@ -1,5 +1,5 @@
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { DisposableGroup } from '@blocksuite/global/utils';
import { DisposableGroup } from '@blocksuite/global/slot';
import { LifeCycleWatcher } from '../extension/index.js';
import { KeymapIdentifier } from '../identifier.js';

View File

@@ -1,6 +1,6 @@
import type { Container } from '@blocksuite/global/di';
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { DisposableGroup } from '@blocksuite/global/utils';
import { DisposableGroup } from '@blocksuite/global/slot';
import { Extension } from '@blocksuite/store';
import type { EventName, UIEventHandler } from '../event/index.js';

View File

@@ -4,7 +4,8 @@ import {
getCommonBoundWithRotation,
type IBound,
} from '@blocksuite/global/gfx';
import { assertType, DisposableGroup } from '@blocksuite/global/utils';
import { DisposableGroup } from '@blocksuite/global/slot';
import { assertType } from '@blocksuite/global/utils';
import type { BlockModel } from '@blocksuite/store';
import { Signal } from '@preact/signals-core';
import last from 'lodash-es/last';

View File

@@ -1,4 +1,4 @@
import { DisposableGroup } from '@blocksuite/global/utils';
import { DisposableGroup } from '@blocksuite/global/slot';
import { Signal } from '@preact/signals-core';
import type { BlockStdScope } from '../scope/block-std-scope.js';

View File

@@ -1,5 +1,6 @@
import { Bound } from '@blocksuite/global/gfx';
import { assertType, DisposableGroup, Slot } from '@blocksuite/global/utils';
import { DisposableGroup, Slot } from '@blocksuite/global/slot';
import { assertType } from '@blocksuite/global/utils';
import type { Store } from '@blocksuite/store';
import { generateKeyBetween } from 'fractional-indexing';
import last from 'lodash-es/last';

View File

@@ -13,7 +13,7 @@ import {
type SerializedXYWH,
type XYWH,
} from '@blocksuite/global/gfx';
import { DisposableGroup, Slot } from '@blocksuite/global/utils';
import { DisposableGroup, Slot } from '@blocksuite/global/slot';
import { createMutex } from 'lib0/mutex';
import isEqual from 'lodash-es/isEqual';
import * as Y from 'yjs';

View File

@@ -1,9 +1,5 @@
import {
assertType,
type Constructor,
DisposableGroup,
Slot,
} from '@blocksuite/global/utils';
import { DisposableGroup, Slot } from '@blocksuite/global/slot';
import { assertType, type Constructor } from '@blocksuite/global/utils';
import type { Boxed } from '@blocksuite/store';
import { BlockModel, nanoid } from '@blocksuite/store';
import { signal } from '@preact/signals-core';

View File

@@ -2,7 +2,8 @@ import {
getCommonBoundWithRotation,
type IPoint,
} from '@blocksuite/global/gfx';
import { assertType, DisposableGroup, Slot } from '@blocksuite/global/utils';
import { DisposableGroup, Slot } from '@blocksuite/global/slot';
import { assertType } from '@blocksuite/global/utils';
import groupBy from 'lodash-es/groupBy';
import {

View File

@@ -1,7 +1,7 @@
import type { ServiceIdentifier } from '@blocksuite/global/di';
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import type { IBound, IPoint } from '@blocksuite/global/gfx';
import { DisposableGroup, Slot } from '@blocksuite/global/utils';
import { DisposableGroup, Slot } from '@blocksuite/global/slot';
import { Signal } from '@preact/signals-core';
import type { PointerEventState } from '../../event/index.js';

View File

@@ -1,6 +1,6 @@
import { type Container, createIdentifier } from '@blocksuite/global/di';
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { DisposableGroup } from '@blocksuite/global/utils';
import { DisposableGroup } from '@blocksuite/global/slot';
import { Extension } from '@blocksuite/store';
import type { PointerEventState } from '../../event/index.js';

View File

@@ -1,4 +1,4 @@
import { DisposableGroup } from '@blocksuite/global/utils';
import { DisposableGroup } from '@blocksuite/global/slot';
import { onSurfaceAdded } from '../../utils/gfx.js';
import type { GfxController } from '../controller.js';

View File

@@ -1,7 +1,7 @@
import { type Container, createIdentifier } from '@blocksuite/global/di';
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import type { Bound, IVec } from '@blocksuite/global/gfx';
import { DisposableGroup } from '@blocksuite/global/utils';
import { DisposableGroup } from '@blocksuite/global/slot';
import type { Extension } from '@blocksuite/store';
import type { PointerEventState } from '../../event/index.js';

View File

@@ -1,4 +1,4 @@
import { WithDisposable } from '@blocksuite/global/utils';
import { WithDisposable } from '@blocksuite/global/lit';
import { css, html } from 'lit';
import { property } from 'lit/decorators.js';

View File

@@ -5,7 +5,7 @@ import {
type IVec,
Vec,
} from '@blocksuite/global/gfx';
import { Slot } from '@blocksuite/global/utils';
import { Slot } from '@blocksuite/global/slot';
import { signal } from '@preact/signals-core';
import debounce from 'lodash-es/debounce';

View File

@@ -1,4 +1,4 @@
import { Slot } from '@blocksuite/global/utils';
import { Slot } from '@blocksuite/global/slot';
import type { BlockService } from '../extension/service.js';
import type { BlockComponent, WidgetComponent } from '../view/index.js';

View File

@@ -1,5 +1,5 @@
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { SignalWatcher, WithDisposable } from '@blocksuite/global/utils';
import { SignalWatcher, WithDisposable } from '@blocksuite/global/lit';
import { type BlockModel, type BlockViewType, Store } from '@blocksuite/store';
import { consume, provide } from '@lit/context';
import { computed } from '@preact/signals-core';

View File

@@ -3,7 +3,8 @@ import {
ErrorCode,
handleError,
} from '@blocksuite/global/exceptions';
import { SignalWatcher, Slot, WithDisposable } from '@blocksuite/global/utils';
import { SignalWatcher, WithDisposable } from '@blocksuite/global/lit';
import { Slot } from '@blocksuite/global/slot';
import {
type BlockModel,
Store,

View File

@@ -1,4 +1,4 @@
import { SignalWatcher, WithDisposable } from '@blocksuite/global/utils';
import { SignalWatcher, WithDisposable } from '@blocksuite/global/lit';
import type { BlockModel, Store } from '@blocksuite/store';
import { consume } from '@lit/context';
import { LitElement } from 'lit';

View File

@@ -1,4 +1,4 @@
import { Slot } from '@blocksuite/global/utils';
import { Slot } from '@blocksuite/global/slot';
import { LifeCycleWatcher } from '../extension/index.js';
import type { BlockComponent, WidgetComponent } from './element/index.js';

View File

@@ -16,7 +16,9 @@
"./exceptions": "./src/exceptions/index.ts",
"./di": "./src/di/index.ts",
"./types": "./src/types/index.ts",
"./gfx": "./src/gfx/index.ts"
"./gfx": "./src/gfx/index.ts",
"./slot": "./src/slot/index.ts",
"./lit": "./src/lit/index.ts"
},
"typesVersions": {
"*": {
@@ -37,6 +39,12 @@
],
"gfx": [
"dist/gfx/index.d.ts"
],
"slot": [
"dist/slot/index.d.ts"
],
"lit": [
"dist/lit/index.d.ts"
]
}
},

View File

@@ -1,6 +1,6 @@
import { describe, expect, test, vi } from 'vitest';
import { Slot } from '../utils/slot.js';
import { Slot } from '../slot/slot.js';
describe('slot', () => {
test('init', () => {

View File

@@ -0,0 +1,2 @@
export * from './signal-watcher.js';
export * from './with-disposable.js';

View File

@@ -1,7 +1,7 @@
import type { LitElement } from 'lit';
import { DisposableGroup } from './disposable.js';
import type { Constructor } from './types.js';
import { DisposableGroup } from '../slot/disposable.js';
import type { Constructor } from '../utils/types.js';
// See https://lit.dev/docs/composition/mixins/#mixins-in-typescript
// This definition should be exported, see https://github.com/microsoft/TypeScript/issues/30355#issuecomment-839834550

View File

@@ -0,0 +1,2 @@
export * from './disposable.js';
export * from './slot.js';

View File

@@ -1,8 +1,4 @@
export * from './crypto.js';
export * from './disposable.js';
export * from './function.js';
export * from './logger.js';
export * from './signal-watcher.js';
export * from './slot.js';
export * from './types.js';
export * from './with-disposable.js';

View File

@@ -1,5 +1,6 @@
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { DisposableGroup, SignalWatcher } from '@blocksuite/global/utils';
import { SignalWatcher } from '@blocksuite/global/lit';
import { DisposableGroup } from '@blocksuite/global/slot';
import { effect, signal } from '@preact/signals-core';
import { html, LitElement } from 'lit';
import { property } from 'lit/decorators.js';

View File

@@ -1,5 +1,5 @@
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { DisposableGroup, Slot } from '@blocksuite/global/utils';
import { DisposableGroup, Slot } from '@blocksuite/global/slot';
import { type Signal, signal } from '@preact/signals-core';
import { nothing, render, type TemplateResult } from 'lit';
import type * as Y from 'yjs';

View File

@@ -1,6 +1,4 @@
// checkout https://vitest.dev/guide/debugging.html for debugging tests
import type { Slot } from '@blocksuite/global/utils';
import type { Slot } from '@blocksuite/global/slot';
import { assert, beforeEach, describe, expect, it, vi } from 'vitest';
import { applyUpdate, type Doc, encodeStateAsUpdate } from 'yjs';

View File

@@ -1,4 +1,4 @@
import { Slot } from '@blocksuite/global/utils';
import { Slot } from '@blocksuite/global/slot';
import { describe, expect, test } from 'vitest';
import * as Y from 'yjs';

View File

@@ -1,5 +1,5 @@
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { Slot } from '@blocksuite/global/utils';
import { Slot } from '@blocksuite/global/slot';
import { computed, signal } from '@preact/signals-core';
import type { Store } from '../../model';

View File

@@ -1,4 +1,4 @@
import { type Disposable, Slot } from '@blocksuite/global/utils';
import { type Disposable, Slot } from '@blocksuite/global/slot';
import { computed, type Signal, signal } from '@preact/signals-core';
import type { Text } from '../../reactive/index.js';

View File

@@ -1,4 +1,4 @@
import type { Slot } from '@blocksuite/global/utils';
import type { Slot } from '@blocksuite/global/slot';
import type * as Y from 'yjs';
import type { AwarenessStore } from '../yjs/awareness.js';

View File

@@ -1,6 +1,7 @@
import { Container, type ServiceProvider } from '@blocksuite/global/di';
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { type Disposable, Slot } from '@blocksuite/global/utils';
import type { Disposable } from '@blocksuite/global/slot';
import { Slot } from '@blocksuite/global/slot';
import { computed, signal } from '@preact/signals-core';
import type { ExtensionType } from '../../extension/extension.js';

View File

@@ -1,4 +1,4 @@
import type { Slot } from '@blocksuite/global/utils';
import type { Slot } from '@blocksuite/global/slot';
export type Tag = {
id: string;

View File

@@ -1,4 +1,4 @@
import type { Slot } from '@blocksuite/global/utils';
import type { Slot } from '@blocksuite/global/slot';
import type { BlobEngine } from '@blocksuite/sync';
import type { Awareness } from 'y-protocols/awareness.js';
import type * as Y from 'yjs';

View File

@@ -1,5 +1,5 @@
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { type Slot } from '@blocksuite/global/utils';
import type { Slot } from '@blocksuite/global/slot';
import { signal } from '@preact/signals-core';
import {
Array as YArray,

View File

@@ -1,4 +1,4 @@
import { Slot } from '@blocksuite/global/utils';
import { Slot } from '@blocksuite/global/slot';
import { signal } from '@preact/signals-core';
import * as Y from 'yjs';

View File

@@ -1,4 +1,4 @@
import { Slot } from '@blocksuite/global/utils';
import { Slot } from '@blocksuite/global/slot';
import type * as Y from 'yjs';
import type {

View File

@@ -1,5 +1,6 @@
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { NoopLogger, Slot } from '@blocksuite/global/utils';
import { Slot } from '@blocksuite/global/slot';
import { NoopLogger } from '@blocksuite/global/utils';
import {
AwarenessEngine,
type AwarenessSource,

View File

@@ -1,4 +1,4 @@
import type { Slot } from '@blocksuite/global/utils';
import type { Slot } from '@blocksuite/global/slot';
import type { BlockModel, DraftModel, Store } from '../model/index.js';
import type { AssetsManager } from './assets.js';

View File

@@ -1,5 +1,6 @@
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { nextTick, Slot } from '@blocksuite/global/utils';
import { Slot } from '@blocksuite/global/slot';
import { nextTick } from '@blocksuite/global/utils';
import {
BlockModel,

View File

@@ -1,4 +1,5 @@
import { type Logger, Slot } from '@blocksuite/global/utils';
import { Slot } from '@blocksuite/global/slot';
import type { Logger } from '@blocksuite/global/utils';
import type { Doc } from 'yjs';
import { SharedPriorityTarget } from '../utils/async-queue.js';

View File

@@ -1,4 +1,5 @@
import { type Logger, Slot } from '@blocksuite/global/utils';
import { Slot } from '@blocksuite/global/slot';
import type { Logger } from '@blocksuite/global/utils';
import isEqual from 'lodash-es/isEqual';
import type { Doc } from 'yjs';
import {