init
This commit is contained in:
parent
aeb4d182f7
commit
b4f02bb121
|
|
@ -42,6 +42,7 @@ export type HighlightOptions = {
|
|||
export class Highlight {
|
||||
private _glassPaneElement: HTMLElement;
|
||||
private _glassPaneShadow: ShadowRoot;
|
||||
private _glassPaneMutationObserver: MutationObserver | undefined;
|
||||
private _highlightEntries: HighlightEntry[] = [];
|
||||
private _highlightOptions: HighlightOptions = {};
|
||||
private _actionPointElement: HTMLElement;
|
||||
|
|
@ -91,6 +92,15 @@ export class Highlight {
|
|||
|
||||
install() {
|
||||
this._injectedScript.document.documentElement.appendChild(this._glassPaneElement);
|
||||
|
||||
// JS frameworks like React erase the entire DOM upon hydration, so we need to recreate it
|
||||
this._glassPaneMutationObserver = new MutationObserver(mutations => mutations.forEach(mutation => {
|
||||
for (const removedNode of mutation.removedNodes) {
|
||||
if (removedNode === this._glassPaneElement)
|
||||
this._injectedScript.document.documentElement.appendChild(this._glassPaneElement);
|
||||
}
|
||||
}));
|
||||
this._glassPaneMutationObserver.observe(this._glassPaneElement);
|
||||
}
|
||||
|
||||
setLanguage(language: Language) {
|
||||
|
|
@ -107,6 +117,7 @@ export class Highlight {
|
|||
uninstall() {
|
||||
if (this._rafRequest)
|
||||
cancelAnimationFrame(this._rafRequest);
|
||||
this._glassPaneMutationObserver?.disconnect();
|
||||
this._glassPaneElement.remove();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue