chore: merge blocksuite source code (#9213)

This commit is contained in:
Mirone
2024-12-20 15:38:06 +08:00
committed by GitHub
parent 2c9ef916f4
commit 30200ff86d
2031 changed files with 238888 additions and 229 deletions
@@ -0,0 +1,48 @@
import type { EventOptions, UIEventHandler } from '../event/index.js';
import { KeymapIdentifier } from '../identifier.js';
import type { BlockStdScope } from '../scope/index.js';
import type { ExtensionType } from './extension.js';
let id = 1;
/**
* Create a keymap extension.
*
* @param keymapFactory
* Create keymap of the extension.
* It should return an object with `keymap` and `options`.
*
* `keymap` is a record of keymap.
*
* @param options
* `options` is an optional object that restricts the event to be handled.
*
* @example
* ```ts
* import { KeymapExtension } from '@blocksuite/block-std';
*
* const MyKeymapExtension = KeymapExtension(std => {
* return {
* keymap: {
* 'mod-a': SelectAll
* }
* options: {
* flavour: 'affine:paragraph'
* }
* }
* });
* ```
*/
export function KeymapExtension(
keymapFactory: (std: BlockStdScope) => Record<string, UIEventHandler>,
options?: EventOptions
): ExtensionType {
return {
setup: di => {
di.addImpl(KeymapIdentifier(`Keymap-${id++}`), {
getter: keymapFactory,
options,
});
},
};
}