From 4b21dac4f8199ae8c68ddc23abe5c6c36ad9b4ae Mon Sep 17 00:00:00 2001 From: Saul-Mirone Date: Wed, 1 Jan 2025 12:21:41 +0000 Subject: [PATCH] chore: remove unused methods on slot (#9472) --- .../global/src/__tests__/slot.unit.spec.ts | 12 --- blocksuite/framework/global/src/utils/slot.ts | 97 +++---------------- 2 files changed, 12 insertions(+), 97 deletions(-) diff --git a/blocksuite/framework/global/src/__tests__/slot.unit.spec.ts b/blocksuite/framework/global/src/__tests__/slot.unit.spec.ts index fb238dbe5d..61a84358d9 100644 --- a/blocksuite/framework/global/src/__tests__/slot.unit.spec.ts +++ b/blocksuite/framework/global/src/__tests__/slot.unit.spec.ts @@ -43,16 +43,4 @@ describe('slot', () => { slot.emit(); expect(callback).toBeCalledTimes(0); }); - - test('subscribe', () => { - type Data = { - name: string; - age: number; - }; - const slot = new Slot(); - const callback = vi.fn(v => expect(v).toBe('田所')); - slot.subscribe(v => v.name, callback); - slot.emit({ name: '田所', age: 24 }); - expect(callback).toBeCalledTimes(1); - }); }); diff --git a/blocksuite/framework/global/src/utils/slot.ts b/blocksuite/framework/global/src/utils/slot.ts index 665be698a7..c276a3a618 100644 --- a/blocksuite/framework/global/src/utils/slot.ts +++ b/blocksuite/framework/global/src/utils/slot.ts @@ -1,7 +1,5 @@ import { type Disposable, flattenDisposables } from './disposable.js'; -// Credits to blocky-editor -// https://github.com/vincentdchan/blocky-editor export class Slot implements Disposable { private _callbacks: ((v: T) => unknown)[] = []; @@ -9,28 +7,6 @@ export class Slot implements Disposable { private _emitting = false; - subscribe = ( - selector: (state: T) => U, - callback: (value: U) => void, - config?: { - equalityFn?: (a: U, b: U) => boolean; - filter?: (state: T) => boolean; - } - ) => { - let prevState: U | undefined; - const { filter, equalityFn = Object.is } = config ?? {}; - return this.on(state => { - if (filter && !filter(state)) { - return; - } - const nextState = selector(state); - if (prevState === undefined || !equalityFn(prevState, nextState)) { - callback(nextState); - prevState = nextState; - } - }); - }; - dispose() { flattenDisposables(this._disposables).dispose(); this._callbacks = []; @@ -50,40 +26,6 @@ export class Slot implements Disposable { this._emitting = prevEmitting; } - filter(testFun: (v: T) => boolean): Slot { - const result = new Slot(); - // if the original slot is disposed, dispose the filtered one - this._disposables.push({ - dispose: () => result.dispose(), - }); - - this.on((v: T) => { - if (testFun(v)) { - result.emit(v); - } - }); - - return result; - } - - flatMap(mapper: (v: T) => U[] | U): Slot { - const result = new Slot(); - this._disposables.push({ - dispose: () => result.dispose(), - }); - - this.on((v: T) => { - const data = mapper(v); - if (Array.isArray(data)) { - data.forEach(v => result.emit(v)); - } else { - result.emit(data); - } - }); - - return result; - } - on(callback: (v: T) => unknown): Disposable { if (this._emitting) { const newCallback = [...this._callbacks, callback]; @@ -118,34 +60,19 @@ export class Slot implements Disposable { return disposable; } - pipe(that: Slot): Slot { - this._callbacks.push(v => that.emit(v)); - return this; - } + filter(testFun: (v: T) => boolean): Slot { + const result = new Slot(); + // if the original slot is disposed, dispose the filtered one + this._disposables.push({ + dispose: () => result.dispose(), + }); - toDispose(disposables: Disposable[]): Slot { - disposables.push(this); - return this; - } + this.on((v: T) => { + if (testFun(v)) { + result.emit(v); + } + }); - unshift(callback: (v: T) => unknown): Disposable { - if (this._emitting) { - const newCallback = [callback, ...this._callbacks]; - this._callbacks = newCallback; - } else { - this._callbacks.unshift(callback); - } - return { - dispose: () => { - if (this._emitting) { - this._callbacks = this._callbacks.filter(v => v !== callback); - } else { - const index = this._callbacks.indexOf(callback); - if (index > -1) { - this._callbacks.splice(index, 1); // remove one item only - } - } - }, - }; + return result; } }