@visactor/vchart 1.12.13 → 1.12.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +247 -118
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/sankey/sankey-transformer.js +2 -0
  6. package/cjs/chart/sankey/sankey-transformer.js.map +1 -1
  7. package/cjs/compile/compiler.js +2 -0
  8. package/cjs/compile/compiler.js.map +1 -1
  9. package/cjs/compile/interface/compiler.d.ts +1 -0
  10. package/cjs/compile/interface/compiler.js.map +1 -1
  11. package/cjs/compile/util.js +1 -2
  12. package/cjs/component/data-zoom/data-filter-base-component.d.ts +3 -0
  13. package/cjs/component/data-zoom/data-filter-base-component.js +32 -8
  14. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  15. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +5 -1
  16. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  17. package/cjs/component/data-zoom/util.d.ts +3 -0
  18. package/cjs/component/data-zoom/util.js +12 -2
  19. package/cjs/component/data-zoom/util.js.map +1 -1
  20. package/cjs/component/index.js +2 -1
  21. package/cjs/component/marker/base-marker.d.ts +4 -1
  22. package/cjs/component/marker/base-marker.js +12 -1
  23. package/cjs/component/marker/base-marker.js.map +1 -1
  24. package/cjs/component/marker/interface.d.ts +9 -2
  25. package/cjs/component/marker/interface.js.map +1 -1
  26. package/cjs/component/marker/mark-area/base-mark-area.js +5 -5
  27. package/cjs/component/marker/mark-area/base-mark-area.js.map +1 -1
  28. package/cjs/component/marker/mark-line/base-mark-line.js +9 -9
  29. package/cjs/component/marker/mark-line/base-mark-line.js.map +1 -1
  30. package/cjs/component/marker/mark-point/base-mark-point.js +16 -15
  31. package/cjs/component/marker/mark-point/base-mark-point.js.map +1 -1
  32. package/cjs/component/marker/utils.d.ts +4 -4
  33. package/cjs/component/marker/utils.js +7 -7
  34. package/cjs/component/marker/utils.js.map +1 -1
  35. package/cjs/constant/layout.js +2 -1
  36. package/cjs/constant/polar.js +1 -2
  37. package/cjs/core/index.d.ts +3 -1
  38. package/cjs/core/index.js +3 -3
  39. package/cjs/core/index.js.map +1 -1
  40. package/cjs/series/bar/bar.d.ts +2 -2
  41. package/cjs/series/bar/bar.js +15 -14
  42. package/cjs/series/bar/bar.js.map +1 -1
  43. package/cjs/series/progress/linear/linear.js +4 -4
  44. package/cjs/series/progress/linear/linear.js.map +1 -1
  45. package/cjs/series/sankey/interface.d.ts +3 -1
  46. package/cjs/series/sankey/interface.js.map +1 -1
  47. package/cjs/series/sankey/sankey.js +16 -21
  48. package/cjs/series/sankey/sankey.js.map +1 -1
  49. package/cjs/util/scale.d.ts +1 -1
  50. package/cjs/util/scale.js +2 -2
  51. package/cjs/util/scale.js.map +1 -1
  52. package/esm/chart/sankey/sankey-transformer.js +2 -0
  53. package/esm/chart/sankey/sankey-transformer.js.map +1 -1
  54. package/esm/compile/compiler.js +1 -0
  55. package/esm/compile/compiler.js.map +1 -1
  56. package/esm/compile/interface/compiler.d.ts +1 -0
  57. package/esm/compile/interface/compiler.js.map +1 -1
  58. package/esm/compile/util.js +1 -2
  59. package/esm/component/data-zoom/data-filter-base-component.d.ts +3 -0
  60. package/esm/component/data-zoom/data-filter-base-component.js +33 -9
  61. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  62. package/esm/component/data-zoom/scroll-bar/scroll-bar.js +5 -1
  63. package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  64. package/esm/component/data-zoom/util.d.ts +3 -0
  65. package/esm/component/data-zoom/util.js +8 -0
  66. package/esm/component/data-zoom/util.js.map +1 -1
  67. package/esm/component/index.js +2 -1
  68. package/esm/component/marker/base-marker.d.ts +4 -1
  69. package/esm/component/marker/base-marker.js +12 -1
  70. package/esm/component/marker/base-marker.js.map +1 -1
  71. package/esm/component/marker/interface.d.ts +9 -2
  72. package/esm/component/marker/interface.js.map +1 -1
  73. package/esm/component/marker/mark-area/base-mark-area.js +5 -5
  74. package/esm/component/marker/mark-area/base-mark-area.js.map +1 -1
  75. package/esm/component/marker/mark-line/base-mark-line.js +9 -9
  76. package/esm/component/marker/mark-line/base-mark-line.js.map +1 -1
  77. package/esm/component/marker/mark-point/base-mark-point.js +15 -15
  78. package/esm/component/marker/mark-point/base-mark-point.js.map +1 -1
  79. package/esm/component/marker/utils.d.ts +4 -4
  80. package/esm/component/marker/utils.js +8 -7
  81. package/esm/component/marker/utils.js.map +1 -1
  82. package/esm/constant/layout.js +2 -1
  83. package/esm/constant/polar.js +1 -2
  84. package/esm/core/index.d.ts +3 -1
  85. package/esm/core/index.js +3 -1
  86. package/esm/core/index.js.map +1 -1
  87. package/esm/series/bar/bar.d.ts +2 -2
  88. package/esm/series/bar/bar.js +15 -14
  89. package/esm/series/bar/bar.js.map +1 -1
  90. package/esm/series/progress/linear/linear.js +4 -4
  91. package/esm/series/progress/linear/linear.js.map +1 -1
  92. package/esm/series/sankey/interface.d.ts +3 -1
  93. package/esm/series/sankey/interface.js.map +1 -1
  94. package/esm/series/sankey/sankey.js +14 -25
  95. package/esm/series/sankey/sankey.js.map +1 -1
  96. package/esm/util/scale.d.ts +1 -1
  97. package/esm/util/scale.js +2 -2
  98. package/esm/util/scale.js.map +1 -1
  99. package/package.json +18 -19
