refactor(editor): add native clipboard extension (#9502)

Closes: [BS-2239](https://linear.app/affine-design/issue/BS-2239/不应该通过window注入affine的api)
This commit is contained in:
fundon
2025-01-06 15:36:43 +00:00
parent f778d1a28a
commit 69e73af2a8
9 changed files with 117 additions and 36 deletions

View File

@@ -6,6 +6,7 @@ export * from './editor-setting-service';
export * from './embed-option-service';
export * from './font-loader';
export * from './generate-url-service';
export * from './native-clipboard-service';
export * from './notification-service';
export * from './page-viewport-service';
export * from './parse-url-service';

View File

@@ -0,0 +1,23 @@
import { createIdentifier } from '@blocksuite/global/di';
import type { ExtensionType } from '@blocksuite/store';
/**
* Copies the image as PNG in Electron.
*/
export interface NativeClipboardService {
copyAsPNG(arrayBuffer: ArrayBuffer): Promise<boolean>;
}
export const NativeClipboardProvider = createIdentifier<NativeClipboardService>(
'NativeClipboardService'
);
export function NativeClipboardExtension(
nativeClipboardProvider: NativeClipboardService
): ExtensionType {
return {
setup: di => {
di.addImpl(NativeClipboardProvider, nativeClipboardProvider);
},
};
}