From cd2809a6e7c7a79803174cbe28fb0c3e349cba3d Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Tue, 1 Sep 2026 12:45:13 +0300 Subject: [PATCH] fix: persist instance override mutations --- packages/core/src/design-jsx/renderer.ts | 5 +++-- packages/core/src/editor/components/instances.ts | 7 +++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/core/src/design-jsx/renderer.ts b/packages/core/src/design-jsx/renderer.ts index f6fcb667f..70da8ef36 100644 --- a/packages/core/src/design-jsx/renderer.ts +++ b/packages/core/src/design-jsx/renderer.ts @@ -453,7 +453,7 @@ function applyInstanceOverrides( } walk(instance.id) - const overrides = new Map() + let mutated = false for (const [key, value] of entries) { const sep = key.indexOf(':') if (sep === -1) continue @@ -463,8 +463,9 @@ function applyInstanceOverrides( if (!child || !(prop in child)) continue graph.updateNode(child.id, { [prop]: value } as Partial) setInstanceOverride(instance.instanceOverrides, instance.id, child.id, prop, value) + mutated = true } - if (overrides.size > 0) { + if (mutated) { graph.updateNode(instance.id, { instanceOverrides: instance.instanceOverrides }) } } diff --git a/packages/core/src/editor/components/instances.ts b/packages/core/src/editor/components/instances.ts index cd44101bc..40c6c19a9 100644 --- a/packages/core/src/editor/components/instances.ts +++ b/packages/core/src/editor/components/instances.ts @@ -1,3 +1,4 @@ +import { cloneInstanceOverrideState } from '@open-pencil/scene-graph' import type { SceneNode, Vector } from '@open-pencil/scene-graph' import { getAxisAlignedWorldBounds, getWorldMatrix } from '@open-pencil/scene-graph/coordinate' import Matrix from '@open-pencil/scene-graph/matrix' @@ -97,6 +98,7 @@ export function createComponentInstanceActions(ctx: EditorContext) { if (selectedNode?.type !== 'INSTANCE') return const prevComponentId = selectedNode.componentId + const previousOverrides = cloneInstanceOverrideState(selectedNode.instanceOverrides) ctx.graph.detachInstance(selectedNode.id) ctx.setSelectedIds(new Set([selectedNode.id])) @@ -111,10 +113,7 @@ export function createComponentInstanceActions(ctx: EditorContext) { ctx.graph.updateNode(selectedNode.id, { type: 'INSTANCE', componentId: prevComponentId, - instanceOverrides: { - self: new Map(), - descendants: new Map() - } + instanceOverrides: cloneInstanceOverrideState(previousOverrides) }) } })