Files
lemonspace_app/lib/canvas-node-favorite.ts

37 lines
877 B
TypeScript

function isRecord(value: unknown): value is Record<string, unknown> {
return typeof value === "object" && value !== null && !Array.isArray(value);
}
function toRecord(value: unknown): Record<string, unknown> {
return isRecord(value) ? value : {};
}
export function readNodeFavorite(data: unknown): boolean {
const source = toRecord(data);
return source.isFavorite === true;
}
export function setNodeFavorite(
nextValue: boolean,
currentData: unknown,
): Record<string, unknown> {
const source = toRecord(currentData);
if (nextValue) {
return {
...source,
isFavorite: true,
};
}
const { isFavorite: _isFavorite, ...rest } = source;
return rest;
}
export function preserveNodeFavorite(
nextData: unknown,
previousData: unknown,
): Record<string, unknown> {
return setNodeFavorite(readNodeFavorite(previousData), nextData);
}