Files
AFFiNE-Mirror/blocksuite/playground/apps/_common/helper.ts
Saul-Mirone 2cf9a8f286 refactor: reorganize specs and adapter extensions (#10359)
### TL;DR
Refactored `SpecProvider` singleton access pattern and reorganized adapter/extension code structure.

### What changed?
- Changed `SpecProvider.getInstance()` to `SpecProvider._` for cleaner singleton access
- Moved adapter/extension code from `_common` directory to dedicated `adapters` and `extensions` folders
- Consolidated adapter extensions into a single file
- Removed unused dependencies from package.json
- Deleted unnecessary schema files
- Extracted `MobileSpecsPatches` class into the mobile patching code
- Updated all references to use the new `SpecProvider._` accessor

### How to test?
- Verify all specs are properly registered and accessible via `SpecProvider._`
- Test adapter functionality for HTML, Markdown, Notion HTML and plain text
- Check mobile-specific features and patches work correctly
- Ensure preview functionality works in both page and edgeless modes

### Why make this change?
- Improves code organization by properly separating adapters and extensions
- Simplifies singleton access pattern
- Removes unnecessary dependencies and files
- Makes the codebase more maintainable by consolidating related functionality
2025-02-21 14:25:35 +00:00

24 lines
751 B
TypeScript

import { AffineSchemas, SpecProvider } from '@blocksuite/blocks';
import { Schema } from '@blocksuite/store';
import { TestWorkspace } from '@blocksuite/store/test';
export function createEmptyDoc() {
const schema = new Schema().register(AffineSchemas);
const collection = new TestWorkspace({ schema });
collection.storeExtensions = SpecProvider._.getSpec('store').value;
collection.meta.initialize();
const doc = collection.createDoc();
return {
doc,
init() {
doc.load();
const rootId = doc.addBlock('affine:page', {});
doc.addBlock('affine:surface', {}, rootId);
const noteId = doc.addBlock('affine:note', {}, rootId);
doc.addBlock('affine:paragraph', {}, noteId);
return doc;
},
};
}