UNPKG

2.57 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.Grabber = void 0;
4const Utils_1 = require("../../../Utils");
5const Enums_1 = require("../../../Enums");
6const ExternalInteractorBase_1 = require("../../../Core/ExternalInteractorBase");
7class Grabber extends ExternalInteractorBase_1.ExternalInteractorBase {
8 constructor(container) {
9 super(container);
10 }
11 isEnabled() {
12 const container = this.container, mouse = container.interactivity.mouse, events = container.actualOptions.interactivity.events;
13 return events.onHover.enable && !!mouse.position && (0, Utils_1.isInArray)(Enums_1.HoverMode.grab, events.onHover.mode);
14 }
15 reset() {
16 }
17 interact() {
18 var _a;
19 const container = this.container, options = container.actualOptions, interactivity = options.interactivity;
20 if (interactivity.events.onHover.enable && container.interactivity.status === Utils_1.Constants.mouseMoveEvent) {
21 const mousePos = container.interactivity.mouse.position;
22 if (!mousePos) {
23 return;
24 }
25 const distance = container.retina.grabModeDistance, query = container.particles.quadTree.queryCircle(mousePos, distance);
26 for (const particle of query) {
27 const pos = particle.getPosition(), pointDistance = (0, Utils_1.getDistance)(pos, mousePos);
28 if (pointDistance <= distance) {
29 const grabLineOptions = interactivity.modes.grab.links, lineOpacity = grabLineOptions.opacity, opacityLine = lineOpacity - (pointDistance * lineOpacity) / distance;
30 if (opacityLine <= 0) {
31 continue;
32 }
33 const optColor = (_a = grabLineOptions.color) !== null && _a !== void 0 ? _a : particle.options.links.color;
34 if (!container.particles.grabLineColor) {
35 const linksOptions = options.interactivity.modes.grab.links;
36 container.particles.grabLineColor = (0, Utils_1.getLinkRandomColor)(optColor, linksOptions.blink, linksOptions.consent);
37 }
38 const colorLine = (0, Utils_1.getLinkColor)(particle, undefined, container.particles.grabLineColor);
39 if (!colorLine) {
40 return;
41 }
42 container.canvas.drawGrabLine(particle, colorLine, opacityLine, mousePos);
43 }
44 }
45 }
46 }
47}
48exports.Grabber = Grabber;