From b4770d6ad2e344aeab3bca3b561370a10e5e4ce5 Mon Sep 17 00:00:00 2001 From: Micah Geisel Date: Wed, 26 Feb 2025 15:08:33 -0600 Subject: [PATCH 1/2] failing test to demonstrate issue with outerHTML morphing an IDed node that will get moved. --- test/fidelity.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/fidelity.js b/test/fidelity.js index 438b67f..1c5c1ad 100644 --- a/test/fidelity.js +++ b/test/fidelity.js @@ -77,6 +77,24 @@ describe("Tests to ensure that idiomorph merges properly", function () { ); }); + it("should wrap an IDed node", function () { + getWorkArea().innerHTML = `
`; + let initial = getWorkArea().firstElementChild; + let finalSrc = `

`; + let ret = Idiomorph.morph(initial, finalSrc); + getWorkArea().innerHTML.should.equal(finalSrc); + // ret.map(e=>e.outerHTML).should.eql([finalSrc]); + }); + + it("should wrap an anonymous node", function () { + getWorkArea().innerHTML = `
`; + let initial = getWorkArea().firstElementChild; + let finalSrc = `

`; + let ret = Idiomorph.morph(initial, finalSrc); + getWorkArea().innerHTML.should.equal(finalSrc); + // ret.map(e=>e.outerHTML).should.eql([finalSrc]); + }); + it("should append a node", function () { testFidelity("
", "

hello you

"); }); From 04c1b65d62cf43c63d5f6f6eee35bf515a6891fa Mon Sep 17 00:00:00 2001 From: Micah Geisel Date: Wed, 26 Feb 2025 15:16:50 -0600 Subject: [PATCH 2/2] teach moveBeforeById to consider ctx.target as a potential id match. --- src/idiomorph.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/idiomorph.js b/src/idiomorph.js index 25d0ba7..60d29d1 100644 --- a/src/idiomorph.js +++ b/src/idiomorph.js @@ -548,7 +548,8 @@ var Idiomorph = (function () { const target = /** @type {Element} - will always be found */ ( - ctx.target.querySelector(`[id="${id}"]`) || + (ctx.target.id === id && ctx.target) || + ctx.target.querySelector(`[id="${id}"]`) || ctx.pantry.querySelector(`[id="${id}"]`) ); removeElementFromAncestorsIdMaps(target, ctx);