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.`);
}
}