export function handleEvents()

in src/lib/api/event.recorder.ts [162:193]


export function handleEvents(_document: Document,
                             prebootData: PrebootData,
                             appData: PrebootAppData,
                             eventSelector: EventSelector) {
  const serverRoot = appData.root.serverNode;

  // don't do anything if no server root
  if (!serverRoot) {
    return;
  }

  // Attach delegated event listeners for each event selector.
  // We need to use delegated events as only the top level server node
  // exists at this point.
  eventSelector.events.forEach((eventName: string) => {
    // get the appropriate handler and add it as an event listener
    const handler = createListenHandler(_document, prebootData, eventSelector, appData);
    // attach the handler in the capture phase so that it fires even if
    // one of the handlers below calls stopPropagation()
    serverRoot.addEventListener(eventName, handler, true);

    // need to keep track of listeners so we can do node.removeEventListener()
    // when preboot done
    if (prebootData.listeners) {
      prebootData.listeners.push({
        node: serverRoot,
        eventName,
        handler
      });
    }
  });
}