docs/vendor.js
function projection(nodeIndex, selectorIndex, attrs) {
    if (selectorIndex === void 0) { selectorIndex = 0; }
    var node = createLNode(nodeIndex, 1 /* Projection */, null, null, attrs || null, null);
    // We can't use viewData[HOST_NODE] because projection nodes can be nested in embedded views.
    if (node.tNode.projection === null)
        node.tNode.projection = selectorIndex;
    // `<ng-content>` has no content
    isParent = false;
    // re-distribution of projectable nodes is stored on a component's view level
    var parent = getParentLNode(node);
    if (canInsertNativeNode(parent, viewData)) {
        var componentNode = findComponentHost(viewData);
        var nodeToProject = componentNode.tNode.projection[selectorIndex];
        var projectedView = componentNode.view;
        var projectionNodeIndex = -1;
        var grandparent = void 0;
        var renderParent = parent.tNode.type === 2 /* View */ ?
            (grandparent = getParentLNode(parent)) &&
                grandparent.data[RENDER_PARENT] :
            parent;
        while (nodeToProject) {
            if (nodeToProject.type === 1 /* Projection */) {
                // This node is re-projected, so we must go up the tree to get its projected nodes.
                var currentComponentHost = findComponentHost(projectedView);
                var firstProjectedNode = currentComponentHost.tNode.projection[nodeToProject.projection];
                if (firstProjectedNode) {
                    projectionNodeStack$1[++projectionNodeIndex] = projectedView[nodeToProject.index];
                    nodeToProject = firstProjectedNode;
                    projectedView = currentComponentHost.view;
                    continue;
                }
            }
            else {
                var lNode = projectedView[nodeToProject.index];
                lNode.tNode.flags |= 8192 /* isProjected */;
                appendProjectedNode(lNode, parent, viewData, renderParent);
            }
            // If we are finished with a list of re-projected nodes, we need to get
            // back to the root projection node that was re-projected.
            if (nodeToProject.next === null && projectedView !== componentNode.view) {
                // move down into the view of the component we're projecting right now
                var lNode = projectionNodeStack$1[projectionNodeIndex--];
                nodeToProject = lNode.tNode;
                projectedView = lNode.view;
            }
            nodeToProject = nodeToProject.next;
        }
    }
}
function projection(nodeIndex, selectorIndex, attrs) {
    if (selectorIndex === void 0) { selectorIndex = 0; }
    var node = createLNode(nodeIndex, 1 /* Projection */, null, null, attrs || null, null);
    // We can't use viewData[HOST_NODE] because projection nodes can be nested in embedded views.
    if (node.tNode.projection === null)
        node.tNode.projection = selectorIndex;
    // `<ng-content>` has no content
    isParent = false;
    // re-distribution of projectable nodes is stored on a component's view level
    var parent = getParentLNode(node);
    if (canInsertNativeNode(parent, viewData)) {
        var componentNode = findComponentHost(viewData);
        var nodeToProject = componentNode.tNode.projection[selectorIndex];
        var projectedView = componentNode.view;
        var projectionNodeIndex = -1;
        var grandparent = void 0;
        var renderParent = parent.tNode.type === 2 /* View */ ?
            (grandparent = getParentLNode(parent)) &&
                grandparent.data[RENDER_PARENT] :
            parent;
        while (nodeToProject) {
            if (nodeToProject.type === 1 /* Projection */) {
                // This node is re-projected, so we must go up the tree to get its projected nodes.
                var currentComponentHost = findComponentHost(projectedView);
                var firstProjectedNode = currentComponentHost.tNode.projection[nodeToProject.projection];
                if (firstProjectedNode) {
                    projectionNodeStack$1[++projectionNodeIndex] = projectedView[nodeToProject.index];
                    nodeToProject = firstProjectedNode;
                    projectedView = currentComponentHost.view;
                    continue;
                }
            }
            else {
                var lNode = projectedView[nodeToProject.index];
                lNode.tNode.flags |= 8192 /* isProjected */;
                appendProjectedNode(lNode, parent, viewData, renderParent);
            }
            // If we are finished with a list of re-projected nodes, we need to get
            // back to the root projection node that was re-projected.
            if (nodeToProject.next === null && projectedView !== componentNode.view) {
                // move down into the view of the component we're projecting right now
                var lNode = projectionNodeStack$1[projectionNodeIndex--];
                nodeToProject = lNode.tNode;
                projectedView = lNode.view;
            }
            nodeToProject = nodeToProject.next;
        }
    }
}
function projection ( nodeIndex , selectorIndex , attrs ) { if ( selectorIndex === void 0 ) { selectorIndex = 0 ; } var node = createLNode ( nodeIndex , 1 /* Projection */ , null , null , attrs || null , null ) ; // We can't use viewData[HOST_NODE] because projection nodes can be nested in embedded views. if ( node . tNode . projection === null ) node . tNode . projection = selectorIndex ; // `<ng-content>` has no content isParent = false ; // re-distribution of projectable nodes is stored on a component's view level var parent = getParentLNode ( node ) ; if ( canInsertNativeNode ( parent , viewData ) ) { var componentNode = findComponentHost ( viewData ) ; var nodeToProject = componentNode . tNode . projection [ selectorIndex ] ; var projectedView = componentNode . view ; var projectionNodeIndex = - 1 ; var grandparent = void 0 ; var renderParent = parent . tNode . type === 2 /* View */ ? ( grandparent = getParentLNode ( parent ) ) && grandparent . data [ RENDER_PARENT ] : parent ; while ( nodeToProject ) { if ( nodeToProject . type === 1 /* Projection */ ) { // This node is re-projected, so we must go up the tree to get its projected nodes. var currentComponentHost = findComponentHost ( projectedView ) ; var firstProjectedNode = currentComponentHost . tNode . projection [ nodeToProject . projection ] ; if ( firstProjectedNode ) { projectionNodeStack$1 [ ++ projectionNodeIndex ] = projectedView [ nodeToProject . index ] ; nodeToProject = firstProjectedNode ; projectedView = currentComponentHost . view ; continue ; } } else { var lNode = projectedView [ nodeToProject . index ] ; lNode . tNode . flags |= 8192 /* isProjected */ ; appendProjectedNode ( lNode , parent , viewData , renderParent ) ; } // If we are finished with a list of re-projected nodes, we need to get // back to the root projection node that was re-projected. if ( nodeToProject . next === null && projectedView !== componentNode . view ) { // move down into the view of the component we're projecting right now var lNode = projectionNodeStack$1 [ projectionNodeIndex -- ] ; nodeToProject = lNode . tNode ; projectedView = lNode . view ; } nodeToProject = nodeToProject . next ; } } }
Inserts previously re-distributed projected nodes. This instruction must be preceded by a call
to the projectionDef instruction.

@param nodeIndex
@param selectorIndex:
- 0 when the selector is `*` (or unspecified as this is the default value),
- 1 based index of the selector from the {@link projectionDef}
Inserts previously re - distributed projected nodes . This instruction must be preceded by a call to the projectionDef instruction .