@visactor/vgrammar-core 0.7.4-alpha.3 → 0.7.5

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 (179) hide show
  1. package/cjs/component/axis.js.map +1 -1
  2. package/cjs/component/crosshair.js.map +1 -1
  3. package/cjs/component/datazoom.js.map +1 -1
  4. package/cjs/component/grid.js.map +1 -1
  5. package/cjs/component/label.js.map +1 -1
  6. package/cjs/component/legend.js.map +1 -1
  7. package/cjs/component/player.js.map +1 -1
  8. package/cjs/component/scrollbar.js.map +1 -1
  9. package/cjs/component/slider.js.map +1 -1
  10. package/cjs/component/title.js.map +1 -1
  11. package/cjs/component/tooltip.js.map +1 -1
  12. package/cjs/core/factory.d.ts +2 -2
  13. package/cjs/core/factory.js.map +1 -1
  14. package/cjs/glyph/boxplot.js +2 -1
  15. package/cjs/glyph/index.js +1 -2
  16. package/cjs/graph/animation/animation/grow-cartesian.js.map +1 -1
  17. package/cjs/graph/animation/animator.js +4 -4
  18. package/cjs/graph/animation/animator.js.map +1 -1
  19. package/cjs/graph/animation/attribute.d.ts +2 -2
  20. package/cjs/graph/animation/attribute.js +6 -6
  21. package/cjs/graph/animation/attribute.js.map +1 -1
  22. package/cjs/graph/animation/morph.js +4 -4
  23. package/cjs/graph/animation/morph.js.map +1 -1
  24. package/cjs/graph/attributes/index.js.map +1 -1
  25. package/cjs/graph/canvas-renderer.d.ts +1 -1
  26. package/cjs/graph/canvas-renderer.js +5 -5
  27. package/cjs/graph/canvas-renderer.js.map +1 -1
  28. package/cjs/graph/element.d.ts +1 -1
  29. package/cjs/graph/element.js +2 -2
  30. package/cjs/graph/element.js.map +1 -1
  31. package/cjs/graph/glyph-element.d.ts +1 -1
  32. package/cjs/graph/glyph-element.js.map +1 -1
  33. package/cjs/graph/mark/large-rects.d.ts +2 -2
  34. package/cjs/graph/mark/large-rects.js +3 -3
  35. package/cjs/graph/mark/large-rects.js.map +1 -1
  36. package/cjs/graph/mark/large-symbols.d.ts +2 -2
  37. package/cjs/graph/mark/large-symbols.js +3 -3
  38. package/cjs/graph/mark/large-symbols.js.map +1 -1
  39. package/cjs/graph/util/env.js +2 -2
  40. package/cjs/graph/util/env.js.map +1 -1
  41. package/cjs/graph/util/events-extend.d.ts +1 -1
  42. package/cjs/graph/util/events-extend.js.map +1 -1
  43. package/cjs/graph/util/graphic.d.ts +3 -3
  44. package/cjs/graph/util/graphic.js +21 -21
  45. package/cjs/graph/util/graphic.js.map +1 -1
  46. package/cjs/index.d.ts +1 -3
  47. package/cjs/index.js +3 -13
  48. package/cjs/index.js.map +1 -1
  49. package/cjs/parse/mark.js +2 -1
  50. package/cjs/parse/option.js +1 -2
  51. package/cjs/parse/scale.js +3 -4
  52. package/cjs/parse/scale.js.map +1 -1
  53. package/cjs/semantic-marks/cell.d.ts +1 -1
  54. package/cjs/semantic-marks/interval.d.ts +1 -1
  55. package/cjs/types/animate.d.ts +1 -1
  56. package/cjs/types/animate.js.map +1 -1
  57. package/cjs/types/component.d.ts +1 -1
  58. package/cjs/types/component.js.map +1 -1
  59. package/cjs/types/coordinate.js +2 -1
  60. package/cjs/types/data.js +1 -2
  61. package/cjs/types/element.d.ts +1 -1
  62. package/cjs/types/element.js.map +1 -1
  63. package/cjs/types/grammar.d.ts +1 -1
  64. package/cjs/types/grammar.js.map +1 -1
  65. package/cjs/types/index.js +1 -1
  66. package/cjs/types/mark.d.ts +1 -1
  67. package/cjs/types/mark.js.map +1 -1
  68. package/cjs/types/morph.d.ts +1 -1
  69. package/cjs/types/morph.js.map +1 -1
  70. package/cjs/types/plot.d.ts +1 -1
  71. package/cjs/types/plot.js.map +1 -1
  72. package/cjs/types/renderer.d.ts +1 -1
  73. package/cjs/types/renderer.js.map +1 -1
  74. package/cjs/types/theme.d.ts +1 -1
  75. package/cjs/types/theme.js.map +1 -1
  76. package/cjs/types/view.d.ts +1 -1
  77. package/cjs/types/view.js.map +1 -1
  78. package/cjs/util/text.d.ts +1 -1
  79. package/cjs/util/text.js +3 -3
  80. package/cjs/util/text.js.map +1 -1
  81. package/cjs/view/View.d.ts +1 -1
  82. package/cjs/view/View.js +7 -7
  83. package/cjs/view/View.js.map +1 -1
  84. package/cjs/view/component.d.ts +1 -1
  85. package/cjs/view/mark.d.ts +2 -2
  86. package/cjs/view/mark.js.map +1 -1
  87. package/es/component/axis.js.map +1 -1
  88. package/es/component/crosshair.js.map +1 -1
  89. package/es/component/datazoom.js.map +1 -1
  90. package/es/component/grid.js.map +1 -1
  91. package/es/component/label.js.map +1 -1
  92. package/es/component/legend.js.map +1 -1
  93. package/es/component/player.js.map +1 -1
  94. package/es/component/scrollbar.js.map +1 -1
  95. package/es/component/slider.js.map +1 -1
  96. package/es/component/title.js.map +1 -1
  97. package/es/component/tooltip.js.map +1 -1
  98. package/es/core/factory.d.ts +2 -2
  99. package/es/core/factory.js.map +1 -1
  100. package/es/glyph/boxplot.js +2 -1
  101. package/es/glyph/index.js +1 -2
  102. package/es/graph/animation/animation/grow-cartesian.js.map +1 -1
  103. package/es/graph/animation/animator.js +1 -1
  104. package/es/graph/animation/animator.js.map +1 -1
  105. package/es/graph/animation/attribute.d.ts +2 -2
  106. package/es/graph/animation/attribute.js +1 -1
  107. package/es/graph/animation/attribute.js.map +1 -1
  108. package/es/graph/animation/morph.js +1 -1
  109. package/es/graph/animation/morph.js.map +1 -1
  110. package/es/graph/attributes/index.js.map +1 -1
  111. package/es/graph/canvas-renderer.d.ts +1 -1
  112. package/es/graph/canvas-renderer.js +1 -3
  113. package/es/graph/canvas-renderer.js.map +1 -1
  114. package/es/graph/element.d.ts +1 -1
  115. package/es/graph/element.js +1 -1
  116. package/es/graph/element.js.map +1 -1
  117. package/es/graph/glyph-element.d.ts +1 -1
  118. package/es/graph/glyph-element.js.map +1 -1
  119. package/es/graph/mark/large-rects.d.ts +2 -2
  120. package/es/graph/mark/large-rects.js +1 -1
  121. package/es/graph/mark/large-rects.js.map +1 -1
  122. package/es/graph/mark/large-symbols.d.ts +2 -2
  123. package/es/graph/mark/large-symbols.js +1 -1
  124. package/es/graph/mark/large-symbols.js.map +1 -1
  125. package/es/graph/util/env.js +1 -1
  126. package/es/graph/util/env.js.map +1 -1
  127. package/es/graph/util/events-extend.d.ts +1 -1
  128. package/es/graph/util/events-extend.js.map +1 -1
  129. package/es/graph/util/graphic.d.ts +3 -3
  130. package/es/graph/util/graphic.js +1 -1
  131. package/es/graph/util/graphic.js.map +1 -1
  132. package/es/index.d.ts +1 -3
  133. package/es/index.js +2 -7
  134. package/es/index.js.map +1 -1
  135. package/es/parse/mark.js +2 -1
  136. package/es/parse/option.js +1 -2
  137. package/es/parse/scale.js +3 -4
  138. package/es/parse/scale.js.map +1 -1
  139. package/es/semantic-marks/cell.d.ts +1 -1
  140. package/es/semantic-marks/interval.d.ts +1 -1
  141. package/es/types/animate.d.ts +1 -1
  142. package/es/types/animate.js.map +1 -1
  143. package/es/types/component.d.ts +1 -1
  144. package/es/types/component.js.map +1 -1
  145. package/es/types/coordinate.js +2 -1
  146. package/es/types/data.js +1 -2
  147. package/es/types/element.d.ts +1 -1
  148. package/es/types/element.js.map +1 -1
  149. package/es/types/grammar.d.ts +1 -1
  150. package/es/types/grammar.js.map +1 -1
  151. package/es/types/index.js +1 -1
  152. package/es/types/mark.d.ts +1 -1
  153. package/es/types/mark.js.map +1 -1
  154. package/es/types/morph.d.ts +1 -1
  155. package/es/types/morph.js.map +1 -1
  156. package/es/types/plot.d.ts +1 -1
  157. package/es/types/plot.js.map +1 -1
  158. package/es/types/renderer.d.ts +1 -1
  159. package/es/types/renderer.js.map +1 -1
  160. package/es/types/theme.d.ts +1 -1
  161. package/es/types/theme.js.map +1 -1
  162. package/es/types/view.d.ts +1 -1
  163. package/es/types/view.js.map +1 -1
  164. package/es/util/text.d.ts +1 -1
  165. package/es/util/text.js +1 -1
  166. package/es/util/text.js.map +1 -1
  167. package/es/view/View.d.ts +1 -1
  168. package/es/view/View.js +1 -1
  169. package/es/view/View.js.map +1 -1
  170. package/es/view/component.d.ts +1 -1
  171. package/es/view/mark.d.ts +2 -2
  172. package/es/view/mark.js.map +1 -1
  173. package/package.json +5 -6
  174. package/cjs/env.d.ts +0 -1
  175. package/cjs/env.js +0 -20
  176. package/cjs/env.js.map +0 -1
  177. package/es/env.d.ts +0 -1
  178. package/es/env.js +0 -1
  179. package/es/env.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/parse/scale.ts"],"names":[],"mappings":"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","file":"scale.js","sourcesContent":["import { isArray, isFunction, isNil, isNumber, isString, isValidNumber } from '@visactor/vutils';\nimport type {\n IBaseScale,\n IBandLikeScale,\n ILinearScale,\n IPowScale,\n ILogScale,\n ISymlogScale,\n IContinuousScale,\n IContinuesScaleTicks,\n IQuantizeScale,\n IQuantileScale\n} from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n LinearScale,\n BandScale,\n OrdinalScale,\n PointScale,\n isContinuous,\n TimeScale,\n ThresholdScale,\n SqrtScale,\n SymlogScale,\n QuantizeScale,\n QuantileScale,\n PowScale,\n LogScale,\n isDiscretizing,\n IdentityScale\n} from '@visactor/vscale';\nimport type { IView } from '../types/view';\nimport type { IGrammarBase } from '../types/grammar';\nimport type {\n BandScaleSpec,\n BaseBandScaleSpec,\n LinearScaleSpec,\n OrdinalScaleSpec,\n PointScaleSpec,\n ScaleFunctionType,\n ScaleData,\n MultiScaleData,\n ScaleSpec,\n ScaleConfigureSpec,\n ScaleCoordinate,\n PowScaleSpec,\n ContinuousScaleSpec,\n ScaleTicksSpec,\n ScaleDomainSpec,\n LogScaleSpec,\n SqrtScaleSpec,\n SymlogScaleSpec,\n QuantizeScaleSpec,\n TimeScaleSpec,\n GrammarScaleType\n} from '../types/scale';\nimport { getGrammarOutput, invokeFunctionType, parseFunctionType } from './util';\nimport { field as getFieldAccessor } from '@visactor/vgrammar-util';\n\nexport function createScale(type: GrammarScaleType): IBaseScale {\n switch (type) {\n case 'band':\n return new BandScale();\n case 'linear':\n return new LinearScale();\n case 'log':\n return new LogScale();\n case 'ordinal':\n return new OrdinalScale();\n case 'point':\n return new PointScale();\n case 'pow':\n return new PowScale();\n case 'quantile':\n return new QuantileScale();\n case 'quantize':\n return new QuantizeScale();\n case 'sqrt':\n return new SqrtScale();\n case 'symlog':\n return new SymlogScale();\n case 'threshold':\n return new ThresholdScale();\n case 'time':\n return new TimeScale();\n case 'utc':\n return new TimeScale(true);\n case 'identity':\n return new IdentityScale();\n }\n return new LinearScale();\n}\n\nfunction isScaleDataType(spec: ScaleData | any): spec is ScaleData {\n return !isNil(spec?.data);\n}\n\nfunction parseScaleDataType(spec: ScaleData, view: IView): IGrammarBase[] {\n if (isString(spec.data)) {\n const data = view.getGrammarById(spec.data as string);\n return data ? [data] : [];\n } else if ((spec.data as IGrammarBase)?.grammarType === 'data') {\n return [spec.data as IGrammarBase];\n }\n return [];\n}\n\nfunction isMultiScaleDataType(spec: MultiScaleData | any): spec is MultiScaleData {\n return !isNil(spec?.datas);\n}\n\nfunction parseMultiScaleDataType(spec: MultiScaleData, view: IView): IGrammarBase[] {\n if (spec?.datas && spec.datas.length) {\n const res: IGrammarBase[] = [];\n spec.datas.forEach(data => {\n const gramarBase = parseScaleDataType(data, view);\n\n if (gramarBase.length) {\n res.push(gramarBase[0]);\n }\n });\n\n return res;\n }\n\n return [];\n}\n\nfunction isScaleCoordinateType(spec: ScaleCoordinate | any): spec is ScaleCoordinate {\n return !isNil(spec?.coordinate);\n}\n\nfunction parseScaleCoordinateType(spec: ScaleCoordinate, view: IView): IGrammarBase[] {\n if (isString(spec.coordinate)) {\n const coordinate = view.getCoordinateById(spec.coordinate as string);\n return coordinate ? [coordinate] : [];\n } else if ((spec.coordinate as IGrammarBase)?.grammarType === 'coordinate') {\n return [spec.coordinate as IGrammarBase];\n }\n return [];\n}\n\nfunction parseLinearScale(spec: Omit<LinearScaleSpec, 'type'>, view: IView) {\n let dependencies: IGrammarBase[] = [];\n dependencies = dependencies.concat(parseFunctionType(spec.nice, view));\n dependencies = dependencies.concat(parseFunctionType(spec.niceMin, view));\n dependencies = dependencies.concat(parseFunctionType(spec.niceMax, view));\n dependencies = dependencies.concat(parseFunctionType(spec.min, view));\n dependencies = dependencies.concat(parseFunctionType(spec.max, view));\n dependencies = dependencies.concat(parseFunctionType(spec.zero, view));\n dependencies = dependencies.concat(parseFunctionType(spec.roundRange, view));\n return dependencies;\n}\n\nfunction parsePowScale(spec: PowScaleSpec, view: IView) {\n const dependencies = parseLinearScale(spec, view);\n return dependencies.concat(parseFunctionType(spec.exponent, view));\n}\n\nfunction parseSymlogScale(spec: SymlogScaleSpec, view: IView) {\n const dependencies = parseLinearScale(spec, view);\n return dependencies.concat(parseFunctionType(spec.constant, view));\n}\n\nfunction parseLogScale(spec: Omit<LogScaleSpec, 'type'>, view: IView) {\n let dependencies: IGrammarBase[] = [];\n dependencies = dependencies.concat(parseFunctionType(spec.nice, view));\n dependencies = dependencies.concat(parseFunctionType(spec.min, view));\n dependencies = dependencies.concat(parseFunctionType(spec.max, view));\n dependencies = dependencies.concat(parseFunctionType(spec.zero, view));\n dependencies = dependencies.concat(parseFunctionType(spec.roundRange, view));\n return dependencies;\n}\n\nfunction parseQuantizeScale(spec: QuantizeScaleSpec, view: IView) {\n let dependencies: IGrammarBase[] = [];\n dependencies = dependencies.concat(parseFunctionType(spec.nice, view));\n dependencies = dependencies.concat(parseFunctionType(spec.niceMin, view));\n dependencies = dependencies.concat(parseFunctionType(spec.niceMax, view));\n dependencies = dependencies.concat(parseFunctionType(spec.min, view));\n dependencies = dependencies.concat(parseFunctionType(spec.max, view));\n dependencies = dependencies.concat(parseFunctionType(spec.zero, view));\n return dependencies;\n}\n\nfunction parseOrdinalScale(spec: OrdinalScaleSpec, view: IView) {\n return [] as IGrammarBase[];\n}\n\nfunction parseBaseBandScale(spec: BaseBandScaleSpec, view: IView) {\n let dependencies: IGrammarBase[] = [];\n dependencies = dependencies.concat(parseFunctionType(spec.round, view));\n dependencies = dependencies.concat(parseFunctionType(spec.padding, view));\n dependencies = dependencies.concat(parseFunctionType(spec.paddingInner, view));\n dependencies = dependencies.concat(parseFunctionType(spec.paddingOuter, view));\n dependencies = dependencies.concat(parseFunctionType(spec.align, view));\n return dependencies;\n}\n\nfunction parseBandScale(spec: BandScaleSpec, view: IView) {\n const dependencies = parseBaseBandScale(spec, view);\n return dependencies.concat(parseFunctionType(spec.paddingInner, view));\n}\n\nfunction parsePointScale(spec: PointScaleSpec, view: IView) {\n return parseBaseBandScale(spec, view);\n}\n\nexport function parseScaleDomainRange(domain: ScaleFunctionType<any> | ScaleData | MultiScaleData, view: IView) {\n if (isScaleDataType(domain)) {\n return parseScaleDataType(domain, view);\n }\n\n if (isMultiScaleDataType(domain)) {\n return parseMultiScaleDataType(domain, view);\n }\n\n if (isScaleCoordinateType(domain)) {\n return parseScaleCoordinateType(domain, view);\n }\n return parseFunctionType(domain, view);\n}\n\nexport function parseScaleConfig(type: GrammarScaleType, config: ScaleConfigureSpec, view: IView): IGrammarBase[] {\n if (isNil(config)) {\n return [];\n }\n const deps: IGrammarBase[] = parseFunctionType(config.unknown, view);\n switch (type) {\n case 'linear':\n case 'sqrt':\n return deps.concat(parseLinearScale(config as LinearScaleSpec, view));\n case 'ordinal':\n return deps.concat(parseOrdinalScale(config as OrdinalScaleSpec, view));\n case 'band':\n return deps.concat(parseBandScale(config as BandScaleSpec, view));\n case 'point':\n return deps.concat(parsePointScale(config as PointScaleSpec, view));\n case 'pow':\n return deps.concat(parsePowScale(config as PowScaleSpec, view));\n case 'log':\n case 'time':\n case 'utc':\n return deps.concat(parseLogScale(config as LogScaleSpec, view));\n case 'symlog':\n return deps.concat(parseSymlogScale(config as SymlogScaleSpec, view));\n case 'quantize':\n return deps.concat(parseQuantizeScale(config as QuantizeScaleSpec, view));\n }\n return deps;\n}\n\nfunction configureScaleNice(spec: Pick<ScaleTicksSpec, 'nice'>, scale: IContinuesScaleTicks, parameters: any) {\n const nice = invokeFunctionType(spec.nice, parameters, scale);\n if (nice === true) {\n scale.nice();\n } else if (isValidNumber(nice)) {\n scale.nice(nice as number);\n }\n}\nfunction configureScaleNiceMinMax(\n spec: Pick<ScaleTicksSpec, 'niceMin' | 'niceMax'>,\n scale: IContinuesScaleTicks,\n parameters: any\n) {\n const niceMax = invokeFunctionType(spec.niceMax, parameters, scale);\n if (niceMax === true) {\n scale.niceMax();\n } else if (isValidNumber(niceMax)) {\n scale.niceMax(niceMax as number);\n }\n const niceMin = invokeFunctionType(spec.niceMin, parameters, scale);\n if (niceMin === true) {\n scale.niceMin();\n } else if (isValidNumber(niceMin)) {\n scale.niceMin(niceMin as number);\n }\n}\n\nfunction configureScaleDomain(spec: ScaleDomainSpec, scale: IBaseScale, parameters: any) {\n const min = invokeFunctionType(spec.min, parameters, scale);\n const max = invokeFunctionType(spec.max, parameters, scale);\n const zero = invokeFunctionType(spec.zero, parameters, scale);\n const hasValidMin = isValidNumber(min);\n const hasValidmax = isValidNumber(max);\n const prevDomain = scale.domain();\n\n if (prevDomain.length === 2 && (hasValidMin || hasValidmax || zero)) {\n let newMin = Math.min(prevDomain[0], prevDomain[prevDomain.length - 1]);\n let newMax = Math.max(prevDomain[0], prevDomain[prevDomain.length - 1]);\n\n if (zero && newMin > 0) {\n newMin = 0;\n } else if (hasValidMin) {\n newMin = Math.min(newMin, min);\n }\n\n if (zero && newMax < 0) {\n newMax = 0;\n } else if (hasValidmax) {\n newMax = Math.max(newMax, max);\n }\n\n scale.domain([newMin, newMax], true);\n }\n}\n\nfunction configureContinuousScale(spec: Omit<ContinuousScaleSpec, 'type'>, scale: IContinuousScale, parameters: any) {\n const rangeRound = invokeFunctionType(spec.roundRange, parameters, scale);\n\n if (rangeRound) {\n scale.rangeRound(scale.range(), true);\n }\n\n const config = invokeFunctionType(spec.config, parameters, scale);\n\n if (config?.interpolate) {\n scale.interpolate(config.interpolate, true);\n }\n\n if (!isNil(config?.clamp)) {\n if (isFunction(config.clamp)) {\n scale.clamp(true, config.clamp, true);\n } else {\n scale.clamp(config.clamp, undefined, true);\n }\n }\n}\n\nfunction configureLinearScale(spec: Omit<LinearScaleSpec, 'type'>, scale: ILinearScale, parameters: any) {\n configureScaleNice(spec, scale, parameters);\n configureScaleNiceMinMax(spec, scale, parameters);\n configureScaleDomain(spec, scale, parameters);\n configureContinuousScale(spec, scale, parameters);\n}\n\nfunction configurePowScale(spec: PowScaleSpec, scale: IPowScale, parameters: any) {\n configureLinearScale(spec, scale, parameters);\n\n const exponent = invokeFunctionType(spec.exponent, parameters, scale);\n if (exponent > 0) {\n scale.exponent(exponent as number);\n }\n}\n\nfunction configureLogScale(spec: LogScaleSpec, scale: ILogScale, parameters: any) {\n configureScaleNice(spec, scale, parameters);\n configureScaleDomain(spec, scale, parameters);\n configureContinuousScale(spec, scale, parameters);\n\n const base = invokeFunctionType(spec.base, parameters, scale);\n if (base > 0) {\n scale.base(base as number);\n }\n}\n\nfunction configureSqrtScale(spec: SqrtScaleSpec, scale: ILinearScale, parameters: any) {\n configureLinearScale(spec, scale, parameters);\n}\n\nfunction configureTimeScale(spec: Omit<TimeScaleSpec, 'type'>, scale: ILinearScale, parameters: any) {\n configureScaleNice(spec, scale, parameters);\n configureScaleDomain(spec, scale, parameters);\n configureContinuousScale(spec, scale, parameters);\n}\n\nfunction configureSymlogScale(spec: SymlogScaleSpec, scale: ISymlogScale, parameters: any) {\n configureLinearScale(spec, scale, parameters);\n\n const constant = invokeFunctionType(spec.constant, parameters, scale);\n if (isValidNumber(constant)) {\n scale.constant(constant as number);\n }\n}\n\nfunction configureQuantizeScale(spec: QuantizeScaleSpec, scale: IQuantizeScale, parameters: any) {\n configureScaleNice(spec, scale, parameters);\n configureScaleNiceMinMax(spec, scale, parameters);\n configureScaleDomain(spec, scale, parameters);\n}\n\nfunction configureBaseBandScale(spec: BaseBandScaleSpec, scale: IBandLikeScale, parameters: any) {\n spec.round && scale.round(invokeFunctionType(spec.round, parameters, scale), true);\n spec.padding && scale.padding(invokeFunctionType(spec.padding, parameters, scale), true);\n spec.paddingInner && scale.paddingInner(invokeFunctionType(spec.paddingInner, parameters, scale), true);\n spec.paddingOuter && scale.paddingOuter(invokeFunctionType(spec.paddingOuter, parameters, scale), true);\n spec.align && scale.align(invokeFunctionType(spec.align, parameters, scale), true);\n}\n\nfunction configureBandScale(spec: BandScaleSpec, scale: IBandLikeScale, parameters: any) {\n return configureBaseBandScale(spec, scale, parameters);\n}\n\nfunction configurePointScale(spec: PointScaleSpec, scale: IBandLikeScale, parameters: any) {\n return configureBaseBandScale(spec, scale, parameters);\n}\n\nfunction parseFieldData(spec: ScaleData, parameters: any) {\n const field = spec.field;\n const refData = getGrammarOutput(spec.data, parameters) as any[];\n let fieldData: any[] = [];\n\n if (isArray(field)) {\n field.forEach(entry => {\n const getter = getFieldAccessor(entry);\n\n refData &&\n refData.forEach(datum => {\n fieldData = fieldData.concat(getter(datum));\n });\n });\n } else {\n const getter = getFieldAccessor(field);\n\n refData &&\n refData.forEach(datum => {\n fieldData = fieldData.concat(getter(datum));\n });\n }\n\n return fieldData;\n}\nfunction parseMultiFieldData(spec: MultiScaleData, parameters: any) {\n let fieldData: any[] = [];\n\n spec.datas.forEach(entry => {\n fieldData = fieldData.concat(parseFieldData(entry, parameters));\n });\n\n return fieldData;\n}\n\nfunction parseScaleDataTypeValue(\n fieldData: any[],\n scale: IBaseScale,\n sort?: (datumA: any, datumB: any) => number,\n filterNumber?: boolean\n) {\n if (sort) {\n fieldData.sort(sort);\n }\n\n if (!isContinuous(scale.type)) {\n return fieldData;\n }\n\n if (filterNumber) {\n fieldData.filter(entry => isNumber(entry));\n }\n return [Math.min.apply(null, fieldData), Math.max.apply(null, fieldData)];\n}\n\nexport function configureScale(spec: ScaleSpec, scale: IBaseScale, parameters: any) {\n if (isScaleDataType(spec.domain)) {\n scale.domain(parseScaleDataTypeValue(parseFieldData(spec.domain, parameters), scale, spec.domain.sort, true), true);\n } else if (isMultiScaleDataType(spec.domain)) {\n scale.domain(\n parseScaleDataTypeValue(parseMultiFieldData(spec.domain, parameters), scale, spec.domain.sort, true),\n true\n );\n } else {\n scale.domain(invokeFunctionType(spec.domain, parameters, scale), true);\n }\n\n if (spec.type !== 'identity') {\n if (isScaleDataType(spec.range)) {\n scale.range(parseScaleDataTypeValue(parseFieldData(spec.range, parameters), scale), true);\n } else if (isMultiScaleDataType(spec.range)) {\n scale.range(parseScaleDataTypeValue(parseMultiFieldData(spec.range, parameters), scale), true);\n } else if (isScaleCoordinateType(spec.range)) {\n const coord = getGrammarOutput(spec.range.coordinate, parameters);\n\n if (!isDiscretizing(scale.type) && coord) {\n scale.range(coord.getRangeByDimension(spec.range.dimension, spec.range.isSubshaft, spec.range.reversed));\n }\n } else {\n scale.range(invokeFunctionType(spec.range, parameters, scale), true);\n }\n }\n if (!isNil(spec.unknown)) {\n scale.unknown(invokeFunctionType(spec.unknown, parameters, scale));\n }\n\n switch (spec.type) {\n case 'linear':\n configureLinearScale(spec, scale as ILinearScale, parameters);\n (scale as ILinearScale).rescale();\n break;\n case 'band':\n configureBandScale(spec, scale as IBandLikeScale, parameters);\n (scale as IBandLikeScale).rescale();\n break;\n case 'point':\n configurePointScale(spec, scale as IBandLikeScale, parameters);\n (scale as IBandLikeScale).rescale();\n break;\n case 'pow':\n configurePowScale(spec, scale as IPowScale, parameters);\n (scale as IContinuousScale).rescale();\n break;\n case 'log':\n configureLogScale(spec, scale as ILogScale, parameters);\n (scale as IContinuousScale).rescale();\n break;\n case 'sqrt':\n configureSqrtScale(spec, scale as ILinearScale, parameters);\n (scale as IContinuousScale).rescale();\n break;\n case 'symlog':\n configureSymlogScale(spec, scale as ISymlogScale, parameters);\n (scale as IContinuousScale).rescale();\n break;\n case 'time':\n case 'utc':\n configureTimeScale(spec, scale as ILinearScale, parameters);\n (scale as IContinuousScale).rescale();\n break;\n case 'quantize':\n configureQuantizeScale(spec, scale as IQuantizeScale, parameters);\n (scale as IQuantizeScale).rescale();\n break;\n case 'quantile':\n (scale as IQuantileScale).rescale();\n break;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/parse/scale.ts"],"names":[],"mappings":"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","file":"scale.js","sourcesContent":["import { isArray, isFunction, isNil, isNumber, isString, isValidNumber } from '@visactor/vutils';\nimport type {\n IBaseScale,\n IBandLikeScale,\n ILinearScale,\n IPowScale,\n ILogScale,\n ISymlogScale,\n IContinuousScale,\n IContinuesScaleTicks,\n IQuantizeScale,\n IQuantileScale\n} from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n LinearScale,\n BandScale,\n OrdinalScale,\n PointScale,\n isContinuous,\n TimeScale,\n ThresholdScale,\n SqrtScale,\n SymlogScale,\n QuantizeScale,\n QuantileScale,\n PowScale,\n LogScale,\n isDiscretizing,\n IdentityScale\n} from '@visactor/vscale';\nimport type { IView } from '../types/view';\nimport type { IGrammarBase } from '../types/grammar';\nimport type {\n BandScaleSpec,\n BaseBandScaleSpec,\n LinearScaleSpec,\n OrdinalScaleSpec,\n PointScaleSpec,\n ScaleFunctionType,\n ScaleData,\n MultiScaleData,\n ScaleSpec,\n ScaleConfigureSpec,\n ScaleCoordinate,\n PowScaleSpec,\n ContinuousScaleSpec,\n ScaleTicksSpec,\n ScaleDomainSpec,\n LogScaleSpec,\n SqrtScaleSpec,\n SymlogScaleSpec,\n QuantizeScaleSpec,\n TimeScaleSpec,\n GrammarScaleType\n} from '../types/scale';\nimport { getGrammarOutput, invokeFunctionType, parseFunctionType } from './util';\nimport { field as getFieldAccessor } from '@visactor/vgrammar-util';\n\nexport function createScale(type: GrammarScaleType): IBaseScale {\n switch (type) {\n case 'band':\n return new BandScale();\n case 'linear':\n return new LinearScale();\n case 'log':\n return new LogScale();\n case 'ordinal':\n return new OrdinalScale();\n case 'point':\n return new PointScale();\n case 'pow':\n return new PowScale();\n case 'quantile':\n return new QuantileScale();\n case 'quantize':\n return new QuantizeScale();\n case 'sqrt':\n return new SqrtScale();\n case 'symlog':\n return new SymlogScale();\n case 'threshold':\n return new ThresholdScale();\n case 'time':\n return new TimeScale();\n case 'utc':\n return new TimeScale(true);\n case 'identity':\n return new IdentityScale();\n }\n return new LinearScale();\n}\n\nfunction isScaleDataType(spec: ScaleData | any): spec is ScaleData {\n return !isNil(spec?.data);\n}\n\nfunction parseScaleDataType(spec: ScaleData, view: IView): IGrammarBase[] {\n if (isString(spec.data)) {\n const data = view.getGrammarById(spec.data as string);\n return data ? [data] : [];\n } else if ((spec.data as IGrammarBase)?.grammarType === 'data') {\n return [spec.data as IGrammarBase];\n }\n return [];\n}\n\nfunction isMultiScaleDataType(spec: MultiScaleData | any): spec is MultiScaleData {\n return !isNil(spec?.datas);\n}\n\nfunction parseMultiScaleDataType(spec: MultiScaleData, view: IView): IGrammarBase[] {\n if (spec?.datas && spec.datas.length) {\n const res: IGrammarBase[] = [];\n spec.datas.forEach(data => {\n const gramarBase = parseScaleDataType(data, view);\n\n if (gramarBase.length) {\n res.push(gramarBase[0]);\n }\n });\n\n return res;\n }\n\n return [];\n}\n\nfunction isScaleCoordinateType(spec: ScaleCoordinate | any): spec is ScaleCoordinate {\n return !isNil(spec?.coordinate);\n}\n\nfunction parseScaleCoordinateType(spec: ScaleCoordinate, view: IView): IGrammarBase[] {\n if (isString(spec.coordinate)) {\n const coordinate = view.getCoordinateById(spec.coordinate as string);\n return coordinate ? [coordinate] : [];\n } else if ((spec.coordinate as IGrammarBase)?.grammarType === 'coordinate') {\n return [spec.coordinate as IGrammarBase];\n }\n return [];\n}\n\nfunction parseLinearScale(spec: Omit<LinearScaleSpec, 'type'>, view: IView) {\n let dependencies: IGrammarBase[] = [];\n dependencies = dependencies.concat(parseFunctionType(spec.nice, view));\n dependencies = dependencies.concat(parseFunctionType(spec.niceMin, view));\n dependencies = dependencies.concat(parseFunctionType(spec.niceMax, view));\n dependencies = dependencies.concat(parseFunctionType(spec.min, view));\n dependencies = dependencies.concat(parseFunctionType(spec.max, view));\n dependencies = dependencies.concat(parseFunctionType(spec.zero, view));\n dependencies = dependencies.concat(parseFunctionType(spec.roundRange, view));\n return dependencies;\n}\n\nfunction parsePowScale(spec: PowScaleSpec, view: IView) {\n const dependencies = parseLinearScale(spec, view);\n return dependencies.concat(parseFunctionType(spec.exponent, view));\n}\n\nfunction parseSymlogScale(spec: SymlogScaleSpec, view: IView) {\n const dependencies = parseLinearScale(spec, view);\n return dependencies.concat(parseFunctionType(spec.constant, view));\n}\n\nfunction parseLogScale(spec: Omit<LogScaleSpec, 'type'>, view: IView) {\n let dependencies: IGrammarBase[] = [];\n dependencies = dependencies.concat(parseFunctionType(spec.nice, view));\n dependencies = dependencies.concat(parseFunctionType(spec.min, view));\n dependencies = dependencies.concat(parseFunctionType(spec.max, view));\n dependencies = dependencies.concat(parseFunctionType(spec.zero, view));\n dependencies = dependencies.concat(parseFunctionType(spec.roundRange, view));\n return dependencies;\n}\n\nfunction parseQuantizeScale(spec: QuantizeScaleSpec, view: IView) {\n let dependencies: IGrammarBase[] = [];\n dependencies = dependencies.concat(parseFunctionType(spec.nice, view));\n dependencies = dependencies.concat(parseFunctionType(spec.niceMin, view));\n dependencies = dependencies.concat(parseFunctionType(spec.niceMax, view));\n dependencies = dependencies.concat(parseFunctionType(spec.min, view));\n dependencies = dependencies.concat(parseFunctionType(spec.max, view));\n dependencies = dependencies.concat(parseFunctionType(spec.zero, view));\n return dependencies;\n}\n\nfunction parseOrdinalScale(spec: OrdinalScaleSpec, view: IView) {\n return [] as IGrammarBase[];\n}\n\nfunction parseBaseBandScale(spec: BaseBandScaleSpec, view: IView) {\n let dependencies: IGrammarBase[] = [];\n dependencies = dependencies.concat(parseFunctionType(spec.round, view));\n dependencies = dependencies.concat(parseFunctionType(spec.padding, view));\n dependencies = dependencies.concat(parseFunctionType(spec.paddingInner, view));\n dependencies = dependencies.concat(parseFunctionType(spec.paddingOuter, view));\n dependencies = dependencies.concat(parseFunctionType(spec.align, view));\n return dependencies;\n}\n\nfunction parseBandScale(spec: BandScaleSpec, view: IView) {\n const dependencies = parseBaseBandScale(spec, view);\n return dependencies.concat(parseFunctionType(spec.paddingInner, view));\n}\n\nfunction parsePointScale(spec: PointScaleSpec, view: IView) {\n return parseBaseBandScale(spec, view);\n}\n\nexport function parseScaleDomainRange(domain: ScaleFunctionType<any> | ScaleData | MultiScaleData, view: IView) {\n if (isScaleDataType(domain)) {\n return parseScaleDataType(domain, view);\n }\n\n if (isMultiScaleDataType(domain)) {\n return parseMultiScaleDataType(domain, view);\n }\n\n if (isScaleCoordinateType(domain)) {\n return parseScaleCoordinateType(domain, view);\n }\n return parseFunctionType(domain, view);\n}\n\nexport function parseScaleConfig(type: GrammarScaleType, config: ScaleConfigureSpec, view: IView): IGrammarBase[] {\n if (isNil(config)) {\n return [];\n }\n const deps: IGrammarBase[] = parseFunctionType(config.unknown, view);\n switch (type) {\n case 'linear':\n case 'sqrt':\n return deps.concat(parseLinearScale(config as LinearScaleSpec, view));\n case 'ordinal':\n return deps.concat(parseOrdinalScale(config as OrdinalScaleSpec, view));\n case 'band':\n return deps.concat(parseBandScale(config as BandScaleSpec, view));\n case 'point':\n return deps.concat(parsePointScale(config as PointScaleSpec, view));\n case 'pow':\n return deps.concat(parsePowScale(config as PowScaleSpec, view));\n case 'log':\n case 'time':\n case 'utc':\n return deps.concat(parseLogScale(config as LogScaleSpec, view));\n case 'symlog':\n return deps.concat(parseSymlogScale(config as SymlogScaleSpec, view));\n case 'quantize':\n return deps.concat(parseQuantizeScale(config as QuantizeScaleSpec, view));\n }\n return deps;\n}\n\nfunction configureScaleNice(spec: Pick<ScaleTicksSpec, 'nice'>, scale: IContinuesScaleTicks, parameters: any) {\n const nice = invokeFunctionType(spec.nice, parameters, scale);\n if (nice === true) {\n scale.nice();\n } else if (isValidNumber(nice)) {\n scale.nice(nice as number);\n }\n}\nfunction configureScaleNiceMinMax(\n spec: Pick<ScaleTicksSpec, 'niceMin' | 'niceMax'>,\n scale: IContinuesScaleTicks,\n parameters: any\n) {\n const niceMax = invokeFunctionType(spec.niceMax, parameters, scale);\n if (niceMax === true) {\n scale.niceMax();\n } else if (isValidNumber(niceMax)) {\n scale.niceMax(niceMax as number);\n }\n const niceMin = invokeFunctionType(spec.niceMin, parameters, scale);\n if (niceMin === true) {\n scale.niceMin();\n } else if (isValidNumber(niceMin)) {\n scale.niceMin(niceMin as number);\n }\n}\n\nfunction configureScaleDomain(spec: ScaleDomainSpec, scale: IBaseScale, parameters: any) {\n const min = invokeFunctionType(spec.min, parameters, scale);\n const max = invokeFunctionType(spec.max, parameters, scale);\n const zero = invokeFunctionType(spec.zero, parameters, scale);\n const hasValidMin = isValidNumber(min);\n const hasValidmax = isValidNumber(max);\n const prevDomain = scale.domain();\n\n if (prevDomain.length === 2 && (hasValidMin || hasValidmax || zero)) {\n let newMin = Math.min(prevDomain[0], prevDomain[prevDomain.length - 1]);\n let newMax = Math.max(prevDomain[0], prevDomain[prevDomain.length - 1]);\n\n if (zero && newMin > 0) {\n newMin = 0;\n } else if (hasValidMin) {\n newMin = Math.min(newMin, min);\n }\n\n if (zero && newMax < 0) {\n newMax = 0;\n } else if (hasValidmax) {\n newMax = Math.max(newMax, max);\n }\n\n scale.domain([newMin, newMax], true);\n }\n}\n\nfunction configureContinuousScale(spec: Omit<ContinuousScaleSpec, 'type'>, scale: IContinuousScale, parameters: any) {\n const rangeRound = invokeFunctionType(spec.roundRange, parameters, scale);\n\n if (rangeRound) {\n scale.rangeRound(scale.range(), true);\n }\n\n const config = invokeFunctionType(spec.config, parameters, scale);\n\n if (config?.interpolate) {\n scale.interpolate(config.interpolate, true);\n }\n\n if (!isNil(config?.clamp)) {\n if (isFunction(config.clamp)) {\n scale.clamp(true, config.clamp, true);\n } else {\n scale.clamp(config.clamp, undefined, true);\n }\n }\n}\n\nfunction configureLinearScale(spec: Omit<LinearScaleSpec, 'type'>, scale: ILinearScale, parameters: any) {\n configureScaleNice(spec, scale, parameters);\n configureScaleNiceMinMax(spec, scale, parameters);\n configureScaleDomain(spec, scale, parameters);\n configureContinuousScale(spec, scale, parameters);\n}\n\nfunction configurePowScale(spec: PowScaleSpec, scale: IPowScale, parameters: any) {\n configureLinearScale(spec, scale, parameters);\n\n const exponent = invokeFunctionType(spec.exponent, parameters, scale);\n if (exponent > 0) {\n scale.exponent(exponent as number);\n }\n}\n\nfunction configureLogScale(spec: LogScaleSpec, scale: ILogScale, parameters: any) {\n configureScaleNice(spec, scale, parameters);\n configureScaleDomain(spec, scale, parameters);\n configureContinuousScale(spec, scale, parameters);\n\n const base = invokeFunctionType(spec.base, parameters, scale);\n if (base > 0) {\n scale.base(base as number);\n }\n}\n\nfunction configureSqrtScale(spec: SqrtScaleSpec, scale: ILinearScale, parameters: any) {\n configureLinearScale(spec, scale, parameters);\n}\n\nfunction configureTimeScale(spec: Omit<TimeScaleSpec, 'type'>, scale: ILinearScale, parameters: any) {\n configureScaleNice(spec, scale, parameters);\n configureScaleDomain(spec, scale, parameters);\n configureContinuousScale(spec, scale, parameters);\n}\n\nfunction configureSymlogScale(spec: SymlogScaleSpec, scale: ISymlogScale, parameters: any) {\n configureLinearScale(spec, scale, parameters);\n\n const constant = invokeFunctionType(spec.constant, parameters, scale);\n if (isValidNumber(constant)) {\n scale.constant(constant as number);\n }\n}\n\nfunction configureQuantizeScale(spec: QuantizeScaleSpec, scale: IQuantizeScale, parameters: any) {\n configureScaleNice(spec, scale, parameters);\n configureScaleNiceMinMax(spec, scale, parameters);\n configureScaleDomain(spec, scale, parameters);\n}\n\nfunction configureBaseBandScale(spec: BaseBandScaleSpec, scale: IBandLikeScale, parameters: any) {\n spec.round && scale.round(invokeFunctionType(spec.round, parameters, scale), true);\n spec.padding && scale.padding(invokeFunctionType(spec.padding, parameters, scale), true);\n spec.paddingInner && scale.paddingInner(invokeFunctionType(spec.paddingInner, parameters, scale), true);\n spec.paddingOuter && scale.paddingOuter(invokeFunctionType(spec.paddingOuter, parameters, scale), true);\n spec.align && scale.align(invokeFunctionType(spec.align, parameters, scale), true);\n}\n\nfunction configureBandScale(spec: BandScaleSpec, scale: IBandLikeScale, parameters: any) {\n return configureBaseBandScale(spec, scale, parameters);\n}\n\nfunction configurePointScale(spec: PointScaleSpec, scale: IBandLikeScale, parameters: any) {\n return configureBaseBandScale(spec, scale, parameters);\n}\n\nfunction parseFieldData(spec: ScaleData, parameters: any) {\n const field = spec.field;\n const refData = getGrammarOutput(spec.data, parameters) as any[];\n const fieldData: any[] = [];\n\n if (isArray(field)) {\n field.forEach(entry => {\n const getter = getFieldAccessor(entry);\n\n refData &&\n refData.forEach(datum => {\n fieldData.push(getter(datum));\n });\n });\n } else {\n const getter = getFieldAccessor(field);\n\n refData &&\n refData.forEach(datum => {\n fieldData.push(getter(datum));\n });\n }\n\n return fieldData;\n}\nfunction parseMultiFieldData(spec: MultiScaleData, parameters: any) {\n let fieldData: any[] = [];\n\n spec.datas.forEach(entry => {\n fieldData = fieldData.concat(parseFieldData(entry, parameters));\n });\n\n return fieldData;\n}\n\nfunction parseScaleDataTypeValue(\n fieldData: any[],\n scale: IBaseScale,\n sort?: (datumA: any, datumB: any) => number,\n filterNumber?: boolean\n) {\n if (sort) {\n fieldData.sort(sort);\n }\n\n if (!isContinuous(scale.type)) {\n return fieldData;\n }\n\n if (filterNumber) {\n fieldData.filter(entry => isNumber(entry));\n }\n return [Math.min.apply(null, fieldData), Math.max.apply(null, fieldData)];\n}\n\nexport function configureScale(spec: ScaleSpec, scale: IBaseScale, parameters: any) {\n if (isScaleDataType(spec.domain)) {\n scale.domain(parseScaleDataTypeValue(parseFieldData(spec.domain, parameters), scale, spec.domain.sort, true), true);\n } else if (isMultiScaleDataType(spec.domain)) {\n scale.domain(\n parseScaleDataTypeValue(parseMultiFieldData(spec.domain, parameters), scale, spec.domain.sort, true),\n true\n );\n } else {\n scale.domain(invokeFunctionType(spec.domain, parameters, scale), true);\n }\n\n if (spec.type !== 'identity') {\n if (isScaleDataType(spec.range)) {\n scale.range(parseScaleDataTypeValue(parseFieldData(spec.range, parameters), scale), true);\n } else if (isMultiScaleDataType(spec.range)) {\n scale.range(parseScaleDataTypeValue(parseMultiFieldData(spec.range, parameters), scale), true);\n } else if (isScaleCoordinateType(spec.range)) {\n const coord = getGrammarOutput(spec.range.coordinate, parameters);\n\n if (!isDiscretizing(scale.type) && coord) {\n scale.range(coord.getRangeByDimension(spec.range.dimension, spec.range.isSubshaft, spec.range.reversed));\n }\n } else {\n scale.range(invokeFunctionType(spec.range, parameters, scale), true);\n }\n }\n if (!isNil(spec.unknown)) {\n scale.unknown(invokeFunctionType(spec.unknown, parameters, scale));\n }\n\n switch (spec.type) {\n case 'linear':\n configureLinearScale(spec, scale as ILinearScale, parameters);\n (scale as ILinearScale).rescale();\n break;\n case 'band':\n configureBandScale(spec, scale as IBandLikeScale, parameters);\n (scale as IBandLikeScale).rescale();\n break;\n case 'point':\n configurePointScale(spec, scale as IBandLikeScale, parameters);\n (scale as IBandLikeScale).rescale();\n break;\n case 'pow':\n configurePowScale(spec, scale as IPowScale, parameters);\n (scale as IContinuousScale).rescale();\n break;\n case 'log':\n configureLogScale(spec, scale as ILogScale, parameters);\n (scale as IContinuousScale).rescale();\n break;\n case 'sqrt':\n configureSqrtScale(spec, scale as ILinearScale, parameters);\n (scale as IContinuousScale).rescale();\n break;\n case 'symlog':\n configureSymlogScale(spec, scale as ISymlogScale, parameters);\n (scale as IContinuousScale).rescale();\n break;\n case 'time':\n case 'utc':\n configureTimeScale(spec, scale as ILinearScale, parameters);\n (scale as IContinuousScale).rescale();\n break;\n case 'quantize':\n configureQuantizeScale(spec, scale as IQuantizeScale, parameters);\n (scale as IQuantizeScale).rescale();\n break;\n case 'quantile':\n (scale as IQuantileScale).rescale();\n break;\n }\n}\n"]}
@@ -7,7 +7,7 @@ export declare class Cell extends Mark {
7
7
  protected _encoders: StateEncodeSpec | null;
8
8
  encodeState(state: string, channel: string | BaseSignleEncodeSpec, value?: MarkFunctionType<any>): this;
9
9
  protected _updateComponentEncoders(state: string): void;
10
- protected _getEncoders(): StateEncodeSpec<Partial<Omit<import("@visactor/vrender-core").IGraphicAttribute, "strokeSeg" | "boundsPadding" | "pickMode" | "boundsMode" | "customPickShape" | "pickable" | "childrenPickable" | "visible" | "zIndex" | "layout" | "keepDirIn3d" | "postMatrix" | "anchor" | "anchor3d">>>;
10
+ protected _getEncoders(): StateEncodeSpec<Partial<Omit<import("@visactor/vrender").IGraphicAttribute, "strokeSeg" | "boundsPadding" | "pickMode" | "boundsMode" | "customPickShape" | "pickable" | "childrenPickable" | "visible" | "zIndex" | "layout" | "keepDirIn3d" | "postMatrix" | "anchor" | "anchor3d">>>;
11
11
  getAttributeTransforms(): AttributeTransform[];
12
12
  release(): void;
13
13
  }
@@ -7,7 +7,7 @@ export declare class Interval extends Mark {
7
7
  protected _encoders: StateEncodeSpec;
8
8
  encodeState(state: string, channel: string | BaseSignleEncodeSpec, value?: MarkFunctionType<any>): this;
9
9
  protected _updateComponentEncoders(state: string): void;
10
- protected _getEncoders(): StateEncodeSpec<Partial<Omit<import("@visactor/vrender-core").IGraphicAttribute, "strokeSeg" | "boundsPadding" | "pickMode" | "boundsMode" | "customPickShape" | "pickable" | "childrenPickable" | "visible" | "zIndex" | "layout" | "keepDirIn3d" | "postMatrix" | "anchor" | "anchor3d">>>;
10
+ protected _getEncoders(): StateEncodeSpec<Partial<Omit<import("@visactor/vrender").IGraphicAttribute, "strokeSeg" | "boundsPadding" | "pickMode" | "boundsMode" | "customPickShape" | "pickable" | "childrenPickable" | "visible" | "zIndex" | "layout" | "keepDirIn3d" | "postMatrix" | "anchor" | "anchor3d">>>;
11
11
  getAttributeTransforms(): AttributeTransform[];
12
12
  addGraphicItem(attrs: any, groupKey?: string): any;
13
13
  release(): void;
@@ -1,4 +1,4 @@
1
- import type { IGraphic, ACustomAnimate, EasingType } from '@visactor/vrender-core';
1
+ import type { IGraphic, ACustomAnimate, EasingType } from '@visactor/vrender';
2
2
  import type { IPointLike } from '@visactor/vutils';
3
3
  import type { MarkFunctionCallback, MarkFunctionType } from './mark';
4
4
  import type { IMark } from './grammar';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/animate.ts"],"names":[],"mappings":"","file":"animate.js","sourcesContent":["import type { IGraphic, ACustomAnimate, EasingType } from '@visactor/vrender-core';\nimport type { IPointLike } from '@visactor/vutils';\nimport type { MarkFunctionCallback, MarkFunctionType } from './mark';\nimport type { IMark } from './grammar';\nimport type { IElement } from './element';\n\nexport type TypeAnimation<T extends IElement> = (\n element: T,\n options: any,\n animationParameters: IAnimationParameters\n) => { from?: { [channel: string]: any }; to?: { [channel: string]: any } };\n\nexport interface IClipAnimationOptions {\n clipDimension?: 'x' | 'y' | 'auto' | 'default';\n}\n\nexport interface IGrowCartesianAnimationOptions {\n orient?: 'positive' | 'negative';\n overall?: boolean | number;\n direction?: 'x' | 'y' | 'xy';\n}\n\nexport interface IGrowAngleAnimationOptions {\n orient?: 'clockwise' | 'anticlockwise';\n overall?: boolean | number;\n}\n\nexport interface IGrowRadiusAnimationOptions {\n orient?: 'inside' | 'outside';\n overall?: boolean | number;\n}\n\nexport interface IGrowPointsAnimationOptions {\n orient?: 'positive' | 'negative';\n}\n\nexport interface IGrowPointsOverallAnimationOptions extends IGrowPointsAnimationOptions {\n center?: IPointLike;\n}\n\nexport interface IScaleAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n}\n\nexport interface IMoveAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n orient?: 'positive' | 'negative';\n offset?: number;\n point?: { x?: number; y?: number };\n}\n\nexport interface IRotateAnimationOptions {\n orient?: 'clockwise' | 'anticlockwise';\n angle?: number;\n}\n\n/** VGrammar 层提供的图元text上的图形属性,现在暂时会和VRender不一致 */\nexport interface TextItemAttributes {\n fontSize?: number;\n lineHeight?: number;\n font?: string;\n fontStyle?: string;\n fontVariant?: string;\n fontWeight?: string | number;\n lineBreak?: string;\n text?: string | string[];\n limit?: number;\n align?: string;\n baseline?: string;\n ellipsis?: string | boolean;\n dir?: string;\n}\n\n/** animation */\nexport type MarkFunctionValueType<T> = MarkFunctionCallback<T> | T;\n\nexport type IAnimationConfig = IAnimationTimeline | IAnimationTypeConfig;\n\n/**\n * state动画,暂时只支持简单配置\n */\nexport interface IStateAnimationConfig {\n duration?: number;\n easing?: EasingType;\n}\n\n/**\n * 动画 config 简化配置\n */\nexport interface IAnimationTypeConfig {\n type?: string;\n channel?: IAnimationChannelAttrs | IAnimationChannelAttributes;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: MarkFunctionValueType<any>;\n easing?: EasingType;\n delay?: MarkFunctionValueType<number>;\n duration?: MarkFunctionValueType<number>;\n oneByOne?: MarkFunctionValueType<boolean | number>;\n startTime?: MarkFunctionValueType<number>;\n totalTime?: MarkFunctionValueType<number>;\n /** loop: true 无限循环; loop: 正整数,表示循环的次数 */\n loop?: boolean | number;\n /** 动画 effect 配置项 */\n options?: MarkFunctionValueType<any>;\n /** 动画执行相关控制配置项 */\n controlOptions?: IAnimationControlOptions;\n}\n\n/**\n * 动画 timeline 完整配置,一条时间线内的动画单元只能串行\n * 多个timeline是可以并行的\n * 考虑到同一图元不能在多个timeline上,所以timeline不应该提供数组配置的能力\n */\nexport interface IAnimationTimeline {\n /** 为了方便动画编排,用户可以设置 id 用于识别时间线 */\n id?: string;\n /** 时间切片 */\n timeSlices: IAnimationTimeSlice | IAnimationTimeSlice[];\n /** 动画开始的相对时间,可以为负数 */\n startTime?: MarkFunctionValueType<number>;\n /** 动画时长 */\n totalTime?: MarkFunctionValueType<number>;\n /** 动画依次执行的延迟 */\n oneByOne?: MarkFunctionValueType<number | boolean>;\n /** loop: true 无限循环; loop: 正整数,表示循环的次数 */\n loop?: MarkFunctionValueType<number | boolean>;\n /** 对图元元素进行划分,和过滤类似,但是不同时间线不能同时作用在相同的元素上 */\n partitioner?: MarkFunctionCallback<boolean>;\n /** 对同一时间线上的元素进行排序 */\n sort?: (datumA: any, datumB: any, elementA: IElement, elementB: IElement, parameters: any) => number;\n /** 动画执行相关控制配置项 */\n controlOptions?: IAnimationControlOptions;\n}\n\nexport interface IAnimationTimeSlice {\n effects: IAnimationEffect | IAnimationEffect[];\n duration?: MarkFunctionValueType<number>;\n delay?: MarkFunctionValueType<number>;\n}\n\nexport type IAnimationChannelFunction = (datum: any, element: IElement, parameters: IAnimationParameters) => any;\nexport type IAnimationChannelAttrs = Record<\n string,\n {\n from?: any | IAnimationChannelFunction;\n to?: any | IAnimationChannelFunction;\n }\n>;\nexport type IAnimationChannelAttributes = string[];\nexport type IAnimationChannelInterpolator = (\n ratio: number,\n from: any,\n to: any,\n nextAttributes: any,\n datum: any,\n element: IElement,\n parameters: IAnimationParameters\n) => boolean | void;\n\n// TODO: fix ACustomAnimate<any>\nexport interface IAnimationCustomConstructor {\n new (from: any, to: any, duration: number, ease: EasingType, parameters?: any): ACustomAnimate<any>;\n}\n\nexport interface IAnimationEffect {\n type?: string;\n channel?: IAnimationChannelAttrs | IAnimationChannelAttributes;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: MarkFunctionValueType<any>;\n easing?: EasingType;\n /** options暂时没有处理 */\n options?: MarkFunctionValueType<any>;\n}\n\nexport interface IAnimationControlOptions {\n /** 当动画状态变更时清空动画 */\n stopWhenStateChange?: boolean;\n /** 是否立即应用动画初始状态 */\n immediatelyApply?: boolean;\n}\n\n/**\n * Animation timeline should be parsed into animation units,\n * which record all necessary configs for animator to execute animation.\n *\n * animation unit time:\n * |<--initialDelay-->| |<--loopDelay--><--Slices--><--looDelayAfter-->| |<--loopDuration-->|\n * |<-----------------loopDuration--------------->|\n */\nexport interface IAnimationUnit {\n /**\n * initial delay time before any animation loop\n */\n initialDelay: number;\n /**\n * total time for one animation loop\n */\n loopDuration: number;\n /**\n * delay time before time slices\n */\n loopDelay: number;\n /**\n * delay time after time slices\n */\n loopDelayAfter: number;\n /**\n * animating time in one animation loop\n */\n loopAnimateDuration: number;\n loopCount: number;\n totalTime: number;\n timeSlices: IAnimationTimeSlice[];\n}\n\nexport interface IAnimationRecord {\n start: IGraphic;\n end: IGraphic;\n changes: any[];\n}\n\nexport interface IAnimationParameters {\n width: number;\n height: number;\n mark: IMark;\n group: IMark | null;\n elementIndex: number;\n elementCount: number;\n view: any;\n}\n\nexport interface IParsedAnimationConfig {\n state: string;\n timeline: IAnimationTimeline;\n originConfig: IAnimationConfig;\n id: string;\n}\n\nexport interface IParsedAnimationAttrs {\n from?: any;\n to?: any;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: any;\n}\n\n// animate structure\n\nexport interface IAnimatorOptions {\n state: string;\n timeline: IAnimationTimeline;\n id: string;\n}\n\nexport interface IAnimator {\n id: number;\n element: IElement;\n animationOptions: IAnimatorOptions;\n isAnimating: boolean;\n\n /** execute animation */\n animate: (animationParameters: IAnimationParameters, parameters: any) => this;\n /** set animation callback */\n callback: (callbackFunction: (...args: any[]) => void) => this;\n\n // animation control\n stop: (stopState?: 'start' | 'end', invokeCallback?: boolean) => this;\n pause: () => this;\n resume: () => this;\n\n /** set additional initial animation delay */\n startAt: (startTime: number) => this;\n /** get total animation execution time */\n getTotalAnimationTime: () => number;\n\n getEndAttributes: () => Record<string, any>;\n}\n\nexport interface IAnimateArranger {\n // animation control api\n parallel: (arranger: IAnimateArranger) => this;\n after: (arranger: IAnimateArranger) => this;\n\n // internal properties\n afterArranger: IAnimateArranger;\n parallelArrangers: IAnimateArranger[];\n animators: IAnimator[];\n totalTime: number;\n startTime: number;\n endTime: number;\n arrangeTime: () => void;\n}\n\nexport interface IBaseAnimate {\n // animation control\n stop: () => this;\n pause: () => this;\n resume: () => this;\n\n // internal animation process api\n animate: () => this;\n enable: () => this;\n disable: () => this;\n enableAnimationState: (state: string | string[]) => this;\n disableAnimationState: (state: string | string[]) => this;\n isAnimating: () => boolean;\n\n release: () => void;\n}\n\nexport interface IViewAnimate extends IBaseAnimate {\n animateAddition: (mark: IMark) => this;\n}\n\nexport interface IAnimate extends IBaseAnimate {\n mark: IMark;\n\n // additional animation control\n run: (config: IAnimationConfig | IAnimationConfig[]) => IAnimateArranger;\n runAnimationByState: (animationState: string) => IAnimateArranger;\n stopAnimationByState: (animationState: string) => this;\n pauseAnimationByState: (animationState: string) => this;\n resumeAnimationByState: (animationState: string) => this;\n reverse: () => this;\n restart: () => this;\n record: () => this;\n recordEnd: () => this;\n\n // internal animation process api\n updateConfig: (config: Record<string, IAnimationConfig | IAnimationConfig[]>) => void;\n updateState: (state: MarkFunctionType<string> | null) => void;\n isElementAnimating: (element: IElement) => boolean;\n getAnimatorCount: () => number;\n getElementAnimators: (element: IElement | IElement[], animationState?: string) => IAnimator[];\n release: () => void;\n}\n"]}
