From 5491f83268d78c593b5ea5fe6facf76a8765ccb2 Mon Sep 17 00:00:00 2001 From: Thomas Bouffard <27200110+tbouffard@users.noreply.github.com> Date: Fri, 3 Jan 2025 11:19:04 +0100 Subject: [PATCH] fix: ensure that codecs for base JS elements are registered Previously, codecs for Object and Array weren't registered when calling `registerEditorCodecs`. --- packages/core/src/serialization/register.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/core/src/serialization/register.ts b/packages/core/src/serialization/register.ts index d1f1c423f4..6f53fd9c51 100644 --- a/packages/core/src/serialization/register.ts +++ b/packages/core/src/serialization/register.ts @@ -42,6 +42,16 @@ import StyleChange from '../view/undoable_changes/StyleChange'; import ValueChange from '../view/undoable_changes/ValueChange'; import VisibleChange from '../view/undoable_changes/VisibleChange'; +let isBaseCodecsRegistered = false; +const registerBaseCodecs = (force = false) => { + if (!isBaseCodecsRegistered || force) { + CodecRegistry.register(new ObjectCodec({})); // Object + CodecRegistry.register(new ObjectCodec([])); // Array + + isBaseCodecsRegistered = true; + } +}; + const registerGenericChangeCodecs = () => { const __dummy: any = undefined; CodecRegistry.register( @@ -88,8 +98,7 @@ export const registerModelCodecs = (force = false) => { // Codecs are currently only registered automatically during encode/export CodecRegistry.register(createObjectCodec(new Geometry(), 'Geometry')); CodecRegistry.register(createObjectCodec(new Point(), 'Point')); - CodecRegistry.register(new ObjectCodec({})); // Object - CodecRegistry.register(new ObjectCodec([])); // Array + registerBaseCodecs(force); // mxGraph support CodecRegistry.addAlias('mxGraphModel', 'GraphDataModel'); @@ -136,6 +145,8 @@ let isEditorCodecsRegistered = false; */ export const registerEditorCodecs = (force = false) => { if (!isEditorCodecsRegistered || force) { + registerBaseCodecs(force); + CodecRegistry.register(new EditorCodec()); CodecRegistry.register(new EditorKeyHandlerCodec()); CodecRegistry.register(new EditorPopupMenuCodec());