MCPcopy
hub / github.com/mathuo/dockview / PointerGhost

Class PointerGhost

packages/dockview-core/src/dnd/pointer/pointerGhost.ts:24–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22 * hit-testing.
23 */
24export class PointerGhost implements IDisposable {
25 private readonly element: HTMLElement;
26 private readonly offsetX: number;
27 private readonly offsetY: number;
28 private _disposed = false;
29
30 constructor(opts: PointerGhostOptions) {
31 this.element = opts.element;
32 this.offsetX = opts.offsetX ?? 0;
33 this.offsetY = opts.offsetY ?? 0;
34
35 // Animate via transform (see update); position:fixed for scroll-independence.
36 this.element.style.position = 'fixed';
37 this.element.style.left = '0px';
38 this.element.style.top = '0px';
39 this.element.style.pointerEvents = 'none';
40 this.element.style.zIndex = '99999';
41 this.element.style.opacity = String(opts.opacity ?? 0.8);
42 this.element.style.willChange = 'transform';
43 this.element.style.transform = `translate3d(${
44 opts.initialX - this.offsetX
45 }px, ${opts.initialY - this.offsetY}px, 0)`;
46
47 const ownerDocument = opts.owner?.ownerDocument ?? document;
48 ownerDocument.body.appendChild(this.element);
49 }
50
51 update(clientX: number, clientY: number): void {
52 if (this._disposed) {
53 return;
54 }
55 // translate3d composites on the GPU — no layout per pointermove.
56 this.element.style.transform = `translate3d(${
57 clientX - this.offsetX
58 }px, ${clientY - this.offsetY}px, 0)`;
59 }
60
61 dispose(): void {
62 if (this._disposed) {
63 return;
64 }
65 this._disposed = true;
66 this.element.remove();
67 }
68}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…