MCPcopy Index your code
hub / github.com/angular/angular / processAndInitTriggers

Function processAndInitTriggers

packages/core/src/defer/triggering.ts:655–700  ·  view source on GitHub ↗
(
  injector: Injector,
  blockData: Map<string, BlockSummary>,
  nodes: Map<string, Comment>,
)

Source from the content-addressed store, hash-verified

653 * properly initialized
654 */
655export function processAndInitTriggers(
656 injector: Injector,
657 blockData: Map<string, BlockSummary>,
658 nodes: Map<string, Comment>,
659) {
660 const idleElements: ElementTrigger[] = [];
661 const timerElements: ElementTrigger[] = [];
662 const viewportElements: ElementTrigger[] = [];
663 const immediateElements: ElementTrigger[] = [];
664 for (let [blockId, blockSummary] of blockData) {
665 const commentNode = nodes.get(blockId);
666 if (commentNode !== undefined) {
667 const numRootNodes = blockSummary.data[NUM_ROOT_NODES];
668 let currentNode: Comment | HTMLElement = commentNode;
669 for (let i = 0; i < numRootNodes; i++) {
670 currentNode = currentNode.previousSibling as HTMLElement;
671 if (currentNode.nodeType !== Node.ELEMENT_NODE) {
672 continue;
673 }
674 const elementTrigger: ElementTrigger = {el: currentNode, blockName: blockId};
675 // hydrate
676 if (blockSummary.hydrate.idle) {
677 idleElements.push(elementTrigger);
678 }
679 if (blockSummary.hydrate.immediate) {
680 immediateElements.push(elementTrigger);
681 }
682 if (blockSummary.hydrate.timer !== null) {
683 elementTrigger.delay = blockSummary.hydrate.timer;
684 timerElements.push(elementTrigger);
685 }
686 if (blockSummary.hydrate.viewport) {
687 if (typeof blockSummary.hydrate.viewport !== 'boolean') {
688 elementTrigger.intersectionObserverOptions = blockSummary.hydrate.viewport;
689 }
690 viewportElements.push(elementTrigger);
691 }
692 }
693 }
694 }
695
696 setIdleTriggers(injector, idleElements);
697 setImmediateTriggers(injector, immediateElements);
698 setViewportTriggers(injector, viewportElements);
699 setTimerTriggers(injector, timerElements);
700}
701
702function setIdleTriggers(injector: Injector, elementTriggers: ElementTrigger[]) {
703 for (const elementTrigger of elementTriggers) {

Callers 1

Calls 6

setIdleTriggersFunction · 0.85
setImmediateTriggersFunction · 0.85
setViewportTriggersFunction · 0.85
setTimerTriggersFunction · 0.85
getMethod · 0.65
pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…