From ad1d4e734c408eafcc2bb219fecec0c437eab109 Mon Sep 17 00:00:00 2001 From: "Steven R. Loomis" Date: Tue, 6 Jun 2023 18:37:07 -0500 Subject: [PATCH] =?UTF-8?q?feat(common):=20fix=20bug=20in=20build-tran=20?= =?UTF-8?q?=F0=9F=99=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For: #7377 --- .../src/kmx/kmx-plus-builder/build-tran.ts | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/common/web/types/src/kmx/kmx-plus-builder/build-tran.ts b/common/web/types/src/kmx/kmx-plus-builder/build-tran.ts index eaa8fe4b0f..11f819f360 100644 --- a/common/web/types/src/kmx/kmx-plus-builder/build-tran.ts +++ b/common/web/types/src/kmx/kmx-plus-builder/build-tran.ts @@ -57,24 +57,34 @@ export function build_tran(source_tran: Tran | Bksp, sect_strs: BUILDER_STRS, se }; for (let group of source_tran.groups) { - tran.groups.push({ - type: group.type, - count: group.reorders.length + group.transforms.length, - index: tran.groups.length, - }); - for (let transform of group.transforms) { - tran.transforms.push({ - from: build_strs_index(sect_strs, transform.from), - to: build_strs_index(sect_strs, transform.to), - mapFrom: build_strs_index(sect_strs, transform.mapFrom), - mapTo: build_strs_index(sect_strs, transform.mapTo), + if (group.type === constants.tran_group_type_transform) { + tran.groups.push({ + type: group.type, + count: group.transforms.length, + index: tran.transforms.length, // index of first item }); - } - for (let reorder of group.reorders) { - tran.reorders.push({ - elements: build_elem_index(sect_elem, reorder.elements), - before: build_elem_index(sect_elem, reorder.before), + for (let transform of group.transforms) { + tran.transforms.push({ + from: build_strs_index(sect_strs, transform.from), + to: build_strs_index(sect_strs, transform.to), + mapFrom: build_strs_index(sect_strs, transform.mapFrom), + mapTo: build_strs_index(sect_strs, transform.mapTo), + }); + } + } else if (group.type === constants.tran_group_type_reorder) { + tran.groups.push({ + type: group.type, + count: group.reorders.length, + index: tran.reorders.length, // index of first item }); + for (let reorder of group.reorders) { + tran.reorders.push({ + elements: build_elem_index(sect_elem, reorder.elements), + before: build_elem_index(sect_elem, reorder.before), + }); + } + } else { + throw new Error(`Internal error: at transformGroup #${tran.groups.length + 1}: Unexpected transformGroup type ${group.type}`); } } // now set the sizes