1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.Grabber = void 0;
|
4 | const Utils_1 = require("../../../Utils");
|
5 | const Enums_1 = require("../../../Enums");
|
6 | const ExternalInteractorBase_1 = require("../../../Core/ExternalInteractorBase");
|
7 | class 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 | }
|
48 | exports.Grabber = Grabber;
|