define editor setting schema in `packages/frontend/core/src/modules/editor-settting/schema.ts`
e.g.
```ts
const BSEditorSettingSchema = z.object({
connector: z.object({
stroke: z
.union([
z.string(),
z.object({
dark: z.string(),
light: z.string(),
}),
])
.default('#000000'), // default is necessary
}),
});
```
schema can be defined in a nested way. EditorSetting api is in flat way:
editorSetting api:
```ts
editorSetting.settings$ === {
'connector.stroke': '#000000'
}
editorSetting.set('connector.stroke', '#000')
```
and use `expandFlattenObject` function can restore the flattened structure to a nested structure. nested structure is required by blocksuite
```ts
editorSetting.settings$.map(expandFlattenObject) === {
connector: {
stroke: '#000000'
}
}
```
49 lines
2.2 KiB
TypeScript
49 lines
2.2 KiB
TypeScript
import { configureQuotaModule } from '@affine/core/modules/quota';
|
|
import { configureInfraModules, type Framework } from '@toeverything/infra';
|
|
|
|
import { configureCloudModule } from './cloud';
|
|
import { configureCollectionModule } from './collection';
|
|
import { configureDocLinksModule } from './doc-link';
|
|
import { configureDocsSearchModule } from './docs-search';
|
|
import { configureEditorModule } from './editor';
|
|
import { configureEditorSettingModule } from './editor-settting';
|
|
import { configureExplorerModule } from './explorer';
|
|
import { configureFavoriteModule } from './favorite';
|
|
import { configureFindInPageModule } from './find-in-page';
|
|
import { configureNavigationModule } from './navigation';
|
|
import { configureOrganizeModule } from './organize';
|
|
import { configurePeekViewModule } from './peek-view';
|
|
import { configurePermissionsModule } from './permissions';
|
|
import { configureWorkspacePropertiesModule } from './properties';
|
|
import { configureQuickSearchModule } from './quicksearch';
|
|
import { configureShareDocsModule } from './share-doc';
|
|
import { configureSystemFontFamilyModule } from './system-font-family';
|
|
import { configureTagModule } from './tag';
|
|
import { configureTelemetryModule } from './telemetry';
|
|
import { configureThemeEditorModule } from './theme-editor';
|
|
|
|
export function configureCommonModules(framework: Framework) {
|
|
configureInfraModules(framework);
|
|
configureCollectionModule(framework);
|
|
configureNavigationModule(framework);
|
|
configureTagModule(framework);
|
|
configureWorkspacePropertiesModule(framework);
|
|
configureCloudModule(framework);
|
|
configureQuotaModule(framework);
|
|
configurePermissionsModule(framework);
|
|
configureShareDocsModule(framework);
|
|
configureTelemetryModule(framework);
|
|
configureFindInPageModule(framework);
|
|
configurePeekViewModule(framework);
|
|
configureQuickSearchModule(framework);
|
|
configureDocsSearchModule(framework);
|
|
configureDocLinksModule(framework);
|
|
configureOrganizeModule(framework);
|
|
configureFavoriteModule(framework);
|
|
configureExplorerModule(framework);
|
|
configureThemeEditorModule(framework);
|
|
configureEditorModule(framework);
|
|
configureSystemFontFamilyModule(framework);
|
|
configureEditorSettingModule(framework);
|
|
}
|