123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- import * as graphic from '../../util/graphic.js';
- import { AxisPointer } from './AxisPointer.js';
- import { AxisBaseModel } from '../../coord/AxisBaseModel.js';
- import ExtensionAPI from '../../core/ExtensionAPI.js';
- import Element from 'zrender/lib/Element.js';
- import { VerticalAlign, HorizontalAlign, CommonAxisPointerOption } from '../../util/types.js';
- import { PathProps } from 'zrender/lib/graphic/Path.js';
- import Model from '../../model/Model.js';
- import { TextProps } from 'zrender/lib/graphic/Text.js';
- interface Transform {
- x: number;
- y: number;
- rotation: number;
- }
- declare type AxisValue = CommonAxisPointerOption['value'];
- declare type AxisPointerModel = Model<CommonAxisPointerOption>;
- interface BaseAxisPointer {
- /**
- * Should be implemenented by sub-class if support `handle`.
- */
- getHandleTransform(value: AxisValue, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): Transform;
- /**
- * * Should be implemenented by sub-class if support `handle`.
- */
- updateHandleTransform(transform: Transform, delta: number[], axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): Transform & {
- cursorPoint: number[];
- tooltipOption?: {
- verticalAlign?: VerticalAlign;
- align?: HorizontalAlign;
- };
- };
- }
- export interface AxisPointerElementOptions {
- graphicKey: string;
- pointer: PathProps & {
- type: 'Line' | 'Rect' | 'Circle' | 'Sector';
- };
- label: TextProps;
- }
- /**
- * Base axis pointer class in 2D.
- */
- declare class BaseAxisPointer implements AxisPointer {
- private _group;
- private _lastGraphicKey;
- private _handle;
- private _dragging;
- private _lastValue;
- private _lastStatus;
- private _payloadInfo;
- /**
- * If have transition animation
- */
- private _moveAnimation;
- private _axisModel;
- private _axisPointerModel;
- private _api;
- /**
- * In px, arbitrary value. Do not set too small,
- * no animation is ok for most cases.
- */
- protected animationThreshold: number;
- /**
- * @implement
- */
- render(axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel, api: ExtensionAPI, forceRender?: boolean): void;
- /**
- * @implement
- */
- remove(api: ExtensionAPI): void;
- /**
- * @implement
- */
- dispose(api: ExtensionAPI): void;
- /**
- * @protected
- */
- determineAnimation(axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): boolean;
- /**
- * add {pointer, label, graphicKey} to elOption
- * @protected
- */
- makeElOption(elOption: AxisPointerElementOptions, value: AxisValue, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel, api: ExtensionAPI): void;
- /**
- * @protected
- */
- createPointerEl(group: graphic.Group, elOption: AxisPointerElementOptions, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): void;
- /**
- * @protected
- */
- createLabelEl(group: graphic.Group, elOption: AxisPointerElementOptions, axisModel: AxisBaseModel, axisPointerModel: AxisPointerModel): void;
- /**
- * @protected
- */
- updatePointerEl(group: graphic.Group, elOption: AxisPointerElementOptions, updateProps: (el: Element, props: PathProps) => void): void;
- /**
- * @protected
- */
- updateLabelEl(group: graphic.Group, elOption: AxisPointerElementOptions, updateProps: (el: Element, props: PathProps) => void, axisPointerModel: AxisPointerModel): void;
- /**
- * @private
- */
- _renderHandle(value: AxisValue): void;
- private _moveHandleToValue;
- private _onHandleDragMove;
- /**
- * Throttled method.
- */
- _doDispatchAxisPointer(): void;
- private _onHandleDragEnd;
- /**
- * @private
- */
- clear(api: ExtensionAPI): void;
- /**
- * @protected
- */
- doClear(): void;
- buildLabel(xy: number[], wh: number[], xDimIndex: 0 | 1): {
- x: number;
- y: number;
- width: number;
- height: number;
- };
- }
- export default BaseAxisPointer;
|