From 97ef1df4fb6e282ed374df3405508a6694f45aba Mon Sep 17 00:00:00 2001 From: hypercross Date: Sat, 4 Apr 2026 17:51:18 +0800 Subject: [PATCH] refactor: moveRegion & add csv loader --- src/core/region.ts | 29 ++++------------------------- src/index.ts | 2 +- vitest.config.ts | 4 ++++ 3 files changed, 9 insertions(+), 26 deletions(-) diff --git a/src/core/region.ts b/src/core/region.ts index 5ca6cdc..e7fbdd6 100644 --- a/src/core/region.ts +++ b/src/core/region.ts @@ -117,41 +117,20 @@ export function shuffle(region: Region, parts: Record region.partMap = buildPartMap(region, parts); } -export function moveToRegion(part: Part, sourceRegion: Region | null, targetRegion: Region, position?: number[]) { +export function moveToRegion(part: Part, sourceRegion: Region | null, targetRegion: Region | null, position?: number[]) { if (sourceRegion && part.regionId === sourceRegion.id) { sourceRegion.childIds = sourceRegion.childIds.filter(id => id !== part.id); delete sourceRegion.partMap[part.position.join(',')]; } - targetRegion.childIds.push(part.id); if (position) { part.position = position; } - targetRegion.partMap[part.position.join(',')] = part.id; - - part.regionId = targetRegion.id; -} - -export function moveToRegionAll(parts: Record>, sourceRegion: Region | null, targetRegion: Region, positions?: number[][]) { - const partIds = Object.keys(parts); - for (let i = 0; i < partIds.length; i++) { - const part = parts[partIds[i]]; - if (sourceRegion && part.regionId === sourceRegion.id) { - sourceRegion.childIds = sourceRegion.childIds.filter(id => id !== part.id); - delete sourceRegion.partMap[part.position.join(',')]; - } + if(targetRegion){ targetRegion.childIds.push(part.id); - if (positions && positions[i]) { - part.position = positions[i]; - } targetRegion.partMap[part.position.join(',')] = part.id; - - part.regionId = targetRegion.id; } -} -export function removeFromRegion(part: Part, region: Region) { - region.childIds = region.childIds.filter(id => id !== part.id); - delete region.partMap[part.position.join(',')]; -} + part.regionId = targetRegion?.id || ''; +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 8214d67..f7b2499 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,7 +17,7 @@ export type { PartTemplate, PartPool } from './core/part-factory'; export { createPart, createParts, createPartPool, mergePartPools } from './core/part-factory'; export type { Region, RegionAxis } from './core/region'; -export { createRegion, applyAlign, shuffle, moveToRegion, moveToRegionAll, removeFromRegion } from './core/region'; +export { createRegion, applyAlign, shuffle, moveToRegion, moveToRegionAll } from './core/region'; // Utils export type { Command, CommandResult, CommandSchema, CommandParamSchema, CommandOptionSchema, CommandFlagSchema } from './utils/command'; diff --git a/vitest.config.ts b/vitest.config.ts index e6f0b12..d2f6efb 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,4 +1,5 @@ import { defineConfig } from 'vitest/config'; +import {csvLoader} from 'inline-schema/csv-loader/rollup'; export default defineConfig({ test: { @@ -6,6 +7,9 @@ export default defineConfig({ environment: 'node', include: ['tests/**/*.test.ts'], }, + plugins: [csvLoader({ + writeToDisk: true + })], resolve: { alias: { '@/': new URL('./src/', import.meta.url).pathname,