Skip to content

BlockSuite API Documentation / @blocksuite/affine-ext-loader

@blocksuite/affine-ext-loader

Classes

StoreExtensionManager

A specialized extension manager for store-related extensions. Extends the base ExtensionManager to provide store-specific functionality.

This manager is responsible for handling store-related extensions and ensuring proper dependency injection setup for store components.

Example

ts
// Create a store extension manager with providers
const manager = new StoreExtensionManager([MyStoreProvider]);

// Configure provider options
manager.configure(MyStoreProvider, { option1: 'value' });

// Get store extensions
const extensions = manager.get('store');

Extends

  • ExtensionManager<"store">

Constructors

Methods

get()

get(scope): ExtensionType[]

Retrieves store extensions and adds self-registration functionality.

Parameters
scope

"store"

The scope of extensions to retrieve, must be 'store'

Returns

ExtensionType[]

An array of extensions including the self-registration extension

Overrides

ExtensionManager.get


StoreExtensionProvider<Options>

A specialized extension provider for store-related functionality. Extends the base provider with store-specific scope and configuration.

Example

ts
// Create a store provider with custom options
class MyStoreProvider extends StoreExtensionProvider<{ cacheSize: number }> {
  override name = 'MyStoreProvider';

  override schema = z.object({
    cacheSize: z.number().min(0)
  });

  override setup(context: StoreExtensionContext, options?: { cacheSize: number }) {
    super.setup(context, options);
    context.register([Ext1, Ext2, Ext3]);
  }
}

Extends

  • BaseExtensionProvider<"store", Options>

Type Parameters

Options

Options extends object = Empty

The type of configuration options for the store provider

Constructors

Properties

name

name: string = 'StoreExtension'

The name of the store extension provider

Overrides

BaseExtensionProvider.name

Methods


ViewExtensionManager

A specialized extension manager for view-related extensions. Extends the base ExtensionManager to provide view-specific functionality.

This manager is responsible for handling view-related extensions and ensuring proper dependency injection setup for view components.

Example

ts
// Create a view extension manager with providers
const manager = new ViewExtensionManager([MyViewProvider]);

// Configure provider options
manager.configure(MyViewProvider, { option1: 'value' });

// Get view extensions for a specific scope
const pageExtensions = manager.get('page');
const edgelessExtensions = manager.get('edgeless');

Extends

Constructors

Methods

get()

get(scope): ExtensionType[]

Retrieves view extensions and adds self-registration functionality.

Parameters
scope

ViewScope

The scope of extensions to retrieve

Returns

ExtensionType[]

An array of extensions including the self-registration extension

Overrides

ExtensionManager.get


ViewExtensionProvider<Options>

A specialized extension provider for view-related functionality. Extends the base provider with view-specific scope and configuration.

Example

ts
// Create a view provider with custom options
class MyViewProvider extends ViewExtensionProvider<{ theme: string }> {
  override name = 'MyViewProvider';

  override schema = z.object({
    theme: z.enum(['light', 'dark'])
  });

  override setup(context: ViewExtensionContext, options?: { theme: string }) {
    super.setup(context, options);

    context.register([CommonExt]);
    if (context.scope === 'page') {
      context.register([PageExt]);
    } else if (context.scope === 'edgeless') {
      context.register([EdgelessExt]);
    }
    if (options?.theme === 'dark') {
      context.register([DarkModeExt]);
    }
  }

  // Override effect to run one-time initialization logic
  override effect() {
    // This will only run once per provider class
    console.log('Initializing MyViewProvider');
  }
}

Extends

Extended by

Type Parameters

Options

Options extends object = Empty

The type of configuration options for the view provider

Constructors

Properties

name

name: string = 'ViewExtension'

The name of the view extension provider

Overrides

BaseExtensionProvider.name

Methods

effect()

effect(): void

Override this method to implement one-time initialization logic for the provider. This method will be called automatically during setup, but only once per provider class.

Returns

void

Example
ts
override effect() {
  super.effect();
  // Register lit elements
  registerLitElements();
}
isEdgeless()

isEdgeless(scope): scope is "edgeless" | "preview-edgeless" | "mobile-edgeless"

Check if the scope is edgeless

Parameters
scope

ViewScope

The scope to check

Returns

scope is "edgeless" | "preview-edgeless" | "mobile-edgeless"

True if the scope is edgeless, false otherwise

isMobile()

isMobile(scope): scope is "mobile-page" | "mobile-edgeless"

Check if the scope is mobile

Parameters
scope

ViewScope

The scope to check

Returns

scope is "mobile-page" | "mobile-edgeless"

True if the scope is mobile, false otherwise

isPreview()

isPreview(scope): scope is "preview-page" | "preview-edgeless"

Check if the scope is preview

Parameters
scope

ViewScope

The scope to check

Returns

scope is "preview-page" | "preview-edgeless"

True if the scope is preview, false otherwise

setup()

setup(context, options?): void

Sets up the provider with the given context and options. Validates the options against the schema if provided.

Parameters
context

ViewExtensionContext

The context object containing scope and registration function

options?

Options

Returns

void

Overrides

BaseExtensionProvider.setup

Type Aliases

StoreExtensionContext

StoreExtensionContext = Context<"store">

Context type specifically for store-related extensions. Provides type safety for store extension registration and setup.


ViewExtensionContext

ViewExtensionContext = Context<ViewScope>

Context type specifically for view-related extensions. Provides type safety for view extension registration and setup.


ViewScope

ViewScope = "page" | "edgeless" | "preview-page" | "preview-edgeless" | "mobile-page" | "mobile-edgeless"

Available view scopes for view-related extensions. Defines the different types of views where extensions can be applied.

Variables

StoreExtensionManagerIdentifier

const StoreExtensionManagerIdentifier: ServiceIdentifier<StoreExtensionManager> & <U>(variant) => ServiceIdentifier<U>

Identifier for the StoreExtensionManager that can be used for dependency injection.


ViewExtensionManagerIdentifier

const ViewExtensionManagerIdentifier: ServiceIdentifier<ViewExtensionManager> & <U>(variant) => ServiceIdentifier<U>

Identifier for the ViewExtensionManager that can be used for dependency injection.