cleanup()

in src/lib/api/event.replayer.ts [164:205]


  cleanup(prebootData: PrebootData) {
    prebootData = prebootData || {};

    const listeners = prebootData.listeners || [];

    // set focus on the active node AFTER a small delay to ensure buffer
    // switched
    const activeNode = prebootData.activeNode;
    if (activeNode != null) {
      setTimeout(() => this.setFocus(activeNode), 1);
    }

    // remove all event listeners
    for (const listener of listeners) {
      listener.node.removeEventListener(listener.eventName, listener.handler);
    }

    // remove the freeze overlay if it exists
    const doc = this.getWindow().document;
    const prebootOverlay = doc.getElementById('prebootOverlay');
    if (prebootOverlay) {
      prebootOverlay.remove ?
        prebootOverlay.remove() : prebootOverlay.parentNode !== null ?
        prebootOverlay.parentNode.removeChild(prebootOverlay) :
        prebootOverlay.style.display = 'none';
    }

    // clear out the data stored for each app
    prebootData.apps = [];
    this.clientNodeCache = {};

    // send event to document that signals preboot complete
    // constructor is not supported by older browsers ( i.e. IE9-11 )
    // in these browsers, the type of CustomEvent will be "object"
    if (typeof CustomEvent === 'function') {
      const completeEvent = new CustomEvent('PrebootComplete');
      doc.dispatchEvent(completeEvent);
    } else {
      console.warn(`Could not dispatch PrebootComplete event.
       You can fix this by including a polyfill for CustomEvent.`);
    }
  }