import {addToViewTree, createLContainer, createLView, createTNode, createTView, getOrCreateTNode, renderView} from '../../../src/render3/instructions/shared'; import {ComponentTemplate} from '../../../src/render3/interfaces/definition'; import {TNodeType, TViewNode} from '../../../src/render3/interfaces/node'; import {RComment} from '../../../src/render3/interfaces/renderer'; import {LView, LViewFlags} from '../../../src/render3/interfaces/view'; import {insertView} from '../../../src/render3/node_manipulation'; import {NoopRenderer, NoopRendererFactory, WebWorkerRenderNode} from './noop_renderer'; export function setupRootViewWithEmbeddedViews( templateFn: ComponentTemplate| null, consts: number, vars: number, noOfViews: number): LView { // Create a root view with a container const rootTView = createTView(-1, null, 1, 0, null, null, null, null); const tContainerNode = getOrCreateTNode(rootTView, null, 0, TNodeType.Container, null, null); const rootLView = createLView( null, rootTView, {}, LViewFlags.CheckAlways | LViewFlags.IsRoot, null, null, new NoopRendererFactory(), new NoopRenderer()); const mockRNode = new WebWorkerRenderNode(); const lContainer = createLContainer( mockRNode as RComment, rootLView, mockRNode as RComment, tContainerNode, true); addToViewTree(rootLView, lContainer); // create test embedded views const embeddedTView = createTView(-1, templateFn, consts, vars, null, null, null, null); const viewTNode = createTNode(rootTView, null, TNodeType.View, -1, null, null) as TViewNode; // create embedded views and add them to the container for (let i = 0; i < noOfViews; i++) { const embeddedLView = createLView( rootLView, embeddedTView, {}, LViewFlags.CheckAlways, null, viewTNode, new NoopRendererFactory(), new NoopRenderer()); renderView(embeddedLView, embeddedTView, null); insertView(embeddedLView, lContainer, i); } // run in the creation mode to set flags etc. renderView(rootLView, rootTView, null); return rootLView; }