activate() resolves true after the currently active children’s CSS and factory
initialization are ready. Calling it again while opening returns the same pending
operation. Closing, suspending, disconnecting or disposing that operation resolves
it false; a late response cannot reopen the container. An active preparation
failure rejects the promise. Calling activate() again retries failed active
factories after their assets are prepared. Always check surface.ready before
revealing the container, including when consuming a previously resolved promise.
The registered container may stay hidden while preparing. This does not activate
closed tabs, collapsed sections or other dormant descendants. An inactive ancestor
outside the registered container still prevents readiness. Closed containers have
no asset demand, while suspended parents retain their current asset references.
For a child rendered elsewhere in the document, pass the parent’s handle explicitly:
dispose() when no longer needed.
Your dialog continues to own its markup, animation, focus management, accessibility,
scroll locking and retry presentation. Closing a surface releases asset ownership;
it does not destroy mounted child factories or unload evaluated JavaScript. Remove
the child’s DOM through its framework when it should be unmounted.