RxJS stream that fires whenever a slot registers or deregisters.
Slot host calls this on init. Idempotent — safe if invoked twice.
Resolve a preferred slot to the slot that should ACTUALLY render the panel. Returns the preferred slot if it's present; otherwise walks forward in the chain to find the next existing slot.
Returns null only in the (impossible) case where no slot at all is
present — the container guarantees after-everything exists, so this
should never happen in practice.
Per-form coordinator that tracks which slot positions are physically present in the current form's DOM. Provided at the
<mj-record-form-container>level (one instance per form) so descendant slot hosts can register themselves and compute the fallback chain.The container template guarantees an
after-everythingslot host at the very bottom of the form body — so panels whose preferred slot is missing always have a final landing spot. Pre-CodeGen-regen forms still display every panel; post-regen forms display them at the better position.