@@ -55,7 +55,7 @@ const createIframeShellDocument = ({ channelId, parentOrigin, importMap }) => {
5555 const __knightedState = {
5656 entrySpecifier: '',
5757 reactRoot: null,
58- renderedNode: null ,
58+ renderedNodes: [] ,
5959 }
6060
6161 const __knightedRuntimeErrorFingerprints = new Set()
@@ -201,9 +201,13 @@ const createIframeShellDocument = ({ channelId, parentOrigin, importMap }) => {
201201 __knightedState.reactRoot = null
202202 }
203203
204- if (__knightedState.renderedNode instanceof Node) {
205- __knightedState.renderedNode.remove()
206- __knightedState.renderedNode = null
204+ if (Array.isArray(__knightedState.renderedNodes)) {
205+ for (const node of __knightedState.renderedNodes) {
206+ if (node instanceof Node && node.parentNode) {
207+ node.parentNode.removeChild(node)
208+ }
209+ }
210+ __knightedState.renderedNodes = []
207211 }
208212
209213 document.querySelectorAll('knighted-preview-root').forEach(node => node.remove())
@@ -231,7 +235,7 @@ const createIframeShellDocument = ({ channelId, parentOrigin, importMap }) => {
231235 document.body.append(host)
232236 const root = createRoot(host)
233237 __knightedState.reactRoot = root
234- __knightedState.renderedNode = host
238+ __knightedState.renderedNodes = [ host]
235239 root.render(output)
236240 } else {
237241 const { jsx } = await import(runtimeSpecifiers.jsxDom)
@@ -241,8 +245,11 @@ const createIframeShellDocument = ({ channelId, parentOrigin, importMap }) => {
241245 throw new Error('Expected a function or const named App.')
242246 }
243247
248+ const domNodes =
249+ output instanceof DocumentFragment ? Array.from(output.childNodes) : [output]
250+
244251 document.body.append(output)
245- __knightedState.renderedNode = output
252+ __knightedState.renderedNodes = domNodes
246253 }
247254
248255 __knightedEmit(__knightedMessageTypes.rendered)
0 commit comments