Implement _.pick to simplify serialization (#763)

Simplify the serialization code, so that we only write each prop once.
This commit is contained in:
Chenlei Hu
2025-03-12 16:08:54 -04:00
committed by GitHub
parent 9dd0ff3eb3
commit 77465113cd
2 changed files with 32 additions and 4 deletions

View File

@@ -1,12 +1,12 @@
import type { CanvasColour, Dictionary, INodeInputSlot, INodeOutputSlot, INodeSlot, ISlotType, IWidgetInputSlot, Point, SharedIntersection } from "./interfaces"
import type { LinkId } from "./LLink"
import type { ISerialisableNodeInput, ISerialisableNodeOutput } from "./types/serialisation"
import type { IWidget } from "./types/widgets"
import { LabelPosition, SlotShape, SlotType } from "./draw"
import { LiteGraph } from "./litegraph"
import { LinkDirection, RenderShape } from "./types/globalEnums"
import { ISerialisableNodeOutput } from "./types/serialisation"
import { ISerialisableNodeInput } from "./types/serialisation"
import { pick } from "./utils/object"
export interface ConnectionColorContext {
default_connection_color: {
@@ -33,8 +33,19 @@ interface IDrawOptions {
type CommonIoSlotProps = SharedIntersection<ISerialisableNodeInput, ISerialisableNodeOutput>
export function shallowCloneCommonProps(slot: CommonIoSlotProps): CommonIoSlotProps {
const { color_off, color_on, dir, label, localized_name, locked, name, nameLocked, removable, shape, type } = slot
return { color_off, color_on, dir, label, localized_name, locked, name, nameLocked, removable, shape, type }
return pick(slot, [
"color_off",
"color_on",
"dir",
"label",
"localized_name",
"locked",
"name",
"nameLocked",
"removable",
"shape",
"type",
])
}
export function inputAsSerialisable(slot: INodeInputSlot): ISerialisableNodeInput {