1
+ {"version":3,"sources":["../src/types/animate.ts"],"names":[],"mappings":"","file":"animate.js","sourcesContent":["import type { IGraphic, ACustomAnimate, EasingType } from '@visactor/vrender';\nimport type { IPointLike } from '@visactor/vutils';\nimport type { MarkFunctionCallback, MarkFunctionType } from './mark';\nimport type { IMark } from './grammar';\nimport type { IElement } from './element';\n\nexport type TypeAnimation<T extends IElement> = (\n element: T,\n options: any,\n animationParameters: IAnimationParameters\n) => { from?: { [channel: string]: any }; to?: { [channel: string]: any } };\n\nexport interface IClipAnimationOptions {\n clipDimension?: 'x' | 'y' | 'auto' | 'default';\n}\n\nexport interface IGrowCartesianAnimationOptions {\n orient?: 'positive' | 'negative';\n overall?: boolean | number;\n direction?: 'x' | 'y' | 'xy';\n}\n\nexport interface IGrowAngleAnimationOptions {\n orient?: 'clockwise' | 'anticlockwise';\n overall?: boolean | number;\n}\n\nexport interface IGrowRadiusAnimationOptions {\n orient?: 'inside' | 'outside';\n overall?: boolean | number;\n}\n\nexport interface IGrowPointsAnimationOptions {\n orient?: 'positive' | 'negative';\n}\n\nexport interface IGrowPointsOverallAnimationOptions extends IGrowPointsAnimationOptions {\n center?: IPointLike;\n}\n\nexport interface IScaleAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n}\n\nexport interface IMoveAnimationOptions {\n direction?: 'x' | 'y' | 'xy';\n orient?: 'positive' | 'negative';\n offset?: number;\n point?: { x?: number; y?: number };\n}\n\nexport interface IRotateAnimationOptions {\n orient?: 'clockwise' | 'anticlockwise';\n angle?: number;\n}\n\n/** VGrammar 层提供的图元text上的图形属性,现在暂时会和VRender不一致 */\nexport interface TextItemAttributes {\n fontSize?: number;\n lineHeight?: number;\n font?: string;\n fontStyle?: string;\n fontVariant?: string;\n fontWeight?: string | number;\n lineBreak?: string;\n text?: string | string[];\n limit?: number;\n align?: string;\n baseline?: string;\n ellipsis?: string | boolean;\n dir?: string;\n}\n\n/** animation */\nexport type MarkFunctionValueType<T> = MarkFunctionCallback<T> | T;\n\nexport type IAnimationConfig = IAnimationTimeline | IAnimationTypeConfig;\n\n/**\n * state动画,暂时只支持简单配置\n */\nexport interface IStateAnimationConfig {\n duration?: number;\n easing?: EasingType;\n}\n\n/**\n * 动画 config 简化配置\n */\nexport interface IAnimationTypeConfig {\n type?: string;\n channel?: IAnimationChannelAttrs | IAnimationChannelAttributes;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: MarkFunctionValueType<any>;\n easing?: EasingType;\n delay?: MarkFunctionValueType<number>;\n duration?: MarkFunctionValueType<number>;\n oneByOne?: MarkFunctionValueType<boolean | number>;\n startTime?: MarkFunctionValueType<number>;\n totalTime?: MarkFunctionValueType<number>;\n /** loop: true 无限循环; loop: 正整数,表示循环的次数 */\n loop?: boolean | number;\n /** 动画 effect 配置项 */\n options?: MarkFunctionValueType<any>;\n /** 动画执行相关控制配置项 */\n controlOptions?: IAnimationControlOptions;\n}\n\n/**\n * 动画 timeline 完整配置,一条时间线内的动画单元只能串行\n * 多个timeline是可以并行的\n * 考虑到同一图元不能在多个timeline上,所以timeline不应该提供数组配置的能力\n */\nexport interface IAnimationTimeline {\n /** 为了方便动画编排,用户可以设置 id 用于识别时间线 */\n id?: string;\n /** 时间切片 */\n timeSlices: IAnimationTimeSlice | IAnimationTimeSlice[];\n /** 动画开始的相对时间,可以为负数 */\n startTime?: MarkFunctionValueType<number>;\n /** 动画时长 */\n totalTime?: MarkFunctionValueType<number>;\n /** 动画依次执行的延迟 */\n oneByOne?: MarkFunctionValueType<number | boolean>;\n /** loop: true 无限循环; loop: 正整数,表示循环的次数 */\n loop?: MarkFunctionValueType<number | boolean>;\n /** 对图元元素进行划分,和过滤类似,但是不同时间线不能同时作用在相同的元素上 */\n partitioner?: MarkFunctionCallback<boolean>;\n /** 对同一时间线上的元素进行排序 */\n sort?: (datumA: any, datumB: any, elementA: IElement, elementB: IElement, parameters: any) => number;\n /** 动画执行相关控制配置项 */\n controlOptions?: IAnimationControlOptions;\n}\n\nexport interface IAnimationTimeSlice {\n effects: IAnimationEffect | IAnimationEffect[];\n duration?: MarkFunctionValueType<number>;\n delay?: MarkFunctionValueType<number>;\n}\n\nexport type IAnimationChannelFunction = (datum: any, element: IElement, parameters: IAnimationParameters) => any;\nexport type IAnimationChannelAttrs = Record<\n string,\n {\n from?: any | IAnimationChannelFunction;\n to?: any | IAnimationChannelFunction;\n }\n>;\nexport type IAnimationChannelAttributes = string[];\nexport type IAnimationChannelInterpolator = (\n ratio: number,\n from: any,\n to: any,\n nextAttributes: any,\n datum: any,\n element: IElement,\n parameters: IAnimationParameters\n) => boolean | void;\n\n// TODO: fix ACustomAnimate<any>\nexport interface IAnimationCustomConstructor {\n new (from: any, to: any, duration: number, ease: EasingType, parameters?: any): ACustomAnimate<any>;\n}\n\nexport interface IAnimationEffect {\n type?: string;\n channel?: IAnimationChannelAttrs | IAnimationChannelAttributes;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: MarkFunctionValueType<any>;\n easing?: EasingType;\n /** options暂时没有处理 */\n options?: MarkFunctionValueType<any>;\n}\n\nexport interface IAnimationControlOptions {\n /** 当动画状态变更时清空动画 */\n stopWhenStateChange?: boolean;\n /** 是否立即应用动画初始状态 */\n immediatelyApply?: boolean;\n}\n\n/**\n * Animation timeline should be parsed into animation units,\n * which record all necessary configs for animator to execute animation.\n *\n * animation unit time:\n * |<--initialDelay-->| |<--loopDelay--><--Slices--><--looDelayAfter-->| |<--loopDuration-->|\n * |<-----------------loopDuration--------------->|\n */\nexport interface IAnimationUnit {\n /**\n * initial delay time before any animation loop\n */\n initialDelay: number;\n /**\n * total time for one animation loop\n */\n loopDuration: number;\n /**\n * delay time before time slices\n */\n loopDelay: number;\n /**\n * delay time after time slices\n */\n loopDelayAfter: number;\n /**\n * animating time in one animation loop\n */\n loopAnimateDuration: number;\n loopCount: number;\n totalTime: number;\n timeSlices: IAnimationTimeSlice[];\n}\n\nexport interface IAnimationRecord {\n start: IGraphic;\n end: IGraphic;\n changes: any[];\n}\n\nexport interface IAnimationParameters {\n width: number;\n height: number;\n mark: IMark;\n group: IMark | null;\n elementIndex: number;\n elementCount: number;\n view: any;\n}\n\nexport interface IParsedAnimationConfig {\n state: string;\n timeline: IAnimationTimeline;\n originConfig: IAnimationConfig;\n id: string;\n}\n\nexport interface IParsedAnimationAttrs {\n from?: any;\n to?: any;\n custom?: IAnimationChannelInterpolator | IAnimationCustomConstructor;\n customParameters?: any;\n}\n\n// animate structure\n\nexport interface IAnimatorOptions {\n state: string;\n timeline: IAnimationTimeline;\n id: string;\n}\n\nexport interface IAnimator {\n id: number;\n element: IElement;\n animationOptions: IAnimatorOptions;\n isAnimating: boolean;\n\n /** execute animation */\n animate: (animationParameters: IAnimationParameters, parameters: any) => this;\n /** set animation callback */\n callback: (callbackFunction: (...args: any[]) => void) => this;\n\n // animation control\n stop: (stopState?: 'start' | 'end', invokeCallback?: boolean) => this;\n pause: () => this;\n resume: () => this;\n\n /** set additional initial animation delay */\n startAt: (startTime: number) => this;\n /** get total animation execution time */\n getTotalAnimationTime: () => number;\n\n getEndAttributes: () => Record<string, any>;\n}\n\nexport interface IAnimateArranger {\n // animation control api\n parallel: (arranger: IAnimateArranger) => this;\n after: (arranger: IAnimateArranger) => this;\n\n // internal properties\n afterArranger: IAnimateArranger;\n parallelArrangers: IAnimateArranger[];\n animators: IAnimator[];\n totalTime: number;\n startTime: number;\n endTime: number;\n arrangeTime: () => void;\n}\n\nexport interface IBaseAnimate {\n // animation control\n stop: () => this;\n pause: () => this;\n resume: () => this;\n\n // internal animation process api\n animate: () => this;\n enable: () => this;\n disable: () => this;\n enableAnimationState: (state: string | string[]) => this;\n disableAnimationState: (state: string | string[]) => this;\n isAnimating: () => boolean;\n\n release: () => void;\n}\n\nexport interface IViewAnimate extends IBaseAnimate {\n animateAddition: (mark: IMark) => this;\n}\n\nexport interface IAnimate extends IBaseAnimate {\n mark: IMark;\n\n // additional animation control\n run: (config: IAnimationConfig | IAnimationConfig[]) => IAnimateArranger;\n runAnimationByState: (animationState: string) => IAnimateArranger;\n stopAnimationByState: (animationState: string) => this;\n pauseAnimationByState: (animationState: string) => this;\n resumeAnimationByState: (animationState: string) => this;\n reverse: () => this;\n restart: () => this;\n record: () => this;\n recordEnd: () => this;\n\n // internal animation process api\n updateConfig: (config: Record<string, IAnimationConfig | IAnimationConfig[]>) => void;\n updateState: (state: MarkFunctionType<string> | null) => void;\n isElementAnimating: (element: IElement) => boolean;\n getAnimatorCount: () => number;\n getElementAnimators: (element: IElement | IElement[], animationState?: string) => IAnimator[];\n release: () => void;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { IGraphicAttribute, ISymbolGraphicAttribute, ITextAttribute, ITextGraphicAttribute } from '@visactor/vrender-core';
1
+ import type { IGraphicAttribute, ISymbolGraphicAttribute, ITextAttribute, ITextGraphicAttribute } from '@visactor/vrender';
2
2
  import type { AxisBaseAttributes, BaseCrosshairAttrs, BaseLabelAttrs, DataLabelAttrs, DataZoomAttributes, Direction, GridBaseAttributes, LegendBaseAttributes, OrientType, PlayerAttributes, ScrollBarAttributes, SliderAttributes, TitleAttrs, TooltipAttributes, TooltipRowAttrs } from '@visactor/vrender-components';
3
3
  import type { AxisEnum, ComponentEnum } from '../graph';
4
4
  import type { Nil } from './base';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/component.ts"],"names":[],"mappings":"","file":"component.js","sourcesContent":["import type {\n IGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type {\n AxisBaseAttributes,\n BaseCrosshairAttrs,\n BaseLabelAttrs,\n DataLabelAttrs,\n DataZoomAttributes,\n Direction,\n GridBaseAttributes,\n LegendBaseAttributes,\n OrientType,\n PlayerAttributes,\n ScrollBarAttributes,\n SliderAttributes,\n TitleAttrs,\n TooltipAttributes,\n TooltipRowAttrs\n} from '@visactor/vrender-components';\nimport type { AxisEnum, ComponentEnum } from '../graph';\nimport type { Nil } from './base';\nimport type { IComponent, IData, IGroupMark, IMark, IScale } from './grammar';\nimport type {\n ChannelEncodeType,\n ComponentSpec,\n FieldEncodeType,\n GenerateBasicEncoderSpec,\n MarkFunctionType,\n ScaleEncodeType\n} from './mark';\nimport type { IPointLike } from '@visactor/vutils';\nimport type { IElement } from './element';\nimport type { IView } from './view';\n\n// scale component\n\nexport interface IScaleComponent extends IComponent {\n scale: (scale?: IScale | string | Nil) => this;\n}\n\nexport interface ScaleComponentSpec<\n BasicEncoderSpec extends GenerateBasicEncoderSpec<IGraphicAttribute> = GenerateBasicEncoderSpec<IGraphicAttribute>\n> extends ComponentSpec<BasicEncoderSpec> {\n scale?: IScale | string;\n}\n\n// axis component\n\nexport type AxisType = 'line' | 'circle';\n\nexport interface IAxis extends IScaleComponent {\n axisType: (axisType: AxisType | Nil) => this;\n tickCount: (tickCount: MarkFunctionType<number> | Nil) => this;\n inside: (inside: MarkFunctionType<boolean> | Nil) => this;\n baseValue: (baseValue: MarkFunctionType<number> | Nil) => this;\n\n // internal interface\n getAxisComponentType: () => keyof typeof AxisEnum;\n}\n\nexport interface AxisSpec extends ScaleComponentSpec<Partial<AxisBaseAttributes>> {\n componentType: ComponentEnum.axis;\n axisType?: AxisType;\n tickCount?: MarkFunctionType<number>;\n inside?: MarkFunctionType<boolean>;\n baseValue?: MarkFunctionType<number>;\n}\n\n// grid component\n\nexport type GridShape = 'line' | 'circle' | 'polygon';\n\nexport interface IGrid extends IScaleComponent {\n gridType: (gridType: AxisType | Nil) => this;\n gridShape: (gridShape: GridShape | Nil) => this;\n target: (axis: IAxis | string | Nil) => this;\n tickCount: (tickCount: MarkFunctionType<number> | Nil) => this;\n inside: (inside: MarkFunctionType<boolean> | Nil) => this;\n baseValue: (baseValue: MarkFunctionType<number> | Nil) => this;\n}\n\nexport interface GridSpec extends ScaleComponentSpec<Partial<GridBaseAttributes>> {\n componentType: ComponentEnum.grid;\n gridType?: AxisType;\n gridShape?: GridShape;\n target?: IAxis | string;\n tickCount?: MarkFunctionType<number>;\n inside?: MarkFunctionType<boolean>;\n baseValue?: MarkFunctionType<number>;\n}\n\n// legend component\n\nexport type LegendType = 'auto' | 'discrete' | 'color' | 'size';\n\nexport interface ILegend extends IScaleComponent {\n legendType: (legendType: LegendType | Nil) => this;\n target: (data: IData | string | Nil, filter: string | ((datum: any, legendValues: any) => boolean) | Nil) => this;\n\n // immediate functions\n setSelected: (selectedValues: any[]) => this;\n}\n\nexport interface LegendSpec extends ScaleComponentSpec<LegendBaseAttributes> {\n componentType: ComponentEnum.legend;\n legendType?: LegendType;\n shapeScale?: IScale | string;\n target?: {\n data: IData | string;\n filter: string | ((datum: any, legendValues: any[]) => boolean);\n };\n}\n\n// crosshair component\n\nexport type CrosshairType = 'x' | 'y' | 'angle' | 'radius' | 'radius-polygon';\n\nexport type CrosshairShape = 'line' | 'rect';\n\nexport interface ICrosshair extends IScaleComponent {\n crosshairType: (crosshairType: CrosshairType | Nil) => this;\n crosshairShape: (crosshairShape: CrosshairShape | Nil) => this;\n}\n\nexport interface CrosshairSpec extends ScaleComponentSpec<BaseCrosshairAttrs> {\n componentType: ComponentEnum.crosshair;\n crosshairType?: CrosshairType;\n crosshairShape?: CrosshairShape;\n componentConfig?: { radius?: number; center?: IPointLike };\n}\n\n// slider component\n\nexport type SliderFilterValue = { start: number; end: number };\n\nexport interface ISlider extends IComponent {\n min: (min: MarkFunctionType<number> | Nil) => this;\n max: (max: MarkFunctionType<number> | Nil) => this;\n target: (\n data: IData | string | Nil,\n filter: string | ((datum: any, value: SliderFilterValue) => boolean) | Nil\n ) => this;\n\n // immediate functions\n setStartEndValue: (start?: number, end?: number) => this;\n}\n\nexport interface SliderSpec extends ComponentSpec<Partial<SliderAttributes>> {\n componentType: ComponentEnum.slider;\n min?: MarkFunctionType<number>;\n max?: MarkFunctionType<number>;\n target?: {\n data: IData | string;\n filter: string | ((datum: any, value: SliderFilterValue) => boolean);\n };\n}\n\n// datazoom component\n\nexport type DatazoomFilterValue = { start: number; end: number; startRatio: number; endRatio: number };\n\nexport interface IDatazoom extends IComponent {\n preview: (\n data: IData | string | Nil,\n x: ScaleEncodeType | Nil,\n y: ScaleEncodeType | Nil,\n x1?: ChannelEncodeType | Nil,\n y1?: ChannelEncodeType | Nil\n ) => this;\n target: (\n data: IData | string | Nil,\n filter: string | ((datum: any, value: DatazoomFilterValue) => boolean) | Nil\n ) => this;\n\n // immediate functions\n setStartEndValue: (start?: number, end?: number) => this;\n}\n\nexport type DataZoomEncoderSpec = GenerateBasicEncoderSpec<Partial<DataZoomAttributes> & { x1?: number; y1?: number }>;\nexport interface DatazoomSpec extends ComponentSpec<DataZoomEncoderSpec> {\n componentType: ComponentEnum.datazoom;\n preview?: {\n data: IData | string;\n x?: ScaleEncodeType;\n y?: ScaleEncodeType;\n x1?: ChannelEncodeType;\n y1?: ChannelEncodeType;\n };\n target?: {\n data: IData | string;\n filter: string | ((datum: any, value: DatazoomFilterValue) => boolean);\n };\n}\n\n// label component\n\nexport interface ILabel extends IComponent {\n labelStyle: (attributes: MarkFunctionType<Partial<BaseLabelAttrs>>) => this;\n size: (attributes: MarkFunctionType<DataLabelAttrs['size']>) => this;\n target: (mark: IMark | IMark[] | string | string[] | Nil) => this;\n}\n\nexport type LabelEncoderSpec = GenerateBasicEncoderSpec<Partial<BaseLabelAttrs> & { text?: ITextAttribute['text'] }>;\nexport interface LabelSpec extends ComponentSpec<LabelEncoderSpec> {\n componentType: ComponentEnum.label;\n labelStyle?: MarkFunctionType<Partial<BaseLabelAttrs>>;\n size?: MarkFunctionType<DataLabelAttrs['size']>;\n target?: IMark | IMark[] | string | string[];\n}\n\n// player component\n\nexport type PlayerType = 'auto' | 'discrete' | 'continuous';\n\nexport type PlayerFilterValue = { index: number; value: any };\n\nexport interface IPlayer extends IComponent {\n playerType: (playerType: PlayerType) => this;\n target: (data: IData | string | Nil, source: IData | string | any[] | Nil) => this;\n\n // immediate functions\n play: () => this;\n pause: () => this;\n backward: () => this;\n forward: () => this;\n}\n\nexport interface PlayerSpec extends ComponentSpec<Partial<PlayerAttributes>> {\n componentType: ComponentEnum.player;\n playerType?: PlayerType;\n target?: {\n data: IData | string;\n source: IData | string | any[];\n };\n}\n\n// tooltip component\n\nexport type CustomTooltipCallback = (\n datum: any,\n element: IElement,\n parameters: any\n) => TooltipRowAttrs | TooltipRowAttrs[];\n\nexport interface ITooltipRow {\n visible?: boolean;\n key?: MarkFunctionType<string | Partial<ITextGraphicAttribute>> | FieldEncodeType;\n value?: MarkFunctionType<string | Partial<ITextGraphicAttribute>> | FieldEncodeType;\n symbol?: MarkFunctionType<string | Partial<ISymbolGraphicAttribute>> | FieldEncodeType;\n}\n\nexport interface IBaseTooltip extends IComponent {\n title: (title: ITooltipRow | string | CustomTooltipCallback | Nil) => this;\n content: (content: ITooltipRow | ITooltipRow[] | CustomTooltipCallback | Nil) => this;\n}\n\nexport interface ITooltip extends IBaseTooltip {\n target: (mark: IMark | IMark[] | string | string[] | Nil) => this;\n}\n\nexport interface BaseTooltipSpec extends ComponentSpec<TooltipAttributes> {\n title?: ITooltipRow | string | CustomTooltipCallback;\n content?: ITooltipRow | ITooltipRow[] | CustomTooltipCallback;\n}\n\nexport interface TooltipSpec extends BaseTooltipSpec {\n componentType: ComponentEnum.tooltip;\n target?: IMark | IMark[] | string | string[];\n}\n\nexport type TooltipType = 'x' | 'y' | 'angle' | 'radius';\n\nexport interface IDimensionTooltip extends IBaseTooltip {\n scale: (scale?: IScale | string | Nil) => this;\n tooltipType: (tooltipType: TooltipType | Nil) => this;\n target: (data: IData | string | Nil, filter: string | ((datum: any, tooltipValue: any) => boolean) | Nil) => this;\n avoidMark: (mark: IMark | IMark[] | string | string[] | Nil) => this;\n}\n\nexport interface DimensionTooltipSpec extends BaseTooltipSpec {\n componentType: ComponentEnum.dimensionTooltip;\n scale?: IScale | string;\n tooltipType?: TooltipType;\n target?: {\n data: IData | string;\n filter: string | ((datum: any, tooltipValue: any) => boolean);\n };\n avoidMark?: IMark | IMark[] | string | string[];\n componentConfig?: { center?: IPointLike };\n}\n\n// title component\n\nexport interface ITitle extends IComponent {\n title: (text: MarkFunctionType<string | number | number[] | string[]> | Nil) => this;\n subTitle: (text: MarkFunctionType<string | number | number[] | string[]> | Nil) => this;\n}\n\nexport interface TitleSpec extends ComponentSpec<Partial<TitleAttrs>> {\n componentType: ComponentEnum.title;\n title?: MarkFunctionType<string | number | number[] | string[]>;\n subTitle?: MarkFunctionType<string | number | number[] | string[]>;\n}\n\n// scrollbar component\n\nexport type ScrollbarFilterValue = { start?: number; end?: number; startRatio: number; endRatio: number };\n\nexport interface IScrollbar extends IScaleComponent {\n target: (\n data: IData | string | Nil,\n filter: string | ((datum: any, value: ScrollbarFilterValue) => boolean) | Nil\n ) => this;\n container: (container: IGroupMark | string | Nil) => this;\n direction: (direction: MarkFunctionType<Direction> | Nil) => this;\n position: (position: MarkFunctionType<OrientType> | Nil) => this;\n\n // immediate functions\n setScrollStart: (start: number) => this;\n}\n\nexport interface ScrollbarSpec extends ScaleComponentSpec<Partial<ScrollBarAttributes>> {\n componentType: ComponentEnum.scrollbar;\n target?: {\n data: IData | string;\n filter: string | ((datum: any, value: ScrollbarFilterValue) => boolean);\n };\n container?: IGroupMark | string;\n direction?: MarkFunctionType<Direction>;\n position?: MarkFunctionType<OrientType>;\n}\n\n// built-in components\n\nexport type BuiltInComponentSpec =\n | AxisSpec\n | LegendSpec\n | CrosshairSpec\n | SliderSpec\n | DatazoomSpec\n | LabelSpec\n | PlayerSpec\n | TooltipSpec\n | DimensionTooltipSpec\n | TitleSpec\n | ScrollbarSpec;\n\nexport interface IComponentConstructor {\n readonly componentType: string;\n\n new (view: IView, group?: IGroupMark, mode?: '2d' | '3d'): IComponent;\n}\n"]}
1
+ {"version":3,"sources":["../src/types/component.ts"],"names":[],"mappings":"","file":"component.js","sourcesContent":["import type {\n IGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender';\nimport type {\n AxisBaseAttributes,\n BaseCrosshairAttrs,\n BaseLabelAttrs,\n DataLabelAttrs,\n DataZoomAttributes,\n Direction,\n GridBaseAttributes,\n LegendBaseAttributes,\n OrientType,\n PlayerAttributes,\n ScrollBarAttributes,\n SliderAttributes,\n TitleAttrs,\n TooltipAttributes,\n TooltipRowAttrs\n} from '@visactor/vrender-components';\nimport type { AxisEnum, ComponentEnum } from '../graph';\nimport type { Nil } from './base';\nimport type { IComponent, IData, IGroupMark, IMark, IScale } from './grammar';\nimport type {\n ChannelEncodeType,\n ComponentSpec,\n FieldEncodeType,\n GenerateBasicEncoderSpec,\n MarkFunctionType,\n ScaleEncodeType\n} from './mark';\nimport type { IPointLike } from '@visactor/vutils';\nimport type { IElement } from './element';\nimport type { IView } from './view';\n\n// scale component\n\nexport interface IScaleComponent extends IComponent {\n scale: (scale?: IScale | string | Nil) => this;\n}\n\nexport interface ScaleComponentSpec<\n BasicEncoderSpec extends GenerateBasicEncoderSpec<IGraphicAttribute> = GenerateBasicEncoderSpec<IGraphicAttribute>\n> extends ComponentSpec<BasicEncoderSpec> {\n scale?: IScale | string;\n}\n\n// axis component\n\nexport type AxisType = 'line' | 'circle';\n\nexport interface IAxis extends IScaleComponent {\n axisType: (axisType: AxisType | Nil) => this;\n tickCount: (tickCount: MarkFunctionType<number> | Nil) => this;\n inside: (inside: MarkFunctionType<boolean> | Nil) => this;\n baseValue: (baseValue: MarkFunctionType<number> | Nil) => this;\n\n // internal interface\n getAxisComponentType: () => keyof typeof AxisEnum;\n}\n\nexport interface AxisSpec extends ScaleComponentSpec<Partial<AxisBaseAttributes>> {\n componentType: ComponentEnum.axis;\n axisType?: AxisType;\n tickCount?: MarkFunctionType<number>;\n inside?: MarkFunctionType<boolean>;\n baseValue?: MarkFunctionType<number>;\n}\n\n// grid component\n\nexport type GridShape = 'line' | 'circle' | 'polygon';\n\nexport interface IGrid extends IScaleComponent {\n gridType: (gridType: AxisType | Nil) => this;\n gridShape: (gridShape: GridShape | Nil) => this;\n target: (axis: IAxis | string | Nil) => this;\n tickCount: (tickCount: MarkFunctionType<number> | Nil) => this;\n inside: (inside: MarkFunctionType<boolean> | Nil) => this;\n baseValue: (baseValue: MarkFunctionType<number> | Nil) => this;\n}\n\nexport interface GridSpec extends ScaleComponentSpec<Partial<GridBaseAttributes>> {\n componentType: ComponentEnum.grid;\n gridType?: AxisType;\n gridShape?: GridShape;\n target?: IAxis | string;\n tickCount?: MarkFunctionType<number>;\n inside?: MarkFunctionType<boolean>;\n baseValue?: MarkFunctionType<number>;\n}\n\n// legend component\n\nexport type LegendType = 'auto' | 'discrete' | 'color' | 'size';\n\nexport interface ILegend extends IScaleComponent {\n legendType: (legendType: LegendType | Nil) => this;\n target: (data: IData | string | Nil, filter: string | ((datum: any, legendValues: any) => boolean) | Nil) => this;\n\n // immediate functions\n setSelected: (selectedValues: any[]) => this;\n}\n\nexport interface LegendSpec extends ScaleComponentSpec<LegendBaseAttributes> {\n componentType: ComponentEnum.legend;\n legendType?: LegendType;\n shapeScale?: IScale | string;\n target?: {\n data: IData | string;\n filter: string | ((datum: any, legendValues: any[]) => boolean);\n };\n}\n\n// crosshair component\n\nexport type CrosshairType = 'x' | 'y' | 'angle' | 'radius' | 'radius-polygon';\n\nexport type CrosshairShape = 'line' | 'rect';\n\nexport interface ICrosshair extends IScaleComponent {\n crosshairType: (crosshairType: CrosshairType | Nil) => this;\n crosshairShape: (crosshairShape: CrosshairShape | Nil) => this;\n}\n\nexport interface CrosshairSpec extends ScaleComponentSpec<BaseCrosshairAttrs> {\n componentType: ComponentEnum.crosshair;\n crosshairType?: CrosshairType;\n crosshairShape?: CrosshairShape;\n componentConfig?: { radius?: number; center?: IPointLike };\n}\n\n// slider component\n\nexport type SliderFilterValue = { start: number; end: number };\n\nexport interface ISlider extends IComponent {\n min: (min: MarkFunctionType<number> | Nil) => this;\n max: (max: MarkFunctionType<number> | Nil) => this;\n target: (\n data: IData | string | Nil,\n filter: string | ((datum: any, value: SliderFilterValue) => boolean) | Nil\n ) => this;\n\n // immediate functions\n setStartEndValue: (start?: number, end?: number) => this;\n}\n\nexport interface SliderSpec extends ComponentSpec<Partial<SliderAttributes>> {\n componentType: ComponentEnum.slider;\n min?: MarkFunctionType<number>;\n max?: MarkFunctionType<number>;\n target?: {\n data: IData | string;\n filter: string | ((datum: any, value: SliderFilterValue) => boolean);\n };\n}\n\n// datazoom component\n\nexport type DatazoomFilterValue = { start: number; end: number; startRatio: number; endRatio: number };\n\nexport interface IDatazoom extends IComponent {\n preview: (\n data: IData | string | Nil,\n x: ScaleEncodeType | Nil,\n y: ScaleEncodeType | Nil,\n x1?: ChannelEncodeType | Nil,\n y1?: ChannelEncodeType | Nil\n ) => this;\n target: (\n data: IData | string | Nil,\n filter: string | ((datum: any, value: DatazoomFilterValue) => boolean) | Nil\n ) => this;\n\n // immediate functions\n setStartEndValue: (start?: number, end?: number) => this;\n}\n\nexport type DataZoomEncoderSpec = GenerateBasicEncoderSpec<Partial<DataZoomAttributes> & { x1?: number; y1?: number }>;\nexport interface DatazoomSpec extends ComponentSpec<DataZoomEncoderSpec> {\n componentType: ComponentEnum.datazoom;\n preview?: {\n data: IData | string;\n x?: ScaleEncodeType;\n y?: ScaleEncodeType;\n x1?: ChannelEncodeType;\n y1?: ChannelEncodeType;\n };\n target?: {\n data: IData | string;\n filter: string | ((datum: any, value: DatazoomFilterValue) => boolean);\n };\n}\n\n// label component\n\nexport interface ILabel extends IComponent {\n labelStyle: (attributes: MarkFunctionType<Partial<BaseLabelAttrs>>) => this;\n size: (attributes: MarkFunctionType<DataLabelAttrs['size']>) => this;\n target: (mark: IMark | IMark[] | string | string[] | Nil) => this;\n}\n\nexport type LabelEncoderSpec = GenerateBasicEncoderSpec<Partial<BaseLabelAttrs> & { text?: ITextAttribute['text'] }>;\nexport interface LabelSpec extends ComponentSpec<LabelEncoderSpec> {\n componentType: ComponentEnum.label;\n labelStyle?: MarkFunctionType<Partial<BaseLabelAttrs>>;\n size?: MarkFunctionType<DataLabelAttrs['size']>;\n target?: IMark | IMark[] | string | string[];\n}\n\n// player component\n\nexport type PlayerType = 'auto' | 'discrete' | 'continuous';\n\nexport type PlayerFilterValue = { index: number; value: any };\n\nexport interface IPlayer extends IComponent {\n playerType: (playerType: PlayerType) => this;\n target: (data: IData | string | Nil, source: IData | string | any[] | Nil) => this;\n\n // immediate functions\n play: () => this;\n pause: () => this;\n backward: () => this;\n forward: () => this;\n}\n\nexport interface PlayerSpec extends ComponentSpec<Partial<PlayerAttributes>> {\n componentType: ComponentEnum.player;\n playerType?: PlayerType;\n target?: {\n data: IData | string;\n source: IData | string | any[];\n };\n}\n\n// tooltip component\n\nexport type CustomTooltipCallback = (\n datum: any,\n element: IElement,\n parameters: any\n) => TooltipRowAttrs | TooltipRowAttrs[];\n\nexport interface ITooltipRow {\n visible?: boolean;\n key?: MarkFunctionType<string | Partial<ITextGraphicAttribute>> | FieldEncodeType;\n value?: MarkFunctionType<string | Partial<ITextGraphicAttribute>> | FieldEncodeType;\n symbol?: MarkFunctionType<string | Partial<ISymbolGraphicAttribute>> | FieldEncodeType;\n}\n\nexport interface IBaseTooltip extends IComponent {\n title: (title: ITooltipRow | string | CustomTooltipCallback | Nil) => this;\n content: (content: ITooltipRow | ITooltipRow[] | CustomTooltipCallback | Nil) => this;\n}\n\nexport interface ITooltip extends IBaseTooltip {\n target: (mark: IMark | IMark[] | string | string[] | Nil) => this;\n}\n\nexport interface BaseTooltipSpec extends ComponentSpec<TooltipAttributes> {\n title?: ITooltipRow | string | CustomTooltipCallback;\n content?: ITooltipRow | ITooltipRow[] | CustomTooltipCallback;\n}\n\nexport interface TooltipSpec extends BaseTooltipSpec {\n componentType: ComponentEnum.tooltip;\n target?: IMark | IMark[] | string | string[];\n}\n\nexport type TooltipType = 'x' | 'y' | 'angle' | 'radius';\n\nexport interface IDimensionTooltip extends IBaseTooltip {\n scale: (scale?: IScale | string | Nil) => this;\n tooltipType: (tooltipType: TooltipType | Nil) => this;\n target: (data: IData | string | Nil, filter: string | ((datum: any, tooltipValue: any) => boolean) | Nil) => this;\n avoidMark: (mark: IMark | IMark[] | string | string[] | Nil) => this;\n}\n\nexport interface DimensionTooltipSpec extends BaseTooltipSpec {\n componentType: ComponentEnum.dimensionTooltip;\n scale?: IScale | string;\n tooltipType?: TooltipType;\n target?: {\n data: IData | string;\n filter: string | ((datum: any, tooltipValue: any) => boolean);\n };\n avoidMark?: IMark | IMark[] | string | string[];\n componentConfig?: { center?: IPointLike };\n}\n\n// title component\n\nexport interface ITitle extends IComponent {\n title: (text: MarkFunctionType<string | number | number[] | string[]> | Nil) => this;\n subTitle: (text: MarkFunctionType<string | number | number[] | string[]> | Nil) => this;\n}\n\nexport interface TitleSpec extends ComponentSpec<Partial<TitleAttrs>> {\n componentType: ComponentEnum.title;\n title?: MarkFunctionType<string | number | number[] | string[]>;\n subTitle?: MarkFunctionType<string | number | number[] | string[]>;\n}\n\n// scrollbar component\n\nexport type ScrollbarFilterValue = { start?: number; end?: number; startRatio: number; endRatio: number };\n\nexport interface IScrollbar extends IScaleComponent {\n target: (\n data: IData | string | Nil,\n filter: string | ((datum: any, value: ScrollbarFilterValue) => boolean) | Nil\n ) => this;\n container: (container: IGroupMark | string | Nil) => this;\n direction: (direction: MarkFunctionType<Direction> | Nil) => this;\n position: (position: MarkFunctionType<OrientType> | Nil) => this;\n\n // immediate functions\n setScrollStart: (start: number) => this;\n}\n\nexport interface ScrollbarSpec extends ScaleComponentSpec<Partial<ScrollBarAttributes>> {\n componentType: ComponentEnum.scrollbar;\n target?: {\n data: IData | string;\n filter: string | ((datum: any, value: ScrollbarFilterValue) => boolean);\n };\n container?: IGroupMark | string;\n direction?: MarkFunctionType<Direction>;\n position?: MarkFunctionType<OrientType>;\n}\n\n// built-in components\n\nexport type BuiltInComponentSpec =\n | AxisSpec\n | LegendSpec\n | CrosshairSpec\n | SliderSpec\n | DatazoomSpec\n | LabelSpec\n | PlayerSpec\n | TooltipSpec\n | DimensionTooltipSpec\n | TitleSpec\n | ScrollbarSpec;\n\nexport interface IComponentConstructor {\n readonly componentType: string;\n\n new (view: IView, group?: IGroupMark, mode?: '2d' | '3d'): IComponent;\n}\n"]}
@@ -2,4 +2,5 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- });
5
+ });
6
+ //# sourceMappingURL=coordinate.js.map
package/cjs/types/data.js CHANGED
@@ -2,5 +2,4 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- });
6
- //# sourceMappingURL=data.js.map
5
+ });
@@ -1,4 +1,4 @@
1
- import type { IArc, IArc3d, IArea, ICircle, IGlyph, IGraphic, IGroup, IImage, ILine, IPath, IPolygon, IPyramid3d, IRect, IRect3d, IRichText, ISymbol, IText } from '@visactor/vrender-core';
1
+ import type { IArc, IArc3d, IArea, ICircle, IGlyph, IGraphic, IGroup, IImage, ILine, IPath, IPolygon, IPyramid3d, IRect, IRect3d, IRichText, ISymbol, IText } from '@visactor/vrender';
2
2
  import type { DiffState } from '../graph/enums';
