@devexperts/dxcharts-lite
Version:
48 lines (47 loc) • 1.92 kB
JavaScript
/*
* Copyright (C) 2019 - 2025 Devexperts Solutions IE Limited
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
* If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import { ChartBaseElement } from '../../model/chart-base-element';
export const defaultDragComponentOptions = {
dragPredicate: () => true,
};
export class DragNDropComponent extends ChartBaseElement {
constructor(hitTest, dragCallbacks, canvasInputListener, chartPanComponent, dragComponentOptions) {
super();
this.hitTest = hitTest;
this.dragCallbacks = dragCallbacks;
this.canvasInputListener = canvasInputListener;
this.chartPanComponent = chartPanComponent;
this.dragComponentOptions = dragComponentOptions;
this.dragging = false;
this.draggedPixels = 0;
this.onDragStart = (point) => {
if (this.dragComponentOptions.dragPredicate()) {
this.dragging = true;
this.draggedPixels = 0;
this.dragCallbacks.onDragStart && this.dragCallbacks.onDragStart(point);
}
};
this.onDragTick = (yDelta) => {
if (this.dragComponentOptions.dragPredicate()) {
if (this.dragging) {
this.draggedPixels += yDelta;
this.dragCallbacks.onDragTick({
delta: yDelta,
draggedPixels: this.draggedPixels,
});
}
}
};
this.onDragEnd = () => {
if (this.dragComponentOptions.dragPredicate()) {
if (this.dragging) {
this.dragging = false;
this.dragCallbacks.onDragEnd && this.dragCallbacks.onDragEnd(this.draggedPixels);
}
}
};
}
}