-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathMouseHelper.ts
47 lines (41 loc) · 1.22 KB
/
MouseHelper.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { css, html, TemplateResult } from 'lit';
import { customElement } from 'lit/decorators.js';
import { RapidElement } from '../src/RapidElement';
@customElement('mouse-helper')
export default class MouseHelper extends RapidElement {
static get styles() {
return css`
:host {
position: absolute;
}
.pointer {
position: absolute;
width: 6px;
height: 6px;
z-index: 1000;
background: rgba(0, 250, 0, 0.3);
border-radius: 20px;
margin-left: -3px;
margin-top: -3px;
pointer-events: none;
}
`;
}
connectedCallback(): void {
super.connectedCallback();
this.updateCursor = this.updateCursor.bind(this);
document.addEventListener('mousemove', this.updateCursor);
}
disconnectedCallback(): void {
super.disconnectedCallback();
document.removeEventListener('mousemove', this.updateCursor);
}
public updateCursor(event: MouseEvent) {
const pointer = this.shadowRoot.querySelector('.pointer') as HTMLDivElement;
pointer.style.left = event.offsetX + 'px';
pointer.style.top = event.offsetY + 'px';
}
public render(): TemplateResult {
return html`<div class="pointer"></div>`;
}
}