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

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

No files matched your search

+27
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: