mirror of
https://github.com/YuzuZensai/Pien-Studio.git
synced 2026-09-02 14:18:35 +00:00
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import type { Project } from "@pien-studio/types";
|
|
|
|
export function hasProjectChanged(left: Project, right: Project): boolean {
|
|
if (left.id !== right.id) return true;
|
|
if (left.title !== right.title) return true;
|
|
if (left.createdAt !== right.createdAt) return true;
|
|
if (left.updatedAt !== right.updatedAt) return true;
|
|
if (left.aspectRatio !== right.aspectRatio) return true;
|
|
if (left.canvas.width !== right.canvas.width || left.canvas.height !== right.canvas.height || left.canvas.unit !== right.canvas.unit) {
|
|
return true;
|
|
}
|
|
if (left.layers.length !== right.layers.length) return true;
|
|
|
|
for (let index = 0; index < left.layers.length; index += 1) {
|
|
const a = left.layers[index];
|
|
const b = right.layers[index];
|
|
if (!a || !b) return true;
|
|
if (
|
|
a.id !== b.id ||
|
|
a.type !== b.type ||
|
|
a.name !== b.name ||
|
|
a.assetId !== b.assetId ||
|
|
a.sourceUri !== b.sourceUri ||
|
|
a.x !== b.x ||
|
|
a.y !== b.y ||
|
|
a.width !== b.width ||
|
|
a.height !== b.height ||
|
|
a.scale !== b.scale ||
|
|
a.rotation !== b.rotation ||
|
|
a.opacity !== b.opacity
|
|
) {
|
|
return true;
|
|
}
|
|
|
|
if (JSON.stringify(a.effects) !== JSON.stringify(b.effects)) return true;
|
|
}
|
|
|
|
return false;
|
|
}
|