refactor: 背景图层接进主线

- 预设底纹统一走 sources/geometry 的 GEOMETRY_PRESETS(16 条),
  BackgroundMenu 不再自带一份 12 条的定义。
- 删掉 SourcePanel.vue(内容已搬进 BackgroundMenu),连带清掉 unsplash 里
  只为它保留的 legacy 函数面和 index 的对应出口。
- PhotoProviderError 从 unsplash.ts 挪到独立的 errors.ts。原来放在叶子模块里
  是为了绕开和 providers.ts 的循环依赖,独立文件同样绕得开而且不别扭。
- 背景改成和普通图层一样可点选可拖动:用户对背景的核心需求是「调整/缩放/裁剪
  一下」,不可点选就没法在画布上取景;取消选中点画板外的灰底即可。
- useLayers 把背景钉在最底:它拖不上去,别的图层也压不到它下面。
This commit is contained in:
2026-09-05 18:28:58 +08:00
parent e86b1c7f6e
commit 9b82cdeb0c
10 changed files with 51 additions and 772 deletions
+2 -2
View File
@@ -5,14 +5,14 @@ import type {
PhotoProviderStatus,
StockPhoto,
} from "../types";
import { PhotoProviderError } from "./unsplash";
import { PhotoProviderError } from "./errors";
/**
* Pexels 搜索。与 unsplash.ts 一样归一到 `PhotoProvider` 接口。
*
* - API Key 从 `import.meta.env.VITE_PEXELS_KEY` 读(请求头 `Authorization: <key>`,
* 没有 "Bearer " 前缀;Unsplash 才是 `Client-ID` 前缀)。
* - 共享错误类 `PhotoProviderError` 定义在 unsplash.ts 那个不依赖兄弟模块的叶子里,
* - 共享错误类 `PhotoProviderError` 在 `errors.ts`(不依赖任何兄弟模块的叶子),
* 从那里 import,避免和 providers.ts 的注册表互相引成环。
* - **没配 key 时不崩**:静默处于 "missing" 态;`search()` 抛 `PhotoProviderError`。
* - 速率配额比 Unsplash demo key 高得多(200/时 vs 50/时),dev 期主用这家,