UNPKG

@devexperts/dxcharts-lite

Version:
48 lines (47 loc) 1.92 kB
/* * Copyright (C) 2019 - 2026 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); } } }; } }