refactor: moveRegion & add csv loader

This commit is contained in:
hypercross 2026-04-04 17:51:18 +08:00
parent d4562b8534
commit 97ef1df4fb
3 changed files with 9 additions and 26 deletions

View File

@ -117,41 +117,20 @@ export function shuffle<TMeta>(region: Region, parts: Record<string, Part<TMeta>
region.partMap = buildPartMap(region, parts);
}
export function moveToRegion<TMeta>(part: Part<TMeta>, sourceRegion: Region | null, targetRegion: Region, position?: number[]) {
export function moveToRegion<TMeta>(part: Part<TMeta>, 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<TMeta>(parts: Record<string, Part<TMeta>>, 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<TMeta>(part: Part<TMeta>, region: Region) {
region.childIds = region.childIds.filter(id => id !== part.id);
delete region.partMap[part.position.join(',')];
}
part.regionId = targetRegion?.id || '';
}

View File

@ -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';

View File

@ -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,