From 9cf3423b5ec83a82ea2910f4235879e0dd53c8bd Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Wed, 20 May 2026 16:05:54 +0400 Subject: [PATCH] Refactor CommandCanvasClear --- packages/core/src/commands/registry.ts | 4 +++- packages/core/src/commands/view/CanvasClear.ts | 15 ++++++++++----- .../core/test/specs/commands/view/CanvasClear.ts | 16 ++++++++++++++++ 3 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 packages/core/test/specs/commands/view/CanvasClear.ts diff --git a/packages/core/src/commands/registry.ts b/packages/core/src/commands/registry.ts index 42d1e4d51..2b631d83a 100644 --- a/packages/core/src/commands/registry.ts +++ b/packages/core/src/commands/registry.ts @@ -12,6 +12,7 @@ import type { ResizeCommandRegistryRun, ResizeCommandRegistryStop } from './view import type { CopyComponentCommandRegistryRun } from './view/CopyComponent'; import type { PasteComponentCommandRegistryRun } from './view/PasteComponent'; import type { CanvasMoveCommandRegistryRun, CanvasMoveCommandRegistryStop } from './view/CanvasMove'; +import type { CanvasClearCommandRegistryRun } from './view/CanvasClear'; type CommandRegistryHandler = (...args: any[]) => any; type CommandRegistryEntry = TId extends keyof TRegistry @@ -26,7 +27,8 @@ export interface CommandRegistryRun ResizeCommandRegistryRun, CopyComponentCommandRegistryRun, PasteComponentCommandRegistryRun, - CanvasMoveCommandRegistryRun {} + CanvasMoveCommandRegistryRun, + CanvasClearCommandRegistryRun {} export interface CommandRegistryStop extends FullscreenCommandRegistryStop, diff --git a/packages/core/src/commands/view/CanvasClear.ts b/packages/core/src/commands/view/CanvasClear.ts index e84aefc56..340129dde 100644 --- a/packages/core/src/commands/view/CanvasClear.ts +++ b/packages/core/src/commands/view/CanvasClear.ts @@ -1,8 +1,13 @@ -import { CommandObject } from './CommandAbstract'; +import type { CommandPublicFnFromHandler } from '../registryHelpers'; +import CommandAbstract from './CommandAbstract'; -export default { - run(ed) { +export interface CanvasClearCommandRegistryRun { + 'core:canvas-clear': CommandPublicFnFromHandler; +} + +export default class CommandCanvasClear extends CommandAbstract { + run(ed: any) { ed.Components.clear(); ed.Css.clear(); - }, -} as CommandObject; + } +} diff --git a/packages/core/test/specs/commands/view/CanvasClear.ts b/packages/core/test/specs/commands/view/CanvasClear.ts new file mode 100644 index 000000000..572943143 --- /dev/null +++ b/packages/core/test/specs/commands/view/CanvasClear.ts @@ -0,0 +1,16 @@ +import CanvasClear from '../../../../src/commands/view/CanvasClear'; + +describe('CanvasClear command', () => { + test('should clear components and css', () => { + const command = new CanvasClear({}); + const editor = { + Components: { clear: jest.fn() }, + Css: { clear: jest.fn() }, + }; + + command.run(editor); + + expect(editor.Components.clear).toHaveBeenCalledTimes(1); + expect(editor.Css.clear).toHaveBeenCalledTimes(1); + }); +});