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:
Saul-Mirone
2025-04-27 04:46:44 +00:00
parent 59d4942d9b
commit 81b439c4e1
49 changed files with 290 additions and 183 deletions

View File

@@ -4,14 +4,39 @@ import {
} from '@blocksuite/affine-ext-loader';
import { effects } from './effects';
import { EmbedFigmaViewExtensions } from './embed-figma-block';
import { EmbedGithubViewExtensions } from './embed-github-block';
import { EmbedHtmlViewExtensions } from './embed-html-block';
import { EmbedIframeViewExtensions } from './embed-iframe-block';
import { EmbedLinkedDocViewExtensions } from './embed-linked-doc-block';
import { EmbedLoomViewExtensions } from './embed-loom-block';
import { EmbedSyncedDocViewExtensions } from './embed-synced-doc-block';
import { EmbedYoutubeViewExtensions } from './embed-youtube-block';
import {
EdgelessClipboardEmbedFigmaConfig,
EmbedFigmaViewExtensions,
} from './embed-figma-block';
import {
EdgelessClipboardEmbedGithubConfig,
EmbedGithubViewExtensions,
} from './embed-github-block';
import {
EdgelessClipboardEmbedHtmlConfig,
EmbedHtmlViewExtensions,
} from './embed-html-block';
import {
EdgelessClipboardEmbedIframeConfig,
EmbedIframeViewExtensions,
} from './embed-iframe-block';
import {
EdgelessClipboardEmbedLinkedDocConfig,
EmbedLinkedDocViewExtensions,
} from './embed-linked-doc-block';
import {
EdgelessClipboardEmbedLoomConfig,
EmbedLoomViewExtensions,
} from './embed-loom-block';
import {
EdgelessClipboardEmbedSyncedDocConfig,
EmbedSyncedDocViewExtensions,
} from './embed-synced-doc-block';
import {
EdgelessClipboardEmbedYoutubeConfig,
EmbedYoutubeViewExtensions,
} from './embed-youtube-block';
export class EmbedViewExtension extends ViewExtensionProvider {
override name = 'affine-embed-block';
@@ -30,5 +55,18 @@ export class EmbedViewExtension extends ViewExtensionProvider {
context.register(EmbedLinkedDocViewExtensions);
context.register(EmbedSyncedDocViewExtensions);
context.register(EmbedIframeViewExtensions);
const isEdgeless = this.isEdgeless(context.scope);
if (isEdgeless) {
context.register([
EdgelessClipboardEmbedFigmaConfig,
EdgelessClipboardEmbedGithubConfig,
EdgelessClipboardEmbedHtmlConfig,
EdgelessClipboardEmbedLoomConfig,
EdgelessClipboardEmbedYoutubeConfig,
EdgelessClipboardEmbedIframeConfig,
EdgelessClipboardEmbedLinkedDocConfig,
EdgelessClipboardEmbedSyncedDocConfig,
]);
}
}
}