e7187c4827d747b1603a527b430d8f9631ebfe62ddb129e2dedc9057f651fa96846ed0865b2c5760b8fb77915e2082c908f0e5a8353f942825e644fee8ba94 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import * as graphic from '../../util/graphic.js';
  2. import SeriesData from '../../data/SeriesData.js';
  3. import { StageHandlerProgressParams, LabelOption, SymbolOptionMixin, ItemStyleOption, ZRColor, AnimationOptionMixin, ZRStyleProps, StatesOptionMixin, BlurScope, DisplayState, DefaultEmphasisFocus } from '../../util/types.js';
  4. import { CoordinateSystemClipArea } from '../../coord/CoordinateSystem.js';
  5. import Model from '../../model/Model.js';
  6. import Element from 'zrender/lib/Element.js';
  7. import SeriesModel from '../../model/Series.js';
  8. interface UpdateOpt {
  9. isIgnore?(idx: number): boolean;
  10. clipShape?: CoordinateSystemClipArea;
  11. getSymbolPoint?(idx: number): number[];
  12. disableAnimation?: boolean;
  13. }
  14. interface SymbolLike extends graphic.Group {
  15. updateData(data: SeriesData, idx: number, scope?: SymbolDrawSeriesScope, opt?: UpdateOpt): void;
  16. fadeOut?(cb: () => void, seriesModel: SeriesModel): void;
  17. }
  18. interface SymbolLikeCtor {
  19. new (data: SeriesData, idx: number, scope?: SymbolDrawSeriesScope, opt?: UpdateOpt): SymbolLike;
  20. }
  21. interface RippleEffectOption {
  22. period?: number;
  23. /**
  24. * Scale of ripple
  25. */
  26. scale?: number;
  27. brushType?: 'fill' | 'stroke';
  28. color?: ZRColor;
  29. /**
  30. * ripple number
  31. */
  32. number?: number;
  33. }
  34. interface SymbolDrawStateOption {
  35. itemStyle?: ItemStyleOption;
  36. label?: LabelOption;
  37. }
  38. export interface SymbolDrawItemModelOption extends SymbolOptionMixin<object>, StatesOptionMixin<SymbolDrawStateOption, {
  39. emphasis?: {
  40. focus?: DefaultEmphasisFocus;
  41. scale?: boolean | number;
  42. };
  43. }>, SymbolDrawStateOption {
  44. cursor?: string;
  45. rippleEffect?: RippleEffectOption;
  46. }
  47. export interface SymbolDrawSeriesScope {
  48. emphasisItemStyle?: ZRStyleProps;
  49. blurItemStyle?: ZRStyleProps;
  50. selectItemStyle?: ZRStyleProps;
  51. focus?: DefaultEmphasisFocus;
  52. blurScope?: BlurScope;
  53. emphasisDisabled?: boolean;
  54. labelStatesModels: Record<DisplayState, Model<LabelOption>>;
  55. itemModel?: Model<SymbolDrawItemModelOption>;
  56. hoverScale?: boolean | number;
  57. cursorStyle?: string;
  58. fadeIn?: boolean;
  59. }
  60. export declare type ListForSymbolDraw = SeriesData<Model<SymbolDrawItemModelOption & AnimationOptionMixin>>;
  61. declare class SymbolDraw {
  62. group: graphic.Group;
  63. private _data;
  64. private _SymbolCtor;
  65. private _seriesScope;
  66. private _getSymbolPoint;
  67. private _progressiveEls;
  68. constructor(SymbolCtor?: SymbolLikeCtor);
  69. /**
  70. * Update symbols draw by new data
  71. */
  72. updateData(data: ListForSymbolDraw, opt?: UpdateOpt): void;
  73. updateLayout(): void;
  74. incrementalPrepareUpdate(data: ListForSymbolDraw): void;
  75. /**
  76. * Update symbols draw by new data
  77. */
  78. incrementalUpdate(taskParams: StageHandlerProgressParams, data: ListForSymbolDraw, opt?: UpdateOpt): void;
  79. eachRendered(cb: (el: Element) => boolean | void): void;
  80. remove(enableAnimation?: boolean): void;
  81. }
  82. export default SymbolDraw;