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
// 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
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
// 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
// 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
ExtensionManager<ViewScope>
Constructors
Methods
get()
get(
scope):ExtensionType[]
Retrieves view extensions and adds self-registration functionality.
Parameters
scope
The scope of extensions to retrieve
Returns
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
// 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
BaseExtensionProvider<ViewScope,Options>
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
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
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
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
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
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
constStoreExtensionManagerIdentifier:ServiceIdentifier<StoreExtensionManager> & <U>(variant) =>ServiceIdentifier<U>
Identifier for the StoreExtensionManager that can be used for dependency injection.
ViewExtensionManagerIdentifier
constViewExtensionManagerIdentifier:ServiceIdentifier<ViewExtensionManager> & <U>(variant) =>ServiceIdentifier<U>
Identifier for the ViewExtensionManager that can be used for dependency injection.