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 ​

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 ​

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.