mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-25 02:13:00 +08:00
feat(editor): add gfx pointer extension (#12006)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced a new pointer graphics module with tools and quick tool integration for edgeless surfaces. - Added a quick tool button for pointer interactions in edgeless mode. - Exposed new extension points for pointer graphics and effects. - **Improvements** - Integrated pointer graphics as a dependency into related packages. - Enhanced toolbar context to support additional surface alignment modes. - Added conditional clipboard configuration registrations for edgeless contexts across multiple block types. - **Removals** - Removed legacy tool and effect definitions and related quick tool exports from edgeless components. - Streamlined extension arrays and removed unused exports for a cleaner codebase. - Deleted obsolete utility functions and component registrations. - **Chores** - Updated workspace and TypeScript project references to include the new pointer graphics module. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { EditPropsStore } from '@blocksuite/affine-shared/services';
|
||||
import {
|
||||
type SurfaceMiddleware,
|
||||
SurfaceMiddlewareBuilder,
|
||||
} from '@blocksuite/std/gfx';
|
||||
|
||||
import { getLastPropsKey } from '../utils';
|
||||
|
||||
export class EditPropsMiddlewareBuilder extends SurfaceMiddlewareBuilder {
|
||||
static override key = 'editProps';
|
||||
|
||||
middleware: SurfaceMiddleware = ctx => {
|
||||
if (ctx.type === 'beforeAdd') {
|
||||
const { type, props } = ctx.payload;
|
||||
const key = getLastPropsKey(type, props);
|
||||
const nProps = key
|
||||
? this.std.get(EditPropsStore).applyLastProps(key, ctx.payload.props)
|
||||
: null;
|
||||
|
||||
ctx.payload.props = {
|
||||
...(nProps ?? props),
|
||||
index: props.index ?? this.gfx.layer.generateIndex(),
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
export * from './clipboard-config';
|
||||
export * from './crud-extension';
|
||||
export * from './edit-props-middleware-builder';
|
||||
export * from './element-renderer';
|
||||
export * from './export-manager';
|
||||
export * from './legacy-slot-extension';
|
||||
|
||||
@@ -9,6 +9,7 @@ import { effects } from './effects';
|
||||
import {
|
||||
EdgelessCRUDExtension,
|
||||
EdgelessLegacySlotExtension,
|
||||
EditPropsMiddlewareBuilder,
|
||||
} from './extensions';
|
||||
import { ExportManagerExtension } from './extensions/export-manager/export-manager';
|
||||
|
||||
@@ -32,6 +33,7 @@ export class SurfaceViewExtension extends ViewExtensionProvider {
|
||||
context.register(
|
||||
BlockViewExtension('affine:surface', literal`affine-surface`)
|
||||
);
|
||||
context.register(EditPropsMiddlewareBuilder);
|
||||
} else {
|
||||
context.register(
|
||||
BlockViewExtension('affine:surface', literal`affine-surface-void`)
|
||||
|
||||
Reference in New Issue
Block a user