import logger from 'App/logger'; import type Screen from '../../Screen/Screen'; import type { Message, SetNodeScroll } from '../../messages'; import { MType } from '../../messages'; import ListWalker from '../../../common/ListWalker'; import StylesManager from './StylesManager'; import FocusManager from './FocusManager'; import SelectionManager from './SelectionManager'; import type { StyleElement } from './VirtualDOM'; import { OnloadStyleSheet, VDocument, VElement, VHTMLElement, VShadowRoot, VText, OnloadVRoot, } from './VirtualDOM'; import { deleteRule, insertRule } from './safeCSSRules'; function isStyleVElement(vElem: VElement): vElem is VElement & { node: StyleElement } { return vElem.tagName.toLowerCase() === "style" } const IGNORED_ATTRS = [ "autocomplete" ] const ATTR_NAME_REGEXP = /([^\t\n\f \/>"'=]+)/ export default class DOMManager extends ListWalker { private readonly vTexts: Map = new Map() // map vs object here? private readonly vElements: Map = new Map() private readonly olVRoots: Map = new Map() /** Constructed StyleSheets https://developer.mozilla.org/en-US/docs/Web/API/Document/adoptedStyleSheets * as well as