3
3
  import type { IMark, IGlyphMark } from './grammar';
4
4
  import type { BaseEncodeSpec, IMarkConfig, MarkFunctionType, MarkKeySpec, MarkType } from './mark';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/element.ts"],"names":[],"mappings":"","file":"element.js","sourcesContent":["import type {\n IArc,\n IArc3d,\n IArea,\n ICircle,\n IGlyph,\n IGraphic,\n IGroup,\n IImage,\n ILine,\n IPath,\n IPolygon,\n IPyramid3d,\n IRect,\n IRect3d,\n IRichText,\n ISymbol,\n IText\n} from '@visactor/vrender-core';\nimport type { DiffState } from '../graph/enums';\nimport type { IMark, IGlyphMark } from './grammar';\nimport type { BaseEncodeSpec, IMarkConfig, MarkFunctionType, MarkKeySpec, MarkType } from './mark';\n\nexport interface ElementGraphicMap {\n circle: ICircle;\n arc: IArc;\n area: IArea;\n image: IImage;\n line: ILine;\n path: IPath;\n rule: ILine;\n shape: IPath;\n symbol: ISymbol;\n text: IText;\n richtext: IRichText;\n polygon: IPolygon;\n cell: ISymbol;\n interval: IGraphic;\n rect: IRect;\n rect3d: IRect3d;\n arc3d: IArc3d;\n pyramid3d: IPyramid3d;\n group: IGroup;\n glyph: IGlyph;\n linkPath: IGlyph;\n treePath: IGlyph;\n wave: IGlyph;\n ripplePoint: IGlyph;\n barBoxplot: IGlyph;\n boxPlot: IGlyph;\n component: IGroup;\n axis: IGroup;\n legend: IGroup;\n corsshair: IGroup;\n slider: IGroup;\n datazoom: IGroup;\n label: IGroup;\n player: IGroup;\n}\n\nexport type GetGraphicByType<T> = T extends keyof ElementGraphicMap ? ElementGraphicMap[T] : IGraphic;\n\n/**\n * 保存graphicItem状态\n */\nexport interface MarkElementItem {\n /** 唯一key */\n key: string;\n /** 原始数据 */\n datum: any;\n /** VGrammar view */\n view: any;\n /** 当前渲染帧下graphicItem对应的最新属性 */\n nextAttrs?: any;\n /** 是否初始化过,用于解决collection mark对应的item,可能跳过enter状态的问题 */\n // hasEntered: boolean;\n}\nexport interface IElement {\n mark: IMark;\n isReserved: boolean;\n diffState: DiffState;\n key: string;\n groupKey?: string;\n data?: any[];\n /**\n * 不推荐使用,但是collection图元暂时可能回涉及到相关修改\n */\n items: MarkElementItem[];\n\n initGraphicItem: (attrs?: any) => void;\n updateGraphicItem: (config: IMarkConfig) => void;\n\n getDatum: () => any;\n getBounds: () => any;\n getGraphicItem: () => IGraphic;\n\n /**\n * 获取 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param prev 是否从之前的 graphic 属性上获取,默认为 false\n * @returns 视觉通道值\n */\n getGraphicAttribute: (channel: string, prev?: boolean) => any;\n /**\n * 设置 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param value 视觉通道属性\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttribute: (channel: string, value: any, final?: boolean) => void;\n /**\n * 设置一系列 graphic 视觉通道属性\n * @param attributes 视觉通道键值对\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean) => void;\n\n /**\n * 【慎重使用】获取 VGrammar 自身的视觉通道属性\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n */\n getItemAttribute: (channel?: string) => any;\n /**\n * 【慎重使用】设置 VGrammar 自身的视觉通道\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n * @param attributes\n * @returns\n */\n setItemAttributes: (attributes: { [channel: string]: any } | any[]) => void;\n\n // element 执行流程相关接口\n updateData: (groupKey: string, data: any[], keyGenerator: MarkKeySpec, view: any) => void;\n state: (markState: MarkFunctionType<string | string[]>, parameters?: any) => void;\n encodeItems: (items: MarkElementItem[], encoders: BaseEncodeSpec, isReentered?: boolean, parameters?: any) => void;\n encodeGraphic: (attributes?: any) => void;\n transformElementItems: (items: MarkElementItem[], markType: MarkType, computePoints?: boolean) => Record<string, any>;\n remove: () => void;\n release: () => void;\n\n // 动画相关接口\n\n getFinalGraphicAttributes: () => { [key: string]: any };\n getPrevGraphicAttributes: () => { [key: string]: any };\n getNextGraphicAttributes: () => { [key: string]: any };\n clearChangedGraphicAttributes: () => void;\n clearGraphicAttributes: () => void;\n\n // state相关接口\n getStates: () => string[];\n hasState: (state: string) => boolean;\n clearStates: (noAnimation?: boolean) => void;\n addState: (state: string | string[], attrs?: any) => void;\n removeState: (state: string | string[]) => void;\n useStates: (states: string[], noAnimation?: boolean) => void;\n}\n\nexport interface IGlyphElement<P = any> extends IElement {\n mark: IGlyphMark;\n\n getGlyphGraphicItems: () => { [markName: string]: any };\n\n getGraphicAttribute: (channel: string, prev?: boolean, markName?: any) => any;\n setGraphicAttribute: (channel: string, value: any, final?: boolean, markName?: any) => void;\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean, markName?: any) => void;\n\n getFinalGraphicAttributes: (markName?: string) => { [key: string]: any };\n getPrevGraphicAttributes: (markName?: string) => { [key: string]: any };\n getNextGraphicAttributes: (markName?: string) => { [key: string]: any };\n\n encodeCustom: (nextAttrs?: any) => { [markName: string]: any };\n}\n"]}
1
+ {"version":3,"sources":["../src/types/element.ts"],"names":[],"mappings":"","file":"element.js","sourcesContent":["import type {\n IArc,\n IArc3d,\n IArea,\n ICircle,\n IGlyph,\n IGraphic,\n IGroup,\n IImage,\n ILine,\n IPath,\n IPolygon,\n IPyramid3d,\n IRect,\n IRect3d,\n IRichText,\n ISymbol,\n IText\n} from '@visactor/vrender';\nimport type { DiffState } from '../graph/enums';\nimport type { IMark, IGlyphMark } from './grammar';\nimport type { BaseEncodeSpec, IMarkConfig, MarkFunctionType, MarkKeySpec, MarkType } from './mark';\n\nexport interface ElementGraphicMap {\n circle: ICircle;\n arc: IArc;\n area: IArea;\n image: IImage;\n line: ILine;\n path: IPath;\n rule: ILine;\n shape: IPath;\n symbol: ISymbol;\n text: IText;\n richtext: IRichText;\n polygon: IPolygon;\n cell: ISymbol;\n interval: IGraphic;\n rect: IRect;\n rect3d: IRect3d;\n arc3d: IArc3d;\n pyramid3d: IPyramid3d;\n group: IGroup;\n glyph: IGlyph;\n linkPath: IGlyph;\n treePath: IGlyph;\n wave: IGlyph;\n ripplePoint: IGlyph;\n barBoxplot: IGlyph;\n boxPlot: IGlyph;\n component: IGroup;\n axis: IGroup;\n legend: IGroup;\n corsshair: IGroup;\n slider: IGroup;\n datazoom: IGroup;\n label: IGroup;\n player: IGroup;\n}\n\nexport type GetGraphicByType<T> = T extends keyof ElementGraphicMap ? ElementGraphicMap[T] : IGraphic;\n\n/**\n * 保存graphicItem状态\n */\nexport interface MarkElementItem {\n /** 唯一key */\n key: string;\n /** 原始数据 */\n datum: any;\n /** VGrammar view */\n view: any;\n /** 当前渲染帧下graphicItem对应的最新属性 */\n nextAttrs?: any;\n /** 是否初始化过,用于解决collection mark对应的item,可能跳过enter状态的问题 */\n // hasEntered: boolean;\n}\nexport interface IElement {\n mark: IMark;\n isReserved: boolean;\n diffState: DiffState;\n key: string;\n groupKey?: string;\n data?: any[];\n /**\n * 不推荐使用,但是collection图元暂时可能回涉及到相关修改\n */\n items: MarkElementItem[];\n\n initGraphicItem: (attrs?: any) => void;\n updateGraphicItem: (config: IMarkConfig) => void;\n\n getDatum: () => any;\n getBounds: () => any;\n getGraphicItem: () => IGraphic;\n\n /**\n * 获取 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param prev 是否从之前的 graphic 属性上获取,默认为 false\n * @returns 视觉通道值\n */\n getGraphicAttribute: (channel: string, prev?: boolean) => any;\n /**\n * 设置 graphic 视觉通道属性\n * @param channel 视觉通道\n * @param value 视觉通道属性\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttribute: (channel: string, value: any, final?: boolean) => void;\n /**\n * 设置一系列 graphic 视觉通道属性\n * @param attributes 视觉通道键值对\n * @param final 是否更新 graphic 最终变更的视觉通道结果,默认为 false\n */\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean) => void;\n\n /**\n * 【慎重使用】获取 VGrammar 自身的视觉通道属性\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n */\n getItemAttribute: (channel?: string) => any;\n /**\n * 【慎重使用】设置 VGrammar 自身的视觉通道\n * 只有在 'afterEncodeItems' 时机的mark transform中才能调用\n * @param attributes\n * @returns\n */\n setItemAttributes: (attributes: { [channel: string]: any } | any[]) => void;\n\n // element 执行流程相关接口\n updateData: (groupKey: string, data: any[], keyGenerator: MarkKeySpec, view: any) => void;\n state: (markState: MarkFunctionType<string | string[]>, parameters?: any) => void;\n encodeItems: (items: MarkElementItem[], encoders: BaseEncodeSpec, isReentered?: boolean, parameters?: any) => void;\n encodeGraphic: (attributes?: any) => void;\n transformElementItems: (items: MarkElementItem[], markType: MarkType, computePoints?: boolean) => Record<string, any>;\n remove: () => void;\n release: () => void;\n\n // 动画相关接口\n\n getFinalGraphicAttributes: () => { [key: string]: any };\n getPrevGraphicAttributes: () => { [key: string]: any };\n getNextGraphicAttributes: () => { [key: string]: any };\n clearChangedGraphicAttributes: () => void;\n clearGraphicAttributes: () => void;\n\n // state相关接口\n getStates: () => string[];\n hasState: (state: string) => boolean;\n clearStates: (noAnimation?: boolean) => void;\n addState: (state: string | string[], attrs?: any) => void;\n removeState: (state: string | string[]) => void;\n useStates: (states: string[], noAnimation?: boolean) => void;\n}\n\nexport interface IGlyphElement<P = any> extends IElement {\n mark: IGlyphMark;\n\n getGlyphGraphicItems: () => { [markName: string]: any };\n\n getGraphicAttribute: (channel: string, prev?: boolean, markName?: any) => any;\n setGraphicAttribute: (channel: string, value: any, final?: boolean, markName?: any) => void;\n setGraphicAttributes: (attributes: { [channel: string]: any }, final?: boolean, markName?: any) => void;\n\n getFinalGraphicAttributes: (markName?: string) => { [key: string]: any };\n getPrevGraphicAttributes: (markName?: string) => { [key: string]: any };\n getNextGraphicAttributes: (markName?: string) => { [key: string]: any };\n\n encodeCustom: (nextAttrs?: any) => { [markName: string]: any };\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { EventEmitter, IBounds, IPointLike } from '@visactor/vutils';
2
- import type { IGraphic, IGroup } from '@visactor/vrender-core';
2
+ import type { IGraphic, IGroup } from '@visactor/vrender';
3
3
  import type { IBaseScale, TickData } from '@visactor/vscale';
4
4
  import type { ITransform, TransformSpec } from './transform';
5
5
  import type { DataFormatSpec, IDataFilter } from './data';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/grammar.ts"],"names":[],"mappings":"","file":"grammar.js","sourcesContent":["import type { EventEmitter, IBounds, IPointLike } from '@visactor/vutils';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport type { IBaseScale, TickData } from '@visactor/vscale';\nimport type { ITransform, TransformSpec } from './transform';\nimport type { DataFormatSpec, IDataFilter } from './data';\nimport type { ParameterFunctionType, SignalFunctionType } from './signal';\nimport type { IAnimate } from './animate';\nimport type { IGlyphMeta } from './glyph';\nimport type { GrammarTypeEnum } from '../graph/enums';\nimport type { Nil } from './base';\nimport type { CoordinateFunctionType } from './coordinate';\nimport type { IElement } from './element';\nimport type {\n MarkFunctionType,\n MarkAnimationSpec,\n MarkType,\n MarkLayoutSpec,\n MarkLayoutCallback,\n MarkSortSpec,\n MarkKeySpec,\n IMarkConfig,\n ChannelEncodeType,\n AttributeTransform,\n BaseSignleEncodeSpec\n} from './mark';\nimport type { ScaleConfigureSpec, ScaleData, ScaleFunctionType, GrammarScaleType, MultiScaleData } from './scale';\nimport type { IView } from './view';\nimport type { BaseEventHandler } from './event';\nimport type { ICartesianCoordinate, IPolarCoordinate } from '@visactor/vgrammar-coordinate';\n\nexport type BuiltInGrammarType = keyof typeof GrammarTypeEnum;\nexport type GrammarType = BuiltInGrammarType | string;\n\n/** 语法元素内置运行的任务 */\nexport interface IGrammarTask extends ITransform {\n /**\n * 参数依赖\n * 只做一级解析\n */\n options?: Record<string, any | IGrammarBase> | (IGrammarBase | any)[];\n /**\n * 依赖的语法元素\n */\n references?: IGrammarBase[];\n /**\n * 是否只支持简单的options配置,不支持在options引用语法元素\n */\n isRawOptions?: boolean;\n}\n\nexport interface GrammarSpec {\n id?: string;\n dependency?: IGrammarBase[] | IGrammarBase | string[] | string;\n}\n\nexport interface IGrammarBase {\n readonly grammarType: GrammarType;\n readonly view: IView;\n readonly uid: number;\n /**\n * 执行的上游节点\n */\n grammarSource: IGrammarBase;\n /**\n * 影响的下游节点\n */\n targets: IGrammarBase[];\n /**\n * 依赖的上游节点,由于不同 spec 配置项中可能引用同一个节点,需要进行计数\n */\n references: Map<IGrammarBase, number>;\n\n depend: (grammar: IGrammarBase[] | IGrammarBase | string[] | string) => this;\n\n addEventListener: (type: string, handler: BaseEventHandler, options?: any) => this;\n removeEventListener: (type: string, handler: BaseEventHandler) => this;\n\n // extended from EventEmitter\n emit: <T extends EventEmitter.EventNames<string | symbol>>(\n event: T,\n ...args: EventEmitter.EventArgs<string | symbol, T>\n ) => boolean;\n emitGrammarEvent: <T extends EventEmitter.EventNames<string | symbol>>(\n event: T,\n ...args: EventEmitter.EventArgs<string | symbol, T>\n ) => boolean;\n\n tasks?: IGrammarTask[];\n // value?: any;\n /** FIXME: operator执行顺序,改造后,dataflow执行元素,应该抽象出来 */\n rank?: number;\n // todo\n set: (value: any) => boolean;\n id: (() => string) & ((id: string) => this);\n name: (() => string) & ((name: string) => this);\n attach: (reference: IGrammarBase | IGrammarBase[], count?: number) => this;\n detach: (reference: IGrammarBase | IGrammarBase[], count?: number) => this;\n detachAll: () => void;\n commit: () => void;\n output: () => any;\n parse: (spec: any) => this;\n parameters: () => { [key: string]: any };\n evaluateSync?: (upstream: any, parameters: any) => this;\n getSpec: () => any;\n reuse: (grammar: IGrammarBase) => this;\n /** clear references */\n clear: () => void;\n /** release all memory storage */\n release: () => void;\n}\n\nexport interface IData extends IGrammarBase {\n values: (values: any | Nil, format?: ParameterFunctionType<DataFormatSpec>, load?: boolean) => this;\n url: (\n url: ParameterFunctionType<string> | Nil,\n format?: ParameterFunctionType<DataFormatSpec>,\n load?: boolean\n ) => this;\n source: (\n source: string | string[] | IData | IData[],\n format?: ParameterFunctionType<DataFormatSpec>,\n load?: boolean\n ) => this;\n transform: (transform: TransformSpec[] | Nil) => this;\n\n // only used in VGrammar\n addDataFilter: (filter: IDataFilter | IDataFilter[]) => this;\n removeDataFilter: (filter: IDataFilter | IDataFilter[]) => this;\n\n // data util methods\n field: (field: string) => any[];\n getValue: () => any[];\n getInput: () => any[];\n getDataIDKey: () => string;\n}\n\n/** 语法元素,TODO */\nexport interface ISignal<T> extends IGrammarBase {\n value: (value: T | Nil) => this;\n update: (update: SignalFunctionType<T> | Nil) => this;\n\n getValue: () => T;\n}\n\n/** 语法元素,TODO */\nexport interface IScale extends IGrammarBase {\n domain: (domain: ScaleFunctionType<any[]> | ScaleData | MultiScaleData | Nil) => this;\n range: (range: ScaleFunctionType<any[]> | ScaleData | MultiScaleData | Nil) => this;\n configure: (config: ScaleConfigureSpec | Nil) => this;\n\n // scale util methods\n getScaleType: () => GrammarScaleType;\n getScale: () => IBaseScale;\n ticks: (count?: number) => TickData[];\n getCoordinateAxisPoints: (baseValue?: number) => [IPointLike, IPointLike];\n getCoordinate: () => IPolarCoordinate | ICartesianCoordinate;\n getCoordinateAxisPosition: () => 'top' | 'bottom' | 'left' | 'right' | 'inside' | 'outside' | 'start' | 'end';\n}\n\nexport interface ICoordinate extends IGrammarBase {\n start: (start: CoordinateFunctionType<[number, number]> | Nil) => this;\n end: (end: CoordinateFunctionType<[number, number]> | Nil) => this;\n origin: (origin: CoordinateFunctionType<[number, number]> | Nil) => this;\n\n translate: (offset: CoordinateFunctionType<[number, number]> | Nil) => this;\n rotate: (angle: CoordinateFunctionType<number> | Nil) => this;\n scale: (ratio: CoordinateFunctionType<[number, number]> | Nil) => this;\n transpose: (isTransposed: CoordinateFunctionType<boolean> | Nil) => this;\n\n // coordinate util methods\n}\n\n/** 语法元素,TODO */\n\n/** group mark */\nexport interface IGroupMark extends IMark {\n children: (IMark | IGroupMark | IGlyphMark)[];\n\n layoutChildren?: (IMark | IGroupMark | IGlyphMark)[];\n\n appendChild: (mark: IMark | IGroupMark | IGlyphMark) => this;\n removeChild: (mark: IMark | IGroupMark | IGlyphMark) => this;\n includesChild: (mark: IMark, descendant?: boolean) => boolean;\n\n updateLayoutChildren: () => this;\n}\n\nexport interface IGlyphMark extends IMark {\n glyphType: string;\n getGlyphMeta: () => IGlyphMeta;\n configureGlyph: (config: any) => this;\n getGlyphConfig: () => any;\n}\n\nexport interface IComponent extends IMark {\n componentType: string;\n configureComponent: (config: any) => this;\n}\n\nexport interface IProgressiveGrammar {\n /** 是否启动了增量渲染模式 */\n isProgressive: () => boolean;\n /** 是否正在执行增量渲染 */\n isDoingProgressive: () => boolean;\n /** 清除增量渲染相关状态 */\n clearProgressive: () => void;\n /** 从第一帧开始增量计算 */\n restartProgressive: () => void;\n /** 分片执行 */\n evaluateProgressive: () => void;\n}\n\nexport interface IMark extends IGrammarBase, IProgressiveGrammar {\n group?: IGroupMark;\n\n markType: MarkType;\n context: any;\n coord: ICoordinate;\n /**\n * disable coordinate transform when need\n */\n disableCoordinateTransform?: boolean;\n elements: IElement[];\n elementMap: Map<string, IElement>;\n graphicIndex: number;\n graphicItem?: IGroup;\n animate: IAnimate;\n\n join: (\n data: IData | string | Nil,\n key?: MarkKeySpec,\n sort?: MarkSortSpec,\n groupBy?: MarkKeySpec,\n groupSort?: MarkSortSpec\n ) => this;\n coordinate: (coordinate: ICoordinate | string | Nil) => this;\n state: (state: MarkFunctionType<string | string[]> | Nil) => this;\n encode: ((encoders: BaseSignleEncodeSpec) => this) & ((channel: string, value: ChannelEncodeType) => this);\n encodeState: ((state: string, channel: string, value: ChannelEncodeType) => this) &\n ((state: string, encoders: BaseSignleEncodeSpec) => this);\n animation: (animationConfig: MarkAnimationSpec | Nil) => this;\n animationState: (animationState: MarkFunctionType<string> | Nil) => this;\n layout: (layout: MarkLayoutSpec | MarkLayoutCallback | Nil) => this;\n configure: (config: IMarkConfig | Nil) => this;\n transform: (transform: TransformSpec[] | Nil) => this;\n\n needAnimate: () => boolean;\n getBounds: () => IBounds;\n isCollectionMark: () => boolean;\n getAllElements: () => IElement[];\n\n // position: () => this;\n // color: () => this;\n // shape: () => this;\n\n // mark 执行流程相关接口\n\n isUpdated: boolean;\n getGroupGraphicItem: () => any;\n cleanExitElements: () => void;\n addGraphicItem: (attrs: any, groupKey?: string) => IGraphic;\n getMorphConfig: () => { morph: boolean; morphKey: string | undefined; morphElementKey: string | undefined };\n prepareRelease: () => void;\n\n layoutBounds?: IBounds;\n relativePosition?: { top?: number; bottom?: number; left?: number; right?: number };\n needLayout: () => boolean;\n handleLayoutEnd: () => void;\n handleRenderEnd: () => void;\n isLargeMode: () => boolean;\n getAttributeTransforms: () => AttributeTransform[];\n\n getScalesByChannel: () => Record<string, IBaseScale> | undefined;\n getFieldsByChannel: () => Record<string, string> | undefined;\n getScales: () => Record<string, IBaseScale> | undefined;\n}\n\nexport interface IGrammarBaseConstructor {\n new (view: IView): IGrammarBase;\n}\n\nexport interface ProgressiveContext {\n currentIndex: number;\n totalStep: number;\n step: number;\n data: any[];\n groupKeys?: string[];\n groupedData?: Map<string, any[]>;\n}\n"]}
1
+ {"version":3,"sources":["../src/types/grammar.ts"],"names":[],"mappings":"","file":"grammar.js","sourcesContent":["import type { EventEmitter, IBounds, IPointLike } from '@visactor/vutils';\nimport type { IGraphic, IGroup } from '@visactor/vrender';\nimport type { IBaseScale, TickData } from '@visactor/vscale';\nimport type { ITransform, TransformSpec } from './transform';\nimport type { DataFormatSpec, IDataFilter } from './data';\nimport type { ParameterFunctionType, SignalFunctionType } from './signal';\nimport type { IAnimate } from './animate';\nimport type { IGlyphMeta } from './glyph';\nimport type { GrammarTypeEnum } from '../graph/enums';\nimport type { Nil } from './base';\nimport type { CoordinateFunctionType } from './coordinate';\nimport type { IElement } from './element';\nimport type {\n MarkFunctionType,\n MarkAnimationSpec,\n MarkType,\n MarkLayoutSpec,\n MarkLayoutCallback,\n MarkSortSpec,\n MarkKeySpec,\n IMarkConfig,\n ChannelEncodeType,\n AttributeTransform,\n BaseSignleEncodeSpec\n} from './mark';\nimport type { ScaleConfigureSpec, ScaleData, ScaleFunctionType, GrammarScaleType, MultiScaleData } from './scale';\nimport type { IView } from './view';\nimport type { BaseEventHandler } from './event';\nimport type { ICartesianCoordinate, IPolarCoordinate } from '@visactor/vgrammar-coordinate';\n\nexport type BuiltInGrammarType = keyof typeof GrammarTypeEnum;\nexport type GrammarType = BuiltInGrammarType | string;\n\n/** 语法元素内置运行的任务 */\nexport interface IGrammarTask extends ITransform {\n /**\n * 参数依赖\n * 只做一级解析\n */\n options?: Record<string, any | IGrammarBase> | (IGrammarBase | any)[];\n /**\n * 依赖的语法元素\n */\n references?: IGrammarBase[];\n /**\n * 是否只支持简单的options配置,不支持在options引用语法元素\n */\n isRawOptions?: boolean;\n}\n\nexport interface GrammarSpec {\n id?: string;\n dependency?: IGrammarBase[] | IGrammarBase | string[] | string;\n}\n\nexport interface IGrammarBase {\n readonly grammarType: GrammarType;\n readonly view: IView;\n readonly uid: number;\n /**\n * 执行的上游节点\n */\n grammarSource: IGrammarBase;\n /**\n * 影响的下游节点\n */\n targets: IGrammarBase[];\n /**\n * 依赖的上游节点,由于不同 spec 配置项中可能引用同一个节点,需要进行计数\n */\n references: Map<IGrammarBase, number>;\n\n depend: (grammar: IGrammarBase[] | IGrammarBase | string[] | string) => this;\n\n addEventListener: (type: string, handler: BaseEventHandler, options?: any) => this;\n removeEventListener: (type: string, handler: BaseEventHandler) => this;\n\n // extended from EventEmitter\n emit: <T extends EventEmitter.EventNames<string | symbol>>(\n event: T,\n ...args: EventEmitter.EventArgs<string | symbol, T>\n ) => boolean;\n emitGrammarEvent: <T extends EventEmitter.EventNames<string | symbol>>(\n event: T,\n ...args: EventEmitter.EventArgs<string | symbol, T>\n ) => boolean;\n\n tasks?: IGrammarTask[];\n // value?: any;\n /** FIXME: operator执行顺序,改造后,dataflow执行元素,应该抽象出来 */\n rank?: number;\n // todo\n set: (value: any) => boolean;\n id: (() => string) & ((id: string) => this);\n name: (() => string) & ((name: string) => this);\n attach: (reference: IGrammarBase | IGrammarBase[], count?: number) => this;\n detach: (reference: IGrammarBase | IGrammarBase[], count?: number) => this;\n detachAll: () => void;\n commit: () => void;\n output: () => any;\n parse: (spec: any) => this;\n parameters: () => { [key: string]: any };\n evaluateSync?: (upstream: any, parameters: any) => this;\n getSpec: () => any;\n reuse: (grammar: IGrammarBase) => this;\n /** clear references */\n clear: () => void;\n /** release all memory storage */\n release: () => void;\n}\n\nexport interface IData extends IGrammarBase {\n values: (values: any | Nil, format?: ParameterFunctionType<DataFormatSpec>, load?: boolean) => this;\n url: (\n url: ParameterFunctionType<string> | Nil,\n format?: ParameterFunctionType<DataFormatSpec>,\n load?: boolean\n ) => this;\n source: (\n source: string | string[] | IData | IData[],\n format?: ParameterFunctionType<DataFormatSpec>,\n load?: boolean\n ) => this;\n transform: (transform: TransformSpec[] | Nil) => this;\n\n // only used in VGrammar\n addDataFilter: (filter: IDataFilter | IDataFilter[]) => this;\n removeDataFilter: (filter: IDataFilter | IDataFilter[]) => this;\n\n // data util methods\n field: (field: string) => any[];\n getValue: () => any[];\n getInput: () => any[];\n getDataIDKey: () => string;\n}\n\n/** 语法元素,TODO */\nexport interface ISignal<T> extends IGrammarBase {\n value: (value: T | Nil) => this;\n update: (update: SignalFunctionType<T> | Nil) => this;\n\n getValue: () => T;\n}\n\n/** 语法元素,TODO */\nexport interface IScale extends IGrammarBase {\n domain: (domain: ScaleFunctionType<any[]> | ScaleData | MultiScaleData | Nil) => this;\n range: (range: ScaleFunctionType<any[]> | ScaleData | MultiScaleData | Nil) => this;\n configure: (config: ScaleConfigureSpec | Nil) => this;\n\n // scale util methods\n getScaleType: () => GrammarScaleType;\n getScale: () => IBaseScale;\n ticks: (count?: number) => TickData[];\n getCoordinateAxisPoints: (baseValue?: number) => [IPointLike, IPointLike];\n getCoordinate: () => IPolarCoordinate | ICartesianCoordinate;\n getCoordinateAxisPosition: () => 'top' | 'bottom' | 'left' | 'right' | 'inside' | 'outside' | 'start' | 'end';\n}\n\nexport interface ICoordinate extends IGrammarBase {\n start: (start: CoordinateFunctionType<[number, number]> | Nil) => this;\n end: (end: CoordinateFunctionType<[number, number]> | Nil) => this;\n origin: (origin: CoordinateFunctionType<[number, number]> | Nil) => this;\n\n translate: (offset: CoordinateFunctionType<[number, number]> | Nil) => this;\n rotate: (angle: CoordinateFunctionType<number> | Nil) => this;\n scale: (ratio: CoordinateFunctionType<[number, number]> | Nil) => this;\n transpose: (isTransposed: CoordinateFunctionType<boolean> | Nil) => this;\n\n // coordinate util methods\n}\n\n/** 语法元素,TODO */\n\n/** group mark */\nexport interface IGroupMark extends IMark {\n children: (IMark | IGroupMark | IGlyphMark)[];\n\n layoutChildren?: (IMark | IGroupMark | IGlyphMark)[];\n\n appendChild: (mark: IMark | IGroupMark | IGlyphMark) => this;\n removeChild: (mark: IMark | IGroupMark | IGlyphMark) => this;\n includesChild: (mark: IMark, descendant?: boolean) => boolean;\n\n updateLayoutChildren: () => this;\n}\n\nexport interface IGlyphMark extends IMark {\n glyphType: string;\n getGlyphMeta: () => IGlyphMeta;\n configureGlyph: (config: any) => this;\n getGlyphConfig: () => any;\n}\n\nexport interface IComponent extends IMark {\n componentType: string;\n configureComponent: (config: any) => this;\n}\n\nexport interface IProgressiveGrammar {\n /** 是否启动了增量渲染模式 */\n isProgressive: () => boolean;\n /** 是否正在执行增量渲染 */\n isDoingProgressive: () => boolean;\n /** 清除增量渲染相关状态 */\n clearProgressive: () => void;\n /** 从第一帧开始增量计算 */\n restartProgressive: () => void;\n /** 分片执行 */\n evaluateProgressive: () => void;\n}\n\nexport interface IMark extends IGrammarBase, IProgressiveGrammar {\n group?: IGroupMark;\n\n markType: MarkType;\n context: any;\n coord: ICoordinate;\n /**\n * disable coordinate transform when need\n */\n disableCoordinateTransform?: boolean;\n elements: IElement[];\n elementMap: Map<string, IElement>;\n graphicIndex: number;\n graphicItem?: IGroup;\n animate: IAnimate;\n\n join: (\n data: IData | string | Nil,\n key?: MarkKeySpec,\n sort?: MarkSortSpec,\n groupBy?: MarkKeySpec,\n groupSort?: MarkSortSpec\n ) => this;\n coordinate: (coordinate: ICoordinate | string | Nil) => this;\n state: (state: MarkFunctionType<string | string[]> | Nil) => this;\n encode: ((encoders: BaseSignleEncodeSpec) => this) & ((channel: string, value: ChannelEncodeType) => this);\n encodeState: ((state: string, channel: string, value: ChannelEncodeType) => this) &\n ((state: string, encoders: BaseSignleEncodeSpec) => this);\n animation: (animationConfig: MarkAnimationSpec | Nil) => this;\n animationState: (animationState: MarkFunctionType<string> | Nil) => this;\n layout: (layout: MarkLayoutSpec | MarkLayoutCallback | Nil) => this;\n configure: (config: IMarkConfig | Nil) => this;\n transform: (transform: TransformSpec[] | Nil) => this;\n\n needAnimate: () => boolean;\n getBounds: () => IBounds;\n isCollectionMark: () => boolean;\n getAllElements: () => IElement[];\n\n // position: () => this;\n // color: () => this;\n // shape: () => this;\n\n // mark 执行流程相关接口\n\n isUpdated: boolean;\n getGroupGraphicItem: () => any;\n cleanExitElements: () => void;\n addGraphicItem: (attrs: any, groupKey?: string) => IGraphic;\n getMorphConfig: () => { morph: boolean; morphKey: string | undefined; morphElementKey: string | undefined };\n prepareRelease: () => void;\n\n layoutBounds?: IBounds;\n relativePosition?: { top?: number; bottom?: number; left?: number; right?: number };\n needLayout: () => boolean;\n handleLayoutEnd: () => void;\n handleRenderEnd: () => void;\n isLargeMode: () => boolean;\n getAttributeTransforms: () => AttributeTransform[];\n\n getScalesByChannel: () => Record<string, IBaseScale> | undefined;\n getFieldsByChannel: () => Record<string, string> | undefined;\n getScales: () => Record<string, IBaseScale> | undefined;\n}\n\nexport interface IGrammarBaseConstructor {\n new (view: IView): IGrammarBase;\n}\n\nexport interface ProgressiveContext {\n currentIndex: number;\n totalStep: number;\n step: number;\n data: any[];\n groupKeys?: string[];\n groupedData?: Map<string, any[]>;\n}\n"]}
@@ -28,4 +28,4 @@ __exportStar(require("./projection"), exports), __exportStar(require("./renderer
28
28
  __exportStar(require("./scale"), exports), __exportStar(require("./signal"), exports),
29
29
  __exportStar(require("./theme"), exports), __exportStar(require("./transform"), exports),
30
30
  __exportStar(require("./view"), exports), __exportStar(require("./plot"), exports);
31
- //# sourceMappingURL=index.js.map
31
+ //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import type { ICustomPath2D, IPyramid3dGraphicAttribute, IArc3dGraphicAttribute, IRect3dGraphicAttribute, ISymbolAttribute, IRectGraphicAttribute, ILineGraphicAttribute, ICircleGraphicAttribute, IArcGraphicAttribute, IPolygonGraphicAttribute, IAreaGraphicAttribute, IGlyphGraphicAttribute, IImageGraphicAttribute, IPathGraphicAttribute, ISymbolGraphicAttribute, ITextGraphicAttribute, IGraphicAttribute, IGroupGraphicAttribute, IRichTextGraphicAttribute } from '@visactor/vrender-core';
1
+ import type { ICustomPath2D, IPyramid3dGraphicAttribute, IArc3dGraphicAttribute, IRect3dGraphicAttribute, ISymbolAttribute, IRectGraphicAttribute, ILineGraphicAttribute, ICircleGraphicAttribute, IArcGraphicAttribute, IPolygonGraphicAttribute, IAreaGraphicAttribute, IGlyphGraphicAttribute, IImageGraphicAttribute, IPathGraphicAttribute, ISymbolGraphicAttribute, ITextGraphicAttribute, IGraphicAttribute, IGroupGraphicAttribute, IRichTextGraphicAttribute } from '@visactor/vrender';
2
2
  import type { Bounds, IPointLike } from '@visactor/vutils';
3
3
  import type { IAnimationConfig, IStateAnimationConfig } from './animate';
4
4
  import type { IElement } from './element';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/mark.ts"],"names":[],"mappings":"","file":"mark.js","sourcesContent":["import type {\n ICustomPath2D,\n IPyramid3dGraphicAttribute,\n IArc3dGraphicAttribute,\n IRect3dGraphicAttribute,\n ISymbolAttribute,\n IRectGraphicAttribute,\n ILineGraphicAttribute,\n ICircleGraphicAttribute,\n IArcGraphicAttribute,\n IPolygonGraphicAttribute,\n IAreaGraphicAttribute,\n IGlyphGraphicAttribute,\n IImageGraphicAttribute,\n IPathGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute,\n IGraphicAttribute,\n IGroupGraphicAttribute,\n IRichTextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type { Bounds, IPointLike } from '@visactor/vutils';\nimport type { IAnimationConfig, IStateAnimationConfig } from './animate';\nimport type { IElement } from './element';\nimport type { IMark, IScale, IGroupMark, ICoordinate, GrammarSpec, IData } from './grammar';\nimport type { GenericFunctionType } from './signal';\nimport type { TransformSpec } from './transform';\nimport type { CommonPaddingSpec } from './base';\nimport type { ILayoutOptions } from './view';\nimport type {\n AxisSpec,\n BuiltInComponentSpec,\n CrosshairSpec,\n DatazoomSpec,\n LabelSpec,\n LegendSpec,\n PlayerSpec,\n SliderSpec\n} from './component';\nimport type { GrammarMarkType } from '../graph/enums';\n\nexport type MarkFunctionCallback<T> = (datum: any, element: IElement, parameters: any) => T;\n\nexport type MarkFunctionType<T> = GenericFunctionType<MarkFunctionCallback<T>, T>;\n\nexport type MarkType = keyof typeof GrammarMarkType | string;\n\nexport interface MarkFromSpec {\n data: string | IData;\n transform?: {\n name: string;\n transform?: TransformSpec[];\n };\n}\n\nexport type MarkStateSpec = MarkFunctionType<string | string[]>;\n\nexport type ScaleEncodeType = {\n scale: IScale | string;\n field?: string | ((datum: any) => any) | string[] | ((datum: any) => any)[];\n value?: any;\n band?: number;\n offset?: number;\n};\n\nexport type FieldEncodeType = {\n field: string | ((datum: any) => any) | string[] | ((datum: any) => any)[];\n};\n\nexport type ChannelEncodeType<T = any> = MarkFunctionType<T> | ScaleEncodeType | FieldEncodeType;\n\nexport type GenerateEncoderSpec<T> = {\n [Key in keyof T]?: ChannelEncodeType<T[Key]>;\n};\n\n/**\n * the common channel supported by graphic marks\n */\nexport type GenerateBasicEncoderSpec<T> = Partial<\n Omit<\n T,\n | 'strokeSeg'\n | 'boundsPadding'\n | 'pickMode'\n | 'boundsMode'\n | 'customPickShape'\n | 'pickable'\n | 'childrenPickable'\n | 'visible'\n | 'zIndex'\n | 'layout'\n | 'keepDirIn3d'\n | 'postMatrix'\n | 'anchor'\n | 'anchor3d'\n >\n>;\n\nexport type BasicEncoderSpecMap = {\n rect: GenerateBasicEncoderSpec<IRectGraphicAttribute & { y1?: number; x1?: number }>;\n line: Omit<GenerateBasicEncoderSpec<ILineGraphicAttribute>, 'points' | 'segments'>;\n circle: GenerateBasicEncoderSpec<ICircleGraphicAttribute>;\n arc: GenerateBasicEncoderSpec<IArcGraphicAttribute>;\n polygon: GenerateBasicEncoderSpec<IPolygonGraphicAttribute>;\n arc3d: GenerateBasicEncoderSpec<IArc3dGraphicAttribute>;\n pyramid3d: GenerateBasicEncoderSpec<IPyramid3dGraphicAttribute>;\n area: Omit<GenerateBasicEncoderSpec<IAreaGraphicAttribute>, 'points' | 'segments'>;\n group: GenerateBasicEncoderSpec<IGroupGraphicAttribute>;\n glyph: GenerateBasicEncoderSpec<IGlyphGraphicAttribute & any>;\n image: GenerateBasicEncoderSpec<IImageGraphicAttribute>;\n rect3d: GenerateBasicEncoderSpec<IRect3dGraphicAttribute>;\n path: GenerateBasicEncoderSpec<IPathGraphicAttribute>;\n rule: Omit<GenerateBasicEncoderSpec<ILineGraphicAttribute>, 'points' | 'segments'> & { x1?: number; y1?: number };\n shape: GenerateBasicEncoderSpec<IPathGraphicAttribute>;\n symbol: GenerateBasicEncoderSpec<ISymbolGraphicAttribute> & {\n shape?: ISymbolGraphicAttribute['symbolType'];\n image?: ISymbolGraphicAttribute['background'];\n };\n text: GenerateBasicEncoderSpec<ITextGraphicAttribute> & {\n limit?: number;\n autoLimit?: number;\n };\n richtext: GenerateBasicEncoderSpec<IRichTextGraphicAttribute>;\n interval: Omit<GenerateBasicEncoderSpec<IRectGraphicAttribute>, 'width' | 'height'> & {\n /**\n * the gap for two graphic elements\n */\n innerGap?: number | string;\n /**\n * only used for rect / interval mark\n */\n maxWidth?: number;\n minWidth?: number;\n /** the gap between two category */\n categoryGap?: number | string;\n };\n cell: GenerateBasicEncoderSpec<ISymbolGraphicAttribute> & {\n padding?: number | [number, number];\n shape?: ISymbolAttribute['symbolType'];\n };\n};\nexport type GenerateBaseEncodeSpec<BasicSpec = GenerateBasicEncoderSpec<IGraphicAttribute>> =\n | GenerateEncoderSpec<BasicSpec>\n | MarkFunctionCallback<BasicSpec>;\n\nexport type StateProxyEncodeSpec<T = any> = (datum: any, element: IElement, state: string, nextStates: string[]) => T;\n\nexport type StateEncodeSpec<BasicSpec = GenerateBasicEncoderSpec<IGraphicAttribute>> =\n | {\n enter?: GenerateBaseEncodeSpec<BasicSpec>;\n update?: GenerateBaseEncodeSpec<BasicSpec>;\n exit?: GenerateBaseEncodeSpec<BasicSpec>;\n }\n | {\n [state: string]: GenerateEncoderSpec<BasicSpec> | StateProxyEncodeSpec<BasicSpec>;\n };\n\nexport type MarkAnimationSpec = Record<string, IAnimationConfig | IAnimationConfig[]> & {\n state?: IStateAnimationConfig;\n};\n\n// TODO: support string[]\nexport type MarkKeySpec = string | ((datum: any) => string);\n\nexport type MarkSortSpec = (datumA: any, datumB: any) => number;\n\nexport type MarkStateSortSpec = (stateA: string, stateB: string) => number;\n\nexport interface MarkGridContainerSpec extends MarkBaseLayoutSpec {\n display: 'grid';\n gridTemplateRows?: (number | string | 'auto')[];\n gridTemplateColumns?: (number | string | 'auto')[];\n gridRowGap?: number;\n gridColumnGap?: number;\n}\n\nexport interface MarkGridItemSpec extends MarkBaseLayoutSpec {\n gridRowStart?: number;\n gridRowEnd?: number;\n gridColumnStart?: number;\n gridColumnEnd?: number;\n}\n\nexport interface MarkBaseLayoutSpec {\n callback?: MarkLayoutCallback;\n skipBeforeLayouted?: boolean;\n updateViewSignals?: boolean;\n}\n\nexport interface MarkRelativeItemSpec extends MarkBaseLayoutSpec {\n position?: 'top' | 'bottom' | 'left' | 'right' | 'content' | 'auto' | string;\n padding?: CommonPaddingSpec;\n align?: 'left' | 'right' | 'center' | 'top' | 'bottom' | 'middle';\n order?: number;\n}\n\nexport interface MarkRelativeContainerSpec extends MarkBaseLayoutSpec {\n display: 'relative';\n maxChildWidth?: string | number;\n maxChildHeight?: string | number;\n}\n\nexport type MarkLayoutSpec =\n | MarkGridContainerSpec\n | MarkGridItemSpec\n | MarkRelativeContainerSpec\n | MarkRelativeItemSpec;\n\nexport type MarkLayoutCallback = (\n group: IGroupMark,\n children: IMark[],\n parentLayoutBounds: Bounds,\n options?: ILayoutOptions\n) => void;\n\nexport interface IMarkConfig {\n clip?: boolean;\n zIndex?: number;\n interactive?: boolean;\n context?: any;\n /**\n * set customized shape\n */\n setCustomizedShape?: (datum: any[], attrs: any, path: ICustomPath2D) => ICustomPath2D;\n /** 是否开启大数据渲染模式 */\n large?: boolean;\n /** 开启大数据渲染优化的阀值,对应的是data的长度 */\n largeThreshold?: number;\n /** 分片长度 */\n progressiveStep?: number;\n /** 开启分片渲染的阀值,对应的是单系列data的长度 */\n progressiveThreshold?: number;\n /**\n * use 'sequential' for symbol chart\n * use 'mod' for bar/line chart\n */\n // largeChunkMode?: 'sequential' | 'mod';\n support3d?: boolean;\n /**\n * enable global morphing animation of the mark\n */\n morph?: boolean;\n /**\n * this key will be used to match the mark to morph\n */\n morphKey?: string;\n /**\n * this key will be used to match the element of two marks to morph\n * If not specified, we'll use the \"key\" of the mark by default\n */\n morphElementKey?: string;\n /** transforms of attributes */\n attributeTransforms?: AttributeTransform[];\n}\n\n/**\n * Base mark specification type\n */\nexport interface GenerateMarkSpec<T extends MarkType = string, P = any> extends IMarkConfig, GrammarSpec {\n type: T;\n name?: string;\n group?: string | IGroupMark;\n // data attributes\n from?: MarkFromSpec;\n key?: MarkKeySpec;\n /**\n * sort all the elements in the mark\n */\n sort?: MarkSortSpec;\n /**\n * set the group key of the mark\n */\n groupBy?: MarkKeySpec;\n /**\n * sort the data of each group\n */\n groupSort?: MarkSortSpec;\n context?: any;\n // coordinate attributes\n coordinate?: string | ICoordinate;\n // encode attributes\n state?: MarkStateSpec;\n stateSort?: MarkStateSortSpec;\n encode?: GetEncoderSpecByType<T, P>;\n // animation attributes\n animationState?: MarkFunctionType<string>;\n animation?: MarkAnimationSpec;\n transform?: TransformSpec[];\n layout?: MarkLayoutSpec | MarkLayoutCallback;\n}\n\nexport type CircleMarkSpec = GenerateMarkSpec<'circle'>;\nexport type ArcMarkSpec = GenerateMarkSpec<'arc'>;\nexport type AreaMarkSpec = GenerateMarkSpec<'area'>;\nexport type LineMarkSpec = GenerateMarkSpec<'line'>;\nexport type RectMarkSpec = GenerateMarkSpec<'rect'>;\nexport type ImageMarkSpec = GenerateMarkSpec<'image'>;\nexport type PathMarkSpec = GenerateMarkSpec<'path'>;\nexport type RuleMarkSpec = GenerateMarkSpec<'rule'>;\nexport type ShapeMarkSpec = GenerateMarkSpec<'shape'>;\nexport type SymbolMarkSpec = GenerateMarkSpec<'symbol'>;\nexport type TextMarkSpec = GenerateMarkSpec<'text'>;\nexport type RichTextMarkSpec = GenerateMarkSpec<'richtext'>;\nexport type PolygonMarkSpec = GenerateMarkSpec<'polygon'>;\nexport type CellMarkSpec = GenerateMarkSpec<'cell'>;\nexport type IntervalMarkSpec = GenerateMarkSpec<'interval'>;\nexport type Arc3dMarkSpec = GenerateMarkSpec<'arc3d'>;\nexport type Pyramid3dMarkSpec = GenerateMarkSpec<'pyramid3d'>;\nexport type Rect3dMarkSpec = GenerateMarkSpec<'rect3d'>;\n\nexport type BasicGlyphEncoderSpec = BasicEncoderSpecMap['glyph'];\nexport type BasicGroupEncoderSpec = BasicEncoderSpecMap['group'];\nexport interface GroupMarkSpec extends GenerateMarkSpec<'group'> {\n marks?: MarkSpec[];\n}\n\nexport interface GlyphMarkSpec<CustomizedEncoderSpec = any> extends GenerateMarkSpec<'glyph', CustomizedEncoderSpec> {\n glyphType: string;\n glyphConfig?: any;\n}\n\nexport interface BoxPlotEncoderSpec extends BasicGlyphEncoderSpec {\n boxWidth?: number;\n boxHeight?: number;\n ruleWidth?: number;\n ruleHeight?: number;\n q1?: number;\n q3?: number;\n min?: number;\n max?: number;\n median?: number;\n angle?: number;\n anchor?: [number, number];\n}\n\nexport interface BarBoxPlotEncoderSpec extends BasicGlyphEncoderSpec {\n minMaxWidth?: number;\n q1q3Width?: number;\n minMaxHeight?: number;\n q1q3Height?: number;\n q1?: number;\n q3?: number;\n min?: number;\n max?: number;\n median?: number;\n angle?: number;\n lineWidth?: number;\n minMaxFillOpacity?: number;\n anchor?: [number, number];\n}\n\nexport interface LinkPathEncoderSpec extends BasicGlyphEncoderSpec {\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n thickness: number;\n curvature?: number;\n /** round all the coordinates */\n round?: boolean;\n /** the ratio of normal style path */\n ratio?: number;\n align?: 'start' | 'end' | 'center';\n pathType?: 'line' | 'smooth' | 'polyline';\n endArrow?: boolean;\n startArrow?: boolean;\n backgroundStyle?: any;\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\nexport interface TreePathEncoderSpec extends BasicGlyphEncoderSpec {\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n curvature?: number;\n /** round all the coordinates */\n round?: boolean;\n /** the ratio of normal style path */\n align?: 'start' | 'end' | 'center';\n pathType?: 'line' | 'smooth' | 'polyline';\n startArrowStyle?: Partial<IGraphicAttribute>;\n endArrowStyle?: Partial<IGraphicAttribute>;\n endArrow?: boolean;\n startArrow?: boolean;\n arrowSize?: number;\n backgroundStyle?: any;\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\n\nexport interface RipplePointEncoderSpec extends BasicGlyphEncoderSpec {\n ripple?: number;\n size?: number;\n}\n\nexport interface ViolinEncoderSpec extends BasicGlyphEncoderSpec {\n violinFill: string;\n violinStroke: string;\n medianFill?: string;\n density?: IPointLike[];\n boxWidth?: number;\n q1?: number;\n q3?: number;\n min?: number;\n max?: number;\n median?: number;\n angle?: number;\n anchor?: [number, number];\n}\n\nexport interface WaveEncoderSpec extends BasicGlyphEncoderSpec {\n wave?: number;\n}\nexport interface BoxPlotGlyphSpec extends GlyphMarkSpec<BoxPlotEncoderSpec> {\n glyphType: 'boxplot';\n}\nexport interface BarBoxPlotGlyphSpec extends GlyphMarkSpec<BarBoxPlotEncoderSpec> {\n glyphType: 'barBoxplot';\n}\nexport interface LinkPathGlyphSpec extends GlyphMarkSpec<LinkPathEncoderSpec> {\n glyphType: 'linkPath';\n}\nexport interface TreePathGlyphSpec extends GlyphMarkSpec<TreePathEncoderSpec> {\n glyphType: 'treePath';\n}\nexport interface RipplePointGlyphSpec extends GlyphMarkSpec<RipplePointEncoderSpec> {\n glyphType: 'ripplePoint';\n}\nexport interface ViolinGlyphSpec extends GlyphMarkSpec<ViolinEncoderSpec> {\n glyphType: 'violin';\n}\nexport interface WaveGlyphSpec extends GlyphMarkSpec<WaveEncoderSpec> {\n glyphType: 'wave';\n}\n\nexport interface ComponentSpec<\n BasicEncoderSpec extends GenerateBasicEncoderSpec<IGraphicAttribute> = GenerateBasicEncoderSpec<IGraphicAttribute>\n> extends GenerateMarkSpec<'component', BasicEncoderSpec> {\n componentType: string;\n componentConfig?: any;\n mode?: '2d' | '3d';\n}\n\nexport type BaseMarkSpec = GenerateMarkSpec<MarkType>;\nexport type MarkSpecMap = {\n circle: CircleMarkSpec;\n arc: ArcMarkSpec;\n area: AreaMarkSpec;\n image: ImageMarkSpec;\n line: LineMarkSpec;\n path: PathMarkSpec;\n rule: RuleMarkSpec;\n shape: ShapeMarkSpec;\n symbol: SymbolMarkSpec;\n text: TextMarkSpec;\n richtext: RichTextMarkSpec;\n polygon: PolygonMarkSpec;\n cell: CellMarkSpec;\n interval: IntervalMarkSpec;\n rect: RectMarkSpec;\n rect3d: Rect3dMarkSpec;\n arc3d: Arc3dMarkSpec;\n pyramid3d: Pyramid3dMarkSpec;\n group: GroupMarkSpec;\n glyph: GlyphMarkSpec;\n linkPath: LinkPathGlyphSpec;\n treePath: TreePathGlyphSpec;\n wave: WaveEncoderSpec;\n ripplePoint: RipplePointGlyphSpec;\n barBoxplot: BarBoxPlotGlyphSpec;\n boxPlot: BoxPlotGlyphSpec;\n component: ComponentSpec;\n axis: AxisSpec;\n legend: LegendSpec;\n corsshair: CrosshairSpec;\n slider: SliderSpec;\n datazoom: DatazoomSpec;\n label: LabelSpec;\n player: PlayerSpec;\n};\n\nexport type GetMarkSpecByType<T, P = any> = T extends keyof MarkSpecMap ? MarkSpecMap[T] : GenerateMarkSpec<string, P>;\nexport type GetBasicEncoderSpecByType<T, P = any> = T extends keyof BasicEncoderSpecMap\n ? BasicEncoderSpecMap[T]\n : GenerateBasicEncoderSpec<IGraphicAttribute & P>;\nexport type GetEncoderSpecByType<T, P = any> = T extends keyof BasicEncoderSpecMap\n ? StateEncodeSpec<BasicEncoderSpecMap[T]>\n : StateEncodeSpec<GenerateBasicEncoderSpec<IGraphicAttribute> & P>;\n\nexport type BaseEncodeSpec<P = any> = StateEncodeSpec<GenerateBasicEncoderSpec<IGraphicAttribute & P>>;\nexport type BaseSignleEncodeSpec<P = any> =\n | GenerateEncoderSpec<GenerateBasicEncoderSpec<IGraphicAttribute & P>>\n | StateProxyEncodeSpec<GenerateBasicEncoderSpec<IGraphicAttribute & P>>;\n\nexport type GetSignleEncodeSpecByType<T, P = any> = T extends keyof BasicEncoderSpecMap\n ? GenerateEncoderSpec<BasicEncoderSpecMap[T]> | StateProxyEncodeSpec<BasicEncoderSpecMap[T]>\n : BaseSignleEncodeSpec<P>;\n\nexport type MarkSpec =\n | GenerateMarkSpec<string, any>\n | CircleMarkSpec\n | ArcMarkSpec\n | AreaMarkSpec\n | ImageMarkSpec\n | LineMarkSpec\n | PathMarkSpec\n | RuleMarkSpec\n | ShapeMarkSpec\n | SymbolMarkSpec\n | TextMarkSpec\n | RichTextMarkSpec\n | PolygonMarkSpec\n | CellMarkSpec\n | IntervalMarkSpec\n | RectMarkSpec\n | Rect3dMarkSpec\n | Arc3dMarkSpec\n | Pyramid3dMarkSpec\n | GroupMarkSpec\n | GlyphMarkSpec\n | LinkPathGlyphSpec\n | TreePathGlyphSpec\n | WaveGlyphSpec\n | RipplePointGlyphSpec\n | BarBoxPlotGlyphSpec\n | BoxPlotGlyphSpec\n | ViolinGlyphSpec\n | ComponentSpec\n | BuiltInComponentSpec;\n\nexport interface AttributeTransform {\n channels: string[];\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => void;\n storedAttrs?: string;\n}\n"]}
1
+ {"version":3,"sources":["../src/types/mark.ts"],"names":[],"mappings":"","file":"mark.js","sourcesContent":["import type {\n ICustomPath2D,\n IPyramid3dGraphicAttribute,\n IArc3dGraphicAttribute,\n IRect3dGraphicAttribute,\n ISymbolAttribute,\n IRectGraphicAttribute,\n ILineGraphicAttribute,\n ICircleGraphicAttribute,\n IArcGraphicAttribute,\n IPolygonGraphicAttribute,\n IAreaGraphicAttribute,\n IGlyphGraphicAttribute,\n IImageGraphicAttribute,\n IPathGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute,\n IGraphicAttribute,\n IGroupGraphicAttribute,\n IRichTextGraphicAttribute\n} from '@visactor/vrender';\nimport type { Bounds, IPointLike } from '@visactor/vutils';\nimport type { IAnimationConfig, IStateAnimationConfig } from './animate';\nimport type { IElement } from './element';\nimport type { IMark, IScale, IGroupMark, ICoordinate, GrammarSpec, IData } from './grammar';\nimport type { GenericFunctionType } from './signal';\nimport type { TransformSpec } from './transform';\nimport type { CommonPaddingSpec } from './base';\nimport type { ILayoutOptions } from './view';\nimport type {\n AxisSpec,\n BuiltInComponentSpec,\n CrosshairSpec,\n DatazoomSpec,\n LabelSpec,\n LegendSpec,\n PlayerSpec,\n SliderSpec\n} from './component';\nimport type { GrammarMarkType } from '../graph/enums';\n\nexport type MarkFunctionCallback<T> = (datum: any, element: IElement, parameters: any) => T;\n\nexport type MarkFunctionType<T> = GenericFunctionType<MarkFunctionCallback<T>, T>;\n\nexport type MarkType = keyof typeof GrammarMarkType | string;\n\nexport interface MarkFromSpec {\n data: string | IData;\n transform?: {\n name: string;\n transform?: TransformSpec[];\n };\n}\n\nexport type MarkStateSpec = MarkFunctionType<string | string[]>;\n\nexport type ScaleEncodeType = {\n scale: IScale | string;\n field?: string | ((datum: any) => any) | string[] | ((datum: any) => any)[];\n value?: any;\n band?: number;\n offset?: number;\n};\n\nexport type FieldEncodeType = {\n field: string | ((datum: any) => any) | string[] | ((datum: any) => any)[];\n};\n\nexport type ChannelEncodeType<T = any> = MarkFunctionType<T> | ScaleEncodeType | FieldEncodeType;\n\nexport type GenerateEncoderSpec<T> = {\n [Key in keyof T]?: ChannelEncodeType<T[Key]>;\n};\n\n/**\n * the common channel supported by graphic marks\n */\nexport type GenerateBasicEncoderSpec<T> = Partial<\n Omit<\n T,\n | 'strokeSeg'\n | 'boundsPadding'\n | 'pickMode'\n | 'boundsMode'\n | 'customPickShape'\n | 'pickable'\n | 'childrenPickable'\n | 'visible'\n | 'zIndex'\n | 'layout'\n | 'keepDirIn3d'\n | 'postMatrix'\n | 'anchor'\n | 'anchor3d'\n >\n>;\n\nexport type BasicEncoderSpecMap = {\n rect: GenerateBasicEncoderSpec<IRectGraphicAttribute & { y1?: number; x1?: number }>;\n line: Omit<GenerateBasicEncoderSpec<ILineGraphicAttribute>, 'points' | 'segments'>;\n circle: GenerateBasicEncoderSpec<ICircleGraphicAttribute>;\n arc: GenerateBasicEncoderSpec<IArcGraphicAttribute>;\n polygon: GenerateBasicEncoderSpec<IPolygonGraphicAttribute>;\n arc3d: GenerateBasicEncoderSpec<IArc3dGraphicAttribute>;\n pyramid3d: GenerateBasicEncoderSpec<IPyramid3dGraphicAttribute>;\n area: Omit<GenerateBasicEncoderSpec<IAreaGraphicAttribute>, 'points' | 'segments'>;\n group: GenerateBasicEncoderSpec<IGroupGraphicAttribute>;\n glyph: GenerateBasicEncoderSpec<IGlyphGraphicAttribute & any>;\n image: GenerateBasicEncoderSpec<IImageGraphicAttribute>;\n rect3d: GenerateBasicEncoderSpec<IRect3dGraphicAttribute>;\n path: GenerateBasicEncoderSpec<IPathGraphicAttribute>;\n rule: Omit<GenerateBasicEncoderSpec<ILineGraphicAttribute>, 'points' | 'segments'> & { x1?: number; y1?: number };\n shape: GenerateBasicEncoderSpec<IPathGraphicAttribute>;\n symbol: GenerateBasicEncoderSpec<ISymbolGraphicAttribute> & {\n shape?: ISymbolGraphicAttribute['symbolType'];\n image?: ISymbolGraphicAttribute['background'];\n };\n text: GenerateBasicEncoderSpec<ITextGraphicAttribute> & {\n limit?: number;\n autoLimit?: number;\n };\n richtext: GenerateBasicEncoderSpec<IRichTextGraphicAttribute>;\n interval: Omit<GenerateBasicEncoderSpec<IRectGraphicAttribute>, 'width' | 'height'> & {\n /**\n * the gap for two graphic elements\n */\n innerGap?: number | string;\n /**\n * only used for rect / interval mark\n */\n maxWidth?: number;\n minWidth?: number;\n /** the gap between two category */\n categoryGap?: number | string;\n };\n cell: GenerateBasicEncoderSpec<ISymbolGraphicAttribute> & {\n padding?: number | [number, number];\n shape?: ISymbolAttribute['symbolType'];\n };\n};\nexport type GenerateBaseEncodeSpec<BasicSpec = GenerateBasicEncoderSpec<IGraphicAttribute>> =\n | GenerateEncoderSpec<BasicSpec>\n | MarkFunctionCallback<BasicSpec>;\n\nexport type StateProxyEncodeSpec<T = any> = (datum: any, element: IElement, state: string, nextStates: string[]) => T;\n\nexport type StateEncodeSpec<BasicSpec = GenerateBasicEncoderSpec<IGraphicAttribute>> =\n | {\n enter?: GenerateBaseEncodeSpec<BasicSpec>;\n update?: GenerateBaseEncodeSpec<BasicSpec>;\n exit?: GenerateBaseEncodeSpec<BasicSpec>;\n }\n | {\n [state: string]: GenerateEncoderSpec<BasicSpec> | StateProxyEncodeSpec<BasicSpec>;\n };\n\nexport type MarkAnimationSpec = Record<string, IAnimationConfig | IAnimationConfig[]> & {\n state?: IStateAnimationConfig;\n};\n\n// TODO: support string[]\nexport type MarkKeySpec = string | ((datum: any) => string);\n\nexport type MarkSortSpec = (datumA: any, datumB: any) => number;\n\nexport type MarkStateSortSpec = (stateA: string, stateB: string) => number;\n\nexport interface MarkGridContainerSpec extends MarkBaseLayoutSpec {\n display: 'grid';\n gridTemplateRows?: (number | string | 'auto')[];\n gridTemplateColumns?: (number | string | 'auto')[];\n gridRowGap?: number;\n gridColumnGap?: number;\n}\n\nexport interface MarkGridItemSpec extends MarkBaseLayoutSpec {\n gridRowStart?: number;\n gridRowEnd?: number;\n gridColumnStart?: number;\n gridColumnEnd?: number;\n}\n\nexport interface MarkBaseLayoutSpec {\n callback?: MarkLayoutCallback;\n skipBeforeLayouted?: boolean;\n updateViewSignals?: boolean;\n}\n\nexport interface MarkRelativeItemSpec extends MarkBaseLayoutSpec {\n position?: 'top' | 'bottom' | 'left' | 'right' | 'content' | 'auto' | string;\n padding?: CommonPaddingSpec;\n align?: 'left' | 'right' | 'center' | 'top' | 'bottom' | 'middle';\n order?: number;\n}\n\nexport interface MarkRelativeContainerSpec extends MarkBaseLayoutSpec {\n display: 'relative';\n maxChildWidth?: string | number;\n maxChildHeight?: string | number;\n}\n\nexport type MarkLayoutSpec =\n | MarkGridContainerSpec\n | MarkGridItemSpec\n | MarkRelativeContainerSpec\n | MarkRelativeItemSpec;\n\nexport type MarkLayoutCallback = (\n group: IGroupMark,\n children: IMark[],\n parentLayoutBounds: Bounds,\n options?: ILayoutOptions\n) => void;\n\nexport interface IMarkConfig {\n clip?: boolean;\n zIndex?: number;\n interactive?: boolean;\n context?: any;\n /**\n * set customized shape\n */\n setCustomizedShape?: (datum: any[], attrs: any, path: ICustomPath2D) => ICustomPath2D;\n /** 是否开启大数据渲染模式 */\n large?: boolean;\n /** 开启大数据渲染优化的阀值,对应的是data的长度 */\n largeThreshold?: number;\n /** 分片长度 */\n progressiveStep?: number;\n /** 开启分片渲染的阀值,对应的是单系列data的长度 */\n progressiveThreshold?: number;\n /**\n * use 'sequential' for symbol chart\n * use 'mod' for bar/line chart\n */\n // largeChunkMode?: 'sequential' | 'mod';\n support3d?: boolean;\n /**\n * enable global morphing animation of the mark\n */\n morph?: boolean;\n /**\n * this key will be used to match the mark to morph\n */\n morphKey?: string;\n /**\n * this key will be used to match the element of two marks to morph\n * If not specified, we'll use the \"key\" of the mark by default\n */\n morphElementKey?: string;\n /** transforms of attributes */\n attributeTransforms?: AttributeTransform[];\n}\n\n/**\n * Base mark specification type\n */\nexport interface GenerateMarkSpec<T extends MarkType = string, P = any> extends IMarkConfig, GrammarSpec {\n type: T;\n name?: string;\n group?: string | IGroupMark;\n // data attributes\n from?: MarkFromSpec;\n key?: MarkKeySpec;\n /**\n * sort all the elements in the mark\n */\n sort?: MarkSortSpec;\n /**\n * set the group key of the mark\n */\n groupBy?: MarkKeySpec;\n /**\n * sort the data of each group\n */\n groupSort?: MarkSortSpec;\n context?: any;\n // coordinate attributes\n coordinate?: string | ICoordinate;\n // encode attributes\n state?: MarkStateSpec;\n stateSort?: MarkStateSortSpec;\n encode?: GetEncoderSpecByType<T, P>;\n // animation attributes\n animationState?: MarkFunctionType<string>;\n animation?: MarkAnimationSpec;\n transform?: TransformSpec[];\n layout?: MarkLayoutSpec | MarkLayoutCallback;\n}\n\nexport type CircleMarkSpec = GenerateMarkSpec<'circle'>;\nexport type ArcMarkSpec = GenerateMarkSpec<'arc'>;\nexport type AreaMarkSpec = GenerateMarkSpec<'area'>;\nexport type LineMarkSpec = GenerateMarkSpec<'line'>;\nexport type RectMarkSpec = GenerateMarkSpec<'rect'>;\nexport type ImageMarkSpec = GenerateMarkSpec<'image'>;\nexport type PathMarkSpec = GenerateMarkSpec<'path'>;\nexport type RuleMarkSpec = GenerateMarkSpec<'rule'>;\nexport type ShapeMarkSpec = GenerateMarkSpec<'shape'>;\nexport type SymbolMarkSpec = GenerateMarkSpec<'symbol'>;\nexport type TextMarkSpec = GenerateMarkSpec<'text'>;\nexport type RichTextMarkSpec = GenerateMarkSpec<'richtext'>;\nexport type PolygonMarkSpec = GenerateMarkSpec<'polygon'>;\nexport type CellMarkSpec = GenerateMarkSpec<'cell'>;\nexport type IntervalMarkSpec = GenerateMarkSpec<'interval'>;\nexport type Arc3dMarkSpec = GenerateMarkSpec<'arc3d'>;\nexport type Pyramid3dMarkSpec = GenerateMarkSpec<'pyramid3d'>;\nexport type Rect3dMarkSpec = GenerateMarkSpec<'rect3d'>;\n\nexport type BasicGlyphEncoderSpec = BasicEncoderSpecMap['glyph'];\nexport type BasicGroupEncoderSpec = BasicEncoderSpecMap['group'];\nexport interface GroupMarkSpec extends GenerateMarkSpec<'group'> {\n marks?: MarkSpec[];\n}\n\nexport interface GlyphMarkSpec<CustomizedEncoderSpec = any> extends GenerateMarkSpec<'glyph', CustomizedEncoderSpec> {\n glyphType: string;\n glyphConfig?: any;\n}\n\nexport interface BoxPlotEncoderSpec extends BasicGlyphEncoderSpec {\n boxWidth?: number;\n boxHeight?: number;\n ruleWidth?: number;\n ruleHeight?: number;\n q1?: number;\n q3?: number;\n min?: number;\n max?: number;\n median?: number;\n angle?: number;\n anchor?: [number, number];\n}\n\nexport interface BarBoxPlotEncoderSpec extends BasicGlyphEncoderSpec {\n minMaxWidth?: number;\n q1q3Width?: number;\n minMaxHeight?: number;\n q1q3Height?: number;\n q1?: number;\n q3?: number;\n min?: number;\n max?: number;\n median?: number;\n angle?: number;\n lineWidth?: number;\n minMaxFillOpacity?: number;\n anchor?: [number, number];\n}\n\nexport interface LinkPathEncoderSpec extends BasicGlyphEncoderSpec {\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n thickness: number;\n curvature?: number;\n /** round all the coordinates */\n round?: boolean;\n /** the ratio of normal style path */\n ratio?: number;\n align?: 'start' | 'end' | 'center';\n pathType?: 'line' | 'smooth' | 'polyline';\n endArrow?: boolean;\n startArrow?: boolean;\n backgroundStyle?: any;\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\nexport interface TreePathEncoderSpec extends BasicGlyphEncoderSpec {\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n curvature?: number;\n /** round all the coordinates */\n round?: boolean;\n /** the ratio of normal style path */\n align?: 'start' | 'end' | 'center';\n pathType?: 'line' | 'smooth' | 'polyline';\n startArrowStyle?: Partial<IGraphicAttribute>;\n endArrowStyle?: Partial<IGraphicAttribute>;\n endArrow?: boolean;\n startArrow?: boolean;\n arrowSize?: number;\n backgroundStyle?: any;\n direction?: 'horizontal' | 'vertical' | 'LR' | 'RL' | 'TB' | 'BL' | 'radial';\n}\n\nexport interface RipplePointEncoderSpec extends BasicGlyphEncoderSpec {\n ripple?: number;\n size?: number;\n}\n\nexport interface ViolinEncoderSpec extends BasicGlyphEncoderSpec {\n violinFill: string;\n violinStroke: string;\n medianFill?: string;\n density?: IPointLike[];\n boxWidth?: number;\n q1?: number;\n q3?: number;\n min?: number;\n max?: number;\n median?: number;\n angle?: number;\n anchor?: [number, number];\n}\n\nexport interface WaveEncoderSpec extends BasicGlyphEncoderSpec {\n wave?: number;\n}\nexport interface BoxPlotGlyphSpec extends GlyphMarkSpec<BoxPlotEncoderSpec> {\n glyphType: 'boxplot';\n}\nexport interface BarBoxPlotGlyphSpec extends GlyphMarkSpec<BarBoxPlotEncoderSpec> {\n glyphType: 'barBoxplot';\n}\nexport interface LinkPathGlyphSpec extends GlyphMarkSpec<LinkPathEncoderSpec> {\n glyphType: 'linkPath';\n}\nexport interface TreePathGlyphSpec extends GlyphMarkSpec<TreePathEncoderSpec> {\n glyphType: 'treePath';\n}\nexport interface RipplePointGlyphSpec extends GlyphMarkSpec<RipplePointEncoderSpec> {\n glyphType: 'ripplePoint';\n}\nexport interface ViolinGlyphSpec extends GlyphMarkSpec<ViolinEncoderSpec> {\n glyphType: 'violin';\n}\nexport interface WaveGlyphSpec extends GlyphMarkSpec<WaveEncoderSpec> {\n glyphType: 'wave';\n}\n\nexport interface ComponentSpec<\n BasicEncoderSpec extends GenerateBasicEncoderSpec<IGraphicAttribute> = GenerateBasicEncoderSpec<IGraphicAttribute>\n> extends GenerateMarkSpec<'component', BasicEncoderSpec> {\n componentType: string;\n componentConfig?: any;\n mode?: '2d' | '3d';\n}\n\nexport type BaseMarkSpec = GenerateMarkSpec<MarkType>;\nexport type MarkSpecMap = {\n circle: CircleMarkSpec;\n arc: ArcMarkSpec;\n area: AreaMarkSpec;\n image: ImageMarkSpec;\n line: LineMarkSpec;\n path: PathMarkSpec;\n rule: RuleMarkSpec;\n shape: ShapeMarkSpec;\n symbol: SymbolMarkSpec;\n text: TextMarkSpec;\n richtext: RichTextMarkSpec;\n polygon: PolygonMarkSpec;\n cell: CellMarkSpec;\n interval: IntervalMarkSpec;\n rect: RectMarkSpec;\n rect3d: Rect3dMarkSpec;\n arc3d: Arc3dMarkSpec;\n pyramid3d: Pyramid3dMarkSpec;\n group: GroupMarkSpec;\n glyph: GlyphMarkSpec;\n linkPath: LinkPathGlyphSpec;\n treePath: TreePathGlyphSpec;\n wave: WaveEncoderSpec;\n ripplePoint: RipplePointGlyphSpec;\n barBoxplot: BarBoxPlotGlyphSpec;\n boxPlot: BoxPlotGlyphSpec;\n component: ComponentSpec;\n axis: AxisSpec;\n legend: LegendSpec;\n corsshair: CrosshairSpec;\n slider: SliderSpec;\n datazoom: DatazoomSpec;\n label: LabelSpec;\n player: PlayerSpec;\n};\n\nexport type GetMarkSpecByType<T, P = any> = T extends keyof MarkSpecMap ? MarkSpecMap[T] : GenerateMarkSpec<string, P>;\nexport type GetBasicEncoderSpecByType<T, P = any> = T extends keyof BasicEncoderSpecMap\n ? BasicEncoderSpecMap[T]\n : GenerateBasicEncoderSpec<IGraphicAttribute & P>;\nexport type GetEncoderSpecByType<T, P = any> = T extends keyof BasicEncoderSpecMap\n ? StateEncodeSpec<BasicEncoderSpecMap[T]>\n : StateEncodeSpec<GenerateBasicEncoderSpec<IGraphicAttribute> & P>;\n\nexport type BaseEncodeSpec<P = any> = StateEncodeSpec<GenerateBasicEncoderSpec<IGraphicAttribute & P>>;\nexport type BaseSignleEncodeSpec<P = any> =\n | GenerateEncoderSpec<GenerateBasicEncoderSpec<IGraphicAttribute & P>>\n | StateProxyEncodeSpec<GenerateBasicEncoderSpec<IGraphicAttribute & P>>;\n\nexport type GetSignleEncodeSpecByType<T, P = any> = T extends keyof BasicEncoderSpecMap\n ? GenerateEncoderSpec<BasicEncoderSpecMap[T]> | StateProxyEncodeSpec<BasicEncoderSpecMap[T]>\n : BaseSignleEncodeSpec<P>;\n\nexport type MarkSpec =\n | GenerateMarkSpec<string, any>\n | CircleMarkSpec\n | ArcMarkSpec\n | AreaMarkSpec\n | ImageMarkSpec\n | LineMarkSpec\n | PathMarkSpec\n | RuleMarkSpec\n | ShapeMarkSpec\n | SymbolMarkSpec\n | TextMarkSpec\n | RichTextMarkSpec\n | PolygonMarkSpec\n | CellMarkSpec\n | IntervalMarkSpec\n | RectMarkSpec\n | Rect3dMarkSpec\n | Arc3dMarkSpec\n | Pyramid3dMarkSpec\n | GroupMarkSpec\n | GlyphMarkSpec\n | LinkPathGlyphSpec\n | TreePathGlyphSpec\n | WaveGlyphSpec\n | RipplePointGlyphSpec\n | BarBoxPlotGlyphSpec\n | BoxPlotGlyphSpec\n | ViolinGlyphSpec\n | ComponentSpec\n | BuiltInComponentSpec;\n\nexport interface AttributeTransform {\n channels: string[];\n transform: (graphicAttributes: any, nextAttrs: any, storedAttrs: any) => void;\n storedAttrs?: string;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { EasingType } from '@visactor/vrender-core';
1
+ import type { EasingType } from '@visactor/vrender';
2
2
  import type { DiffResult, Nil } from './base';
3
3
  import type { IElement } from './element';
4
4
  import type { IGrammarBase, IMark } from './grammar';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/morph.ts"],"names":[],"mappings":"","file":"morph.js","sourcesContent":["import type { EasingType } from '@visactor/vrender-core';\nimport type { DiffResult, Nil } from './base';\nimport type { IElement } from './element';\nimport type { IGrammarBase, IMark } from './grammar';\nimport type { GenericFunctionType } from './signal';\nimport type { IRunningConfig } from './view';\n\nexport type MorphData = { prev: any[]; next: any[] };\nexport type MorphElements = { prev: IElement[]; next: IElement[] };\n\nexport type MorphFunctionCallback<T> = (datum: MorphData, element: MorphElements, parameters: any) => T;\n\nexport type MorphFunctionType<T> = GenericFunctionType<MorphFunctionCallback<T>, T>;\n\nexport type MorphFunctionValueType<T> = MorphFunctionType<T> | T;\n\nexport interface IMorphAnimationConfig {\n easing?: EasingType;\n delay?: MorphFunctionValueType<number>;\n duration?: MorphFunctionValueType<number>;\n oneByOne?: MorphFunctionValueType<boolean | number>;\n splitPath?: MorphFunctionValueType<'clone' | Nil>;\n}\n\nexport interface IMorph {\n diffGrammar: <U extends IGrammarBase>(prevGrammars: U[], nextGrammars: U[]) => DiffResult<U, U>;\n diffMark: (prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig) => DiffResult<IMark[], IMark[]>;\n\n morph: (prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig) => void;\n}\n"]}
1
+ {"version":3,"sources":["../src/types/morph.ts"],"names":[],"mappings":"","file":"morph.js","sourcesContent":["import type { EasingType } from '@visactor/vrender';\nimport type { DiffResult, Nil } from './base';\nimport type { IElement } from './element';\nimport type { IGrammarBase, IMark } from './grammar';\nimport type { GenericFunctionType } from './signal';\nimport type { IRunningConfig } from './view';\n\nexport type MorphData = { prev: any[]; next: any[] };\nexport type MorphElements = { prev: IElement[]; next: IElement[] };\n\nexport type MorphFunctionCallback<T> = (datum: MorphData, element: MorphElements, parameters: any) => T;\n\nexport type MorphFunctionType<T> = GenericFunctionType<MorphFunctionCallback<T>, T>;\n\nexport type MorphFunctionValueType<T> = MorphFunctionType<T> | T;\n\nexport interface IMorphAnimationConfig {\n easing?: EasingType;\n delay?: MorphFunctionValueType<number>;\n duration?: MorphFunctionValueType<number>;\n oneByOne?: MorphFunctionValueType<boolean | number>;\n splitPath?: MorphFunctionValueType<'clone' | Nil>;\n}\n\nexport interface IMorph {\n diffGrammar: <U extends IGrammarBase>(prevGrammars: U[], nextGrammars: U[]) => DiffResult<U, U>;\n diffMark: (prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig) => DiffResult<IMark[], IMark[]>;\n\n morph: (prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig) => void;\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import type { AxisBaseAttributes, BaseCrosshairAttrs, BaseLabelAttrs, ColorLegendAttributes, DataZoomAttributes, DiscreteLegendAttrs, GridBaseAttributes, PlayerAttributes, SizeLegendAttributes, SliderAttributes, TitleAttrs } from '@visactor/vrender-components';
3
3
  import type { CoordinateType } from '@visactor/vgrammar-coordinate';
4
- import type { IColor } from '@visactor/vrender-core';
4
+ import type { IColor } from '@visactor/vrender';
5
5
  import type { IEnvironmentOptions, IRendererOptions, IRunningConfig, ViewSpec, srIOption3DType, IView } from './view';
6
6
  import type { CommonPaddingSpec, ValueOf } from './base';
7
7
  import type { BasicEncoderSpecMap, LinkPathEncoderSpec, MarkRelativeItemSpec } from './mark';