From a23c75531a755b9b337bc095c95a384cc780ec39 Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Sun, 17 May 2026 15:48:20 +0300 Subject: [PATCH] refactor(canvas): align overlay file layout --- lint/plugin.js | 12 ------------ .../{selection-labels.ts => labels/selection.ts} | 2 +- .../src/canvas/{ai-overlays.ts => overlays/ai.ts} | 4 ++-- packages/core/src/canvas/overlays/index.ts | 2 +- packages/core/src/canvas/renderer/methods.ts | 2 +- 5 files changed, 5 insertions(+), 17 deletions(-) rename packages/core/src/canvas/{selection-labels.ts => labels/selection.ts} (98%) rename packages/core/src/canvas/{ai-overlays.ts => overlays/ai.ts} (89%) diff --git a/lint/plugin.js b/lint/plugin.js index f4d2fa44b..d2e43fe62 100644 --- a/lint/plugin.js +++ b/lint/plugin.js @@ -1,14 +1,9 @@ import { existsSync } from 'node:fs' -import path from 'node:path' function normalizedFilename(context) { return (context.filename ?? context.getFilename?.() ?? '').replace(/\\/g, '/') } -function relativeFromRepo(file) { - return path.relative(process.cwd(), file).replace(/\\/g, '/') -} - function importSource(node) { return typeof node.source?.value === 'string' ? node.source.value : null } @@ -1495,11 +1490,6 @@ const noDirectOpenPencilWindowInternals = { } } -const SIBLING_DOMAIN_FILENAME_ALLOWLIST = new Set([ - 'packages/core/src/canvas/ai-overlays.ts', - 'packages/core/src/canvas/selection-labels.ts' -]) - const noTopLevelPrefixedTestFiles = createProgramFilenameRule({ description: 'Disallow top-level test files that encode domains as filename prefixes', check(file) { @@ -1519,8 +1509,6 @@ const noSiblingDomainPrefixedFiles = createProgramFilenameRule({ const parts = name.split('-') if (parts.length < 2) return false - if (SIBLING_DOMAIN_FILENAME_ALLOWLIST.has(relativeFromRepo(file))) return false - const prefix = parts[0] const suffix = parts.at(-1) const domain = existsSync(`${dir}${prefix}`) diff --git a/packages/core/src/canvas/selection-labels.ts b/packages/core/src/canvas/labels/selection.ts similarity index 98% rename from packages/core/src/canvas/selection-labels.ts rename to packages/core/src/canvas/labels/selection.ts index e9cc8c47c..85978c280 100644 --- a/packages/core/src/canvas/selection-labels.ts +++ b/packages/core/src/canvas/labels/selection.ts @@ -12,7 +12,7 @@ import { import { rotatedCorners } from '#core/geometry' import type { SceneNode, SceneGraph } from '#core/scene-graph' -import type { SkiaRenderer, RenderOverlays } from './renderer' +import type { SkiaRenderer, RenderOverlays } from '#core/canvas/renderer' function getOverlayRotation(node: SceneNode, overlays?: RenderOverlays): number { return overlays?.rotationPreview?.nodeId === node.id diff --git a/packages/core/src/canvas/ai-overlays.ts b/packages/core/src/canvas/overlays/ai.ts similarity index 89% rename from packages/core/src/canvas/ai-overlays.ts rename to packages/core/src/canvas/overlays/ai.ts index 6624bf968..106c6754e 100644 --- a/packages/core/src/canvas/ai-overlays.ts +++ b/packages/core/src/canvas/overlays/ai.ts @@ -8,8 +8,8 @@ import { } from '#core/constants' import type { SceneGraph } from '#core/scene-graph' -import { drawNodeHighlightRect } from './highlight-rect' -import type { SkiaRenderer } from './renderer' +import { drawNodeHighlightRect } from '#core/canvas/highlight-rect' +import type { SkiaRenderer } from '#core/canvas/renderer' export function drawAiOverlays(r: SkiaRenderer, canvas: Canvas, graph: SceneGraph): void { const now = performance.now() diff --git a/packages/core/src/canvas/overlays/index.ts b/packages/core/src/canvas/overlays/index.ts index 81dd383fa..857dbedee 100644 --- a/packages/core/src/canvas/overlays/index.ts +++ b/packages/core/src/canvas/overlays/index.ts @@ -12,6 +12,6 @@ export { export { drawAutoLayoutHover } from './auto-layout-hover' export { drawFlashes, drawLayoutInsertIndicator, drawMarquee, drawSnapGuides } from './feedback' export { drawTextEditOverlay } from './text-edit' -export { drawSelectionLabels } from '#core/canvas/selection-labels' +export { drawSelectionLabels } from '#core/canvas/labels/selection' export { drawPenOverlay, drawRemoteCursors } from '#core/canvas/pen-overlay' export { drawNodeEditOverlay } from '#core/canvas/node-edit-overlay' diff --git a/packages/core/src/canvas/renderer/methods.ts b/packages/core/src/canvas/renderer/methods.ts index 5c2d58469..95decd9b0 100644 --- a/packages/core/src/canvas/renderer/methods.ts +++ b/packages/core/src/canvas/renderer/methods.ts @@ -1,6 +1,6 @@ import type { ImageFilter, MaskFilter, Canvas, Paint, Path } from 'canvaskit-wasm' -import * as AiOverlays from '#core/canvas/ai-overlays' +import * as AiOverlays from '#core/canvas/overlays/ai' import * as Effects from '#core/canvas/effects' import * as Fills from '#core/canvas/fills' import * as Labels from '#core/canvas/labels/draw'