diff --git a/frontend/app/player/MessageDistributor/managers/AssistManager.ts b/frontend/app/player/MessageDistributor/managers/AssistManager.ts index d979d52f8..dc32bb4bb 100644 --- a/frontend/app/player/MessageDistributor/managers/AssistManager.ts +++ b/frontend/app/player/MessageDistributor/managers/AssistManager.ts @@ -181,7 +181,6 @@ export default class AssistManager { } for (let msg = reader.readNext();msg !== null;msg = reader.readNext()) { - //@ts-ignore if (this.jumped) { // @ts-ignore msg.time = this.md.getLastRecordedMessageTime() + msg.time diff --git a/frontend/app/player/MessageDistributor/managers/DOM/DOMManager.ts b/frontend/app/player/MessageDistributor/managers/DOM/DOMManager.ts index 39c1dab87..7dc7c4261 100644 --- a/frontend/app/player/MessageDistributor/managers/DOM/DOMManager.ts +++ b/frontend/app/player/MessageDistributor/managers/DOM/DOMManager.ts @@ -15,6 +15,7 @@ import { PostponedStyleSheet, } from './VirtualDOM'; import type { StyleElement } from './VirtualDOM'; +import { insertRule, deleteRule } from './safeCSSRules'; type HTMLElementWithValue = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement @@ -32,27 +33,6 @@ const ATTR_NAME_REGEXP = /([^\t\n\f \/>"'=]+)/; // regexp costs ~ // .replace(/\-webkit\-/g, "") // } -function insertRule(sheet: CSSStyleSheet | PostponedStyleSheet, msg: { rule: string, index: number }) { - try { - sheet.insertRule(msg.rule, msg.index) - } catch (e) { - logger.warn(e, msg) - try { - sheet.insertRule(msg.rule, 0) - logger.warn("Inserting rule into 0-index", e, msg) - } catch (e) { - logger.warn("Cannot insert rule.", e, msg) - } - } -} - -function deleteRule(sheet: CSSStyleSheet | PostponedStyleSheet, msg: { index: number }) { - try { - sheet.deleteRule(msg.index) - } catch (e) { - logger.warn(e, msg) - } -} export default class DOMManager extends ListWalker { private vTexts: Map = new Map() // map vs object here? diff --git a/frontend/app/player/MessageDistributor/managers/DOM/StylesManager.ts b/frontend/app/player/MessageDistributor/managers/DOM/StylesManager.ts index f26d8e5ea..b6dddcdd9 100644 --- a/frontend/app/player/MessageDistributor/managers/DOM/StylesManager.ts +++ b/frontend/app/player/MessageDistributor/managers/DOM/StylesManager.ts @@ -1,7 +1,7 @@ import type StatedScreen from '../../StatedScreen'; -import type { CssInsertRule, CssDeleteRule, ReplaceVcss } from '../../messages'; +import type { CssInsertRule, CssDeleteRule } from '../../messages'; -type CSSRuleMessage = CssInsertRule | CssDeleteRule | ReplaceVcss; +type CSSRuleMessage = CssInsertRule | CssDeleteRule; import ListWalker from '../ListWalker'; diff --git a/frontend/app/player/MessageDistributor/managers/DOM/VirtualDOM.ts b/frontend/app/player/MessageDistributor/managers/DOM/VirtualDOM.ts index 5efa2ddf1..1be12d68c 100644 --- a/frontend/app/player/MessageDistributor/managers/DOM/VirtualDOM.ts +++ b/frontend/app/player/MessageDistributor/managers/DOM/VirtualDOM.ts @@ -2,6 +2,8 @@ type VChild = VElement | VText export type VNode = VDocument | VShadowRoot | VElement | VText +import { insertRule, deleteRule } from './safeCSSRules'; + abstract class VParent { abstract node: Node | null protected children: VChild[] = [] @@ -182,11 +184,11 @@ export class PostponedStyleSheet { } insertRule(rule: string, index: number) { - this.applyCallback(s => s.insertRule(rule, index)) + this.applyCallback(s => insertRule(s, { rule, index })) } deleteRule(index: number) { - this.applyCallback(s => s.deleteRule(index)) + this.applyCallback(s => deleteRule(s, { index })) } } diff --git a/frontend/app/player/MessageDistributor/managers/DOM/safeCSSRules.ts b/frontend/app/player/MessageDistributor/managers/DOM/safeCSSRules.ts new file mode 100644 index 000000000..a65c0cf6c --- /dev/null +++ b/frontend/app/player/MessageDistributor/managers/DOM/safeCSSRules.ts @@ -0,0 +1,25 @@ +import logger from 'App/logger'; + +export type { PostponedStyleSheet } from './VirtualDOM' + +export function insertRule(sheet: CSSStyleSheet | PostponedStyleSheet, msg: { rule: string, index: number }) { + try { + sheet.insertRule(msg.rule, msg.index) + } catch (e) { + logger.warn(e, msg) + try { + sheet.insertRule(msg.rule, 0) + logger.warn("Inserting rule into 0-index", e, msg) + } catch (e) { + logger.warn("Cannot insert rule.", e, msg) + } + } +} + +export function deleteRule(sheet: CSSStyleSheet | PostponedStyleSheet, msg: { index: number }) { + try { + sheet.deleteRule(msg.index) + } catch (e) { + logger.warn(e, msg) + } +}