Fix island state preservation: revert force-dispose to dispose
The ocaml branch introduced force-dispose-islands-in for outerHTML swaps, which destroyed hydrated islands (including their live signals). This broke the core hypermedia+reactive pattern: the header island's colour state was lost on navigation, and lakes weren't being morph-updated. Reverted to production behaviour: dispose-islands-in skips hydrated islands. The morph algorithm then preserves them (matching by data-sx-island name) and only morphs their lake content. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
// =========================================================================
|
||||
|
||||
var NIL = Object.freeze({ _nil: true, toString: function() { return "nil"; } });
|
||||
var SX_VERSION = "2026-03-23T16:18:55Z";
|
||||
var SX_VERSION = "2026-03-23T17:58:42Z";
|
||||
|
||||
function isNil(x) { return x === NIL || x === null || x === undefined; }
|
||||
function isSxTruthy(x) { return x !== false && !isNil(x); }
|
||||
@@ -4039,7 +4039,7 @@ return processElements(t); });
|
||||
return (function() {
|
||||
var selectSel = domGetAttr(el, "sx-select");
|
||||
var content = (isSxTruthy(selectSel) ? selectFromContainer(container, selectSel) : childrenToFragment(container));
|
||||
(isSxTruthy((swapStyle == "outerHTML")) ? forceDisposeIslandsIn(target) : disposeIslandsIn(target));
|
||||
disposeIslandsIn(target);
|
||||
return withTransition(useTransition, function() { swapDomNodes(target, content, swapStyle);
|
||||
return postSwap(target); });
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user