diff --git a/packages/devtools-kit/__tests__/component/editor.test.ts b/packages/devtools-kit/__tests__/component/editor.test.ts index 39e045cc2..96a2500d3 100644 --- a/packages/devtools-kit/__tests__/component/editor.test.ts +++ b/packages/devtools-kit/__tests__/component/editor.test.ts @@ -176,5 +176,20 @@ describe('editor: StateEditor.set', () => { stateEditor.set(target, path, '', defaultCallback) expect(target).toEqual(new Map([['bar', 'baz']])) }) + + it('modify nested value in map', () => { + const target = { foo: new Map([['bar', { + baz: 1, + }]]) } + const state = { newKey: '', type: '', value: 2 } + const path = ['foo', 'bar', 'baz'] + const defaultCallback = stateEditor.createDefaultSetCallback(state) + stateEditor.set(target, path, 2, defaultCallback) + expect(target).toEqual({ + foo: new Map([['bar', { + baz: 2, + }]]), + }) + }) }) }) diff --git a/packages/devtools-kit/src/core/component/state/editor.ts b/packages/devtools-kit/src/core/component/state/editor.ts index 97e88d640..759bb2071 100644 --- a/packages/devtools-kit/src/core/component/state/editor.ts +++ b/packages/devtools-kit/src/core/component/state/editor.ts @@ -23,7 +23,7 @@ export class StateEditor { const section = sections.shift()! if (object instanceof Map) object = object.get(section) as Recordable - if (object instanceof Set) + else if (object instanceof Set) object = Array.from(object.values())[section] as Recordable else object = object[section] as Recordable if (this.refEditor.isRef(object))