♻️ refactor!: massive refactor

This commit is contained in:
2026-05-31 03:04:30 +07:00
parent c1f12c7201
commit df3c944547
86 changed files with 3691 additions and 1129 deletions
+72 -14
View File
@@ -1,5 +1,16 @@
export { createProject, setCanvasSize } from "./project";
export { createLayer, addLayer, removeLayer, moveLayer, updateLayerTransform, reorderLayer, setLayerEffect, removeLayerEffect, setLayerVisible, setEffectEnabled } from "./layers";
export {
createLayer,
addLayer,
removeLayer,
moveLayer,
updateLayerTransform,
reorderLayer,
setLayerEffect,
removeLayerEffect,
setLayerVisible,
setEffectEnabled,
} from "./layers";
export type { LayerFactoryOptions, TransformPatch } from "./layers";
export { normalizeProject } from "./normalize";
export { serializeProjectFile, parseProjectFile } from "./serialization";
@@ -7,30 +18,77 @@ export { getEffectDefinition, normalizeEffect } from "./effects/registry";
export type { EffectDefinition } from "./effects/registry";
export { faceBlurDefinition } from "./effects/face-blur";
export { getToolDefinition, getAllTools } from "./tools/registry";
export type { ToolDefinition, ToolInteractionMode, EditorToolId } from "./tools/registry";
export type {
ToolDefinition,
ToolInteractionMode,
EditorToolId,
} from "./tools/registry";
export {
HISTORY_LIMIT,
capHistory,
cloneLayer,
cloneProject,
computeHistoryFlags,
deepClone,
makeHistory,
resolveSelectedLayerId,
} from "./history";
export type { HistoryState } from "./history";
import type { Layer, LayerEffect, Project } from "@pien-studio/types";
import { addLayer, moveLayer, removeLayer, reorderLayer, setLayerEffect, updateLayerTransform } from "./layers";
import {
addLayer,
moveLayer,
removeLayer,
reorderLayer,
setLayerEffect,
updateLayerTransform,
} from "./layers";
import { setCanvasSize } from "./project";
export type EditorOperation =
| { type: "addLayer"; layer: Layer }
| { type: "removeLayer"; layerId: string }
| { type: "moveLayer"; layerId: string; delta: { dx: number; dy: number } }
| { type: "updateLayerTransform"; layerId: string; patch: import("./layers").TransformPatch }
| {
type: "updateLayerTransform";
layerId: string;
patch: import("./layers").TransformPatch;
}
| { type: "reorderLayer"; layerId: string; toIndex: number }
| { type: "setLayerEffect"; layerId: string; effect: LayerEffect }
| { type: "setCanvasSize"; width: number; height: number; unit?: "px" | "in" | "cm" };
| {
type: "setCanvasSize";
width: number;
height: number;
unit?: "px" | "in" | "cm";
};
export function applyOperation(project: Project, operation: EditorOperation): Project {
export function applyOperation(
project: Project,
operation: EditorOperation,
): Project {
switch (operation.type) {
case "addLayer": return addLayer(project, operation.layer);
case "removeLayer": return removeLayer(project, operation.layerId);
case "moveLayer": return moveLayer(project, operation.layerId, operation.delta);
case "updateLayerTransform": return updateLayerTransform(project, operation.layerId, operation.patch);
case "reorderLayer": return reorderLayer(project, operation.layerId, operation.toIndex);
case "setLayerEffect": return setLayerEffect(project, operation.layerId, operation.effect);
case "setCanvasSize": return setCanvasSize(project, operation.width, operation.height, operation.unit);
default: return project;
case "addLayer":
return addLayer(project, operation.layer);
case "removeLayer":
return removeLayer(project, operation.layerId);
case "moveLayer":
return moveLayer(project, operation.layerId, operation.delta);
case "updateLayerTransform":
return updateLayerTransform(project, operation.layerId, operation.patch);
case "reorderLayer":
return reorderLayer(project, operation.layerId, operation.toIndex);
case "setLayerEffect":
return setLayerEffect(project, operation.layerId, operation.effect);
case "setCanvasSize":
return setCanvasSize(
project,
operation.width,
operation.height,
operation.unit,
);
default:
return project;
}
}