From daf35a2dfab34291aa02a35cc8f921366926db5c Mon Sep 17 00:00:00 2001 From: Alex Kaminskii Date: Tue, 22 Nov 2022 18:59:55 +0100 Subject: [PATCH] refactoring(player): separating Screen and MessageManager; renamings --- frontend/app/player/_singletone.ts | 6 +-- frontend/app/player/_store/duck.js | 8 +-- frontend/app/player/_store/index.js | 8 +-- .../player/{_common => common}/ListWalker.ts | 2 +- .../ListWalkerWithMarks.ts | 2 +- .../player/{_common => common}/SimpleStore.ts | 3 +- .../app/player/{player => common}/types.ts | 4 +- frontend/app/player/create.ts | 6 +-- frontend/app/player/index.ts | 12 ++--- frontend/app/player/player/Animator.ts | 2 +- frontend/app/player/player/Player.ts | 17 ++----- .../{_web => web}/InspectorController.ts | 0 frontend/app/player/{_web => web}/Lists.ts | 4 +- .../player/{_web => web}/MessageManager.ts | 40 ++++++++------- .../app/player/{_web => web}/Screen/Cursor.ts | 0 .../player/{_web => web}/Screen/Inspector.ts | 0 .../app/player/{_web => web}/Screen/Marker.ts | 0 .../app/player/{_web => web}/Screen/Screen.ts | 0 .../{_web => web}/Screen/cursor.module.css | 0 .../{_web => web}/Screen/marker.module.css | 0 .../{_web => web}/Screen/screen.module.css | 0 .../app/player/{_web => web}/Screen/types.ts | 0 .../app/player/{_web => web}/TargetMarker.ts | 2 +- .../app/player/{_web => web}/WebLivePlayer.ts | 0 .../app/player/{_web => web}/WebPlayer.ts | 25 ++++++---- .../{_web => web}/assist/AnnotationCanvas.ts | 0 .../{_web => web}/assist/AssistManager.ts | 0 .../{_web => web}/assist/LocalStream.ts | 0 .../{_web => web}/managers/ActivityManager.ts | 2 +- .../{_web => web}/managers/DOM/DOMManager.ts | 11 ++-- .../managers/DOM/FocusManager.ts | 2 +- .../managers/DOM/StylesManager.ts | 50 +++---------------- .../{_web => web}/managers/DOM/VirtualDOM.ts | 0 .../managers/DOM/safeCSSRules.ts | 0 .../managers/MouseMoveManager.ts | 2 +- .../{_web => web}/managers/PagesManager.ts | 15 ++---- .../managers/PerformanceTrackManager.ts | 2 +- .../managers/WindowNodeCounter.ts | 0 .../messages/JSONRawMessageReader.ts | 0 .../{_web => web}/messages/MFileReader.ts | 0 .../{_web => web}/messages/MStreamReader.ts | 0 .../{_web => web}/messages/PrimitiveReader.ts | 0 .../messages/RawMessageReader.ts | 0 .../player/{_web => web}/messages/index.ts | 0 .../player/{_web => web}/messages/message.ts | 0 .../app/player/{_web => web}/messages/raw.ts | 0 .../player/{_web => web}/messages/timed.ts | 0 .../{_web => web}/messages/tracker-legacy.ts | 0 .../player/{_web => web}/messages/tracker.ts | 0 .../{_web => web}/messages/urlResolve.ts | 0 .../player/{_web => web}/network/crypto.ts | 0 .../player/{_web => web}/network/loadFiles.ts | 0 52 files changed, 91 insertions(+), 134 deletions(-) rename frontend/app/player/{_common => common}/ListWalker.ts (98%) rename frontend/app/player/{_common => common}/ListWalkerWithMarks.ts (94%) rename frontend/app/player/{_common => common}/SimpleStore.ts (85%) rename frontend/app/player/{player => common}/types.ts (87%) rename frontend/app/player/{_web => web}/InspectorController.ts (100%) rename frontend/app/player/{_web => web}/Lists.ts (94%) rename frontend/app/player/{_web => web}/MessageManager.ts (94%) rename frontend/app/player/{_web => web}/Screen/Cursor.ts (100%) rename frontend/app/player/{_web => web}/Screen/Inspector.ts (100%) rename frontend/app/player/{_web => web}/Screen/Marker.ts (100%) rename frontend/app/player/{_web => web}/Screen/Screen.ts (100%) rename frontend/app/player/{_web => web}/Screen/cursor.module.css (100%) rename frontend/app/player/{_web => web}/Screen/marker.module.css (100%) rename frontend/app/player/{_web => web}/Screen/screen.module.css (100%) rename frontend/app/player/{_web => web}/Screen/types.ts (100%) rename frontend/app/player/{_web => web}/TargetMarker.ts (98%) rename frontend/app/player/{_web => web}/WebLivePlayer.ts (100%) rename frontend/app/player/{_web => web}/WebPlayer.ts (87%) rename frontend/app/player/{_web => web}/assist/AnnotationCanvas.ts (100%) rename frontend/app/player/{_web => web}/assist/AssistManager.ts (100%) rename frontend/app/player/{_web => web}/assist/LocalStream.ts (100%) rename frontend/app/player/{_web => web}/managers/ActivityManager.ts (94%) rename frontend/app/player/{_web => web}/managers/DOM/DOMManager.ts (98%) rename frontend/app/player/{_web => web}/managers/DOM/FocusManager.ts (93%) rename frontend/app/player/{_web => web}/managers/DOM/StylesManager.ts (54%) rename frontend/app/player/{_web => web}/managers/DOM/VirtualDOM.ts (100%) rename frontend/app/player/{_web => web}/managers/DOM/safeCSSRules.ts (100%) rename frontend/app/player/{_web => web}/managers/MouseMoveManager.ts (96%) rename frontend/app/player/{_web => web}/managers/PagesManager.ts (81%) rename frontend/app/player/{_web => web}/managers/PerformanceTrackManager.ts (98%) rename frontend/app/player/{_web => web}/managers/WindowNodeCounter.ts (100%) rename frontend/app/player/{_web => web}/messages/JSONRawMessageReader.ts (100%) rename frontend/app/player/{_web => web}/messages/MFileReader.ts (100%) rename frontend/app/player/{_web => web}/messages/MStreamReader.ts (100%) rename frontend/app/player/{_web => web}/messages/PrimitiveReader.ts (100%) rename frontend/app/player/{_web => web}/messages/RawMessageReader.ts (100%) rename frontend/app/player/{_web => web}/messages/index.ts (100%) rename frontend/app/player/{_web => web}/messages/message.ts (100%) rename frontend/app/player/{_web => web}/messages/raw.ts (100%) rename frontend/app/player/{_web => web}/messages/timed.ts (100%) rename frontend/app/player/{_web => web}/messages/tracker-legacy.ts (100%) rename frontend/app/player/{_web => web}/messages/tracker.ts (100%) rename frontend/app/player/{_web => web}/messages/urlResolve.ts (100%) rename frontend/app/player/{_web => web}/network/crypto.ts (100%) rename frontend/app/player/{_web => web}/network/loadFiles.ts (100%) diff --git a/frontend/app/player/_singletone.ts b/frontend/app/player/_singletone.ts index c4e0d607b..2449542b6 100644 --- a/frontend/app/player/_singletone.ts +++ b/frontend/app/player/_singletone.ts @@ -1,9 +1,9 @@ -import WebPlayer from './_web/WebPlayer'; +import WebPlayer from './web/WebPlayer'; import reduxStore, {update, cleanStore} from './_store'; -import type { State as MMState } from './_web/MessageManager' +import type { State as MMState } from './web/MessageManager' import type { State as PState } from './player/Player' -import type { Store } from './player/types' +import type { Store } from './common/types' const myStore: Store = { diff --git a/frontend/app/player/_store/duck.js b/frontend/app/player/_store/duck.js index 6cf861ade..6996e8ed1 100644 --- a/frontend/app/player/_store/duck.js +++ b/frontend/app/player/_store/duck.js @@ -1,15 +1,11 @@ -import { applyChange, revertChange } from 'deep-diff'; - -import { INITIAL_STATE as MM_INITIAL_STATE } from '../_web/MessageManager' -import Player from '../player/Player' +import WebPlayer from '../web/WebPlayer' const UPDATE = 'player/UPDATE'; const CLEAN = 'player/CLEAN'; const REDUX = 'player/REDUX'; const resetState = { - ...MM_INITIAL_STATE, - ...Player.INITIAL_STATE, + ...WebPlayer.INITIAL_STATE, initialized: false, }; diff --git a/frontend/app/player/_store/index.js b/frontend/app/player/_store/index.js index cad6dfaff..c2a987661 100644 --- a/frontend/app/player/_store/index.js +++ b/frontend/app/player/_store/index.js @@ -1,4 +1,4 @@ -// export * from './connector'; -// export * from './store'; -// export * from './selectors'; -// export { default } from './store'; \ No newline at end of file +export * from './connector'; +export * from './store'; +export * from './selectors'; +export { default } from './store'; \ No newline at end of file diff --git a/frontend/app/player/_common/ListWalker.ts b/frontend/app/player/common/ListWalker.ts similarity index 98% rename from frontend/app/player/_common/ListWalker.ts rename to frontend/app/player/common/ListWalker.ts index 3600f31da..db847150d 100644 --- a/frontend/app/player/_common/ListWalker.ts +++ b/frontend/app/player/common/ListWalker.ts @@ -1,4 +1,4 @@ -import type { Timed } from '../_web/messages/timed'; +import type { Timed } from './types'; export default class ListWalker { private p = 0 diff --git a/frontend/app/player/_common/ListWalkerWithMarks.ts b/frontend/app/player/common/ListWalkerWithMarks.ts similarity index 94% rename from frontend/app/player/_common/ListWalkerWithMarks.ts rename to frontend/app/player/common/ListWalkerWithMarks.ts index 10446d7e0..a97378d03 100644 --- a/frontend/app/player/_common/ListWalkerWithMarks.ts +++ b/frontend/app/player/common/ListWalkerWithMarks.ts @@ -1,4 +1,4 @@ -import type { Timed } from '../_web/messages/timed'; +import type { Timed } from './types'; import ListWalker from './ListWalker' diff --git a/frontend/app/player/_common/SimpleStore.ts b/frontend/app/player/common/SimpleStore.ts similarity index 85% rename from frontend/app/player/_common/SimpleStore.ts rename to frontend/app/player/common/SimpleStore.ts index 2b4a77658..dd7e1ee7b 100644 --- a/frontend/app/player/_common/SimpleStore.ts +++ b/frontend/app/player/common/SimpleStore.ts @@ -1,5 +1,4 @@ - -import { Store } from '../player/types' +import { Store } from './types' // (not a type) export default class SimpleSore implements Store { diff --git a/frontend/app/player/player/types.ts b/frontend/app/player/common/types.ts similarity index 87% rename from frontend/app/player/player/types.ts rename to frontend/app/player/common/types.ts index 5deb56b06..0e5be2841 100644 --- a/frontend/app/player/player/types.ts +++ b/frontend/app/player/common/types.ts @@ -1,3 +1,6 @@ +export interface Timed { + time: number +} export interface Moveable { move(time: number): void @@ -18,4 +21,3 @@ export interface Store { update(state: Partial): void } - diff --git a/frontend/app/player/create.ts b/frontend/app/player/create.ts index 410ad6e2a..a69d9710e 100644 --- a/frontend/app/player/create.ts +++ b/frontend/app/player/create.ts @@ -1,7 +1,7 @@ -import SimpleStore from './_common/SimpleStore' -import type { Store } from './player/types' +import SimpleStore from './common/SimpleStore' +import type { Store } from './common/types' -import WebPlayer from './_web/WebPlayer' +import WebPlayer from './web/WebPlayer' type WebState = typeof WebPlayer.INITIAL_STATE //? type WebPlayerStore = Store diff --git a/frontend/app/player/index.ts b/frontend/app/player/index.ts index 55266aa5f..949088e43 100644 --- a/frontend/app/player/index.ts +++ b/frontend/app/player/index.ts @@ -1,9 +1,9 @@ -export * from './_web/assist/AssistManager'; -export * from './_web/assist/LocalStream'; -export * from './_web/WebPlayer'; +export * from './web/assist/AssistManager'; +export * from './web/assist/LocalStream'; +export * from './web/WebPlayer'; export * from './create'; -export type { MarkedTarget } from './_web/TargetMarker' +export type { MarkedTarget } from './web/TargetMarker' -//export * from './_store'; -//export * from './_singletone'; +export * from './_store'; +export * from './_singletone'; diff --git a/frontend/app/player/player/Animator.ts b/frontend/app/player/player/Animator.ts index a75290929..7f2e4c5bc 100644 --- a/frontend/app/player/player/Animator.ts +++ b/frontend/app/player/player/Animator.ts @@ -1,4 +1,4 @@ -import type { Store, Moveable, Interval } from './types'; +import type { Store, Moveable, Interval } from '../common/types'; import * as localStorage from './localStorage'; const fps = 60 diff --git a/frontend/app/player/player/Player.ts b/frontend/app/player/player/Player.ts index 9b2b98225..95a3c45de 100644 --- a/frontend/app/player/player/Player.ts +++ b/frontend/app/player/player/Player.ts @@ -1,6 +1,6 @@ import * as typedLocalStorage from './localStorage'; -import type { Moveable, Cleanable, Store } from './types'; +import type { Moveable, Cleanable, Store } from '../common/types'; import Animator from './Animator'; import type { GetState as AnimatorGetState, SetState as AnimatorSetState } from './Animator'; @@ -57,8 +57,6 @@ export default class Player extends Animator { } } - - /* === TODO: incapsulate in LSCache === */ toggleAutoplay() { @@ -67,14 +65,14 @@ export default class Player extends Animator { this.pState.update({ autoplay }) } - // Shouldn't it be in the react part as a fully (with localStorage-cache react hook)? + //TODO: move to react part (with localStorage-cache react hook)? toggleEvents() { const showEvents = !this.pState.get().showEvents localStorage.setItem(SHOW_EVENTS_STORAGE_KEY, `${showEvents}`); this.pState.update({ showEvents }) } - // move to React part? + // TODO: move to React part toggleSkipToIssue() { const skipToIssue = !this.pState.get().skipToIssue localStorage.setItem(SKIP_TO_ISSUE_STORAGE_KEY, `${skipToIssue}`); @@ -107,15 +105,6 @@ export default class Player extends Animator { } /* === === */ - // TODO: move theese to React hooks - // injectNotes(notes: Note[]) { - // update({ notes }) - // } - // filterOutNote(noteId: number) { - // const { notes } = getState() - // update({ notes: notes.filter((note: Note) => note.noteId !== noteId) }) - // } - clean() { this.pause() diff --git a/frontend/app/player/_web/InspectorController.ts b/frontend/app/player/web/InspectorController.ts similarity index 100% rename from frontend/app/player/_web/InspectorController.ts rename to frontend/app/player/web/InspectorController.ts diff --git a/frontend/app/player/_web/Lists.ts b/frontend/app/player/web/Lists.ts similarity index 94% rename from frontend/app/player/_web/Lists.ts rename to frontend/app/player/web/Lists.ts index fdf560c93..dc3a088fd 100644 --- a/frontend/app/player/_web/Lists.ts +++ b/frontend/app/player/web/Lists.ts @@ -1,5 +1,5 @@ -import ListWalker from '../_common/ListWalker'; -import ListWalkerWithMarks from '../_common/ListWalkerWithMarks'; +import ListWalker from '../common/ListWalker'; +import ListWalkerWithMarks from '../common/ListWalkerWithMarks'; import type { Message } from './messages' diff --git a/frontend/app/player/_web/MessageManager.ts b/frontend/app/player/web/MessageManager.ts similarity index 94% rename from frontend/app/player/_web/MessageManager.ts rename to frontend/app/player/web/MessageManager.ts index b092483e2..83a8ea95a 100644 --- a/frontend/app/player/_web/MessageManager.ts +++ b/frontend/app/player/web/MessageManager.ts @@ -8,10 +8,8 @@ import Log from 'Types/session/log'; import { toast } from 'react-toastify'; -import type { Store } from '../player/types'; -import ListWalker from '../_common/ListWalker'; - -import Screen from './Screen/Screen'; +import type { Store } from '../common/types'; +import ListWalker from '../common/ListWalker'; import PagesManager from './managers/PagesManager'; import MouseMoveManager from './managers/MouseMoveManager'; @@ -24,15 +22,19 @@ import MFileReader from './messages/MFileReader'; import { loadFiles, requestEFSDom, requestEFSDevtools } from './network/loadFiles'; import { decryptSessionBytes } from './network/crypto'; -import { INITIAL_STATE as SCREEN_INITIAL_STATE, State as SuperState } from './Screen/Screen'; import Lists, { INITIAL_STATE as LISTS_INITIAL_STATE } from './Lists'; +import Screen, { + INITIAL_STATE as SCREEN_INITIAL_STATE, + State as ScreenState, +} from './Screen/Screen'; + import type { InitialLists } from './Lists' import type { PerformanceChartPoint } from './managers/PerformanceTrackManager'; import type { SkipInterval } from './managers/ActivityManager'; -export interface State extends SuperState { +export interface State extends ScreenState { performanceChartData: PerformanceChartPoint[], skipIntervals: SkipInterval[], connType?: string, @@ -73,7 +75,7 @@ const visualChanges = [ "set_viewport_scroll", ] -export default class MessageManager extends Screen { +export default class MessageManager { static INITIAL_STATE: State = { ...SCREEN_INITIAL_STATE, ...LISTS_INITIAL_STATE, @@ -116,12 +118,12 @@ export default class MessageManager extends Screen { constructor( private readonly session: any /*Session*/, - private readonly state: Store, + private readonly state: Store, + private readonly screen: Screen, initialLists?: Partial ) { - super(); - this.pagesManager = new PagesManager(this, this.session.isMobile) - this.mouseMoveManager = new MouseMoveManager(this) + this.pagesManager = new PagesManager(screen, this.session.isMobile, this) + this.mouseMoveManager = new MouseMoveManager(screen) this.sessionStart = this.session.startedAt @@ -281,8 +283,8 @@ export default class MessageManager extends Screen { this.performanceTrackManager = new PerformanceTrackManager() this.windowNodeCounter = new WindowNodeCounter(); - this.pagesManager = new PagesManager(this, this.session.isMobile) - this.mouseMoveManager = new MouseMoveManager(this); + this.pagesManager = new PagesManager(this.screen, this.session.isMobile, this) + this.mouseMoveManager = new MouseMoveManager(this.screen); this.activityManager = new ActivityManager(this.session.duration.milliseconds); } @@ -339,14 +341,14 @@ export default class MessageManager extends Screen { this.pagesManager.moveReady(t).then(() => { const lastScroll = this.scrollManager.moveGetLast(t, index); - if (!!lastScroll && this.window) { - this.window.scrollTo(lastScroll.x, lastScroll.y); + if (!!lastScroll && this.screen.window) { + this.screen.window.scrollTo(lastScroll.x, lastScroll.y); } // Moving mouse and setting :hover classes on ready view this.mouseMoveManager.move(t); const lastClick = this.clickManager.moveGetLast(t); if (!!lastClick && t - lastClick.time < 600) { // happend during last 600ms - this.cursor.click(); + this.screen.cursor.click(); } // After all changes - redraw the marker //this.marker.redraw(); @@ -514,17 +516,17 @@ export default class MessageManager extends Screen { } setMessagesLoading(messagesLoading: boolean) { - this.display(!messagesLoading); + this.screen.display(!messagesLoading); this.state.update({ messagesLoading }); } setCSSLoading(cssLoading: boolean) { - this.displayFrame(!cssLoading); + this.screen.displayFrame(!cssLoading); this.state.update({ cssLoading }); } private setSize({ height, width }: { height: number, width: number }) { - this.scale({ height, width }); + this.screen.scale({ height, width }); this.state.update({ width, height }); //this.updateMarketTargets() diff --git a/frontend/app/player/_web/Screen/Cursor.ts b/frontend/app/player/web/Screen/Cursor.ts similarity index 100% rename from frontend/app/player/_web/Screen/Cursor.ts rename to frontend/app/player/web/Screen/Cursor.ts diff --git a/frontend/app/player/_web/Screen/Inspector.ts b/frontend/app/player/web/Screen/Inspector.ts similarity index 100% rename from frontend/app/player/_web/Screen/Inspector.ts rename to frontend/app/player/web/Screen/Inspector.ts diff --git a/frontend/app/player/_web/Screen/Marker.ts b/frontend/app/player/web/Screen/Marker.ts similarity index 100% rename from frontend/app/player/_web/Screen/Marker.ts rename to frontend/app/player/web/Screen/Marker.ts diff --git a/frontend/app/player/_web/Screen/Screen.ts b/frontend/app/player/web/Screen/Screen.ts similarity index 100% rename from frontend/app/player/_web/Screen/Screen.ts rename to frontend/app/player/web/Screen/Screen.ts diff --git a/frontend/app/player/_web/Screen/cursor.module.css b/frontend/app/player/web/Screen/cursor.module.css similarity index 100% rename from frontend/app/player/_web/Screen/cursor.module.css rename to frontend/app/player/web/Screen/cursor.module.css diff --git a/frontend/app/player/_web/Screen/marker.module.css b/frontend/app/player/web/Screen/marker.module.css similarity index 100% rename from frontend/app/player/_web/Screen/marker.module.css rename to frontend/app/player/web/Screen/marker.module.css diff --git a/frontend/app/player/_web/Screen/screen.module.css b/frontend/app/player/web/Screen/screen.module.css similarity index 100% rename from frontend/app/player/_web/Screen/screen.module.css rename to frontend/app/player/web/Screen/screen.module.css diff --git a/frontend/app/player/_web/Screen/types.ts b/frontend/app/player/web/Screen/types.ts similarity index 100% rename from frontend/app/player/_web/Screen/types.ts rename to frontend/app/player/web/Screen/types.ts diff --git a/frontend/app/player/_web/TargetMarker.ts b/frontend/app/player/web/TargetMarker.ts similarity index 98% rename from frontend/app/player/_web/TargetMarker.ts rename to frontend/app/player/web/TargetMarker.ts index a2ca99cc2..f3b4d1d7d 100644 --- a/frontend/app/player/_web/TargetMarker.ts +++ b/frontend/app/player/web/TargetMarker.ts @@ -1,6 +1,6 @@ import type Screen from './Screen/Screen' import type { Point } from './Screen/types' -import type { Store } from '../player/types' +import type { Store } from '../common/types' function getOffset(el: Element, innerWindow: Window) { diff --git a/frontend/app/player/_web/WebLivePlayer.ts b/frontend/app/player/web/WebLivePlayer.ts similarity index 100% rename from frontend/app/player/_web/WebLivePlayer.ts rename to frontend/app/player/web/WebLivePlayer.ts diff --git a/frontend/app/player/_web/WebPlayer.ts b/frontend/app/player/web/WebPlayer.ts similarity index 87% rename from frontend/app/player/_web/WebPlayer.ts rename to frontend/app/player/web/WebPlayer.ts index 572c9e5b4..ec132d5f8 100644 --- a/frontend/app/player/_web/WebPlayer.ts +++ b/frontend/app/player/web/WebPlayer.ts @@ -1,4 +1,4 @@ -import type { Store } from '../player/types' +import type { Store } from '../common/types' import Player, { State as PlayerState } from '../player/Player' import MessageManager from './MessageManager' @@ -39,17 +39,13 @@ export default class WebPlayer extends Player { exceptions: session.errors, } : {} - // TODO: separate screen from manager - const screen = new MessageManager(session, wpState, initialLists) - super(wpState, screen) + const screen = new Screen() + const messageManager = new MessageManager(session, wpState, screen, initialLists) + super(wpState, messageManager) this.screen = screen - this.messageManager = screen - - // TODO: separate LiveWebPlayer - this.assistManager = new AssistManager(session, this.messageManager, config, wpState) + this.messageManager = messageManager this.targetMarker = new TargetMarker(this.screen, wpState) - this.inspectorController = new InspectorController(screen) @@ -65,6 +61,8 @@ export default class WebPlayer extends Player { endTime, // : 0, //TODO: through initialState }) + // TODO: separate LiveWebPlayer + this.assistManager = new AssistManager(session, this.messageManager, config, wpState) if (live) { this.assistManager.connect(session.agentToken) } @@ -123,6 +121,15 @@ export default class WebPlayer extends Player { } } + // TODO: restore notes functionality + // injectNotes(notes: Note[]) { + // update({ notes }) + // } + // filterOutNote(noteId: number) { + // const { notes } = getState() + // update({ notes: notes.filter((note: Note) => note.noteId !== noteId) }) + // } + toggleUserName(name?: string) { this.screen.cursor.showTag(name) } diff --git a/frontend/app/player/_web/assist/AnnotationCanvas.ts b/frontend/app/player/web/assist/AnnotationCanvas.ts similarity index 100% rename from frontend/app/player/_web/assist/AnnotationCanvas.ts rename to frontend/app/player/web/assist/AnnotationCanvas.ts diff --git a/frontend/app/player/_web/assist/AssistManager.ts b/frontend/app/player/web/assist/AssistManager.ts similarity index 100% rename from frontend/app/player/_web/assist/AssistManager.ts rename to frontend/app/player/web/assist/AssistManager.ts diff --git a/frontend/app/player/_web/assist/LocalStream.ts b/frontend/app/player/web/assist/LocalStream.ts similarity index 100% rename from frontend/app/player/_web/assist/LocalStream.ts rename to frontend/app/player/web/assist/LocalStream.ts diff --git a/frontend/app/player/_web/managers/ActivityManager.ts b/frontend/app/player/web/managers/ActivityManager.ts similarity index 94% rename from frontend/app/player/_web/managers/ActivityManager.ts rename to frontend/app/player/web/managers/ActivityManager.ts index d5e81f62d..383f29c15 100644 --- a/frontend/app/player/_web/managers/ActivityManager.ts +++ b/frontend/app/player/web/managers/ActivityManager.ts @@ -1,4 +1,4 @@ -import ListWalker from '../../_common/ListWalker'; +import ListWalker from '../../common/ListWalker'; class SkipIntervalCls { diff --git a/frontend/app/player/_web/managers/DOM/DOMManager.ts b/frontend/app/player/web/managers/DOM/DOMManager.ts similarity index 98% rename from frontend/app/player/_web/managers/DOM/DOMManager.ts rename to frontend/app/player/web/managers/DOM/DOMManager.ts index 370df5c03..708129add 100644 --- a/frontend/app/player/_web/managers/DOM/DOMManager.ts +++ b/frontend/app/player/web/managers/DOM/DOMManager.ts @@ -1,9 +1,11 @@ import logger from 'App/logger'; +import type Screen from '../../Screen/Screen'; import type MessageManager from '../../MessageManager'; + import type { Message, SetNodeScroll, CreateElementNode } from '../../messages'; -import ListWalker from '../../../_common/ListWalker'; +import ListWalker from '../../../common/ListWalker'; import StylesManager, { rewriteNodeStyleSheet } from './StylesManager'; import FocusManager from './FocusManager'; import { @@ -51,12 +53,13 @@ export default class DOMManager extends ListWalker { constructor( - private readonly screen: MessageManager, + private readonly screen: Screen, private readonly isMobile: boolean, - public readonly time: number + public readonly time: number, + mm: MessageManager, ) { super() - this.stylesManager = new StylesManager(screen) + this.stylesManager = new StylesManager(screen, mm) } append(m: Message): void { diff --git a/frontend/app/player/_web/managers/DOM/FocusManager.ts b/frontend/app/player/web/managers/DOM/FocusManager.ts similarity index 93% rename from frontend/app/player/_web/managers/DOM/FocusManager.ts rename to frontend/app/player/web/managers/DOM/FocusManager.ts index 629f625e3..174335473 100644 --- a/frontend/app/player/_web/managers/DOM/FocusManager.ts +++ b/frontend/app/player/web/managers/DOM/FocusManager.ts @@ -1,7 +1,7 @@ import logger from 'App/logger'; import type { SetNodeFocus } from '../../messages'; import type { VElement } from './VirtualDOM'; -import ListWalker from '../../../_common/ListWalker'; +import ListWalker from '../../../common/ListWalker'; const FOCUS_CLASS = "-openreplay-focus" diff --git a/frontend/app/player/_web/managers/DOM/StylesManager.ts b/frontend/app/player/web/managers/DOM/StylesManager.ts similarity index 54% rename from frontend/app/player/_web/managers/DOM/StylesManager.ts rename to frontend/app/player/web/managers/DOM/StylesManager.ts index 1cb49c5dd..5cffa9be9 100644 --- a/frontend/app/player/_web/managers/DOM/StylesManager.ts +++ b/frontend/app/player/web/managers/DOM/StylesManager.ts @@ -1,11 +1,9 @@ -import type MessageManager from '../../MessageManager'; +import type Screen from '../../Screen/Screen'; +import type MessageManager from '../../MessageManager' import type { CssInsertRule, CssDeleteRule } from '../../messages'; type CSSRuleMessage = CssInsertRule | CssDeleteRule; -import ListWalker from '../../../_common/ListWalker'; - - const HOVER_CN = "-openreplay-hover"; const HOVER_SELECTOR = `.${HOVER_CN}`; @@ -21,17 +19,14 @@ export function rewriteNodeStyleSheet(doc: Document, node: HTMLLinkElement | HTM } } -export default class StylesManager extends ListWalker { +export default class StylesManager { private linkLoadingCount: number = 0; private linkLoadPromises: Array> = []; private skipCSSLinks: Array = []; // should be common for all pages - constructor(private readonly screen: MessageManager) { - super(); - } + constructor(private readonly screen: Screen, private readonly mm: MessageManager) {} reset():void { - super.reset(); this.linkLoadingCount = 0; this.linkLoadPromises = []; @@ -43,7 +38,7 @@ export default class StylesManager extends ListWalker { const promise = new Promise((resolve) => { if (this.skipCSSLinks.includes(value)) resolve(); this.linkLoadingCount++; - this.screen.setCSSLoading(true); + this.mm.setCSSLoading(true); const addSkipAndResolve = () => { this.skipCSSLinks.push(value); // watch out resolve() @@ -62,44 +57,13 @@ export default class StylesManager extends ListWalker { clearTimeout(timeoutId); this.linkLoadingCount--; if (this.linkLoadingCount === 0) { - this.screen.setCSSLoading(false); + this.mm.setCSSLoading(false); } }); this.linkLoadPromises.push(promise); } - private manageRule = (msg: CSSRuleMessage):void => { - // if (msg.tp === "css_insert_rule") { - // let styleSheet = this.#screen.document.styleSheets[ msg.stylesheetID ]; - // if (!styleSheet) { - // logger.log("No stylesheet with corresponding ID found: ", msg) - // styleSheet = this.#screen.document.styleSheets[0]; - // if (!styleSheet) { - // return; - // } - // } - // try { - // styleSheet.insertRule(msg.rule, msg.index); - // } catch (e) { - // logger.log(e, msg) - // //const index = Math.min(msg.index, styleSheet.cssRules.length); - // styleSheet.insertRule(msg.rule, styleSheet.cssRules.length); - // //styleSheet.ownerNode.innerHTML += msg.rule; - // } - // } - // if (msg.tp === "css_delete_rule") { - // // console.warn('Warning: STYLESHEET_DELETE_RULE msg') - // const styleSheet = this.#screen.document.styleSheets[msg.stylesheetID]; - // if (!styleSheet) { - // logger.log("No stylesheet with corresponding ID found: ", msg) - // return; - // } - // styleSheet.deleteRule(msg.index); - // } - } - - moveReady(t: number): Promise { + moveReady(t: number): Promise { return Promise.all(this.linkLoadPromises) - .then(() => this.moveApply(t, this.manageRule)); } } diff --git a/frontend/app/player/_web/managers/DOM/VirtualDOM.ts b/frontend/app/player/web/managers/DOM/VirtualDOM.ts similarity index 100% rename from frontend/app/player/_web/managers/DOM/VirtualDOM.ts rename to frontend/app/player/web/managers/DOM/VirtualDOM.ts diff --git a/frontend/app/player/_web/managers/DOM/safeCSSRules.ts b/frontend/app/player/web/managers/DOM/safeCSSRules.ts similarity index 100% rename from frontend/app/player/_web/managers/DOM/safeCSSRules.ts rename to frontend/app/player/web/managers/DOM/safeCSSRules.ts diff --git a/frontend/app/player/_web/managers/MouseMoveManager.ts b/frontend/app/player/web/managers/MouseMoveManager.ts similarity index 96% rename from frontend/app/player/_web/managers/MouseMoveManager.ts rename to frontend/app/player/web/managers/MouseMoveManager.ts index 63b5ca895..ea08e1bc9 100644 --- a/frontend/app/player/_web/managers/MouseMoveManager.ts +++ b/frontend/app/player/web/managers/MouseMoveManager.ts @@ -2,7 +2,7 @@ import type Screen from '../Screen/Screen' import type { Point } from '../Screen/types' import type { MouseMove } from '../messages' -import ListWalker from '../../_common/ListWalker' +import ListWalker from '../../common/ListWalker' const HOVER_CLASS = "-openreplay-hover"; const HOVER_CLASS_DEPR = "-asayer-hover"; diff --git a/frontend/app/player/_web/managers/PagesManager.ts b/frontend/app/player/web/managers/PagesManager.ts similarity index 81% rename from frontend/app/player/_web/managers/PagesManager.ts rename to frontend/app/player/web/managers/PagesManager.ts index 6a3f20f7c..b4ddbe28b 100644 --- a/frontend/app/player/_web/managers/PagesManager.ts +++ b/frontend/app/player/web/managers/PagesManager.ts @@ -1,28 +1,23 @@ import type Screen from '../Screen/Screen'; import type { Message } from '../messages'; +import type MessageManager from '../MessageManager'; -import ListWalker from '../../_common/ListWalker'; + +import ListWalker from '../../common/ListWalker'; import DOMManager from './DOM/DOMManager'; export default class PagesManager extends ListWalker { private currentPage: DOMManager | null = null - private isMobile: boolean; - private screen: Screen; - - constructor(screen: Screen, isMobile: boolean) { - super() - this.screen = screen - this.isMobile = isMobile - } + constructor(private screen: Screen, private isMobile: boolean, private mm: MessageManager) { super() } /* Assumed that messages added in a correct time sequence. */ appendMessage(m: Message): void { if (m.tp === "create_document") { - super.append(new DOMManager(this.screen, this.isMobile, m.time)) + super.append(new DOMManager(this.screen, this.isMobile, m.time, this.mm)) } if (this.last === null) { // Log wrong diff --git a/frontend/app/player/_web/managers/PerformanceTrackManager.ts b/frontend/app/player/web/managers/PerformanceTrackManager.ts similarity index 98% rename from frontend/app/player/_web/managers/PerformanceTrackManager.ts rename to frontend/app/player/web/managers/PerformanceTrackManager.ts index 424466b4a..98ce2c0b9 100644 --- a/frontend/app/player/_web/managers/PerformanceTrackManager.ts +++ b/frontend/app/player/web/managers/PerformanceTrackManager.ts @@ -1,6 +1,6 @@ import type { PerformanceTrack, SetPageVisibility } from '../messages'; -import ListWalker from '../../_common/ListWalker'; +import ListWalker from '../../common/ListWalker'; export type PerformanceChartPoint = { time: number, diff --git a/frontend/app/player/_web/managers/WindowNodeCounter.ts b/frontend/app/player/web/managers/WindowNodeCounter.ts similarity index 100% rename from frontend/app/player/_web/managers/WindowNodeCounter.ts rename to frontend/app/player/web/managers/WindowNodeCounter.ts diff --git a/frontend/app/player/_web/messages/JSONRawMessageReader.ts b/frontend/app/player/web/messages/JSONRawMessageReader.ts similarity index 100% rename from frontend/app/player/_web/messages/JSONRawMessageReader.ts rename to frontend/app/player/web/messages/JSONRawMessageReader.ts diff --git a/frontend/app/player/_web/messages/MFileReader.ts b/frontend/app/player/web/messages/MFileReader.ts similarity index 100% rename from frontend/app/player/_web/messages/MFileReader.ts rename to frontend/app/player/web/messages/MFileReader.ts diff --git a/frontend/app/player/_web/messages/MStreamReader.ts b/frontend/app/player/web/messages/MStreamReader.ts similarity index 100% rename from frontend/app/player/_web/messages/MStreamReader.ts rename to frontend/app/player/web/messages/MStreamReader.ts diff --git a/frontend/app/player/_web/messages/PrimitiveReader.ts b/frontend/app/player/web/messages/PrimitiveReader.ts similarity index 100% rename from frontend/app/player/_web/messages/PrimitiveReader.ts rename to frontend/app/player/web/messages/PrimitiveReader.ts diff --git a/frontend/app/player/_web/messages/RawMessageReader.ts b/frontend/app/player/web/messages/RawMessageReader.ts similarity index 100% rename from frontend/app/player/_web/messages/RawMessageReader.ts rename to frontend/app/player/web/messages/RawMessageReader.ts diff --git a/frontend/app/player/_web/messages/index.ts b/frontend/app/player/web/messages/index.ts similarity index 100% rename from frontend/app/player/_web/messages/index.ts rename to frontend/app/player/web/messages/index.ts diff --git a/frontend/app/player/_web/messages/message.ts b/frontend/app/player/web/messages/message.ts similarity index 100% rename from frontend/app/player/_web/messages/message.ts rename to frontend/app/player/web/messages/message.ts diff --git a/frontend/app/player/_web/messages/raw.ts b/frontend/app/player/web/messages/raw.ts similarity index 100% rename from frontend/app/player/_web/messages/raw.ts rename to frontend/app/player/web/messages/raw.ts diff --git a/frontend/app/player/_web/messages/timed.ts b/frontend/app/player/web/messages/timed.ts similarity index 100% rename from frontend/app/player/_web/messages/timed.ts rename to frontend/app/player/web/messages/timed.ts diff --git a/frontend/app/player/_web/messages/tracker-legacy.ts b/frontend/app/player/web/messages/tracker-legacy.ts similarity index 100% rename from frontend/app/player/_web/messages/tracker-legacy.ts rename to frontend/app/player/web/messages/tracker-legacy.ts diff --git a/frontend/app/player/_web/messages/tracker.ts b/frontend/app/player/web/messages/tracker.ts similarity index 100% rename from frontend/app/player/_web/messages/tracker.ts rename to frontend/app/player/web/messages/tracker.ts diff --git a/frontend/app/player/_web/messages/urlResolve.ts b/frontend/app/player/web/messages/urlResolve.ts similarity index 100% rename from frontend/app/player/_web/messages/urlResolve.ts rename to frontend/app/player/web/messages/urlResolve.ts diff --git a/frontend/app/player/_web/network/crypto.ts b/frontend/app/player/web/network/crypto.ts similarity index 100% rename from frontend/app/player/_web/network/crypto.ts rename to frontend/app/player/web/network/crypto.ts diff --git a/frontend/app/player/_web/network/loadFiles.ts b/frontend/app/player/web/network/loadFiles.ts similarity index 100% rename from frontend/app/player/_web/network/loadFiles.ts rename to frontend/app/player/web/network/loadFiles.ts