@@ -21,7 +21,9 @@ class SankeyChartSpecTransformer extends base_1.BaseChartSpecTransformer {
21
21
  linkWidth: spec.linkWidth,
22
22
  minStepWidth: spec.minStepWidth,
23
23
  minNodeHeight: spec.minNodeHeight,
24
+ maxNodeHeight: spec.maxNodeHeight,
24
25
  minLinkHeight: spec.minLinkHeight,
26
+ maxLinkHeight: spec.maxLinkHeight,
25
27
  dropIsolatedNode: spec.dropIsolatedNode,
26
28
  nodeHeight: spec.nodeHeight,
27
29
  linkHeight: spec.linkHeight,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/chart/sankey/sankey-transformer.ts"],"names":[],"mappings":";;;AACA,kCAAmD;AAGnD,MAAa,0BAEX,SAAQ,+BAA2B;IACzB,qBAAqB,CAAC,IAAO;QACrC,MAAM,MAAM,mCACP,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,KACpC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,EAE7B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,YAAY,EAAE,IAAI,CAAC,YAAY,EAE/B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EAEjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,GACtB,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,UAAU,EAAE;YACd,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;YACzB,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;SACvC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,IAAO;QACnB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CACF;AAnDD,gEAmDC","file":"sankey-transformer.js","sourcesContent":["import type { ISeriesSpec } from '../../typings';\nimport { BaseChartSpecTransformer } from '../base';\nimport type { ISankeyChartSpec } from './interface';\n\nexport class SankeyChartSpecTransformer<\n T extends ISankeyChartSpec = ISankeyChartSpec\n> extends BaseChartSpecTransformer<T> {\n protected _getDefaultSeriesSpec(spec: T): any {\n const series: any = {\n ...super._getDefaultSeriesSpec(spec),\n categoryField: spec.categoryField,\n valueField: spec.valueField,\n sourceField: spec.sourceField,\n targetField: spec.targetField,\n\n direction: spec.direction,\n nodeAlign: spec.nodeAlign,\n crossNodeAlign: spec.crossNodeAlign,\n nodeGap: spec.nodeGap,\n nodeWidth: spec.nodeWidth,\n linkWidth: spec.linkWidth,\n minStepWidth: spec.minStepWidth,\n minNodeHeight: spec.minNodeHeight,\n minLinkHeight: spec.minLinkHeight,\n dropIsolatedNode: spec.dropIsolatedNode,\n nodeHeight: spec.nodeHeight,\n linkHeight: spec.linkHeight,\n equalNodeHeight: spec.equalNodeHeight,\n linkOverlap: spec.linkOverlap,\n iterations: spec.iterations,\n nodeKey: spec.nodeKey,\n linkSortBy: spec.linkSortBy,\n nodeSortBy: spec.nodeSortBy,\n setNodeLayer: spec.setNodeLayer,\n\n node: spec.node,\n link: spec.link,\n label: spec.label,\n\n emphasis: spec.emphasis,\n inverse: spec.inverse\n };\n const seriesType = this.seriesType;\n if (seriesType) {\n series.type = seriesType;\n series[seriesType] = spec[seriesType];\n }\n\n return series;\n }\n\n transformSpec(spec: T): void {\n super.transformSpec(spec);\n this.transformSeriesSpec(spec);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/chart/sankey/sankey-transformer.ts"],"names":[],"mappings":";;;AACA,kCAAmD;AAGnD,MAAa,0BAEX,SAAQ,+BAA2B;IACzB,qBAAqB,CAAC,IAAO;QACrC,MAAM,MAAM,mCACP,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,KACpC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,EAE7B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,YAAY,EAAE,IAAI,CAAC,YAAY,EAE/B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EAEjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,GACtB,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,UAAU,EAAE;YACd,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;YACzB,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;SACvC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,IAAO;QACnB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CACF;AArDD,gEAqDC","file":"sankey-transformer.js","sourcesContent":["import type { ISeriesSpec } from '../../typings';\nimport { BaseChartSpecTransformer } from '../base';\nimport type { ISankeyChartSpec } from './interface';\n\nexport class SankeyChartSpecTransformer<\n T extends ISankeyChartSpec = ISankeyChartSpec\n> extends BaseChartSpecTransformer<T> {\n protected _getDefaultSeriesSpec(spec: T): any {\n const series: any = {\n ...super._getDefaultSeriesSpec(spec),\n categoryField: spec.categoryField,\n valueField: spec.valueField,\n sourceField: spec.sourceField,\n targetField: spec.targetField,\n\n direction: spec.direction,\n nodeAlign: spec.nodeAlign,\n crossNodeAlign: spec.crossNodeAlign,\n nodeGap: spec.nodeGap,\n nodeWidth: spec.nodeWidth,\n linkWidth: spec.linkWidth,\n minStepWidth: spec.minStepWidth,\n minNodeHeight: spec.minNodeHeight,\n maxNodeHeight: spec.maxNodeHeight,\n minLinkHeight: spec.minLinkHeight,\n maxLinkHeight: spec.maxLinkHeight,\n dropIsolatedNode: spec.dropIsolatedNode,\n nodeHeight: spec.nodeHeight,\n linkHeight: spec.linkHeight,\n equalNodeHeight: spec.equalNodeHeight,\n linkOverlap: spec.linkOverlap,\n iterations: spec.iterations,\n nodeKey: spec.nodeKey,\n linkSortBy: spec.linkSortBy,\n nodeSortBy: spec.nodeSortBy,\n setNodeLayer: spec.setNodeLayer,\n\n node: spec.node,\n link: spec.link,\n label: spec.label,\n\n emphasis: spec.emphasis,\n inverse: spec.inverse\n };\n const seriesType = this.seriesType;\n if (seriesType) {\n series.type = seriesType;\n series[seriesType] = spec[seriesType];\n }\n\n return series;\n }\n\n transformSpec(spec: T): void {\n super.transformSpec(spec);\n this.transformSeriesSpec(spec);\n }\n}\n"]}
@@ -53,6 +53,8 @@ class Compiler {
53
53
  renderCanvas: null !== (_d = this._container.canvas) && void 0 !== _d ? _d : null,
54
54
  hooks: this._option.performanceHook
55
55
  }, this._option), {
56
+ autoRefresh: (0, vutils_1.isValid)(this._option.autoRefreshDpr) ? this._option.autoRefreshDpr : !(0,
57
+ vutils_1.isValid)(this._option.dpr),
56
58
  mode: (0, util_1.toRenderMode)(this._option.mode),
57
59
  autoFit: !1,
58
60
  eventConfig: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/compile/compiler.ts"],"names":[],"mappings":"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","file":"compiler.js","sourcesContent":["import { ChartEvent, Event_Source_Type } from './../constant/event';\nimport type { IElement, InteractionSpec, IView } from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { View } from '@visactor/vgrammar-core';\nimport type {\n CompilerListenerParameters,\n CompilerModel,\n IGrammarItem,\n IProductMap,\n IRenderContainer,\n IRenderOption\n} from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { GrammarType } from './interface/compilable-item';\nimport { toRenderMode } from './util';\nimport { isMobileLikeMode, isTrueBrowser } from '../util/env';\nimport { isString } from '../util/type';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNil, isValid, Logger, LoggerLevel } from '@visactor/vutils';\nimport type { EventSourceType } from '../event/interface';\nimport type { IChart } from '../chart/interface';\nimport { vglobal } from '@visactor/vrender-core';\nimport type { IColor, Stage } from '@visactor/vrender-core';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { IVChart } from '../core/interface';\n\ntype EventListener = {\n type: string;\n callback: (...args: any[]) => void;\n};\n\nexport class Compiler {\n protected _view: IView;\n /**\n * 获取 VGrammar View 实例\n */\n getVGrammarView() {\n return this._view;\n }\n protected _viewListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _windowListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _canvasListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n\n isInited: boolean = false;\n\n private _nextRafId: number;\n\n protected _width: number;\n protected _height: number;\n\n protected _container: IRenderContainer;\n protected _option: IRenderOption;\n // 已释放标记\n private _released: boolean = false;\n\n protected _model: CompilerModel = {\n [GrammarType.signal]: {},\n [GrammarType.data]: {},\n [GrammarType.mark]: {}\n };\n\n protected _interactions: (InteractionSpec & { seriesId?: number; regionId?: number })[];\n getModel() {\n return this._model;\n }\n\n private _compileChart: IChart = null;\n\n constructor(container: IRenderContainer, option: IRenderOption) {\n this._container = container;\n this._option = option;\n }\n\n getRenderer() {\n return this._view?.renderer;\n }\n\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas(): HTMLCanvasElement | undefined {\n return this._view?.renderer.canvas();\n }\n\n /**\n * 获取 渲染引擎\n */\n getStage(): Stage | undefined {\n return this._view?.renderer.stage();\n }\n\n initView() {\n if (this._released) {\n return;\n }\n this.isInited = true;\n if (this._view) {\n return;\n }\n const logger = new Logger(this._option.logLevel ?? LoggerLevel.Error);\n if (this._option?.onError) {\n logger.addErrorHandler((...args) => {\n this._option?.onError?.(...args);\n });\n }\n this._view = new View({\n width: this._width,\n height: this._height,\n container: this._container.dom ?? null,\n renderCanvas: this._container.canvas ?? null,\n hooks: (this._option as any).performanceHook, // vgrammar 事件改造后,性能回调函数放在了hooks中实现\n ...this._option,\n mode: toRenderMode(this._option.mode),\n autoFit: false,\n eventConfig: {\n gesture: isValid(this._option.gestureConfig)\n ? (this._option.gestureConfig as any)\n : isMobileLikeMode(this._option.mode),\n disable: this._option.interactive === false\n },\n doLayout: () => {\n this._compileChart?.onLayout(this._view);\n },\n logger: logger,\n logLevel: logger.level()\n });\n this._setCanvasStyle();\n\n // emit afterRender event\n this.getStage().hooks.afterRender.tap('chart-event', this.handleStageRender);\n\n const interactive = this._option.interactive;\n if (interactive !== false) {\n // 将 view 实例化之前监听的事件挂载到 view 上\n this._viewListeners.forEach(listener => {\n this._view?.addEventListener(listener.type, listener.callback);\n });\n }\n }\n\n handleStageRender = () => {\n this._compileChart?.getEvent()?.emit(ChartEvent.afterRender, { chart: this._compileChart });\n };\n\n private _setCanvasStyle() {\n if (!this._view) {\n return;\n }\n if (this._container.dom && !isString(this._container.dom)) {\n this._container.dom.style.display = 'block';\n this._container.dom.style.position = 'relative';\n const canvas = this.getCanvas();\n if (canvas) {\n canvas.style.display = 'block';\n }\n }\n }\n\n compileInteractions() {\n this._view.removeAllInteractions();\n if (this._interactions?.length) {\n const regionCombindInteractions = {};\n\n this._interactions.forEach(interaction => {\n if (interaction.regionId) {\n const interactionId = `${interaction.regionId}-${interaction.type}-${interaction.id ?? ''}`;\n const spec = regionCombindInteractions[interactionId];\n if (spec) {\n regionCombindInteractions[interactionId] = {\n ...spec,\n ...interaction,\n selector: [...spec.selector, ...(interaction as any).selector]\n };\n } else {\n regionCombindInteractions[interactionId] = interaction;\n }\n } else {\n this._view.interaction(interaction.type, interaction);\n }\n });\n\n Object.keys(regionCombindInteractions).forEach(key => {\n const interaction = this._view.interaction(regionCombindInteractions[key].type, regionCombindInteractions[key]);\n if (this._compileChart) {\n const region = this._compileChart.getRegionsInIds([regionCombindInteractions[key].regionId])[0];\n if (region) {\n region.interaction.addVgrammarInteraction(interaction.getStartState(), interaction);\n }\n }\n });\n }\n }\n\n compile(ctx: { chart: IChart; vChart: IVChart }, option: any) {\n if (this._released) {\n return;\n }\n const { chart } = ctx;\n this._compileChart = chart;\n this.initView();\n if (!this._view) {\n return;\n }\n\n chart.compile();\n chart.afterCompile();\n this.updateDepend();\n\n this.compileInteractions();\n }\n protected clearNextRender() {\n if (this._nextRafId) {\n vglobal.getCancelAnimationFrame()(this._nextRafId);\n this._nextRafId = null;\n\n return true;\n }\n\n return false;\n }\n\n clear(ctx: { chart: IChart; vChart: IVChart }, removeGraphicItems: boolean = false) {\n const { chart } = ctx;\n\n this.clearNextRender();\n chart.clear();\n this.releaseGrammar(removeGraphicItems);\n }\n\n renderNextTick(morphConfig?: IMorphConfig): void {\n if (this._released) {\n return;\n }\n if (!this._nextRafId) {\n this._nextRafId = vglobal.getRequestAnimationFrame()(() => {\n this._nextRafId = null;\n this.render(morphConfig);\n }) as unknown as number;\n }\n }\n\n render(morphConfig?: IMorphConfig) {\n if (this._released) {\n return;\n }\n\n this.initView();\n if (!this._view) {\n return;\n }\n this._view?.run(morphConfig);\n if (this.clearNextRender()) {\n this._view?.run(morphConfig);\n }\n }\n\n updateViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n if (!this._view) {\n return;\n }\n\n this._view.renderer.setViewBox(viewBox, reRender);\n }\n\n resize(width: number, height: number, reRender: boolean = true) {\n if (!this._view) {\n return;\n }\n this._width = width;\n this._height = height;\n\n this._view.resize(width, height);\n if (reRender) {\n this.render({ morph: false });\n }\n }\n\n setBackground(color: IColor) {\n this._view?.background(color);\n }\n\n setSize(width: number, height: number) {\n this._width = width;\n this._height = height;\n if (!this._view) {\n return;\n }\n\n this._view.width(width);\n this._view.height(height);\n }\n\n setViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n if (!this._view) {\n return;\n }\n\n this._view.renderer.setViewBox(viewBox, reRender);\n }\n\n addEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n // TODO: 需要明确一下 interactive 的作用范围,同时考虑是否存在非交互行为的事件以及是否需要生效\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const wrappedCallback = function (event: any, element: IElement | null) {\n const context = element?.mark?.getContext() ?? {};\n const modelId = isValid(context.modelId) ? context.modelId : null;\n const markId = isValid(context.markId) ? context.markId : null;\n const modelUserId = isValid(context.modelUserId) ? context.modelUserId : null;\n const markUserId = isValid(context.markUserId) ? context.markUserId : null;\n\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: element,\n datum: element?.getDatum?.() || null,\n markId,\n modelId,\n markUserId,\n modelUserId\n };\n callback.call(null, params);\n }.bind(this);\n this._viewListeners.set(callback, { type, callback: wrappedCallback });\n // 如果 view 已经初始化则立刻挂载监听\n // FIXME: 目前 vgrammar 类型声明没有对齐,事件相关类型声明并没有使用 SceneItem\n this._view?.addEventListener(type, wrappedCallback as any);\n } else if (source === Event_Source_Type.window) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._windowListeners.set(callback, { type, callback: wrappedCallback });\n const windowObject = this._getGlobalThis();\n windowObject?.addEventListener(type, wrappedCallback);\n } else if (source === Event_Source_Type.canvas) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._canvasListeners.set(callback, { type, callback: wrappedCallback });\n const canvasObject = this.getStage()?.window;\n canvasObject?.addEventListener(type, wrappedCallback);\n }\n }\n\n removeEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const wrappedCallback = this._viewListeners.get(callback)?.callback;\n wrappedCallback && this._view?.removeEventListener(type, wrappedCallback);\n this._viewListeners.delete(callback);\n } else if (source === Event_Source_Type.window) {\n const windowObject = this._getGlobalThis();\n const wrappedCallback = this._windowListeners.get(callback)?.callback;\n wrappedCallback && windowObject?.removeEventListener(type, wrappedCallback);\n this._windowListeners.delete(callback);\n } else if (source === Event_Source_Type.canvas) {\n const canvasObject = this.getStage()?.window;\n const wrappedCallback = this._canvasListeners.get(callback)?.callback;\n canvasObject && wrappedCallback && canvasObject?.removeEventListener(type, wrappedCallback);\n this._canvasListeners.delete(callback);\n }\n }\n\n protected releaseEvent(): void {\n const stage = this.getStage();\n\n if (stage) {\n stage.hooks.afterRender.unTap('chart-event', this.handleStageRender);\n }\n\n // 相应的事件remove在model中完成\n this._viewListeners.clear();\n this._windowListeners.clear();\n this._canvasListeners.clear();\n }\n\n release(): void {\n this.clearNextRender();\n this.releaseEvent();\n this._option = this._container = null as any;\n // vgrammar release\n this._releaseModel();\n this._view?.release();\n this._view = null;\n this.isInited = false;\n this._compileChart = null;\n this._released = true;\n }\n\n /**\n * 释放VGrammar\n * @param removeGraphicItems 是否删除场景元素,在同步渲染,并且无动画时,必须设置为true,否则有绘图残留\n */\n releaseGrammar(removeGraphicItems: boolean = false) {\n this._releaseModel();\n if (removeGraphicItems) {\n this._view?.removeAllGraphicItems();\n }\n this._view?.removeAllGrammars();\n }\n\n protected _releaseModel() {\n // 释放model\n Object.keys(this._model).forEach(type => {\n Object.values(this._model[type] as IProductMap<IGrammarItem>).forEach(grammarItemMap => {\n Object.values(grammarItemMap).forEach((item: IGrammarItem) => {\n item.removeProduct(true); // 保留 vgrammar 语法元素,下面一起清空\n });\n });\n this._model[type] = {};\n });\n }\n\n /** 添加语法元素 */\n addGrammarItem(grammarItem: IGrammarItem) {\n const product = grammarItem.getProduct();\n if (isNil(product)) {\n return;\n }\n const id = product.id();\n const type = grammarItem.grammarType;\n if (isNil(this._model[type][id])) {\n this._model[type][id] = {};\n }\n this._model[type][id][grammarItem.id] = grammarItem;\n }\n\n /** 删除语法元素 */\n removeGrammarItem(grammarItem: IGrammarItem, reserveVGrammarModel?: boolean) {\n const product = grammarItem.getProduct();\n if (isNil(product)) {\n return;\n }\n const id = product.id();\n const type = grammarItem.grammarType;\n const map = this._model[type][id];\n if (isValid(map)) {\n delete map[grammarItem.id];\n if (Object.keys(map).length === 0) {\n delete this._model[type][id];\n }\n }\n if (!reserveVGrammarModel) {\n this._view?.removeGrammar(product);\n }\n }\n\n addInteraction(interaction: InteractionSpec & { seriesId?: number; regionId?: number }) {\n if (!this._interactions) {\n this._interactions = [];\n }\n\n this._interactions.push(interaction);\n }\n\n removeInteraction(seriesId: number) {\n if (!this._interactions) {\n return;\n }\n\n this._interactions = this._interactions.filter(entry => entry.seriesId !== seriesId);\n }\n\n /** 更新语法元素间的依赖关系,返回是否全部成功更新 */\n updateDepend(items?: IGrammarItem[]): boolean {\n if (isValid(items) && items.length > 0) {\n // 局部更新依赖\n return items.every(item => item.updateDepend());\n }\n // 全局更新依赖\n Object.values(this._model).forEach(productMap => {\n Object.values(productMap).forEach(grammarItemMap => {\n const grammarItems = Object.values(grammarItemMap) as IGrammarItem[];\n // 获取编译产物\n const product = grammarItems[0].getProduct();\n\n // 获取编译产物的依赖项\n const dependList = grammarItems\n .reduce((depend, item) => {\n if (item.getDepend().length > 0) {\n return depend.concat(item.getDepend());\n }\n return depend;\n }, [] as IGrammarItem[])\n .filter(grammarItem => !!grammarItem)\n .map(grammarItem => grammarItem.getProduct());\n\n // 更新依赖\n product.depend(dependList);\n });\n });\n return true;\n }\n\n private _getGlobalThis() {\n return isTrueBrowser(this._option.mode) ? globalThis : this.getStage()?.window;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/compile/compiler.ts"],"names":[],"mappings":"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","file":"compiler.js","sourcesContent":["import { ChartEvent, Event_Source_Type } from './../constant/event';\nimport type { IElement, InteractionSpec, IView } from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { View } from '@visactor/vgrammar-core';\nimport type {\n CompilerListenerParameters,\n CompilerModel,\n IGrammarItem,\n IProductMap,\n IRenderContainer,\n IRenderOption\n} from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { GrammarType } from './interface/compilable-item';\nimport { toRenderMode } from './util';\nimport { isMobileLikeMode, isTrueBrowser } from '../util/env';\nimport { isString } from '../util/type';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { isNil, isValid, Logger, LoggerLevel } from '@visactor/vutils';\nimport type { EventSourceType } from '../event/interface';\nimport type { IChart } from '../chart/interface';\nimport { vglobal } from '@visactor/vrender-core';\nimport type { IColor, Stage } from '@visactor/vrender-core';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { IVChart } from '../core/interface';\n\ntype EventListener = {\n type: string;\n callback: (...args: any[]) => void;\n};\n\nexport class Compiler {\n protected _view: IView;\n /**\n * 获取 VGrammar View 实例\n */\n getVGrammarView() {\n return this._view;\n }\n protected _viewListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _windowListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _canvasListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n\n isInited: boolean = false;\n\n private _nextRafId: number;\n\n protected _width: number;\n protected _height: number;\n\n protected _container: IRenderContainer;\n protected _option: IRenderOption;\n // 已释放标记\n private _released: boolean = false;\n\n protected _model: CompilerModel = {\n [GrammarType.signal]: {},\n [GrammarType.data]: {},\n [GrammarType.mark]: {}\n };\n\n protected _interactions: (InteractionSpec & { seriesId?: number; regionId?: number })[];\n getModel() {\n return this._model;\n }\n\n private _compileChart: IChart = null;\n\n constructor(container: IRenderContainer, option: IRenderOption) {\n this._container = container;\n this._option = option;\n }\n\n getRenderer() {\n return this._view?.renderer;\n }\n\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas(): HTMLCanvasElement | undefined {\n return this._view?.renderer.canvas();\n }\n\n /**\n * 获取 渲染引擎\n */\n getStage(): Stage | undefined {\n return this._view?.renderer.stage();\n }\n\n initView() {\n if (this._released) {\n return;\n }\n this.isInited = true;\n if (this._view) {\n return;\n }\n const logger = new Logger(this._option.logLevel ?? LoggerLevel.Error);\n if (this._option?.onError) {\n logger.addErrorHandler((...args) => {\n this._option?.onError?.(...args);\n });\n }\n this._view = new View({\n width: this._width,\n height: this._height,\n container: this._container.dom ?? null,\n renderCanvas: this._container.canvas ?? null,\n hooks: (this._option as any).performanceHook, // vgrammar 事件改造后,性能回调函数放在了hooks中实现\n ...this._option,\n autoRefresh: isValid(this._option.autoRefreshDpr) ? this._option.autoRefreshDpr : !isValid(this._option.dpr),\n mode: toRenderMode(this._option.mode),\n autoFit: false,\n eventConfig: {\n gesture: isValid(this._option.gestureConfig)\n ? (this._option.gestureConfig as any)\n : isMobileLikeMode(this._option.mode),\n disable: this._option.interactive === false\n },\n doLayout: () => {\n this._compileChart?.onLayout(this._view);\n },\n logger: logger,\n logLevel: logger.level()\n });\n this._setCanvasStyle();\n\n // emit afterRender event\n this.getStage().hooks.afterRender.tap('chart-event', this.handleStageRender);\n\n const interactive = this._option.interactive;\n if (interactive !== false) {\n // 将 view 实例化之前监听的事件挂载到 view 上\n this._viewListeners.forEach(listener => {\n this._view?.addEventListener(listener.type, listener.callback);\n });\n }\n }\n\n handleStageRender = () => {\n this._compileChart?.getEvent()?.emit(ChartEvent.afterRender, { chart: this._compileChart });\n };\n\n private _setCanvasStyle() {\n if (!this._view) {\n return;\n }\n if (this._container.dom && !isString(this._container.dom)) {\n this._container.dom.style.display = 'block';\n this._container.dom.style.position = 'relative';\n const canvas = this.getCanvas();\n if (canvas) {\n canvas.style.display = 'block';\n }\n }\n }\n\n compileInteractions() {\n this._view.removeAllInteractions();\n if (this._interactions?.length) {\n const regionCombindInteractions = {};\n\n this._interactions.forEach(interaction => {\n if (interaction.regionId) {\n const interactionId = `${interaction.regionId}-${interaction.type}-${interaction.id ?? ''}`;\n const spec = regionCombindInteractions[interactionId];\n if (spec) {\n regionCombindInteractions[interactionId] = {\n ...spec,\n ...interaction,\n selector: [...spec.selector, ...(interaction as any).selector]\n };\n } else {\n regionCombindInteractions[interactionId] = interaction;\n }\n } else {\n this._view.interaction(interaction.type, interaction);\n }\n });\n\n Object.keys(regionCombindInteractions).forEach(key => {\n const interaction = this._view.interaction(regionCombindInteractions[key].type, regionCombindInteractions[key]);\n if (this._compileChart) {\n const region = this._compileChart.getRegionsInIds([regionCombindInteractions[key].regionId])[0];\n if (region) {\n region.interaction.addVgrammarInteraction(interaction.getStartState(), interaction);\n }\n }\n });\n }\n }\n\n compile(ctx: { chart: IChart; vChart: IVChart }, option: any) {\n if (this._released) {\n return;\n }\n const { chart } = ctx;\n this._compileChart = chart;\n this.initView();\n if (!this._view) {\n return;\n }\n\n chart.compile();\n chart.afterCompile();\n this.updateDepend();\n\n this.compileInteractions();\n }\n protected clearNextRender() {\n if (this._nextRafId) {\n vglobal.getCancelAnimationFrame()(this._nextRafId);\n this._nextRafId = null;\n\n return true;\n }\n\n return false;\n }\n\n clear(ctx: { chart: IChart; vChart: IVChart }, removeGraphicItems: boolean = false) {\n const { chart } = ctx;\n\n this.clearNextRender();\n chart.clear();\n this.releaseGrammar(removeGraphicItems);\n }\n\n renderNextTick(morphConfig?: IMorphConfig): void {\n if (this._released) {\n return;\n }\n if (!this._nextRafId) {\n this._nextRafId = vglobal.getRequestAnimationFrame()(() => {\n this._nextRafId = null;\n this.render(morphConfig);\n }) as unknown as number;\n }\n }\n\n render(morphConfig?: IMorphConfig) {\n if (this._released) {\n return;\n }\n\n this.initView();\n if (!this._view) {\n return;\n }\n this._view?.run(morphConfig);\n if (this.clearNextRender()) {\n this._view?.run(morphConfig);\n }\n }\n\n updateViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n if (!this._view) {\n return;\n }\n\n this._view.renderer.setViewBox(viewBox, reRender);\n }\n\n resize(width: number, height: number, reRender: boolean = true) {\n if (!this._view) {\n return;\n }\n this._width = width;\n this._height = height;\n\n this._view.resize(width, height);\n if (reRender) {\n this.render({ morph: false });\n }\n }\n\n setBackground(color: IColor) {\n this._view?.background(color);\n }\n\n setSize(width: number, height: number) {\n this._width = width;\n this._height = height;\n if (!this._view) {\n return;\n }\n\n this._view.width(width);\n this._view.height(height);\n }\n\n setViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n if (!this._view) {\n return;\n }\n\n this._view.renderer.setViewBox(viewBox, reRender);\n }\n\n addEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n // TODO: 需要明确一下 interactive 的作用范围,同时考虑是否存在非交互行为的事件以及是否需要生效\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const wrappedCallback = function (event: any, element: IElement | null) {\n const context = element?.mark?.getContext() ?? {};\n const modelId = isValid(context.modelId) ? context.modelId : null;\n const markId = isValid(context.markId) ? context.markId : null;\n const modelUserId = isValid(context.modelUserId) ? context.modelUserId : null;\n const markUserId = isValid(context.markUserId) ? context.markUserId : null;\n\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: element,\n datum: element?.getDatum?.() || null,\n markId,\n modelId,\n markUserId,\n modelUserId\n };\n callback.call(null, params);\n }.bind(this);\n this._viewListeners.set(callback, { type, callback: wrappedCallback });\n // 如果 view 已经初始化则立刻挂载监听\n // FIXME: 目前 vgrammar 类型声明没有对齐,事件相关类型声明并没有使用 SceneItem\n this._view?.addEventListener(type, wrappedCallback as any);\n } else if (source === Event_Source_Type.window) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._windowListeners.set(callback, { type, callback: wrappedCallback });\n const windowObject = this._getGlobalThis();\n windowObject?.addEventListener(type, wrappedCallback);\n } else if (source === Event_Source_Type.canvas) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._canvasListeners.set(callback, { type, callback: wrappedCallback });\n const canvasObject = this.getStage()?.window;\n canvasObject?.addEventListener(type, wrappedCallback);\n }\n }\n\n removeEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const wrappedCallback = this._viewListeners.get(callback)?.callback;\n wrappedCallback && this._view?.removeEventListener(type, wrappedCallback);\n this._viewListeners.delete(callback);\n } else if (source === Event_Source_Type.window) {\n const windowObject = this._getGlobalThis();\n const wrappedCallback = this._windowListeners.get(callback)?.callback;\n wrappedCallback && windowObject?.removeEventListener(type, wrappedCallback);\n this._windowListeners.delete(callback);\n } else if (source === Event_Source_Type.canvas) {\n const canvasObject = this.getStage()?.window;\n const wrappedCallback = this._canvasListeners.get(callback)?.callback;\n canvasObject && wrappedCallback && canvasObject?.removeEventListener(type, wrappedCallback);\n this._canvasListeners.delete(callback);\n }\n }\n\n protected releaseEvent(): void {\n const stage = this.getStage();\n\n if (stage) {\n stage.hooks.afterRender.unTap('chart-event', this.handleStageRender);\n }\n\n // 相应的事件remove在model中完成\n this._viewListeners.clear();\n this._windowListeners.clear();\n this._canvasListeners.clear();\n }\n\n release(): void {\n this.clearNextRender();\n this.releaseEvent();\n this._option = this._container = null as any;\n // vgrammar release\n this._releaseModel();\n this._view?.release();\n this._view = null;\n this.isInited = false;\n this._compileChart = null;\n this._released = true;\n }\n\n /**\n * 释放VGrammar\n * @param removeGraphicItems 是否删除场景元素,在同步渲染,并且无动画时,必须设置为true,否则有绘图残留\n */\n releaseGrammar(removeGraphicItems: boolean = false) {\n this._releaseModel();\n if (removeGraphicItems) {\n this._view?.removeAllGraphicItems();\n }\n this._view?.removeAllGrammars();\n }\n\n protected _releaseModel() {\n // 释放model\n Object.keys(this._model).forEach(type => {\n Object.values(this._model[type] as IProductMap<IGrammarItem>).forEach(grammarItemMap => {\n Object.values(grammarItemMap).forEach((item: IGrammarItem) => {\n item.removeProduct(true); // 保留 vgrammar 语法元素,下面一起清空\n });\n });\n this._model[type] = {};\n });\n }\n\n /** 添加语法元素 */\n addGrammarItem(grammarItem: IGrammarItem) {\n const product = grammarItem.getProduct();\n if (isNil(product)) {\n return;\n }\n const id = product.id();\n const type = grammarItem.grammarType;\n if (isNil(this._model[type][id])) {\n this._model[type][id] = {};\n }\n this._model[type][id][grammarItem.id] = grammarItem;\n }\n\n /** 删除语法元素 */\n removeGrammarItem(grammarItem: IGrammarItem, reserveVGrammarModel?: boolean) {\n const product = grammarItem.getProduct();\n if (isNil(product)) {\n return;\n }\n const id = product.id();\n const type = grammarItem.grammarType;\n const map = this._model[type][id];\n if (isValid(map)) {\n delete map[grammarItem.id];\n if (Object.keys(map).length === 0) {\n delete this._model[type][id];\n }\n }\n if (!reserveVGrammarModel) {\n this._view?.removeGrammar(product);\n }\n }\n\n addInteraction(interaction: InteractionSpec & { seriesId?: number; regionId?: number }) {\n if (!this._interactions) {\n this._interactions = [];\n }\n\n this._interactions.push(interaction);\n }\n\n removeInteraction(seriesId: number) {\n if (!this._interactions) {\n return;\n }\n\n this._interactions = this._interactions.filter(entry => entry.seriesId !== seriesId);\n }\n\n /** 更新语法元素间的依赖关系,返回是否全部成功更新 */\n updateDepend(items?: IGrammarItem[]): boolean {\n if (isValid(items) && items.length > 0) {\n // 局部更新依赖\n return items.every(item => item.updateDepend());\n }\n // 全局更新依赖\n Object.values(this._model).forEach(productMap => {\n Object.values(productMap).forEach(grammarItemMap => {\n const grammarItems = Object.values(grammarItemMap) as IGrammarItem[];\n // 获取编译产物\n const product = grammarItems[0].getProduct();\n\n // 获取编译产物的依赖项\n const dependList = grammarItems\n .reduce((depend, item) => {\n if (item.getDepend().length > 0) {\n return depend.concat(item.getDepend());\n }\n return depend;\n }, [] as IGrammarItem[])\n .filter(grammarItem => !!grammarItem)\n .map(grammarItem => grammarItem.getProduct());\n\n // 更新依赖\n product.depend(dependList);\n });\n });\n return true;\n }\n\n private _getGlobalThis() {\n return isTrueBrowser(this._option.mode) ? globalThis : this.getStage()?.window;\n }\n}\n"]}
@@ -32,6 +32,7 @@ export interface IRenderOption {
32
32
  tooltipCanvasId?: StringOrNumber;
33
33
  [key: string]: any;
34
34
  } | unknown;
35
+ autoRefreshDpr?: boolean;
35
36
  dpr?: number;
36
37
  interactive?: boolean;
37
38
  viewBox?: IBoundsLike;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/compile/interface/compiler.ts"],"names":[],"mappings":"","file":"compiler.js","sourcesContent":["import type { IColor, IStageParams, IStage, ILayer } from '@visactor/vrender-core';\nimport type { EventSourceType, EventType } from '../../event/interface';\nimport type { RenderMode } from '../../typings/spec/common';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport type { GrammarType, IGrammarItem } from './compilable-item';\nimport type { StringOrNumber } from '../../typings';\n\nexport interface IRenderContainer {\n dom?: HTMLElement | 'none';\n canvas?: HTMLCanvasElement | string;\n}\n\n/**\n * @since 1.8.0\n */\nexport type IOptimizeType = {\n // 视口不在可视区,跳过渲染,默认为true\n skipRenderWithOutRange?: boolean;\n // 跳过图元在区间外的判断\n // 不存在dirtyBounds的时候,根据该配置判断是否关闭图元的超出边界判定\n // 如果有dirtyBounds那么该配置不生效\n disableCheckGraphicWidthOutRange?: boolean;\n};\n\nexport interface GestureConfig {\n press?: {\n /**\n * @default 251\n * Minimal press time in ms.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n time?: number;\n /**\n * @default 10\n * Maximal movement that is allowed while pressing.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n threshold?: number;\n };\n swipe?: {\n /**\n * Minimal distance required before recognizing.\n * @default 10\n * @see https://hammerjs.github.io/recognizer-swipe/\n */\n threshold?: number;\n /**\n * Minimal velocity required before recognizing, unit is in px per ms.\n * @default 0.3\n * @see http://hammerjs.github.io/recognizer-swipe/\n */\n velocity?: number;\n };\n tap?: {\n /**\n * max time between the multi-tap taps\n * @default 300\n */\n interval?: number;\n };\n}\n\nexport interface IRenderOption {\n /**\n * 配置渲染环境,默认为 'desktop-browser',当需要在非浏览器环境渲染 VChart 时,需要配置该属性。\n * - 'desktop-browser': 默认模式,适用于 PC 及 H5\n * - 'mobile-browser': H5 模式\n * - 'node': Node 渲染\n * - 'worker': worker 模式\n * - 'miniApp': 小程序模式\n * - 'lynx': lynx 渲染\n * @default 'desktop-browser'\n */\n mode?: RenderMode;\n\n gestureConfig?: GestureConfig;\n /**\n * 渲染环境参数配置\n */\n modeParams?:\n | {\n tooltipCanvasId?: StringOrNumber;\n [key: string]: any;\n }\n | unknown;\n /**\n * 设置屏幕分辨率\n */\n dpr?: number;\n /**\n * 图表交互全局开关,默认为 `true`,开启。\n * @default true\n */\n interactive?: boolean;\n /**\n * 指定绘制的区域\n */\n viewBox?: IBoundsLike;\n /**\n * 用于告诉底层的渲染引擎 VRender,图表的 Canvas 是否是受控制的canvas,如果不是的话,不会进行resize等操作。\n * @default true\n */\n canvasControled?: boolean;\n /**\n * 外部传入的 VRender stage\n */\n stage?: IStage;\n /**\n * 外部传入的 VRender layer\n */\n layer?: ILayer;\n\n /**\n * 绘制之前的钩子函数\n */\n beforeRender?: IStageParams['beforeRender'];\n /**\n * 绘制之后的钩子函数\n */\n afterRender?: IStageParams['afterRender'];\n /**\n * 绘图区域背景色设置\n */\n background?: IColor;\n /**\n * 日志类型,用于开发调试\n */\n logLevel?: number;\n /**\n * 错误消息回调函数\n */\n onError?: (...args: any[]) => void;\n /**\n * 是否关闭dirtyBounds\n * @default false\n */\n disableDirtyBounds?: boolean;\n /**\n * 是否开启view3d的变换模式\n */\n enableView3dTransform?: boolean;\n /**\n * vrender 的插件列表\n */\n pluginList?: string[];\n /**\n * @since 1.8.0\n */\n optimize?: IOptimizeType;\n /**\n * @since 1.8.3\n */\n enableHtmlAttribute?: boolean;\n /**\n * @since 1.8.9\n * 是否支持touch事件\n */\n supportsTouchEvents?: boolean;\n /**\n * @since 1.8.9\n * 是否支持pointer事件\n */\n supportsPointerEvents?: boolean;\n /**\n * @since 1.11.0\n * 用于vrender渲染react元素,`react-dom`包导出元素\n */\n ReactDOM?: any;\n}\n\nexport type CompilerListenerParameters = {\n type: EventType;\n event: Event;\n source: EventSourceType;\n // FIXME: 这里 item 应当为场景树的 Item 类型\n item: any | null;\n datum: any | null;\n markId: number | null;\n modelId: number | null;\n markUserId: StringOrNumber | null;\n modelUserId: StringOrNumber | null;\n};\n\nexport type CompilerModel = Record<GrammarType, IProductMap<IGrammarItem>>;\n\nexport interface IProductMap<T extends IGrammarItem> {\n /** 编译产物 id 和对应的在 vchart 中的 GrammarItem */\n [productId: string]: IGrammarItemMap<T>;\n}\n\nexport interface IGrammarItemMap<T extends IGrammarItem> {\n /** GrammarItem id 和 对应的引用 */\n [id: number]: T;\n}\n"]}
1
+ {"version":3,"sources":["../src/compile/interface/compiler.ts"],"names":[],"mappings":"","file":"compiler.js","sourcesContent":["import type { IColor, IStageParams, IStage, ILayer } from '@visactor/vrender-core';\nimport type { EventSourceType, EventType } from '../../event/interface';\nimport type { RenderMode } from '../../typings/spec/common';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport type { GrammarType, IGrammarItem } from './compilable-item';\nimport type { StringOrNumber } from '../../typings';\n\nexport interface IRenderContainer {\n dom?: HTMLElement | 'none';\n canvas?: HTMLCanvasElement | string;\n}\n\n/**\n * @since 1.8.0\n */\nexport type IOptimizeType = {\n // 视口不在可视区,跳过渲染,默认为true\n skipRenderWithOutRange?: boolean;\n // 跳过图元在区间外的判断\n // 不存在dirtyBounds的时候,根据该配置判断是否关闭图元的超出边界判定\n // 如果有dirtyBounds那么该配置不生效\n disableCheckGraphicWidthOutRange?: boolean;\n};\n\nexport interface GestureConfig {\n press?: {\n /**\n * @default 251\n * Minimal press time in ms.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n time?: number;\n /**\n * @default 10\n * Maximal movement that is allowed while pressing.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n threshold?: number;\n };\n swipe?: {\n /**\n * Minimal distance required before recognizing.\n * @default 10\n * @see https://hammerjs.github.io/recognizer-swipe/\n */\n threshold?: number;\n /**\n * Minimal velocity required before recognizing, unit is in px per ms.\n * @default 0.3\n * @see http://hammerjs.github.io/recognizer-swipe/\n */\n velocity?: number;\n };\n tap?: {\n /**\n * max time between the multi-tap taps\n * @default 300\n */\n interval?: number;\n };\n}\n\nexport interface IRenderOption {\n /**\n * 配置渲染环境,默认为 'desktop-browser',当需要在非浏览器环境渲染 VChart 时,需要配置该属性。\n * - 'desktop-browser': 默认模式,适用于 PC 及 H5\n * - 'mobile-browser': H5 模式\n * - 'node': Node 渲染\n * - 'worker': worker 模式\n * - 'miniApp': 小程序模式\n * - 'lynx': lynx 渲染\n * @default 'desktop-browser'\n */\n mode?: RenderMode;\n\n gestureConfig?: GestureConfig;\n /**\n * 渲染环境参数配置\n */\n modeParams?:\n | {\n tooltipCanvasId?: StringOrNumber;\n [key: string]: any;\n }\n | unknown;\n\n /**\n * 是否自动刷线dpr\n * @since 1.12.14\n */\n autoRefreshDpr?: boolean;\n /**\n * 设置屏幕分辨率\n */\n dpr?: number;\n /**\n * 图表交互全局开关,默认为 `true`,开启。\n * @default true\n */\n interactive?: boolean;\n /**\n * 指定绘制的区域\n */\n viewBox?: IBoundsLike;\n /**\n * 用于告诉底层的渲染引擎 VRender,图表的 Canvas 是否是受控制的canvas,如果不是的话,不会进行resize等操作。\n * @default true\n */\n canvasControled?: boolean;\n /**\n * 外部传入的 VRender stage\n */\n stage?: IStage;\n /**\n * 外部传入的 VRender layer\n */\n layer?: ILayer;\n\n /**\n * 绘制之前的钩子函数\n */\n beforeRender?: IStageParams['beforeRender'];\n /**\n * 绘制之后的钩子函数\n */\n afterRender?: IStageParams['afterRender'];\n /**\n * 绘图区域背景色设置\n */\n background?: IColor;\n /**\n * 日志类型,用于开发调试\n */\n logLevel?: number;\n /**\n * 错误消息回调函数\n */\n onError?: (...args: any[]) => void;\n /**\n * 是否关闭dirtyBounds\n * @default false\n */\n disableDirtyBounds?: boolean;\n /**\n * 是否开启view3d的变换模式\n */\n enableView3dTransform?: boolean;\n /**\n * vrender 的插件列表\n */\n pluginList?: string[];\n /**\n * @since 1.8.0\n */\n optimize?: IOptimizeType;\n /**\n * @since 1.8.3\n */\n enableHtmlAttribute?: boolean;\n /**\n * @since 1.8.9\n * 是否支持touch事件\n */\n supportsTouchEvents?: boolean;\n /**\n * @since 1.8.9\n * 是否支持pointer事件\n */\n supportsPointerEvents?: boolean;\n /**\n * @since 1.11.0\n * 用于vrender渲染react元素,`react-dom`包导出元素\n */\n ReactDOM?: any;\n}\n\nexport type CompilerListenerParameters = {\n type: EventType;\n event: Event;\n source: EventSourceType;\n // FIXME: 这里 item 应当为场景树的 Item 类型\n item: any | null;\n datum: any | null;\n markId: number | null;\n modelId: number | null;\n markUserId: StringOrNumber | null;\n modelUserId: StringOrNumber | null;\n};\n\nexport type CompilerModel = Record<GrammarType, IProductMap<IGrammarItem>>;\n\nexport interface IProductMap<T extends IGrammarItem> {\n /** 编译产物 id 和对应的在 vchart 中的 GrammarItem */\n [productId: string]: IGrammarItemMap<T>;\n}\n\nexport interface IGrammarItemMap<T extends IGrammarItem> {\n /** GrammarItem id 和 对应的引用 */\n [id: number]: T;\n}\n"]}
@@ -35,5 +35,4 @@ function toRenderMode(mode) {
35
35
  return "browser";
36
36
  }
37
37
 
38
- exports.toRenderMode = toRenderMode;
39
- //# sourceMappingURL=util.js.map
38
+ exports.toRenderMode = toRenderMode;
@@ -36,6 +36,7 @@ export declare abstract class DataFilterBaseComponent<T extends IDataFilterCompo
36
36
  protected _maxSpan: number;
37
37
  protected _spanCache: number;
38
38
  protected _shouldChange: boolean;
39
+ protected _domainCache: any;
39
40
  protected _field: string | undefined;
40
41
  protected _stateField: string;
41
42
  protected _valueField?: string;
@@ -113,7 +114,9 @@ export declare abstract class DataFilterBaseComponent<T extends IDataFilterCompo
113
114
  protected _handleChartMove: (value: number, rate: number) => boolean;
114
115
  protected _initCommonEvent(): void;
115
116
  updateLayoutAttribute(): void;
117
+ protected _autoVisible(isShown: boolean): void;
116
118
  onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void;
119
+ onLayoutEnd(ctx: any): void;
117
120
  getBoundsInRect(rect: ILayoutRect): IBoundsLike;
118
121
  hide(): void;
119
122
  show(): void;
@@ -211,7 +211,8 @@ class DataFilterBaseComponent extends base_component_1.BaseComponent {
211
211
  var _a;
212
212
  const domain = this._computeDomainOfStateScale((0, vscale_1.isContinuous)(this._stateScale.type));
213
213
  this._stateScale.domain(domain, !1), this._handleChange(this._start, this._end, !0),
214
- this._spec.auto && (this._dataUpdating = !0, null === (_a = this.getChart()) || void 0 === _a || _a.setLayoutTag(!0, null, !1));
214
+ this._spec.auto && !(0, vutils_1.isEqual)(this._domainCache, domain) && (this._domainCache = domain,
215
+ this._dataUpdating = !0, null === (_a = this.getChart()) || void 0 === _a || _a.setLayoutTag(!0, null, !1));
215
216
  }
216
217
  _computeDomainOfStateScale(isContinuous) {
217
218
  if (this._spec.customDomain) return this._spec.customDomain;
@@ -345,8 +346,21 @@ class DataFilterBaseComponent extends base_component_1.BaseComponent {
345
346
  }
346
347
  _addTransformToSeries() {
347
348
  this._relatedAxisComponent && "axis" === this._filterMode || ((0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "dataFilterWithNewDomain", util_1.dataFilterWithNewDomain),
349
+ (0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "lockStatisticsFilter", util_1.lockStatisticsFilter),
348
350
  (0, model_1.eachSeries)(this._regions, (s => {
349
- s.addViewDataFilter({
351
+ s.getViewDataStatistics().transform({
352
+ type: "lockStatisticsFilter",
353
+ options: {
354
+ originalFields: () => s.getViewDataStatistics().getFields(),
355
+ getNewDomain: () => this._newDomain,
356
+ field: () => {
357
+ var _a;
358
+ return null !== (_a = this._field) && void 0 !== _a ? _a : this._parseFieldOfSeries(s);
359
+ },
360
+ isContinuous: () => (0, vscale_1.isContinuous)(this._stateScale.type)
361
+ },
362
+ level: 1
363
+ }, !1), s.addViewDataFilter({
350
364
  type: "dataFilterWithNewDomain",
351
365
  options: {
352
366
  getNewDomain: () => this._newDomain,
@@ -398,14 +412,24 @@ class DataFilterBaseComponent extends base_component_1.BaseComponent {
398
412
  updateLayoutAttribute() {
399
413
  this._visible && this._createOrUpdateComponent(), super.updateLayoutAttribute();
400
414
  }
401
- onLayoutStart(layoutRect, viewRect, ctx) {
402
- super.onLayoutStart(layoutRect, viewRect, ctx);
403
- const isShown = this._autoUpdate(layoutRect), sizeKey = this._isHorizontal ? "height" : "width";
415
+ _autoVisible(isShown) {
416
+ if (!this._auto) return;
417
+ isShown ? this.show() : this.hide();
418
+ const sizeKey = this._isHorizontal ? "height" : "width";
404
419
  this.layout.setLayoutRect({
405
420
  [sizeKey]: isShown ? this[`_${sizeKey}`] : 0
406
421
  }, {
407
422
  [sizeKey]: attribute_1.AttributeLevel.Built_In
408
- }), this._dataUpdating = !1;
423
+ });
424
+ }
425
+ onLayoutStart(layoutRect, viewRect, ctx) {
426
+ super.onLayoutStart(layoutRect, viewRect, ctx);
427
+ const isShown = this._autoUpdate(layoutRect);
428
+ this._autoVisible(isShown), this._dataUpdating = !1;
429
+ }
430
+ onLayoutEnd(ctx) {
431
+ const isShown = !(0 === this._start && 1 === this._end);
432
+ this._autoVisible(isShown), super.onLayoutEnd(ctx);
409
433
  }
410
434
  getBoundsInRect(rect) {
411
435
  const result = {
@@ -453,8 +477,8 @@ class DataFilterBaseComponent extends base_component_1.BaseComponent {
453
477
  const [start, end] = null !== (_f = axisScale.rangeFactor()) && void 0 !== _f ? _f : [ this._start, this._end ];
454
478
  isShown = !(0 === start && 1 === end);
455
479
  }
456
- return this.setStartAndEnd(this._start, this._end), isShown ? this.show() : this.hide(),
457
- this._cacheVisibility = isShown, isShown;
480
+ return this.setStartAndEnd(this._start, this._end), this._cacheVisibility = isShown,
481
+ isShown;
458
482
  }
459
483
  _getNeedClearVRenderComponents() {
460
484
  return [ this._component ];