mirror of
https://github.com/YuzuZensai/Pien-Studio.git
synced 2026-09-02 14:18:35 +00:00
♻️ refactor!: massive refactor
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user