mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 12:28:42 +00:00
chore: bump bs to lts (#8147)
This commit is contained in:
@@ -1,29 +1,11 @@
|
||||
import {
|
||||
BlockFlavourIdentifier,
|
||||
BlockServiceIdentifier,
|
||||
BlockViewIdentifier,
|
||||
type ExtensionType,
|
||||
StdIdentifier,
|
||||
} from '@blocksuite/block-std';
|
||||
import { PageEditorBlockSpecs, PageRootService } from '@blocksuite/blocks';
|
||||
import { BlockViewIdentifier, type ExtensionType } from '@blocksuite/block-std';
|
||||
import { PageEditorBlockSpecs } from '@blocksuite/blocks';
|
||||
import { literal } from 'lit/static-html.js';
|
||||
|
||||
/**
|
||||
* Custom PageRootService that does not load fonts
|
||||
*/
|
||||
class CustomPageRootService extends PageRootService {
|
||||
override loadFonts() {}
|
||||
}
|
||||
|
||||
export const CustomPageEditorBlockSpecs: ExtensionType[] = [
|
||||
...PageEditorBlockSpecs,
|
||||
{
|
||||
setup: di => {
|
||||
di.override(
|
||||
BlockServiceIdentifier('affine:page'),
|
||||
CustomPageRootService,
|
||||
[StdIdentifier, BlockFlavourIdentifier('affine:page')]
|
||||
);
|
||||
di.override(
|
||||
BlockViewIdentifier('affine:page'),
|
||||
() => literal`affine-page-root`
|
||||
|
||||
@@ -4,24 +4,17 @@ import {
|
||||
} from '@affine/core/blocksuite/presets/ai';
|
||||
import { mixpanel } from '@affine/core/mixpanel';
|
||||
import { EditorSettingService } from '@affine/core/modules/editor-settting';
|
||||
import { AffineCanvasTextFonts } from '@blocksuite/affine-block-surface';
|
||||
import { ConfigExtension, type ExtensionType } from '@blocksuite/block-std';
|
||||
import {
|
||||
BlockFlavourIdentifier,
|
||||
BlockServiceIdentifier,
|
||||
ConfigExtension,
|
||||
type ExtensionType,
|
||||
StdIdentifier,
|
||||
} from '@blocksuite/block-std';
|
||||
import {
|
||||
type RootService,
|
||||
type TelemetryEventMap,
|
||||
TelemetryProvider,
|
||||
AffineCanvasTextFonts,
|
||||
EdgelessRootBlockSpec,
|
||||
FontLoaderService,
|
||||
PageRootBlockSpec,
|
||||
} from '@blocksuite/blocks';
|
||||
import {
|
||||
EdgelessRootBlockSpec,
|
||||
EdgelessRootService,
|
||||
PageRootBlockSpec,
|
||||
PageRootService,
|
||||
FontConfigExtension,
|
||||
type TelemetryEventMap,
|
||||
TelemetryProvider,
|
||||
} from '@blocksuite/blocks';
|
||||
import { type FrameworkProvider } from '@toeverything/infra';
|
||||
|
||||
@@ -29,61 +22,52 @@ import { createDatabaseOptionsConfig } from './database-block';
|
||||
import { createLinkedWidgetConfig } from './widgets/linked';
|
||||
import { createToolbarMoreMenuConfig } from './widgets/toolbar';
|
||||
|
||||
function customLoadFonts(service: RootService): void {
|
||||
if (runtimeConfig.isSelfHosted) {
|
||||
const fonts = AffineCanvasTextFonts.map(font => ({
|
||||
...font,
|
||||
// self-hosted fonts are served from /assets
|
||||
url: '/assets/' + new URL(font.url).pathname.split('/').pop(),
|
||||
}));
|
||||
service.fontLoader.load(fonts);
|
||||
} else {
|
||||
service.fontLoader.load(AffineCanvasTextFonts);
|
||||
}
|
||||
function getFontConfigExtension() {
|
||||
return FontConfigExtension(
|
||||
runtimeConfig.isSelfHosted
|
||||
? AffineCanvasTextFonts.map(font => ({
|
||||
...font,
|
||||
// self-hosted fonts are served from /assets
|
||||
url: '/assets/' + new URL(font.url).pathname.split('/').pop(),
|
||||
}))
|
||||
: AffineCanvasTextFonts
|
||||
);
|
||||
}
|
||||
|
||||
// TODO: make load fonts and telemetry service as BS extension
|
||||
function withAffineRootService(Service: typeof PageRootService) {
|
||||
return class extends Service {
|
||||
override loadFonts(): void {
|
||||
customLoadFonts(this);
|
||||
}
|
||||
function getTelemetryExtension(): ExtensionType {
|
||||
return {
|
||||
setup: di => {
|
||||
di.addImpl(TelemetryProvider, () => ({
|
||||
track: <T extends keyof TelemetryEventMap>(
|
||||
eventName: T,
|
||||
props: TelemetryEventMap[T]
|
||||
) => {
|
||||
mixpanel.track(eventName as string, props as Record<string, unknown>);
|
||||
},
|
||||
}));
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
function getEditorConfigExtension(framework: FrameworkProvider) {
|
||||
const editorSettingService = framework.get(EditorSettingService);
|
||||
return ConfigExtension('affine:page', {
|
||||
linkedWidget: createLinkedWidgetConfig(framework),
|
||||
editorSetting: editorSettingService.editorSetting.settingSignal,
|
||||
toolbarMoreMenu: createToolbarMoreMenuConfig(framework),
|
||||
databaseOptions: createDatabaseOptionsConfig(framework),
|
||||
});
|
||||
}
|
||||
|
||||
export function createPageRootBlockSpec(
|
||||
framework: FrameworkProvider,
|
||||
enableAI: boolean
|
||||
): ExtensionType[] {
|
||||
const editorSettingService = framework.get(EditorSettingService);
|
||||
return [
|
||||
...(enableAI ? AIPageRootBlockSpec : PageRootBlockSpec),
|
||||
{
|
||||
setup: di => {
|
||||
di.override(
|
||||
BlockServiceIdentifier('affine:page'),
|
||||
withAffineRootService(PageRootService),
|
||||
[StdIdentifier, BlockFlavourIdentifier('affine:page')]
|
||||
);
|
||||
di.addImpl(TelemetryProvider, () => ({
|
||||
track: <T extends keyof TelemetryEventMap>(
|
||||
eventName: T,
|
||||
props: TelemetryEventMap[T]
|
||||
) => {
|
||||
mixpanel.track(
|
||||
eventName as string,
|
||||
props as Record<string, unknown>
|
||||
);
|
||||
},
|
||||
}));
|
||||
},
|
||||
},
|
||||
ConfigExtension('affine:page', {
|
||||
linkedWidget: createLinkedWidgetConfig(framework),
|
||||
editorSetting: editorSettingService.editorSetting.settingSignal,
|
||||
toolbarMoreMenu: createToolbarMoreMenuConfig(framework),
|
||||
databaseOptions: createDatabaseOptionsConfig(framework),
|
||||
}),
|
||||
FontLoaderService,
|
||||
getTelemetryExtension(),
|
||||
getEditorConfigExtension(framework),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -91,23 +75,11 @@ export function createEdgelessRootBlockSpec(
|
||||
framework: FrameworkProvider,
|
||||
enableAI: boolean
|
||||
): ExtensionType[] {
|
||||
const editorSettingService = framework.get(EditorSettingService);
|
||||
return [
|
||||
...(enableAI ? AIEdgelessRootBlockSpec : EdgelessRootBlockSpec),
|
||||
{
|
||||
setup: di => {
|
||||
di.override(
|
||||
BlockServiceIdentifier('affine:page'),
|
||||
withAffineRootService(EdgelessRootService as never),
|
||||
[StdIdentifier, BlockFlavourIdentifier('affine:page')]
|
||||
);
|
||||
},
|
||||
},
|
||||
ConfigExtension('affine:page', {
|
||||
linkedWidget: createLinkedWidgetConfig(framework),
|
||||
editorSetting: editorSettingService.editorSetting.settingSignal,
|
||||
toolbarMoreMenu: createToolbarMoreMenuConfig(framework),
|
||||
databaseOptions: createDatabaseOptionsConfig(framework),
|
||||
}),
|
||||
FontLoaderService,
|
||||
getFontConfigExtension(),
|
||||
getTelemetryExtension(),
|
||||
getEditorConfigExtension(framework),
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user