/** * Dispatches `Interaction` objects through the view hierarchy and synthesizes * subtree-level pointer transition events. * * The dispatcher keeps track of the previously hovered target path and * compares it with the current one on every `mousemove`. From that diff it * emits: * - `mouseleave` for views that are no longer in the pointed subtree * - `mouseenter` for views that have newly entered the pointed subtree * * This is intentionally closer to `mouseenter` / `mouseleave` semantics than * DOM `mouseover` / `mouseout`. Moving between descendants inside the same * subtree does not cause the ancestor to leave and re-enter. * * `dispatch()` handles ordinary event propagation and updates the current * pointed target. `handlePointerLeave()` is used when the pointer leaves the * canvas entirely, in which case the dispatcher emits `mouseleave` for the * whole previously hovered path and clears its tracked state. * * The dispatcher does not do hit testing itself. It relies on views to route * the incoming interaction and set `interaction.target` during propagation. */ export default class InteractionDispatcher { /** * @param {object} options * @param {import("../view/view.js").default} options.viewRoot */ constructor({ viewRoot }: { viewRoot: import("../view/view.js").default; }); /** * Dispatches an interaction through the view tree and updates the tracked * hover path for transition synthesis. * * @param {import("../view/layout/point.js").default} point * @param {import("../utils/interactionEvent.js").InteractionUiEvent} uiEvent * @returns {Interaction} */ dispatch(point: import("../view/layout/point.js").default, uiEvent: import("../utils/interactionEvent.js").InteractionUiEvent): Interaction; /** * Dispatches mouseleave transitions when the pointer leaves the canvas. * * @param {import("../utils/interactionEvent.js").InteractionUiEvent} uiEvent */ handlePointerLeave(uiEvent: import("../utils/interactionEvent.js").InteractionUiEvent): void; getCurrentTarget(): import("../view/view.js").default; #private; } import Interaction from "../utils/interaction.js"; //# sourceMappingURL=interactionDispatcher.d.ts.map