openreplay/frontend/app/player/web/Screen/Inspector.ts
Andrey Babushkin fd5c0c9747
Add lokalisation (#3092)
* applied eslint

* add locales and lint the project

* removed error boundary

* updated locales

* fix min files

* fix locales
2025-03-06 17:43:15 +01:00

48 lines
1.3 KiB
TypeScript

import type Screen from './Screen';
import type Marker from './Marker';
export default class Inspector {
constructor(
private screen: Screen,
private marker: Marker,
) {}
private onMouseMove = (e: MouseEvent) => {
e.stopPropagation();
const target = this.screen.getElementFromPoint(e);
if (target === this.marker.target) {
return;
}
this.marker.mark(target);
};
private onOverlayLeave = () => this.marker.unmark();
private onMarkClick = () => {
const { target } = this.marker;
if (!target) {
return;
}
this.clickCallback && this.clickCallback({ target });
};
addClickListener(callback: (el: { target: Element }) => void) {
this.clickCallback = callback;
}
private clickCallback: (e: { target: Element }) => void = () => {};
enable() {
this.screen.overlay.addEventListener('mousemove', this.onMouseMove);
this.screen.overlay.addEventListener('mouseleave', this.onOverlayLeave);
this.screen.overlay.addEventListener('click', this.onMarkClick);
}
clean() {
this.screen.overlay.removeEventListener('mousemove', this.onMouseMove);
this.screen.overlay.removeEventListener('mouseleave', this.onOverlayLeave);
this.screen.overlay.removeEventListener('click', this.onMarkClick);
}
}