feat(editor): bookmark and attachment extension (#11824)

Closes: BS-3188
Closes: BS-3189
This commit is contained in:
Saul-Mirone
2025-04-21 04:27:18 +00:00
parent 70ddae15ef
commit a6d0894ce1
13 changed files with 247 additions and 3 deletions

View File

@@ -78,6 +78,14 @@ class MyViewProvider extends ViewExtensionProvider<{ theme: string }> {
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');
// Register lit elements
this.registerLitElements();
}
}
// Create and use the view extension manager
@@ -89,6 +97,25 @@ const pageExtensions = manager.get('page');
const edgelessExtensions = manager.get('edgeless');
```
### One-time Initialization with Effect
View extensions support one-time initialization through the `effect` method. This method is called automatically during setup, but only once per provider class. It's useful for:
- Initializing global state
- Registering lit elements
- Setting up shared resources
```typescript
class MyViewProvider extends ViewExtensionProvider {
override effect() {
// This will only run once, even if multiple instances are created
initializeGlobalState();
registerLitElements();
setupGlobalEventListeners();
}
}
```
### Available View Scopes
The view extension system supports the following scopes: