@visactor/vgrammar-plot 0.10.2 → 0.10.4

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.
@@ -394,10 +394,10 @@ class SemanticMark {
394
394
  const {option: option, layout: layout} = this.parseOption(legend[channel]);
395
395
  if (option) {
396
396
  const markLayout = null != layout ? layout : (0, vutils_1.isPlainObject)(option) && !(0,
397
- vutils_1.isNil)(option.layout) ? "horizontal" === option.layout ? {
397
+ vutils_1.isNil)(option.layout) ? (0, vgrammar_util_1.isHorizontal)(option.layout) ? {
398
398
  position: "top",
399
399
  align: "center"
400
- } : "vertical" === option.layout ? {
400
+ } : (0, vgrammar_util_1.isVertical)(option.layout) ? {
401
401
  position: "right",
402
402
  align: "middle"
403
403
  } : {
@@ -587,10 +587,10 @@ class SemanticMark {
587
587
  if (!scaleSpec || !(0, vscale_1.isContinuous)(scaleSpec.type)) return void this._logger.warn(`[VGrammar]: Don't use slider in a channel which has scale type = ${null == scaleSpec ? void 0 : scaleSpec.type}`);
588
588
  const theme = this.plot ? this.plot.view.getCurrentTheme() : vgrammar_core_1.ThemeManager.getDefaultTheme(), getter = (0,
589
589
  vgrammar_util_1.field)(null === (_a = this.spec.encode) || void 0 === _a ? void 0 : _a[channel]), markLayout = null != layout ? layout : (0,
590
- vutils_1.isPlainObject)(option) && !(0, vutils_1.isNil)(option.layout) ? "horizontal" === option.layout ? {
590
+ vutils_1.isPlainObject)(option) && !(0, vutils_1.isNil)(option.layout) ? (0, vgrammar_util_1.isHorizontal)(option.layout) ? {
591
591
  position: "top",
592
592
  align: "center"
593
- } : "vertical" === option.layout ? {
593
+ } : (0, vgrammar_util_1.isVertical)(option.layout) ? {
594
594
  position: "right",
595
595
  align: "middle"
596
596
  } : {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/semantic-mark.ts"],"names":[],"mappings":"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","file":"semantic-mark.js","sourcesContent":["import type {\n LegendBaseAttributes,\n SliderAttributes,\n DataZoomAttributes,\n BaseLabelAttrs,\n PlayerAttributes,\n OrientType\n} from '@visactor/vrender-components';\nimport type { ILogger } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n Logger,\n array,\n isArray,\n isBoolean,\n isNil,\n isPlainObject,\n maxInArray,\n merge,\n minInArray\n} from '@visactor/vutils';\nimport { isContinuous, type IBaseScale, isDiscrete } from '@visactor/vscale';\nimport type {\n ISemanticMark,\n ISemanticMarkSpec,\n ParsedSimpleEncode,\n WithDefaultEncode,\n SemanticTooltipOption,\n SemanticAxisOption,\n SemanticPlayerOption,\n SemanticLabelOption,\n SemanticDataZoomOption,\n SemanticSliderOption,\n SemanticLegendOption,\n SemanticCrosshairOption,\n CoordinateOption,\n PolarCoordinateOption,\n AxisSpec,\n CrosshairSpec,\n DatazoomSpec,\n LabelSpec,\n LegendSpec,\n PlayerSpec,\n SliderSpec,\n TooltipSpec,\n CoordinateSpec,\n DataSpec,\n ChannelEncodeType,\n ScaleSpec,\n TransformSpec,\n MarkAnimationSpec,\n ViewSpec,\n MarkType,\n Nil,\n ValueOf,\n GenerateBaseEncodeSpec,\n IElement,\n IAnimationConfig,\n MarkSpec,\n MarkRelativeItemSpec,\n IPlot,\n SemanticTooltipContentItem,\n SemanticGridOption,\n GridSpec,\n TitleSpec,\n SemanticTitleOption,\n InteractionSpec,\n LegendFilterSpec,\n SliderFilterSpec,\n DatazoomFilterSpec,\n PlayerFilterSpec,\n DimensionTooltipSpec\n} from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentEnum, SIGNAL_VIEW_BOX, BuiltInEncodeNames, ThemeManager, Factory } from '@visactor/vgrammar-core';\nimport { field as getFieldAccessor, toPercent } from '@visactor/vgrammar-util';\nimport type { IBaseCoordinate } from '@visactor/vgrammar-coordinate';\nimport type { ITextAttribute } from '@visactor/vrender-core';\n\nlet semanticMarkId = -1;\n\nexport abstract class SemanticMark<EncodeSpec, K extends string> implements ISemanticMark<EncodeSpec, K> {\n //declare type: T;\n spec: ISemanticMarkSpec<EncodeSpec, K>;\n viewSpec?: ViewSpec;\n\n readonly uid: number;\n protected _logger: ILogger;\n protected _coordinate: CoordinateOption;\n readonly type: string;\n readonly plot: IPlot;\n\n constructor(type: string, id?: string | number, plot?: IPlot) {\n this.type = type;\n this.uid = ++semanticMarkId;\n this._logger = Logger.getInstance();\n this.plot = plot;\n\n this.spec = { id: id ?? `${this.type}-${this.uid}` };\n }\n\n parseSpec(spec: Partial<ISemanticMarkSpec<EncodeSpec, K>>) {\n if (isNil(spec.id)) {\n spec.id = this.spec.id;\n }\n this.spec = spec as ISemanticMarkSpec<EncodeSpec, K>;\n return this;\n }\n\n coordinate(option: CoordinateOption) {\n this._coordinate = option;\n return this;\n }\n\n data(values: any, transform?: TransformSpec[], id?: string) {\n if (isNil(values)) {\n return this;\n }\n\n this.spec.data = { values, transform, id };\n return this;\n }\n\n encode(channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>) {\n if (!this.spec.encode) {\n this.spec.encode = {};\n }\n this.spec.encode[channel] = option;\n\n return this;\n }\n scale(channel: string, option: Partial<ScaleSpec>) {\n if (!this.spec.scale) {\n this.spec.scale = {};\n }\n\n this.spec.scale[channel] = option;\n return this;\n }\n style(style: Partial<EncodeSpec & any>) {\n this.spec.style = style;\n return this;\n }\n transform(option: TransformSpec | TransformSpec[]) {\n this.spec.transform = array(option) as TransformSpec[];\n\n return this;\n }\n state(state: string, option: Partial<EncodeSpec>) {\n if (\n (\n [\n BuiltInEncodeNames.enter,\n BuiltInEncodeNames.update,\n BuiltInEncodeNames.exit,\n BuiltInEncodeNames.group\n ] as string[]\n ).includes(state)\n ) {\n this._logger.warn(\n `[VGrammar]: ${state} is a reserved keyword to specify the encode of different data state, \n don't use this keyword`\n );\n\n return;\n }\n\n if (!this.spec.state) {\n this.spec.state = {};\n }\n this.spec.state[state] = option;\n return this;\n }\n animate(state: string, option: IAnimationConfig | IAnimationConfig[]) {\n if (state === 'state') {\n this._logger.warn(\n `[VGrammar]: ${state} is a keyword use to specify state animation config, don't use this keyword`\n );\n\n return this;\n }\n\n if (!this.spec.animation) {\n this.spec.animation = {};\n }\n\n this.spec.animation[state] = option;\n\n return this;\n }\n axis(channel: string, option: SemanticAxisOption | boolean = true, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('axis')) {\n this._logger.error(\n `Please add this line of code: import { registerAxis } from '@visactor/vgrammar-core'; \n and run \"registerAxis();\" or \"View.useRegisters([registerAxis]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.axis) {\n this.spec.axis = {};\n }\n this.spec.axis[channel] = { option, layout };\n\n return this;\n }\n\n grid(channel: string, option: SemanticGridOption | boolean = true) {\n if (!Factory.hasComponent('grid')) {\n this._logger.error(\n `Please add this line of code: import { registerGrid } from '@visactor/vgrammar-core'; \n and run \"registerGrid();\" or \"View.useRegisters([registerGrid]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.grid) {\n this.spec.grid = {};\n }\n this.spec.grid[channel] = option;\n\n return this;\n }\n\n legend(channel: string, option: SemanticLegendOption | boolean = true, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('legend')) {\n this._logger.error(\n `Please add this line of code: import { registerLegend } from '@visactor/vgrammar-core'; \n and run \"registerLegend();\" or \"View.useRegisters([registerLegend]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.legend) {\n this.spec.legend = {};\n }\n\n this.spec.legend[channel] = { option, layout };\n\n return this;\n }\n crosshair(channel: string, option?: SemanticCrosshairOption | boolean) {\n if (!Factory.hasComponent('crosshair')) {\n this._logger.error(\n `Please add this line of code: import { registerCrosshair } from '@visactor/vgrammar-core'; \n and run \"registerCrosshair();\" or \"View.useRegisters([registerCrosshair]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.crosshair) {\n this.spec.crosshair = {};\n }\n\n this.spec.crosshair[channel] = option;\n\n return this;\n }\n tooltip(option: SemanticTooltipOption | boolean) {\n if (!Factory.hasComponent('tooltip')) {\n this._logger.error(\n `Please add this line of code: import { registerTooltip } from '@visactor/vgrammar-core'; \n and run \"registerTooltip();\" or \"View.useRegisters([registerTooltip]);\" `\n );\n\n return this;\n }\n\n this.spec.tooltip = option;\n\n return this;\n }\n\n slider(channel: string, option?: SemanticSliderOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('slider')) {\n this._logger.error(\n `Please add this line of code: import { registerSlider } from '@visactor/vgrammar-core'; \n and run \"registerSlider();\" or \"View.useRegisters([registerSlider]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.slider) {\n this.spec.slider = {};\n }\n\n this.spec.slider[channel] = { option, layout };\n\n return this;\n }\n datazoom(channel: string, option?: SemanticDataZoomOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('datazoom')) {\n this._logger.error(\n `Please add this line of code: import { registerDataZoom } from '@visactor/vgrammar-core'; \n and run \"registerDataZoom();\" or \"View.useRegisters([registerDataZoom]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.datazoom) {\n this.spec.datazoom = {};\n }\n\n this.spec.datazoom[channel] = { option, layout };\n\n return this;\n }\n label(channel: string, option?: SemanticLabelOption | boolean) {\n if (!Factory.hasComponent('label')) {\n this._logger.error(\n `Please add this line of code: import { registerLabel } from '@visactor/vgrammar-core'; \n and run \"registerLabel();\" or \"View.useRegisters([registerLabel]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.label) {\n this.spec.label = {};\n }\n\n this.spec.label[channel] = option;\n\n return this;\n }\n player(data?: any[], option?: SemanticPlayerOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('player')) {\n this._logger.error(\n `Please add this line of code: import { registerPlayer } from '@visactor/vgrammar-core'; \n and run \"registerPlayer();\" or \"View.useRegisters([registerPlayer]);\" `\n );\n\n return this;\n }\n\n this.spec.player = { data, option, layout };\n\n return this;\n }\n\n title(option: SemanticTitleOption, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('title')) {\n this._logger.error(\n `Please add this line of code: import { registerTitle } from '@visactor/vgrammar-core'; \n and run \"registerTitle();\" or \"View.useRegisters([registerTitle]);\" `\n );\n\n return this;\n }\n\n this.spec.title = { option, layout };\n\n return this;\n }\n\n protected getPalette() {\n return (this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme()).palette?.default;\n }\n\n abstract setMarkType(): MarkType;\n abstract parseScaleByEncode(channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil;\n abstract convertMarkEncode(encode: WithDefaultEncode<EncodeSpec, K>): GenerateBaseEncodeSpec<EncodeSpec>;\n\n protected setDefaultDataTransform(): TransformSpec[] {\n return [];\n }\n\n protected setMultipleData(): DataSpec[] {\n return null;\n }\n\n protected setDefaultMarkTransform(): TransformSpec[] {\n return [];\n }\n\n protected convertMarkTransform(userTransform: TransformSpec[], defaultTransform: TransformSpec[] = []) {\n if (defaultTransform && defaultTransform.length) {\n if (userTransform && userTransform.length) {\n let transforms = [];\n const excludeIndex = [];\n\n for (let i = 0, len = userTransform.length; i < len; i++) {\n const customizedSpec = userTransform[i];\n const index = defaultTransform.findIndex(entry => entry.type === customizedSpec.type);\n\n if (index >= 0) {\n transforms.push(merge({}, defaultTransform[index], customizedSpec));\n excludeIndex.push(index);\n } else {\n transforms.push(customizedSpec);\n }\n }\n\n for (let j = 0, dlen = defaultTransform.length; j < dlen; j++) {\n if (!excludeIndex.includes(j)) {\n transforms = [defaultTransform[j]].concat(transforms);\n }\n }\n\n return transforms;\n }\n\n return defaultTransform;\n }\n\n return userTransform;\n }\n\n protected convertMarkAnimation(): MarkAnimationSpec {\n if (!this.spec.animation) {\n return null;\n }\n\n return this.spec.animation;\n }\n\n protected convertSimpleMarkEncode(encode: WithDefaultEncode<EncodeSpec, K>): ParsedSimpleEncode<EncodeSpec, K> {\n if (!encode) {\n return {};\n }\n\n const markEncoder = {};\n\n Object.keys(encode).map(channel => {\n markEncoder[channel] = { field: encode[channel], scale: this.getScaleId(channel), band: 0.5 };\n });\n\n return markEncoder;\n }\n\n protected getDataIdOfFiltered() {\n return `${this.spec.data?.id ?? this.spec.id}-data-filtered`;\n }\n\n protected getDataIdOfMain() {\n return `${this.spec.data?.id ?? this.spec.id}-data`;\n }\n\n protected getDataIdOfPlayer() {\n return `${this.spec.data?.id ?? this.spec.id}-player`;\n }\n\n protected getDataZoomScaleId(channel: string) {\n return {\n x: `datazoom-scale-${channel}-x`,\n y: `datazoom-scale-${channel}-y`\n };\n }\n\n protected getScaleId(channel: string) {\n return this.spec.scale?.[channel]?.id ?? `scale-${channel}`;\n }\n\n protected getMarkId() {\n return `${this.spec.id}-mark`;\n }\n\n protected getComponentId(id: string, component?: string) {\n return `${this.spec.id}-${component ?? 'component'}-${id}`;\n }\n\n protected getScaleSpec(scaleId: string) {\n return this.viewSpec?.scales?.find?.(scale => scale.id === scaleId);\n }\n\n protected parseScaleOfEncodeX(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'band',\n id: this.getScaleId('x'),\n dependency: [SIGNAL_VIEW_BOX],\n domain: {\n data: this.getDataIdOfFiltered(),\n field: option as string\n },\n range: this._coordinate\n ? { coordinate: this._coordinate.id, dimension: 'x' }\n : (scale: IBaseScale, params: any) => {\n return [0, params.viewBox.width()];\n }\n };\n }\n\n protected parseScaleOfEncodeY(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'linear',\n dependency: [SIGNAL_VIEW_BOX],\n id: this.getScaleId('y'),\n domain: {\n data: this.getDataIdOfFiltered(),\n field: option as string\n },\n range: this._coordinate\n ? { coordinate: this._coordinate.id, dimension: 'y' }\n : (scale: IBaseScale, params: any) => {\n return [params.viewBox.height(), 0];\n }\n };\n }\n\n protected parseScaleOfEncodeColor(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('color'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfEncodeStroke(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('stroke'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfEncodeGroup(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('group'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfCommonEncode(\n channel: K,\n option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>\n ): ScaleSpec | Nil {\n if (channel === 'x') {\n return this.parseScaleOfEncodeX(option);\n }\n\n if (channel === 'y') {\n return this.parseScaleOfEncodeY(option);\n }\n\n if (channel === 'color') {\n return this.parseScaleOfEncodeColor(option);\n }\n\n if (channel === 'group') {\n return this.parseScaleOfEncodeGroup(option);\n }\n\n if (channel === 'stroke') {\n return this.parseScaleOfEncodeStroke(option);\n }\n\n return null;\n }\n\n protected setDefaultAxis(): Record<string, Partial<AxisSpec>> {\n return {};\n }\n\n protected parseAxisSpec(): {\n marks: AxisSpec[];\n interactions: InteractionSpec[];\n } {\n const axis = this.spec.axis;\n const res = {\n marks: [] as AxisSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (axis) {\n Object.keys(axis).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticAxisOption>(axis[channel]);\n\n if (option) {\n const axisMarkSpec: AxisSpec = {\n type: 'component',\n componentType: ComponentEnum.axis,\n scale: this.getScaleId(channel),\n dependency: [SIGNAL_VIEW_BOX],\n tickCount: (option as SemanticAxisOption).tickCount,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const positionAttrs = this._coordinate\n ? {}\n : channel === 'x'\n ? {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n end: { x: params.viewBox.width(), y: 0 }\n }\n : {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n verticalFactor: -1,\n end: { x: 0, y: -params.viewBox.height() }\n };\n\n return isPlainObject(option) ? merge(positionAttrs, option) : positionAttrs;\n }\n }\n };\n axisMarkSpec.layout = layout ?? {\n position: this._coordinate\n ? 'auto'\n : isPlainObject(layout) && !isNil((layout as SemanticAxisOption).orient)\n ? (layout as SemanticAxisOption).orient\n : channel === 'x'\n ? 'bottom'\n : 'left'\n };\n res.marks.push(axisMarkSpec);\n }\n });\n }\n\n return res;\n }\n\n protected parseGridSpec(): {\n marks: GridSpec[];\n interactions: InteractionSpec[];\n } {\n const grid = this.spec.grid;\n const res = {\n marks: [] as GridSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (grid) {\n Object.keys(grid).forEach(channel => {\n const option = grid[channel];\n\n if (option) {\n const relatedAxisOption = this.parseOption<SemanticAxisOption>(this.spec.axis?.[channel])?.option;\n const visiualChannel = this.getVisualChannel(channel as 'x' | 'y');\n const isCircleGrid = visiualChannel === 'radius';\n const tickCount =\n (option as SemanticGridOption).tickCount ?? (relatedAxisOption as SemanticAxisOption)?.tickCount;\n const otherChannel = channel === 'x' ? 'y' : 'x';\n const otherScaleId = this.getScaleId(otherChannel);\n const otherAxisOption = this.parseOption<SemanticAxisOption>(this.spec.axis?.[otherChannel])?.option;\n\n const markSpec: GridSpec = {\n type: 'component',\n componentType: ComponentEnum.grid,\n scale: this.getScaleId(channel),\n dependency: [SIGNAL_VIEW_BOX, otherScaleId],\n tickCount: tickCount,\n inside: (option as SemanticGridOption).inside,\n baseValue: (option as SemanticGridOption).baseValue,\n gridType: visiualChannel === 'angle' ? 'circle' : 'line',\n gridShape: isCircleGrid ? (option.type === 'polygon' ? 'polygon' : 'circle') : 'line',\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const positionAttrs = this._coordinate\n ? {}\n : channel === 'x'\n ? {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n end: { x: params.viewBox.width(), y: 0 },\n length: params.viewBox.height()\n }\n : {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n verticalFactor: -1,\n end: { x: 0, y: -params.viewBox.height() },\n length: params.viewBox.width()\n };\n\n if (isCircleGrid && option.type === 'polygon') {\n (positionAttrs as any).sides =\n option?.sides ??\n params[otherScaleId]?.ticks((otherAxisOption as SemanticAxisOption)?.tickCount)?.length;\n }\n\n return isPlainObject(option) ? merge(positionAttrs, option) : positionAttrs;\n }\n }\n };\n\n res.marks.push(markSpec);\n }\n });\n }\n\n return res;\n }\n\n protected parseOption<T>(spec: { option: T | boolean; layout?: MarkRelativeItemSpec } | T | boolean) {\n let option: T | boolean;\n let layout: MarkRelativeItemSpec;\n\n if (isPlainObject(spec)) {\n if (isNil((spec as any).option)) {\n option = spec as T;\n } else {\n option = (spec as { option: T | boolean; layout?: MarkRelativeItemSpec }).option;\n layout = (spec as { option: T | boolean; layout?: MarkRelativeItemSpec }).layout;\n }\n } else {\n option = spec;\n }\n\n return { option, layout };\n }\n\n protected setDefaultLegend(): Record<string, Partial<LegendSpec>> {\n return {};\n }\n\n protected parseLegendSpec(): {\n marks: LegendSpec[];\n interactions: InteractionSpec[];\n } {\n const legend = this.spec.legend;\n const res = {\n marks: [] as LegendSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (legend) {\n Object.keys(legend).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticLegendOption>(legend[channel]);\n\n if (option) {\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as LegendBaseAttributes).layout)\n ? (option as LegendBaseAttributes).layout === 'horizontal'\n ? { position: 'top', align: 'center' }\n : (option as LegendBaseAttributes).layout === 'vertical'\n ? { position: 'right', align: 'middle' }\n : { position: 'top', align: 'center' }\n : { position: 'top', align: 'center' });\n const markSpec: LegendSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'legend'),\n componentType: ComponentEnum.legend,\n scale: this.getScaleId(channel),\n shapeScale: this.getScaleId('shape'),\n dependency: [SIGNAL_VIEW_BOX],\n encode: {\n update: (datum: any, element: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n layout: 'vertical',\n x: element.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: element.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'right'\n ? {\n layout: 'vertical',\n x: element.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: element.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'bottom'\n ? {\n layout: 'horizontal',\n x: element.mark?.relativePosition?.left ?? 0,\n y: element.mark?.relativePosition?.top ?? params.viewBox.height()\n }\n : {\n layout: 'horizontal',\n x: element.mark?.relativePosition?.left ?? 0,\n y: element.mark?.relativePosition?.top ?? 0\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: LegendFilterSpec = {\n type: 'legend-filter',\n source: `#${this.getComponentId(channel, 'legend')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultCrosshair(): Record<string, Pick<CrosshairSpec, 'crosshairShape' | 'crosshairType'>> {\n return {};\n }\n\n protected getVisualChannel(channel: 'x' | 'y'): 'x' | 'y' | 'angle' | 'radius' {\n if (this._coordinate?.type === 'polar') {\n return this._coordinate.transpose ? (channel === 'x' ? 'radius' : 'angle') : channel === 'x' ? 'angle' : 'radius';\n }\n\n return (this._coordinate?.transpose ? (channel === 'x' ? 'y' : 'x') : channel) as 'x' | 'y' | 'angle' | 'radius';\n }\n\n protected parseCrosshairSpec(): {\n marks: MarkSpec[];\n interactions: CrosshairSpec[];\n } {\n const defaultCrosshair = this.setDefaultCrosshair();\n const defaultKeys = Object.keys(defaultCrosshair);\n const crosshairKeys = this.spec.crosshair\n ? Object.keys(this.spec.crosshair).reduce((res, key) => {\n if (!res.includes(key)) {\n res.push(key);\n }\n return res;\n }, defaultKeys)\n : defaultKeys;\n const res = {\n marks: [] as MarkSpec[],\n interactions: [] as CrosshairSpec[]\n };\n\n if (crosshairKeys.length) {\n crosshairKeys.forEach(channel => {\n const userOption = this.spec.crosshair?.[channel];\n const option = userOption ?? defaultCrosshair[channel];\n\n if (option) {\n const scaleId = this.getScaleId(channel);\n const scaleSpec = this.getScaleSpec(scaleId);\n const interactionSpec: CrosshairSpec = {\n type: 'crosshair',\n scale: this.getScaleId(channel),\n crosshairShape: isBoolean(option)\n ? scaleSpec?.type === 'band'\n ? 'rect'\n : 'line'\n : (option as CrosshairSpec).crosshairShape ?? (scaleSpec?.type === 'band' ? 'rect' : 'line'),\n crosshairType: this.getVisualChannel(channel as 'x' | 'y'),\n container: '#plotContainer'\n };\n\n if (isPlainObject(userOption)) {\n interactionSpec.attributes = userOption;\n if (userOption.type === 'polygon') {\n interactionSpec.crosshairType = 'radius-polygon';\n const anotherDimScaleId = this.getScaleId(channel === 'x' ? 'y' : 'x');\n (interactionSpec.attributes as any).sides = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.domain().length : undefined;\n };\n (interactionSpec.attributes as any).startAngle = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.range()[0] + (scale?.bandwidth?.() ?? 0) / 2 : undefined;\n };\n (interactionSpec.attributes as any).endAngle = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.range()[1] + (scale?.bandwidth?.() ?? 0) / 2 : undefined;\n };\n interactionSpec.dependency = [anotherDimScaleId];\n }\n }\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultTooltip(): SemanticTooltipOption | Nil {\n return null;\n }\n\n protected parseTooltipSpec(): {\n marks: MarkSpec[];\n interactions: InteractionSpec[];\n } {\n const defaultTooltipSpec = this.setDefaultTooltip();\n const userTooltipSpec = this.spec.tooltip;\n const res = {\n marks: [] as MarkSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (userTooltipSpec !== false && userTooltipSpec !== null && defaultTooltipSpec !== null) {\n const tooltipSpec = merge({}, defaultTooltipSpec, userTooltipSpec === true ? {} : userTooltipSpec);\n const colorChannel = isNil((this.spec.encode as any).color)\n ? isNil((this.spec.encode as any).group)\n ? 'stroke'\n : 'group'\n : 'color';\n const colorEncode = (this.spec.encode as any)[colorChannel];\n const dependency = colorEncode ? [this.getScaleId(colorChannel)] : [];\n const colorAccessor = colorEncode ? getFieldAccessor(colorEncode) : null;\n const title = {\n visible: !!tooltipSpec.title || !!tooltipSpec.staticTitle,\n key: 'title',\n value: !isNil(tooltipSpec.staticTitle)\n ? tooltipSpec.staticTitle\n : {\n field: (datum: any, el: IElement, params: any) => {\n return tooltipSpec.title\n ? getFieldAccessor(tooltipSpec.title)(isArray(datum) ? datum[0] : datum)\n : undefined;\n }\n }\n };\n\n if ((this.spec.encode as any).shape) {\n dependency.push(this.getScaleId('shape'));\n }\n const content =\n isArray(tooltipSpec.content) && tooltipSpec.content.length\n ? tooltipSpec.content.map((entry: SemanticTooltipContentItem, index: number) => {\n return {\n key: entry.key\n ? { field: entry.key }\n : !isNil(tooltipSpec.staticContentKey)\n ? isArray(tooltipSpec.staticContentKey)\n ? tooltipSpec.staticContentKey[index]\n : tooltipSpec.staticContentKey\n : (datum: any, params: any) => {\n return colorAccessor ? colorAccessor(datum) : undefined;\n },\n value: { field: entry.value },\n symbol: (datum: any, params: any) => {\n const scale = params[this.getScaleId(colorChannel)];\n const shapeScale = params[this.getScaleId('shape')];\n let symbolType = 'circle';\n if (shapeScale && entry.symbol) {\n symbolType = shapeScale.scale(getFieldAccessor(entry.symbol)(datum));\n } else if (entry.symbol) {\n symbolType = getFieldAccessor(entry.symbol)(datum);\n }\n return {\n fill: scale && colorAccessor ? scale.scale(colorAccessor(datum)) : this.getPalette()?.[0],\n symbolType\n };\n }\n };\n })\n : null;\n if (tooltipSpec.disableGraphicTooltip !== true) {\n const interactionSpec: TooltipSpec = {\n type: 'tooltip',\n selector: `#${this.getMarkId()}`,\n title,\n content,\n attributes: {\n zIndex: 1000\n },\n dependency: [this.getScaleId(colorChannel), this.getScaleId('shape')]\n };\n res.interactions.push(interactionSpec);\n }\n\n if (tooltipSpec.disableDimensionTooltip !== true) {\n const channel = tooltipSpec.dimensionTooltipChannel ?? 'x';\n const interactionSpec: DimensionTooltipSpec = {\n type: 'dimension-tooltip',\n tooltipType: this.getVisualChannel(channel as 'x' | 'y'),\n scale: this.getScaleId(channel),\n target: { data: this.getDataIdOfFiltered(), filter: (this.spec.encode as any)?.[channel] },\n title,\n content,\n avoidMark: tooltipSpec.disableGraphicTooltip ? [] : [`#${this.getMarkId()}`],\n attributes: {\n zIndex: 1000\n },\n dependency: [this.getScaleId(colorChannel), this.getScaleId('shape')]\n };\n res.interactions.push(interactionSpec);\n }\n\n return res;\n }\n\n return res;\n }\n\n protected setDefaultSlider(): Record<string, Partial<SliderSpec>> {\n return {};\n }\n\n protected parseSliderSpec(): {\n marks: SliderSpec[];\n interactions: InteractionSpec[];\n } {\n const slider = this.spec.slider;\n const res = {\n marks: [] as SliderSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (slider) {\n Object.keys(slider).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticSliderOption>(slider[channel]);\n\n if (option) {\n const scaleId = this.getScaleId(channel);\n const scaleSpec = this.getScaleSpec(scaleId);\n const dataId = this.getDataIdOfMain();\n\n if (!scaleSpec || !isContinuous(scaleSpec.type)) {\n this._logger.warn(`[VGrammar]: Don't use slider in a channel which has scale type = ${scaleSpec?.type}`);\n return;\n }\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n const getter = getFieldAccessor(this.spec.encode?.[channel]);\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as SliderAttributes).layout)\n ? (option as SliderAttributes).layout === 'horizontal'\n ? { position: 'top', align: 'center' }\n : (option as SliderAttributes).layout === 'vertical'\n ? { position: 'right', align: 'middle' }\n : { position: 'top', align: 'center' }\n : { position: 'top', align: 'center' });\n\n const markSpec: SliderSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'slider'),\n componentType: ComponentEnum.slider,\n dependency: [SIGNAL_VIEW_BOX, dataId],\n min: (datum: any, elment: IElement, params: any) => {\n const data = params[dataId];\n\n return minInArray(data.map(getter));\n },\n max: (datum: any, elment: IElement, params: any) => {\n const data = params[dataId];\n\n return maxInArray(data.map(getter));\n },\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n layout: 'vertical',\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n railWidth: theme.components.slider.railHeight,\n railHeight: params.viewBox.height()\n }\n : markLayout.position === 'right'\n ? {\n layout: 'vertical',\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n railWidth: theme.components.slider.railHeight,\n railHeight: params.viewBox.height()\n }\n : markLayout.position === 'bottom'\n ? {\n layout: 'horizontal',\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n railHeight: theme.components.slider.railHeight,\n railWidth: params.viewBox.width()\n }\n : {\n layout: 'horizontal',\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n railHeight: theme.components.slider.railHeight,\n railWidth: params.viewBox.width()\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: SliderFilterSpec = {\n type: 'slider-filter',\n source: `#${this.getComponentId(channel, 'slider')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultDataZoom(): Record<string, Partial<DatazoomSpec>> {\n return {};\n }\n\n protected getVisiualPositionByDimension(channel: string) {\n return channel === 'y' ? 'left' : 'bottom';\n }\n\n protected parseDatazoomSpec(): {\n marks: DatazoomSpec[];\n interactions: InteractionSpec[];\n } {\n const datazoom = this.spec.datazoom;\n const res = {\n marks: [] as DatazoomSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (datazoom) {\n Object.keys(datazoom).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticDataZoomOption>(datazoom[channel]);\n\n if (option) {\n const dataId = this.getDataIdOfMain();\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as DataZoomAttributes).orient)\n ? { position: (option as DataZoomAttributes).orient }\n : { position: this.getVisiualPositionByDimension(channel) });\n const preview: DatazoomSpec['preview'] = {\n data: dataId\n };\n const { x, y } = this.getDataZoomScaleId(channel);\n\n if (channel === 'x') {\n preview.x = { scale: x, field: this.spec.encode?.[channel] };\n preview.y = { scale: y, field: (this.spec.encode as any)?.y };\n } else {\n preview[markLayout.position === 'top' || markLayout.position === 'bottom' ? 'x' : 'y'] = {\n scale: x,\n field: (this.spec.encode as any)?.[channel] ?? channel\n };\n }\n\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n const markSpec: DatazoomSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'datazoom'),\n componentType: ComponentEnum.datazoom,\n dependency: [SIGNAL_VIEW_BOX, dataId],\n preview,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: theme.components.datazoom.size.height }\n }\n : markLayout.position === 'right'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: theme.components.datazoom.size.height }\n }\n : markLayout.position === 'bottom'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n size: { width: params.viewBox.width(), height: theme.components.datazoom.size.height }\n }\n : {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { width: params.viewBox.width(), height: theme.components.datazoom.size.height }\n };\n\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: DatazoomFilterSpec = {\n type: 'datazoom-filter',\n source: `#${this.getComponentId(channel, 'datazoom')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultLabel(): Record<string, Partial<LabelSpec>> {\n return {};\n }\n\n protected getLabelPosition(): string {\n if (this._coordinate?.type === 'polar') {\n return this._coordinate.transpose ? 'endAngle' : 'outer';\n }\n\n return this._coordinate?.transpose ? 'right' : 'top';\n }\n\n protected setLabelTextGetter(\n channel: string,\n option: SemanticLabelOption | boolean\n ): ChannelEncodeType<ITextAttribute['text']> {\n return { field: channel };\n }\n\n protected parseLabelSpec(): {\n marks: LabelSpec[];\n interactions: InteractionSpec[];\n } {\n const label = this.spec.label;\n const res = {\n marks: [] as LabelSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (label) {\n Object.keys(label).forEach(channel => {\n const option = label[channel];\n\n if (option) {\n const markSpec: LabelSpec = {\n type: 'component',\n componentType: ComponentEnum.label,\n target: this.getMarkId(),\n layout: {\n position: 'content',\n skipBeforeLayouted: true\n },\n labelStyle: isPlainObject(option)\n ? merge(\n {\n position: this.getLabelPosition()\n },\n option as BaseLabelAttrs\n )\n : { position: this.getLabelPosition() },\n encode: {\n update: {\n text: this.spec.encode[channel]\n ? { field: this.spec.encode[channel] }\n : this.setLabelTextGetter(channel, option)\n }\n }\n };\n res.marks.push(markSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultPlayer(): Record<string, Partial<PlayerSpec>> {\n return {};\n }\n\n protected parsePlayerSpec(): {\n marks: PlayerSpec[];\n interactions: InteractionSpec[];\n } {\n const player = this.spec.player;\n const res = {\n marks: [] as PlayerSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (player) {\n const option = player?.option;\n const layout = player?.layout;\n\n if (option) {\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as PlayerAttributes).orient)\n ? { position: (option as PlayerAttributes).orient }\n : { position: 'bottom' });\n\n const markSpec: PlayerSpec = {\n type: 'component',\n id: this.getComponentId('', 'player'),\n componentType: ComponentEnum.player,\n dependency: [SIGNAL_VIEW_BOX],\n playerType: isPlainObject(option) ? (option as any).type ?? 'auto' : 'auto',\n source: this.getDataIdOfPlayer(),\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: 20 }\n }\n : markLayout.position === 'right'\n ? {\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: 20 }\n }\n : markLayout.position === 'bottom'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n size: { width: params.viewBox.width(), height: 20 }\n }\n : {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { width: params.viewBox.width(), height: 20 }\n };\n\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: PlayerFilterSpec = {\n type: 'player-filter',\n source: `#${this.getComponentId('', 'player')}`,\n target: {\n data: this.getDataIdOfMain()\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n }\n\n return res;\n }\n\n protected parseTitleSpec(): {\n marks: TitleSpec[];\n interactions: InteractionSpec[];\n } {\n const title = this.spec.title;\n const res = {\n marks: [] as TitleSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (title) {\n const { option, layout } = this.parseOption<SemanticTitleOption>(title);\n\n if (option) {\n const markLayout = layout ?? { position: 'top' };\n\n const markSpec: TitleSpec = {\n type: 'component',\n componentType: ComponentEnum.title,\n dependency: [SIGNAL_VIEW_BOX],\n title: (option as SemanticTitleOption).text,\n subTitle: (option as SemanticTitleOption).subtext,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'right'\n ? {\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'bottom'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n width: params.viewBox.width()\n }\n : {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n width: params.viewBox.width()\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n res.marks.push(markSpec);\n }\n }\n\n return res;\n }\n\n protected parseDataSpec() {\n const { data, player } = this.spec;\n const res: DataSpec[] = [];\n\n if (player?.data) {\n res.push({\n id: this.getDataIdOfPlayer(),\n values: player.data\n });\n res.push({\n id: this.getDataIdOfMain(),\n values: player.data?.[0]\n });\n res.push({\n id: this.getDataIdOfFiltered(),\n source: this.getDataIdOfMain()\n });\n } else if (data) {\n const dataId = this.getDataIdOfMain();\n const userTransforms = data.transform;\n const transform = this.convertMarkTransform(userTransforms, this.setDefaultDataTransform());\n\n res.push({\n id: dataId,\n values: data.values,\n transform\n });\n res.push({\n id: this.getDataIdOfFiltered(),\n source: dataId\n });\n }\n\n const multiDatas = this.setMultipleData();\n\n if (multiDatas) {\n multiDatas.forEach(entry => {\n if (entry.id) {\n if (entry.id === this.getDataIdOfFiltered() && res.length) {\n res[res.length - 1].transform = entry.transform;\n } else {\n res.push(entry);\n }\n }\n });\n }\n\n return res;\n }\n\n protected parseScaleSpec() {\n const { encode, scale, datazoom } = this.spec;\n const scales: Record<string, ScaleSpec & { userScale?: ScaleSpec }> = {};\n if (encode) {\n Object.keys(encode).forEach(k => {\n const encodeOption = encode[k];\n const scaleId = this.getScaleId(k);\n const userScale = this.spec.scale?.[k];\n\n if (userScale) {\n scales[scaleId] = Object.assign({ id: scaleId }, this.parseScaleByEncode(k as K, encodeOption), userScale, {\n userScale\n });\n } else {\n scales[scaleId] = Object.assign({ id: scaleId }, this.parseScaleByEncode(k as K, encodeOption));\n }\n });\n }\n if (scale) {\n Object.keys(scale).forEach(k => {\n const scaleId = this.getScaleId(k);\n if (!scales[scaleId]) {\n scales[scaleId] = scale[k];\n scales[scaleId].userScale = scale[k];\n }\n });\n }\n\n if (datazoom) {\n Object.keys(datazoom).forEach(k => {\n const scaleId = this.getScaleId(k);\n const { x: xScaleId, y: yScaleId } = this.getDataZoomScaleId(k);\n\n if (k === 'x' && encode[k]) {\n scales[xScaleId] = {\n type: scales[scaleId].type,\n id: xScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: encode[k]\n },\n dependency: [SIGNAL_VIEW_BOX],\n range: (scale: IBaseScale, params: any) => {\n return [0, params.viewBox.width()];\n }\n };\n\n if ((encode as any).y) {\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n scales[yScaleId] = {\n type: scales[this.getScaleId('y')]?.type ?? 'linear',\n id: yScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: (encode as any)?.y\n },\n range: (scale: IBaseScale, params: any) => {\n const option = this.parseOption<SemanticDataZoomOption>(datazoom[k]).option;\n return [\n 0,\n isPlainObject(option)\n ? (option as DataZoomAttributes).size?.height ?? theme.components.datazoom.size.height\n : theme.components.datazoom.size.height\n ];\n }\n };\n }\n } else {\n scales[xScaleId] = {\n type: scales[scaleId].type ?? 'band',\n id: xScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: (encode as any)?.[k] ?? k\n }\n };\n }\n });\n }\n\n return Array.from(Object.values(scales));\n }\n\n protected parseCoordinateSpec(): CoordinateSpec[] {\n if (!this._coordinate) {\n return [];\n }\n const coordinate: CoordinateSpec = {\n type: this._coordinate.type ?? 'cartesian',\n transpose: this._coordinate.transpose,\n id: this._coordinate.id,\n dependency: [SIGNAL_VIEW_BOX],\n start: [0, 0],\n end: (coord: IBaseCoordinate, params: any) => {\n return [params.viewBox.width(), params.viewBox.height()];\n }\n };\n\n if (this._coordinate.type === 'polar' && this._coordinate.origin) {\n coordinate.origin = (coord: IBaseCoordinate, params: any) => {\n return [\n toPercent((this._coordinate as PolarCoordinateOption).origin[0], params.viewBox.width()),\n toPercent((this._coordinate as PolarCoordinateOption).origin[1], params.viewBox.height())\n ] as [number, number];\n };\n }\n\n return [coordinate];\n }\n\n protected setMainMarkEnterEncode() {\n return this.spec.style;\n }\n\n protected setMainMarkSpec() {\n return {};\n }\n\n protected setMultiMarksSpec(): MarkSpec[] {\n return null;\n }\n\n toViewSpec(): ViewSpec {\n this.viewSpec = {};\n const filteredDataId = this.getDataIdOfFiltered();\n this.viewSpec.data = this.parseDataSpec();\n this.viewSpec.scales = this.parseScaleSpec();\n this.viewSpec.coordinates = this.parseCoordinateSpec();\n let marks: MarkSpec[] = [];\n let interactions: InteractionSpec[] = [];\n\n const legendSpec = this.parseLegendSpec();\n marks = marks.concat(legendSpec.marks);\n interactions = interactions.concat(legendSpec.interactions);\n\n const axisSpec = this.parseAxisSpec();\n marks = marks.concat(axisSpec.marks);\n interactions = interactions.concat(axisSpec.interactions);\n\n const gridSpec = this.parseGridSpec();\n marks = marks.concat(gridSpec.marks);\n interactions = interactions.concat(gridSpec.interactions);\n\n const crosshairSpec = this.parseCrosshairSpec();\n marks = marks.concat(crosshairSpec.marks);\n interactions = interactions.concat(crosshairSpec.interactions);\n\n const sliderSpec = this.parseSliderSpec();\n marks = marks.concat(sliderSpec.marks);\n interactions = interactions.concat(sliderSpec.interactions);\n\n const datazoomSpec = this.parseDatazoomSpec();\n marks = marks.concat(datazoomSpec.marks);\n interactions = interactions.concat(datazoomSpec.interactions);\n\n const playerSpec = this.parsePlayerSpec();\n marks = marks.concat(playerSpec.marks);\n interactions = interactions.concat(playerSpec.interactions);\n\n const titleSpec = this.parseTitleSpec();\n marks = marks.concat(titleSpec.marks);\n interactions = interactions.concat(titleSpec.interactions);\n\n marks.push(\n Object.assign(\n {\n id: this.getMarkId(),\n type: this.setMarkType(),\n coordinate: this._coordinate?.id,\n from: {\n data: filteredDataId\n },\n groupBy: (this.spec.encode as any)?.group,\n layout: {\n position: 'content',\n skipBeforeLayouted: true\n },\n dependency: this.viewSpec.scales.map(scale => scale.id).concat(SIGNAL_VIEW_BOX),\n transform: this.convertMarkTransform(this.spec.transform, this.setDefaultMarkTransform()),\n animation: this.convertMarkAnimation(),\n encode: Object.assign({}, this.spec.state, {\n enter: this.setMainMarkEnterEncode(),\n update: this.convertMarkEncode(this.spec.encode)\n })\n },\n this.setMainMarkSpec()\n )\n );\n\n const otherMarks = this.setMultiMarksSpec();\n\n if (otherMarks) {\n marks = marks.concat(otherMarks);\n }\n\n const labelSpec = this.parseLabelSpec();\n marks = marks.concat(labelSpec.marks);\n interactions = interactions.concat(labelSpec.interactions);\n\n const tooltipSpec = this.parseTooltipSpec();\n marks = marks.concat(tooltipSpec.marks);\n interactions = interactions.concat(tooltipSpec.interactions);\n\n this.viewSpec.marks = marks;\n this.viewSpec.interactions = interactions;\n\n return this.viewSpec;\n }\n\n clear() {\n this.spec = { id: this.spec.id };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/semantic-mark.ts"],"names":[],"mappings":"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","file":"semantic-mark.js","sourcesContent":["import type {\n LegendBaseAttributes,\n SliderAttributes,\n DataZoomAttributes,\n BaseLabelAttrs,\n PlayerAttributes,\n OrientType\n} from '@visactor/vrender-components';\nimport type { ILogger } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n Logger,\n array,\n isArray,\n isBoolean,\n isNil,\n isPlainObject,\n maxInArray,\n merge,\n minInArray\n} from '@visactor/vutils';\nimport { isContinuous, type IBaseScale, isDiscrete } from '@visactor/vscale';\nimport type {\n ISemanticMark,\n ISemanticMarkSpec,\n ParsedSimpleEncode,\n WithDefaultEncode,\n SemanticTooltipOption,\n SemanticAxisOption,\n SemanticPlayerOption,\n SemanticLabelOption,\n SemanticDataZoomOption,\n SemanticSliderOption,\n SemanticLegendOption,\n SemanticCrosshairOption,\n CoordinateOption,\n PolarCoordinateOption,\n AxisSpec,\n CrosshairSpec,\n DatazoomSpec,\n LabelSpec,\n LegendSpec,\n PlayerSpec,\n SliderSpec,\n TooltipSpec,\n CoordinateSpec,\n DataSpec,\n ChannelEncodeType,\n ScaleSpec,\n TransformSpec,\n MarkAnimationSpec,\n ViewSpec,\n MarkType,\n Nil,\n ValueOf,\n GenerateBaseEncodeSpec,\n IElement,\n IAnimationConfig,\n MarkSpec,\n MarkRelativeItemSpec,\n IPlot,\n SemanticTooltipContentItem,\n SemanticGridOption,\n GridSpec,\n TitleSpec,\n SemanticTitleOption,\n InteractionSpec,\n LegendFilterSpec,\n SliderFilterSpec,\n DatazoomFilterSpec,\n PlayerFilterSpec,\n DimensionTooltipSpec\n} from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentEnum, SIGNAL_VIEW_BOX, BuiltInEncodeNames, ThemeManager, Factory } from '@visactor/vgrammar-core';\nimport { field as getFieldAccessor, isHorizontal, isVertical, toPercent } from '@visactor/vgrammar-util';\nimport type { IBaseCoordinate } from '@visactor/vgrammar-coordinate';\nimport type { ITextAttribute } from '@visactor/vrender-core';\n\nlet semanticMarkId = -1;\n\nexport abstract class SemanticMark<EncodeSpec, K extends string> implements ISemanticMark<EncodeSpec, K> {\n //declare type: T;\n spec: ISemanticMarkSpec<EncodeSpec, K>;\n viewSpec?: ViewSpec;\n\n readonly uid: number;\n protected _logger: ILogger;\n protected _coordinate: CoordinateOption;\n readonly type: string;\n readonly plot: IPlot;\n\n constructor(type: string, id?: string | number, plot?: IPlot) {\n this.type = type;\n this.uid = ++semanticMarkId;\n this._logger = Logger.getInstance();\n this.plot = plot;\n\n this.spec = { id: id ?? `${this.type}-${this.uid}` };\n }\n\n parseSpec(spec: Partial<ISemanticMarkSpec<EncodeSpec, K>>) {\n if (isNil(spec.id)) {\n spec.id = this.spec.id;\n }\n this.spec = spec as ISemanticMarkSpec<EncodeSpec, K>;\n return this;\n }\n\n coordinate(option: CoordinateOption) {\n this._coordinate = option;\n return this;\n }\n\n data(values: any, transform?: TransformSpec[], id?: string) {\n if (isNil(values)) {\n return this;\n }\n\n this.spec.data = { values, transform, id };\n return this;\n }\n\n encode(channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>) {\n if (!this.spec.encode) {\n this.spec.encode = {};\n }\n this.spec.encode[channel] = option;\n\n return this;\n }\n scale(channel: string, option: Partial<ScaleSpec>) {\n if (!this.spec.scale) {\n this.spec.scale = {};\n }\n\n this.spec.scale[channel] = option;\n return this;\n }\n style(style: Partial<EncodeSpec & any>) {\n this.spec.style = style;\n return this;\n }\n transform(option: TransformSpec | TransformSpec[]) {\n this.spec.transform = array(option) as TransformSpec[];\n\n return this;\n }\n state(state: string, option: Partial<EncodeSpec>) {\n if (\n (\n [\n BuiltInEncodeNames.enter,\n BuiltInEncodeNames.update,\n BuiltInEncodeNames.exit,\n BuiltInEncodeNames.group\n ] as string[]\n ).includes(state)\n ) {\n this._logger.warn(\n `[VGrammar]: ${state} is a reserved keyword to specify the encode of different data state, \n don't use this keyword`\n );\n\n return;\n }\n\n if (!this.spec.state) {\n this.spec.state = {};\n }\n this.spec.state[state] = option;\n return this;\n }\n animate(state: string, option: IAnimationConfig | IAnimationConfig[]) {\n if (state === 'state') {\n this._logger.warn(\n `[VGrammar]: ${state} is a keyword use to specify state animation config, don't use this keyword`\n );\n\n return this;\n }\n\n if (!this.spec.animation) {\n this.spec.animation = {};\n }\n\n this.spec.animation[state] = option;\n\n return this;\n }\n axis(channel: string, option: SemanticAxisOption | boolean = true, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('axis')) {\n this._logger.error(\n `Please add this line of code: import { registerAxis } from '@visactor/vgrammar-core'; \n and run \"registerAxis();\" or \"View.useRegisters([registerAxis]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.axis) {\n this.spec.axis = {};\n }\n this.spec.axis[channel] = { option, layout };\n\n return this;\n }\n\n grid(channel: string, option: SemanticGridOption | boolean = true) {\n if (!Factory.hasComponent('grid')) {\n this._logger.error(\n `Please add this line of code: import { registerGrid } from '@visactor/vgrammar-core'; \n and run \"registerGrid();\" or \"View.useRegisters([registerGrid]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.grid) {\n this.spec.grid = {};\n }\n this.spec.grid[channel] = option;\n\n return this;\n }\n\n legend(channel: string, option: SemanticLegendOption | boolean = true, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('legend')) {\n this._logger.error(\n `Please add this line of code: import { registerLegend } from '@visactor/vgrammar-core'; \n and run \"registerLegend();\" or \"View.useRegisters([registerLegend]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.legend) {\n this.spec.legend = {};\n }\n\n this.spec.legend[channel] = { option, layout };\n\n return this;\n }\n crosshair(channel: string, option?: SemanticCrosshairOption | boolean) {\n if (!Factory.hasComponent('crosshair')) {\n this._logger.error(\n `Please add this line of code: import { registerCrosshair } from '@visactor/vgrammar-core'; \n and run \"registerCrosshair();\" or \"View.useRegisters([registerCrosshair]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.crosshair) {\n this.spec.crosshair = {};\n }\n\n this.spec.crosshair[channel] = option;\n\n return this;\n }\n tooltip(option: SemanticTooltipOption | boolean) {\n if (!Factory.hasComponent('tooltip')) {\n this._logger.error(\n `Please add this line of code: import { registerTooltip } from '@visactor/vgrammar-core'; \n and run \"registerTooltip();\" or \"View.useRegisters([registerTooltip]);\" `\n );\n\n return this;\n }\n\n this.spec.tooltip = option;\n\n return this;\n }\n\n slider(channel: string, option?: SemanticSliderOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('slider')) {\n this._logger.error(\n `Please add this line of code: import { registerSlider } from '@visactor/vgrammar-core'; \n and run \"registerSlider();\" or \"View.useRegisters([registerSlider]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.slider) {\n this.spec.slider = {};\n }\n\n this.spec.slider[channel] = { option, layout };\n\n return this;\n }\n datazoom(channel: string, option?: SemanticDataZoomOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('datazoom')) {\n this._logger.error(\n `Please add this line of code: import { registerDataZoom } from '@visactor/vgrammar-core'; \n and run \"registerDataZoom();\" or \"View.useRegisters([registerDataZoom]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.datazoom) {\n this.spec.datazoom = {};\n }\n\n this.spec.datazoom[channel] = { option, layout };\n\n return this;\n }\n label(channel: string, option?: SemanticLabelOption | boolean) {\n if (!Factory.hasComponent('label')) {\n this._logger.error(\n `Please add this line of code: import { registerLabel } from '@visactor/vgrammar-core'; \n and run \"registerLabel();\" or \"View.useRegisters([registerLabel]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.label) {\n this.spec.label = {};\n }\n\n this.spec.label[channel] = option;\n\n return this;\n }\n player(data?: any[], option?: SemanticPlayerOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('player')) {\n this._logger.error(\n `Please add this line of code: import { registerPlayer } from '@visactor/vgrammar-core'; \n and run \"registerPlayer();\" or \"View.useRegisters([registerPlayer]);\" `\n );\n\n return this;\n }\n\n this.spec.player = { data, option, layout };\n\n return this;\n }\n\n title(option: SemanticTitleOption, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('title')) {\n this._logger.error(\n `Please add this line of code: import { registerTitle } from '@visactor/vgrammar-core'; \n and run \"registerTitle();\" or \"View.useRegisters([registerTitle]);\" `\n );\n\n return this;\n }\n\n this.spec.title = { option, layout };\n\n return this;\n }\n\n protected getPalette() {\n return (this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme()).palette?.default;\n }\n\n abstract setMarkType(): MarkType;\n abstract parseScaleByEncode(channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil;\n abstract convertMarkEncode(encode: WithDefaultEncode<EncodeSpec, K>): GenerateBaseEncodeSpec<EncodeSpec>;\n\n protected setDefaultDataTransform(): TransformSpec[] {\n return [];\n }\n\n protected setMultipleData(): DataSpec[] {\n return null;\n }\n\n protected setDefaultMarkTransform(): TransformSpec[] {\n return [];\n }\n\n protected convertMarkTransform(userTransform: TransformSpec[], defaultTransform: TransformSpec[] = []) {\n if (defaultTransform && defaultTransform.length) {\n if (userTransform && userTransform.length) {\n let transforms = [];\n const excludeIndex = [];\n\n for (let i = 0, len = userTransform.length; i < len; i++) {\n const customizedSpec = userTransform[i];\n const index = defaultTransform.findIndex(entry => entry.type === customizedSpec.type);\n\n if (index >= 0) {\n transforms.push(merge({}, defaultTransform[index], customizedSpec));\n excludeIndex.push(index);\n } else {\n transforms.push(customizedSpec);\n }\n }\n\n for (let j = 0, dlen = defaultTransform.length; j < dlen; j++) {\n if (!excludeIndex.includes(j)) {\n transforms = [defaultTransform[j]].concat(transforms);\n }\n }\n\n return transforms;\n }\n\n return defaultTransform;\n }\n\n return userTransform;\n }\n\n protected convertMarkAnimation(): MarkAnimationSpec {\n if (!this.spec.animation) {\n return null;\n }\n\n return this.spec.animation;\n }\n\n protected convertSimpleMarkEncode(encode: WithDefaultEncode<EncodeSpec, K>): ParsedSimpleEncode<EncodeSpec, K> {\n if (!encode) {\n return {};\n }\n\n const markEncoder = {};\n\n Object.keys(encode).map(channel => {\n markEncoder[channel] = { field: encode[channel], scale: this.getScaleId(channel), band: 0.5 };\n });\n\n return markEncoder;\n }\n\n protected getDataIdOfFiltered() {\n return `${this.spec.data?.id ?? this.spec.id}-data-filtered`;\n }\n\n protected getDataIdOfMain() {\n return `${this.spec.data?.id ?? this.spec.id}-data`;\n }\n\n protected getDataIdOfPlayer() {\n return `${this.spec.data?.id ?? this.spec.id}-player`;\n }\n\n protected getDataZoomScaleId(channel: string) {\n return {\n x: `datazoom-scale-${channel}-x`,\n y: `datazoom-scale-${channel}-y`\n };\n }\n\n protected getScaleId(channel: string) {\n return this.spec.scale?.[channel]?.id ?? `scale-${channel}`;\n }\n\n protected getMarkId() {\n return `${this.spec.id}-mark`;\n }\n\n protected getComponentId(id: string, component?: string) {\n return `${this.spec.id}-${component ?? 'component'}-${id}`;\n }\n\n protected getScaleSpec(scaleId: string) {\n return this.viewSpec?.scales?.find?.(scale => scale.id === scaleId);\n }\n\n protected parseScaleOfEncodeX(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'band',\n id: this.getScaleId('x'),\n dependency: [SIGNAL_VIEW_BOX],\n domain: {\n data: this.getDataIdOfFiltered(),\n field: option as string\n },\n range: this._coordinate\n ? { coordinate: this._coordinate.id, dimension: 'x' }\n : (scale: IBaseScale, params: any) => {\n return [0, params.viewBox.width()];\n }\n };\n }\n\n protected parseScaleOfEncodeY(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'linear',\n dependency: [SIGNAL_VIEW_BOX],\n id: this.getScaleId('y'),\n domain: {\n data: this.getDataIdOfFiltered(),\n field: option as string\n },\n range: this._coordinate\n ? { coordinate: this._coordinate.id, dimension: 'y' }\n : (scale: IBaseScale, params: any) => {\n return [params.viewBox.height(), 0];\n }\n };\n }\n\n protected parseScaleOfEncodeColor(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('color'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfEncodeStroke(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('stroke'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfEncodeGroup(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('group'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfCommonEncode(\n channel: K,\n option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>\n ): ScaleSpec | Nil {\n if (channel === 'x') {\n return this.parseScaleOfEncodeX(option);\n }\n\n if (channel === 'y') {\n return this.parseScaleOfEncodeY(option);\n }\n\n if (channel === 'color') {\n return this.parseScaleOfEncodeColor(option);\n }\n\n if (channel === 'group') {\n return this.parseScaleOfEncodeGroup(option);\n }\n\n if (channel === 'stroke') {\n return this.parseScaleOfEncodeStroke(option);\n }\n\n return null;\n }\n\n protected setDefaultAxis(): Record<string, Partial<AxisSpec>> {\n return {};\n }\n\n protected parseAxisSpec(): {\n marks: AxisSpec[];\n interactions: InteractionSpec[];\n } {\n const axis = this.spec.axis;\n const res = {\n marks: [] as AxisSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (axis) {\n Object.keys(axis).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticAxisOption>(axis[channel]);\n\n if (option) {\n const axisMarkSpec: AxisSpec = {\n type: 'component',\n componentType: ComponentEnum.axis,\n scale: this.getScaleId(channel),\n dependency: [SIGNAL_VIEW_BOX],\n tickCount: (option as SemanticAxisOption).tickCount,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const positionAttrs = this._coordinate\n ? {}\n : channel === 'x'\n ? {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n end: { x: params.viewBox.width(), y: 0 }\n }\n : {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n verticalFactor: -1,\n end: { x: 0, y: -params.viewBox.height() }\n };\n\n return isPlainObject(option) ? merge(positionAttrs, option) : positionAttrs;\n }\n }\n };\n axisMarkSpec.layout = layout ?? {\n position: this._coordinate\n ? 'auto'\n : isPlainObject(layout) && !isNil((layout as SemanticAxisOption).orient)\n ? (layout as SemanticAxisOption).orient\n : channel === 'x'\n ? 'bottom'\n : 'left'\n };\n res.marks.push(axisMarkSpec);\n }\n });\n }\n\n return res;\n }\n\n protected parseGridSpec(): {\n marks: GridSpec[];\n interactions: InteractionSpec[];\n } {\n const grid = this.spec.grid;\n const res = {\n marks: [] as GridSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (grid) {\n Object.keys(grid).forEach(channel => {\n const option = grid[channel];\n\n if (option) {\n const relatedAxisOption = this.parseOption<SemanticAxisOption>(this.spec.axis?.[channel])?.option;\n const visiualChannel = this.getVisualChannel(channel as 'x' | 'y');\n const isCircleGrid = visiualChannel === 'radius';\n const tickCount =\n (option as SemanticGridOption).tickCount ?? (relatedAxisOption as SemanticAxisOption)?.tickCount;\n const otherChannel = channel === 'x' ? 'y' : 'x';\n const otherScaleId = this.getScaleId(otherChannel);\n const otherAxisOption = this.parseOption<SemanticAxisOption>(this.spec.axis?.[otherChannel])?.option;\n\n const markSpec: GridSpec = {\n type: 'component',\n componentType: ComponentEnum.grid,\n scale: this.getScaleId(channel),\n dependency: [SIGNAL_VIEW_BOX, otherScaleId],\n tickCount: tickCount,\n inside: (option as SemanticGridOption).inside,\n baseValue: (option as SemanticGridOption).baseValue,\n gridType: visiualChannel === 'angle' ? 'circle' : 'line',\n gridShape: isCircleGrid ? (option.type === 'polygon' ? 'polygon' : 'circle') : 'line',\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const positionAttrs = this._coordinate\n ? {}\n : channel === 'x'\n ? {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n end: { x: params.viewBox.width(), y: 0 },\n length: params.viewBox.height()\n }\n : {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n verticalFactor: -1,\n end: { x: 0, y: -params.viewBox.height() },\n length: params.viewBox.width()\n };\n\n if (isCircleGrid && option.type === 'polygon') {\n (positionAttrs as any).sides =\n option?.sides ??\n params[otherScaleId]?.ticks((otherAxisOption as SemanticAxisOption)?.tickCount)?.length;\n }\n\n return isPlainObject(option) ? merge(positionAttrs, option) : positionAttrs;\n }\n }\n };\n\n res.marks.push(markSpec);\n }\n });\n }\n\n return res;\n }\n\n protected parseOption<T>(spec: { option: T | boolean; layout?: MarkRelativeItemSpec } | T | boolean) {\n let option: T | boolean;\n let layout: MarkRelativeItemSpec;\n\n if (isPlainObject(spec)) {\n if (isNil((spec as any).option)) {\n option = spec as T;\n } else {\n option = (spec as { option: T | boolean; layout?: MarkRelativeItemSpec }).option;\n layout = (spec as { option: T | boolean; layout?: MarkRelativeItemSpec }).layout;\n }\n } else {\n option = spec;\n }\n\n return { option, layout };\n }\n\n protected setDefaultLegend(): Record<string, Partial<LegendSpec>> {\n return {};\n }\n\n protected parseLegendSpec(): {\n marks: LegendSpec[];\n interactions: InteractionSpec[];\n } {\n const legend = this.spec.legend;\n const res = {\n marks: [] as LegendSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (legend) {\n Object.keys(legend).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticLegendOption>(legend[channel]);\n\n if (option) {\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as LegendBaseAttributes).layout)\n ? isHorizontal((option as LegendBaseAttributes).layout)\n ? { position: 'top', align: 'center' }\n : isVertical((option as LegendBaseAttributes).layout)\n ? { position: 'right', align: 'middle' }\n : { position: 'top', align: 'center' }\n : { position: 'top', align: 'center' });\n const markSpec: LegendSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'legend'),\n componentType: ComponentEnum.legend,\n scale: this.getScaleId(channel),\n shapeScale: this.getScaleId('shape'),\n dependency: [SIGNAL_VIEW_BOX],\n encode: {\n update: (datum: any, element: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n layout: 'vertical',\n x: element.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: element.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'right'\n ? {\n layout: 'vertical',\n x: element.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: element.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'bottom'\n ? {\n layout: 'horizontal',\n x: element.mark?.relativePosition?.left ?? 0,\n y: element.mark?.relativePosition?.top ?? params.viewBox.height()\n }\n : {\n layout: 'horizontal',\n x: element.mark?.relativePosition?.left ?? 0,\n y: element.mark?.relativePosition?.top ?? 0\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: LegendFilterSpec = {\n type: 'legend-filter',\n source: `#${this.getComponentId(channel, 'legend')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultCrosshair(): Record<string, Pick<CrosshairSpec, 'crosshairShape' | 'crosshairType'>> {\n return {};\n }\n\n protected getVisualChannel(channel: 'x' | 'y'): 'x' | 'y' | 'angle' | 'radius' {\n if (this._coordinate?.type === 'polar') {\n return this._coordinate.transpose ? (channel === 'x' ? 'radius' : 'angle') : channel === 'x' ? 'angle' : 'radius';\n }\n\n return (this._coordinate?.transpose ? (channel === 'x' ? 'y' : 'x') : channel) as 'x' | 'y' | 'angle' | 'radius';\n }\n\n protected parseCrosshairSpec(): {\n marks: MarkSpec[];\n interactions: CrosshairSpec[];\n } {\n const defaultCrosshair = this.setDefaultCrosshair();\n const defaultKeys = Object.keys(defaultCrosshair);\n const crosshairKeys = this.spec.crosshair\n ? Object.keys(this.spec.crosshair).reduce((res, key) => {\n if (!res.includes(key)) {\n res.push(key);\n }\n return res;\n }, defaultKeys)\n : defaultKeys;\n const res = {\n marks: [] as MarkSpec[],\n interactions: [] as CrosshairSpec[]\n };\n\n if (crosshairKeys.length) {\n crosshairKeys.forEach(channel => {\n const userOption = this.spec.crosshair?.[channel];\n const option = userOption ?? defaultCrosshair[channel];\n\n if (option) {\n const scaleId = this.getScaleId(channel);\n const scaleSpec = this.getScaleSpec(scaleId);\n const interactionSpec: CrosshairSpec = {\n type: 'crosshair',\n scale: this.getScaleId(channel),\n crosshairShape: isBoolean(option)\n ? scaleSpec?.type === 'band'\n ? 'rect'\n : 'line'\n : (option as CrosshairSpec).crosshairShape ?? (scaleSpec?.type === 'band' ? 'rect' : 'line'),\n crosshairType: this.getVisualChannel(channel as 'x' | 'y'),\n container: '#plotContainer'\n };\n\n if (isPlainObject(userOption)) {\n interactionSpec.attributes = userOption;\n if (userOption.type === 'polygon') {\n interactionSpec.crosshairType = 'radius-polygon';\n const anotherDimScaleId = this.getScaleId(channel === 'x' ? 'y' : 'x');\n (interactionSpec.attributes as any).sides = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.domain().length : undefined;\n };\n (interactionSpec.attributes as any).startAngle = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.range()[0] + (scale?.bandwidth?.() ?? 0) / 2 : undefined;\n };\n (interactionSpec.attributes as any).endAngle = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.range()[1] + (scale?.bandwidth?.() ?? 0) / 2 : undefined;\n };\n interactionSpec.dependency = [anotherDimScaleId];\n }\n }\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultTooltip(): SemanticTooltipOption | Nil {\n return null;\n }\n\n protected parseTooltipSpec(): {\n marks: MarkSpec[];\n interactions: InteractionSpec[];\n } {\n const defaultTooltipSpec = this.setDefaultTooltip();\n const userTooltipSpec = this.spec.tooltip;\n const res = {\n marks: [] as MarkSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (userTooltipSpec !== false && userTooltipSpec !== null && defaultTooltipSpec !== null) {\n const tooltipSpec = merge({}, defaultTooltipSpec, userTooltipSpec === true ? {} : userTooltipSpec);\n const colorChannel = isNil((this.spec.encode as any).color)\n ? isNil((this.spec.encode as any).group)\n ? 'stroke'\n : 'group'\n : 'color';\n const colorEncode = (this.spec.encode as any)[colorChannel];\n const dependency = colorEncode ? [this.getScaleId(colorChannel)] : [];\n const colorAccessor = colorEncode ? getFieldAccessor(colorEncode) : null;\n const title = {\n visible: !!tooltipSpec.title || !!tooltipSpec.staticTitle,\n key: 'title',\n value: !isNil(tooltipSpec.staticTitle)\n ? tooltipSpec.staticTitle\n : {\n field: (datum: any, el: IElement, params: any) => {\n return tooltipSpec.title\n ? getFieldAccessor(tooltipSpec.title)(isArray(datum) ? datum[0] : datum)\n : undefined;\n }\n }\n };\n\n if ((this.spec.encode as any).shape) {\n dependency.push(this.getScaleId('shape'));\n }\n const content =\n isArray(tooltipSpec.content) && tooltipSpec.content.length\n ? tooltipSpec.content.map((entry: SemanticTooltipContentItem, index: number) => {\n return {\n key: entry.key\n ? { field: entry.key }\n : !isNil(tooltipSpec.staticContentKey)\n ? isArray(tooltipSpec.staticContentKey)\n ? tooltipSpec.staticContentKey[index]\n : tooltipSpec.staticContentKey\n : (datum: any, params: any) => {\n return colorAccessor ? colorAccessor(datum) : undefined;\n },\n value: { field: entry.value },\n symbol: (datum: any, params: any) => {\n const scale = params[this.getScaleId(colorChannel)];\n const shapeScale = params[this.getScaleId('shape')];\n let symbolType = 'circle';\n if (shapeScale && entry.symbol) {\n symbolType = shapeScale.scale(getFieldAccessor(entry.symbol)(datum));\n } else if (entry.symbol) {\n symbolType = getFieldAccessor(entry.symbol)(datum);\n }\n return {\n fill: scale && colorAccessor ? scale.scale(colorAccessor(datum)) : this.getPalette()?.[0],\n symbolType\n };\n }\n };\n })\n : null;\n if (tooltipSpec.disableGraphicTooltip !== true) {\n const interactionSpec: TooltipSpec = {\n type: 'tooltip',\n selector: `#${this.getMarkId()}`,\n title,\n content,\n attributes: {\n zIndex: 1000\n },\n dependency: [this.getScaleId(colorChannel), this.getScaleId('shape')]\n };\n res.interactions.push(interactionSpec);\n }\n\n if (tooltipSpec.disableDimensionTooltip !== true) {\n const channel = tooltipSpec.dimensionTooltipChannel ?? 'x';\n const interactionSpec: DimensionTooltipSpec = {\n type: 'dimension-tooltip',\n tooltipType: this.getVisualChannel(channel as 'x' | 'y'),\n scale: this.getScaleId(channel),\n target: { data: this.getDataIdOfFiltered(), filter: (this.spec.encode as any)?.[channel] },\n title,\n content,\n avoidMark: tooltipSpec.disableGraphicTooltip ? [] : [`#${this.getMarkId()}`],\n attributes: {\n zIndex: 1000\n },\n dependency: [this.getScaleId(colorChannel), this.getScaleId('shape')]\n };\n res.interactions.push(interactionSpec);\n }\n\n return res;\n }\n\n return res;\n }\n\n protected setDefaultSlider(): Record<string, Partial<SliderSpec>> {\n return {};\n }\n\n protected parseSliderSpec(): {\n marks: SliderSpec[];\n interactions: InteractionSpec[];\n } {\n const slider = this.spec.slider;\n const res = {\n marks: [] as SliderSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (slider) {\n Object.keys(slider).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticSliderOption>(slider[channel]);\n\n if (option) {\n const scaleId = this.getScaleId(channel);\n const scaleSpec = this.getScaleSpec(scaleId);\n const dataId = this.getDataIdOfMain();\n\n if (!scaleSpec || !isContinuous(scaleSpec.type)) {\n this._logger.warn(`[VGrammar]: Don't use slider in a channel which has scale type = ${scaleSpec?.type}`);\n return;\n }\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n const getter = getFieldAccessor(this.spec.encode?.[channel]);\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as SliderAttributes).layout)\n ? isHorizontal((option as SliderAttributes).layout)\n ? { position: 'top', align: 'center' }\n : isVertical((option as SliderAttributes).layout)\n ? { position: 'right', align: 'middle' }\n : { position: 'top', align: 'center' }\n : { position: 'top', align: 'center' });\n\n const markSpec: SliderSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'slider'),\n componentType: ComponentEnum.slider,\n dependency: [SIGNAL_VIEW_BOX, dataId],\n min: (datum: any, elment: IElement, params: any) => {\n const data = params[dataId];\n\n return minInArray(data.map(getter));\n },\n max: (datum: any, elment: IElement, params: any) => {\n const data = params[dataId];\n\n return maxInArray(data.map(getter));\n },\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n layout: 'vertical',\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n railWidth: theme.components.slider.railHeight,\n railHeight: params.viewBox.height()\n }\n : markLayout.position === 'right'\n ? {\n layout: 'vertical',\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n railWidth: theme.components.slider.railHeight,\n railHeight: params.viewBox.height()\n }\n : markLayout.position === 'bottom'\n ? {\n layout: 'horizontal',\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n railHeight: theme.components.slider.railHeight,\n railWidth: params.viewBox.width()\n }\n : {\n layout: 'horizontal',\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n railHeight: theme.components.slider.railHeight,\n railWidth: params.viewBox.width()\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: SliderFilterSpec = {\n type: 'slider-filter',\n source: `#${this.getComponentId(channel, 'slider')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultDataZoom(): Record<string, Partial<DatazoomSpec>> {\n return {};\n }\n\n protected getVisiualPositionByDimension(channel: string) {\n return channel === 'y' ? 'left' : 'bottom';\n }\n\n protected parseDatazoomSpec(): {\n marks: DatazoomSpec[];\n interactions: InteractionSpec[];\n } {\n const datazoom = this.spec.datazoom;\n const res = {\n marks: [] as DatazoomSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (datazoom) {\n Object.keys(datazoom).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticDataZoomOption>(datazoom[channel]);\n\n if (option) {\n const dataId = this.getDataIdOfMain();\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as DataZoomAttributes).orient)\n ? { position: (option as DataZoomAttributes).orient }\n : { position: this.getVisiualPositionByDimension(channel) });\n const preview: DatazoomSpec['preview'] = {\n data: dataId\n };\n const { x, y } = this.getDataZoomScaleId(channel);\n\n if (channel === 'x') {\n preview.x = { scale: x, field: this.spec.encode?.[channel] };\n preview.y = { scale: y, field: (this.spec.encode as any)?.y };\n } else {\n preview[markLayout.position === 'top' || markLayout.position === 'bottom' ? 'x' : 'y'] = {\n scale: x,\n field: (this.spec.encode as any)?.[channel] ?? channel\n };\n }\n\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n const markSpec: DatazoomSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'datazoom'),\n componentType: ComponentEnum.datazoom,\n dependency: [SIGNAL_VIEW_BOX, dataId],\n preview,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: theme.components.datazoom.size.height }\n }\n : markLayout.position === 'right'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: theme.components.datazoom.size.height }\n }\n : markLayout.position === 'bottom'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n size: { width: params.viewBox.width(), height: theme.components.datazoom.size.height }\n }\n : {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { width: params.viewBox.width(), height: theme.components.datazoom.size.height }\n };\n\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: DatazoomFilterSpec = {\n type: 'datazoom-filter',\n source: `#${this.getComponentId(channel, 'datazoom')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultLabel(): Record<string, Partial<LabelSpec>> {\n return {};\n }\n\n protected getLabelPosition(): string {\n if (this._coordinate?.type === 'polar') {\n return this._coordinate.transpose ? 'endAngle' : 'outer';\n }\n\n return this._coordinate?.transpose ? 'right' : 'top';\n }\n\n protected setLabelTextGetter(\n channel: string,\n option: SemanticLabelOption | boolean\n ): ChannelEncodeType<ITextAttribute['text']> {\n return { field: channel };\n }\n\n protected parseLabelSpec(): {\n marks: LabelSpec[];\n interactions: InteractionSpec[];\n } {\n const label = this.spec.label;\n const res = {\n marks: [] as LabelSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (label) {\n Object.keys(label).forEach(channel => {\n const option = label[channel];\n\n if (option) {\n const markSpec: LabelSpec = {\n type: 'component',\n componentType: ComponentEnum.label,\n target: this.getMarkId(),\n layout: {\n position: 'content',\n skipBeforeLayouted: true\n },\n labelStyle: isPlainObject(option)\n ? merge(\n {\n position: this.getLabelPosition()\n },\n option as BaseLabelAttrs\n )\n : { position: this.getLabelPosition() },\n encode: {\n update: {\n text: this.spec.encode[channel]\n ? { field: this.spec.encode[channel] }\n : this.setLabelTextGetter(channel, option)\n }\n }\n };\n res.marks.push(markSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultPlayer(): Record<string, Partial<PlayerSpec>> {\n return {};\n }\n\n protected parsePlayerSpec(): {\n marks: PlayerSpec[];\n interactions: InteractionSpec[];\n } {\n const player = this.spec.player;\n const res = {\n marks: [] as PlayerSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (player) {\n const option = player?.option;\n const layout = player?.layout;\n\n if (option) {\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as PlayerAttributes).orient)\n ? { position: (option as PlayerAttributes).orient }\n : { position: 'bottom' });\n\n const markSpec: PlayerSpec = {\n type: 'component',\n id: this.getComponentId('', 'player'),\n componentType: ComponentEnum.player,\n dependency: [SIGNAL_VIEW_BOX],\n playerType: isPlainObject(option) ? (option as any).type ?? 'auto' : 'auto',\n source: this.getDataIdOfPlayer(),\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: 20 }\n }\n : markLayout.position === 'right'\n ? {\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: 20 }\n }\n : markLayout.position === 'bottom'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n size: { width: params.viewBox.width(), height: 20 }\n }\n : {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { width: params.viewBox.width(), height: 20 }\n };\n\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: PlayerFilterSpec = {\n type: 'player-filter',\n source: `#${this.getComponentId('', 'player')}`,\n target: {\n data: this.getDataIdOfMain()\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n }\n\n return res;\n }\n\n protected parseTitleSpec(): {\n marks: TitleSpec[];\n interactions: InteractionSpec[];\n } {\n const title = this.spec.title;\n const res = {\n marks: [] as TitleSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (title) {\n const { option, layout } = this.parseOption<SemanticTitleOption>(title);\n\n if (option) {\n const markLayout = layout ?? { position: 'top' };\n\n const markSpec: TitleSpec = {\n type: 'component',\n componentType: ComponentEnum.title,\n dependency: [SIGNAL_VIEW_BOX],\n title: (option as SemanticTitleOption).text,\n subTitle: (option as SemanticTitleOption).subtext,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'right'\n ? {\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'bottom'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n width: params.viewBox.width()\n }\n : {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n width: params.viewBox.width()\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n res.marks.push(markSpec);\n }\n }\n\n return res;\n }\n\n protected parseDataSpec() {\n const { data, player } = this.spec;\n const res: DataSpec[] = [];\n\n if (player?.data) {\n res.push({\n id: this.getDataIdOfPlayer(),\n values: player.data\n });\n res.push({\n id: this.getDataIdOfMain(),\n values: player.data?.[0]\n });\n res.push({\n id: this.getDataIdOfFiltered(),\n source: this.getDataIdOfMain()\n });\n } else if (data) {\n const dataId = this.getDataIdOfMain();\n const userTransforms = data.transform;\n const transform = this.convertMarkTransform(userTransforms, this.setDefaultDataTransform());\n\n res.push({\n id: dataId,\n values: data.values,\n transform\n });\n res.push({\n id: this.getDataIdOfFiltered(),\n source: dataId\n });\n }\n\n const multiDatas = this.setMultipleData();\n\n if (multiDatas) {\n multiDatas.forEach(entry => {\n if (entry.id) {\n if (entry.id === this.getDataIdOfFiltered() && res.length) {\n res[res.length - 1].transform = entry.transform;\n } else {\n res.push(entry);\n }\n }\n });\n }\n\n return res;\n }\n\n protected parseScaleSpec() {\n const { encode, scale, datazoom } = this.spec;\n const scales: Record<string, ScaleSpec & { userScale?: ScaleSpec }> = {};\n if (encode) {\n Object.keys(encode).forEach(k => {\n const encodeOption = encode[k];\n const scaleId = this.getScaleId(k);\n const userScale = this.spec.scale?.[k];\n\n if (userScale) {\n scales[scaleId] = Object.assign({ id: scaleId }, this.parseScaleByEncode(k as K, encodeOption), userScale, {\n userScale\n });\n } else {\n scales[scaleId] = Object.assign({ id: scaleId }, this.parseScaleByEncode(k as K, encodeOption));\n }\n });\n }\n if (scale) {\n Object.keys(scale).forEach(k => {\n const scaleId = this.getScaleId(k);\n if (!scales[scaleId]) {\n scales[scaleId] = scale[k];\n scales[scaleId].userScale = scale[k];\n }\n });\n }\n\n if (datazoom) {\n Object.keys(datazoom).forEach(k => {\n const scaleId = this.getScaleId(k);\n const { x: xScaleId, y: yScaleId } = this.getDataZoomScaleId(k);\n\n if (k === 'x' && encode[k]) {\n scales[xScaleId] = {\n type: scales[scaleId].type,\n id: xScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: encode[k]\n },\n dependency: [SIGNAL_VIEW_BOX],\n range: (scale: IBaseScale, params: any) => {\n return [0, params.viewBox.width()];\n }\n };\n\n if ((encode as any).y) {\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n scales[yScaleId] = {\n type: scales[this.getScaleId('y')]?.type ?? 'linear',\n id: yScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: (encode as any)?.y\n },\n range: (scale: IBaseScale, params: any) => {\n const option = this.parseOption<SemanticDataZoomOption>(datazoom[k]).option;\n return [\n 0,\n isPlainObject(option)\n ? (option as DataZoomAttributes).size?.height ?? theme.components.datazoom.size.height\n : theme.components.datazoom.size.height\n ];\n }\n };\n }\n } else {\n scales[xScaleId] = {\n type: scales[scaleId].type ?? 'band',\n id: xScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: (encode as any)?.[k] ?? k\n }\n };\n }\n });\n }\n\n return Array.from(Object.values(scales));\n }\n\n protected parseCoordinateSpec(): CoordinateSpec[] {\n if (!this._coordinate) {\n return [];\n }\n const coordinate: CoordinateSpec = {\n type: this._coordinate.type ?? 'cartesian',\n transpose: this._coordinate.transpose,\n id: this._coordinate.id,\n dependency: [SIGNAL_VIEW_BOX],\n start: [0, 0],\n end: (coord: IBaseCoordinate, params: any) => {\n return [params.viewBox.width(), params.viewBox.height()];\n }\n };\n\n if (this._coordinate.type === 'polar' && this._coordinate.origin) {\n coordinate.origin = (coord: IBaseCoordinate, params: any) => {\n return [\n toPercent((this._coordinate as PolarCoordinateOption).origin[0], params.viewBox.width()),\n toPercent((this._coordinate as PolarCoordinateOption).origin[1], params.viewBox.height())\n ] as [number, number];\n };\n }\n\n return [coordinate];\n }\n\n protected setMainMarkEnterEncode() {\n return this.spec.style;\n }\n\n protected setMainMarkSpec() {\n return {};\n }\n\n protected setMultiMarksSpec(): MarkSpec[] {\n return null;\n }\n\n toViewSpec(): ViewSpec {\n this.viewSpec = {};\n const filteredDataId = this.getDataIdOfFiltered();\n this.viewSpec.data = this.parseDataSpec();\n this.viewSpec.scales = this.parseScaleSpec();\n this.viewSpec.coordinates = this.parseCoordinateSpec();\n let marks: MarkSpec[] = [];\n let interactions: InteractionSpec[] = [];\n\n const legendSpec = this.parseLegendSpec();\n marks = marks.concat(legendSpec.marks);\n interactions = interactions.concat(legendSpec.interactions);\n\n const axisSpec = this.parseAxisSpec();\n marks = marks.concat(axisSpec.marks);\n interactions = interactions.concat(axisSpec.interactions);\n\n const gridSpec = this.parseGridSpec();\n marks = marks.concat(gridSpec.marks);\n interactions = interactions.concat(gridSpec.interactions);\n\n const crosshairSpec = this.parseCrosshairSpec();\n marks = marks.concat(crosshairSpec.marks);\n interactions = interactions.concat(crosshairSpec.interactions);\n\n const sliderSpec = this.parseSliderSpec();\n marks = marks.concat(sliderSpec.marks);\n interactions = interactions.concat(sliderSpec.interactions);\n\n const datazoomSpec = this.parseDatazoomSpec();\n marks = marks.concat(datazoomSpec.marks);\n interactions = interactions.concat(datazoomSpec.interactions);\n\n const playerSpec = this.parsePlayerSpec();\n marks = marks.concat(playerSpec.marks);\n interactions = interactions.concat(playerSpec.interactions);\n\n const titleSpec = this.parseTitleSpec();\n marks = marks.concat(titleSpec.marks);\n interactions = interactions.concat(titleSpec.interactions);\n\n marks.push(\n Object.assign(\n {\n id: this.getMarkId(),\n type: this.setMarkType(),\n coordinate: this._coordinate?.id,\n from: {\n data: filteredDataId\n },\n groupBy: (this.spec.encode as any)?.group,\n layout: {\n position: 'content',\n skipBeforeLayouted: true\n },\n dependency: this.viewSpec.scales.map(scale => scale.id).concat(SIGNAL_VIEW_BOX),\n transform: this.convertMarkTransform(this.spec.transform, this.setDefaultMarkTransform()),\n animation: this.convertMarkAnimation(),\n encode: Object.assign({}, this.spec.state, {\n enter: this.setMainMarkEnterEncode(),\n update: this.convertMarkEncode(this.spec.encode)\n })\n },\n this.setMainMarkSpec()\n )\n );\n\n const otherMarks = this.setMultiMarksSpec();\n\n if (otherMarks) {\n marks = marks.concat(otherMarks);\n }\n\n const labelSpec = this.parseLabelSpec();\n marks = marks.concat(labelSpec.marks);\n interactions = interactions.concat(labelSpec.interactions);\n\n const tooltipSpec = this.parseTooltipSpec();\n marks = marks.concat(tooltipSpec.marks);\n interactions = interactions.concat(tooltipSpec.interactions);\n\n this.viewSpec.marks = marks;\n this.viewSpec.interactions = interactions;\n\n return this.viewSpec;\n }\n\n clear() {\n this.spec = { id: this.spec.id };\n }\n}\n"]}
@@ -4,7 +4,7 @@ import { isContinuous, isDiscrete } from "@visactor/vscale";
4
4
 
5
5
  import { ComponentEnum, SIGNAL_VIEW_BOX, BuiltInEncodeNames, ThemeManager, Factory } from "@visactor/vgrammar-core";
6
6
 
7
- import { field as getFieldAccessor, toPercent } from "@visactor/vgrammar-util";
7
+ import { field as getFieldAccessor, isHorizontal, isVertical, toPercent } from "@visactor/vgrammar-util";
8
8
 
9
9
  let semanticMarkId = -1;
10
10
 
@@ -390,10 +390,10 @@ export class SemanticMark {
390
390
  var _a;
391
391
  const {option: option, layout: layout} = this.parseOption(legend[channel]);
392
392
  if (option) {
393
- const markLayout = null != layout ? layout : isPlainObject(option) && !isNil(option.layout) ? "horizontal" === option.layout ? {
393
+ const markLayout = null != layout ? layout : isPlainObject(option) && !isNil(option.layout) ? isHorizontal(option.layout) ? {
394
394
  position: "top",
395
395
  align: "center"
396
- } : "vertical" === option.layout ? {
396
+ } : isVertical(option.layout) ? {
397
397
  position: "right",
398
398
  align: "middle"
399
399
  } : {
@@ -576,10 +576,10 @@ export class SemanticMark {
576
576
  if (option) {
577
577
  const scaleId = this.getScaleId(channel), scaleSpec = this.getScaleSpec(scaleId), dataId = this.getDataIdOfMain();
578
578
  if (!scaleSpec || !isContinuous(scaleSpec.type)) return void this._logger.warn(`[VGrammar]: Don't use slider in a channel which has scale type = ${null == scaleSpec ? void 0 : scaleSpec.type}`);
579
- const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme(), getter = getFieldAccessor(null === (_a = this.spec.encode) || void 0 === _a ? void 0 : _a[channel]), markLayout = null != layout ? layout : isPlainObject(option) && !isNil(option.layout) ? "horizontal" === option.layout ? {
579
+ const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme(), getter = getFieldAccessor(null === (_a = this.spec.encode) || void 0 === _a ? void 0 : _a[channel]), markLayout = null != layout ? layout : isPlainObject(option) && !isNil(option.layout) ? isHorizontal(option.layout) ? {
580
580
  position: "top",
581
581
  align: "center"
582
- } : "vertical" === option.layout ? {
582
+ } : isVertical(option.layout) ? {
583
583
  position: "right",
584
584
  align: "middle"
585
585
  } : {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/semantic-mark.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,KAAK,EACL,aAAa,EACb,UAAU,EACV,KAAK,EACL,UAAU,EACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAmB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAqD7E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACpH,OAAO,EAAE,KAAK,IAAI,gBAAgB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAI/E,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;AAExB,MAAM,OAAgB,YAAY;IAWhC,YAAY,IAAY,EAAE,EAAoB,EAAE,IAAY;QAC1D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,EAAE,cAAc,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACvD,CAAC;IAED,SAAS,CAAC,IAA+C;QACvD,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAClB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACxB;QACD,IAAI,CAAC,IAAI,GAAG,IAAwC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,MAAwB;QACjC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,MAAW,EAAE,SAA2B,EAAE,EAAW;QACxD,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,OAAU,EAAE,MAAoD;QACrE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SACvB;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QAEnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,OAAe,EAAE,MAA0B;QAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SACtB;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,KAAgC;QACpC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS,CAAC,MAAuC;QAC/C,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAoB,CAAC;QAEvD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,KAAa,EAAE,MAA2B;QAC9C,IAEI;YACE,kBAAkB,CAAC,KAAK;YACxB,kBAAkB,CAAC,MAAM;YACzB,kBAAkB,CAAC,IAAI;YACvB,kBAAkB,CAAC,KAAK;SAE3B,CAAC,QAAQ,CAAC,KAAK,CAAC,EACjB;YACA,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,eAAe,KAAK;+BACG,CACxB,CAAC;YAEF,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,KAAa,EAAE,MAA6C;QAClE,IAAI,KAAK,KAAK,OAAO,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,eAAe,KAAK,6EAA6E,CAClG,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SAC1B;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QAEpC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,OAAe,EAAE,SAAuC,IAAI,EAAE,MAA6B;QAC9F,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB;2EACmE,CACpE,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAE7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,SAAuC,IAAI;QAC/D,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB;2EACmE,CACpE,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QAEjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,OAAe,EAAE,SAAyC,IAAI,EAAE,MAA6B;QAClG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YACnC,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB;+EACuE,CACxE,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SACvB;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAE/C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS,CAAC,OAAe,EAAE,MAA0C;QACnE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB;qFAC6E,CAC9E,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SAC1B;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QAEtC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,MAAuC;QAC7C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB;iFACyE,CAC1E,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAE3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,OAAe,EAAE,MAAuC,EAAE,MAA6B;QAC5F,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YACnC,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB;+EACuE,CACxE,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SACvB;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAE/C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,QAAQ,CAAC,OAAe,EAAE,MAAyC,EAAE,MAA6B;QAChG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB;mFAC2E,CAC5E,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACzB;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAEjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,OAAe,EAAE,MAAsC;QAC3D,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB;6EACqE,CACtE,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SACtB;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QAElC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,IAAY,EAAE,MAAuC,EAAE,MAA6B;QACzF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YACnC,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB;+EACuE,CACxE,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAE5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAA2B,EAAE,MAA6B;QAC9D,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB;6EACqE,CACtE,CAAC;YAEF,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAErC,OAAO,IAAI,CAAC;IACd,CAAC;IAES,UAAU;;QAClB,OAAO,MAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,0CAAE,OAAO,CAAC;IAC1G,CAAC;IAMS,uBAAuB;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,eAAe;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAES,uBAAuB;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,oBAAoB,CAAC,aAA8B,EAAE,mBAAoC,EAAE;QACnG,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,EAAE;YAC/C,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,EAAE;gBACzC,IAAI,UAAU,GAAG,EAAE,CAAC;gBACpB,MAAM,YAAY,GAAG,EAAE,CAAC;gBAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;oBACxD,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;oBACxC,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;oBAEtF,IAAI,KAAK,IAAI,CAAC,EAAE;wBACd,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;wBACpE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC1B;yBAAM;wBACL,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;qBACjC;iBACF;gBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;oBAC7D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;wBAC7B,UAAU,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;qBACvD;iBACF;gBAED,OAAO,UAAU,CAAC;aACnB;YAED,OAAO,gBAAgB,CAAC;SACzB;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAES,oBAAoB;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACxB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAES,uBAAuB,CAAC,MAAwC;QACxE,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,EAAE,CAAC;SACX;QAED,MAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAChC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAChG,CAAC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAES,mBAAmB;;QAC3B,OAAO,GAAG,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,0CAAE,EAAE,mCAAI,IAAI,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAC/D,CAAC;IAES,eAAe;;QACvB,OAAO,GAAG,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,0CAAE,EAAE,mCAAI,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACtD,CAAC;IAES,iBAAiB;;QACzB,OAAO,GAAG,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,0CAAE,EAAE,mCAAI,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IACxD,CAAC;IAES,kBAAkB,CAAC,OAAe;QAC1C,OAAO;YACL,CAAC,EAAE,kBAAkB,OAAO,IAAI;YAChC,CAAC,EAAE,kBAAkB,OAAO,IAAI;SACjC,CAAC;IACJ,CAAC;IAES,UAAU,CAAC,OAAe;;QAClC,OAAO,MAAA,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,0CAAG,OAAO,CAAC,0CAAE,EAAE,mCAAI,SAAS,OAAO,EAAE,CAAC;IAC9D,CAAC;IAES,SAAS;QACjB,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC;IAES,cAAc,CAAC,EAAU,EAAE,SAAkB;QACrD,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,WAAW,IAAI,EAAE,EAAE,CAAC;IAC7D,CAAC;IAES,YAAY,CAAC,OAAe;;QACpC,OAAO,MAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,0CAAE,IAAI,mDAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACtE,CAAC;IAES,mBAAmB,CAAC,MAAoD;QAChF,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACxB,UAAU,EAAE,CAAC,eAAe,CAAC;YAC7B,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE;gBAChC,KAAK,EAAE,MAAgB;aACxB;YACD,KAAK,EAAE,IAAI,CAAC,WAAW;gBACrB,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE;gBACrD,CAAC,CAAC,CAAC,KAAiB,EAAE,MAAW,EAAE,EAAE;oBACjC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrC,CAAC;SACN,CAAC;IACJ,CAAC;IAES,mBAAmB,CAAC,MAAoD;QAChF,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,CAAC,eAAe,CAAC;YAC7B,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACxB,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE;gBAChC,KAAK,EAAE,MAAgB;aACxB;YACD,KAAK,EAAE,IAAI,CAAC,WAAW;gBACrB,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE;gBACrD,CAAC,CAAC,CAAC,KAAiB,EAAE,MAAW,EAAE,EAAE;oBACjC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;gBACtC,CAAC;SACN,CAAC;IACJ,CAAC;IAES,uBAAuB,CAAC,MAAoD;QACpF,OAAO;YACL,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC5B,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE;gBAC5B,KAAK,EAAE,MAAgB;aACxB;YACD,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;SACzB,CAAC;IACJ,CAAC;IAES,wBAAwB,CAAC,MAAoD;QACrF,OAAO;YACL,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC7B,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE;gBAC5B,KAAK,EAAE,MAAgB;aACxB;YACD,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;SACzB,CAAC;IACJ,CAAC;IAES,uBAAuB,CAAC,MAAoD;QACpF,OAAO;YACL,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC5B,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE;gBAC5B,KAAK,EAAE,MAAgB;aACxB;YACD,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;SACzB,CAAC;IACJ,CAAC;IAES,wBAAwB,CAChC,OAAU,EACV,MAAoD;QAEpD,IAAI,OAAO,KAAK,GAAG,EAAE;YACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;SACzC;QAED,IAAI,OAAO,KAAK,GAAG,EAAE;YACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;SACzC;QAED,IAAI,OAAO,KAAK,OAAO,EAAE;YACvB,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;SAC7C;QAED,IAAI,OAAO,KAAK,OAAO,EAAE;YACvB,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;SAC7C;QAED,IAAI,OAAO,KAAK,QAAQ,EAAE;YACxB,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;SAC9C;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAES,cAAc;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,aAAa;QAIrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,EAAgB;YACvB,YAAY,EAAE,EAAuB;SACtC,CAAC;QAEF,IAAI,IAAI,EAAE;YACR,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAClC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAqB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAE/E,IAAI,MAAM,EAAE;oBACV,MAAM,YAAY,GAAa;wBAC7B,IAAI,EAAE,WAAW;wBACjB,aAAa,EAAE,aAAa,CAAC,IAAI;wBACjC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;wBAC/B,UAAU,EAAE,CAAC,eAAe,CAAC;wBAC7B,SAAS,EAAG,MAA6B,CAAC,SAAS;wBACnD,MAAM,EAAE;4BACN,MAAM,EAAE,CAAC,KAAU,EAAE,MAAgB,EAAE,MAAW,EAAE,EAAE;gCACpD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW;oCACpC,CAAC,CAAC,EAAE;oCACJ,CAAC,CAAC,OAAO,KAAK,GAAG;wCACjB,CAAC,CAAC;4CACE,CAAC,EAAE,CAAC;4CACJ,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;4CAC1B,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;4CACrB,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;yCACzC;wCACH,CAAC,CAAC;4CACE,CAAC,EAAE,CAAC;4CACJ,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;4CAC1B,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;4CACrB,cAAc,EAAE,CAAC,CAAC;4CAClB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;yCAC3C,CAAC;gCAEN,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;4BAC9E,CAAC;yBACF;qBACF,CAAC;oBACF,YAAY,CAAC,MAAM,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI;wBAC9B,QAAQ,EAAE,IAAI,CAAC,WAAW;4BACxB,CAAC,CAAC,MAAM;4BACR,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,MAA6B,CAAC,MAAM,CAAC;gCACxE,CAAC,CAAE,MAA6B,CAAC,MAAM;gCACvC,CAAC,CAAC,OAAO,KAAK,GAAG;oCACjB,CAAC,CAAC,QAAQ;oCACV,CAAC,CAAC,MAAM;qBACX,CAAC;oBACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC9B;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAES,aAAa;QAIrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,EAAgB;YACvB,YAAY,EAAE,EAAuB;SACtC,CAAC;QAEF,IAAI,IAAI,EAAE;YACR,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE7B,IAAI,MAAM,EAAE;oBACV,MAAM,iBAAiB,GAAG,MAAA,IAAI,CAAC,WAAW,CAAqB,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,0CAAG,OAAO,CAAC,CAAC,0CAAE,MAAM,CAAC;oBAClG,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAoB,CAAC,CAAC;oBACnE,MAAM,YAAY,GAAG,cAAc,KAAK,QAAQ,CAAC;oBACjD,MAAM,SAAS,GACb,MAAC,MAA6B,CAAC,SAAS,mCAAK,iBAAwC,aAAxC,iBAAiB,uBAAjB,iBAAiB,CAAyB,SAAS,CAAC;oBACnG,MAAM,YAAY,GAAG,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBACjD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBACnD,MAAM,eAAe,GAAG,MAAA,IAAI,CAAC,WAAW,CAAqB,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,0CAAG,YAAY,CAAC,CAAC,0CAAE,MAAM,CAAC;oBAErG,MAAM,QAAQ,GAAa;wBACzB,IAAI,EAAE,WAAW;wBACjB,aAAa,EAAE,aAAa,CAAC,IAAI;wBACjC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;wBAC/B,UAAU,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;wBAC3C,SAAS,EAAE,SAAS;wBACpB,MAAM,EAAG,MAA6B,CAAC,MAAM;wBAC7C,SAAS,EAAG,MAA6B,CAAC,SAAS;wBACnD,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;wBACxD,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM;wBACrF,MAAM,EAAE;4BACN,MAAM,EAAE,CAAC,KAAU,EAAE,MAAgB,EAAE,MAAW,EAAE,EAAE;;gCACpD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW;oCACpC,CAAC,CAAC,EAAE;oCACJ,CAAC,CAAC,OAAO,KAAK,GAAG;wCACjB,CAAC,CAAC;4CACE,CAAC,EAAE,CAAC;4CACJ,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;4CAC1B,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;4CACrB,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;4CACxC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;yCAChC;wCACH,CAAC,CAAC;4CACE,CAAC,EAAE,CAAC;4CACJ,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;4CAC1B,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;4CACrB,cAAc,EAAE,CAAC,CAAC;4CAClB,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;4CAC1C,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;yCAC/B,CAAC;gCAEN,IAAI,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;oCAC5C,aAAqB,CAAC,KAAK;wCAC1B,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,mCACb,MAAA,MAAA,MAAM,CAAC,YAAY,CAAC,0CAAE,KAAK,CAAE,eAAsC,aAAtC,eAAe,uBAAf,eAAe,CAAyB,SAAS,CAAC,0CAAE,MAAM,CAAC;iCAC3F;gCAED,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;4BAC9E,CAAC;yBACF;qBACF,CAAC;oBAEF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC1B;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAES,WAAW,CAAI,IAA0E;QACjG,IAAI,MAAmB,CAAC;QACxB,IAAI,MAA4B,CAAC;QAEjC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,KAAK,CAAE,IAAY,CAAC,MAAM,CAAC,EAAE;gBAC/B,MAAM,GAAG,IAAS,CAAC;aACpB;iBAAM;gBACL,MAAM,GAAI,IAA+D,CAAC,MAAM,CAAC;gBACjF,MAAM,GAAI,IAA+D,CAAC,MAAM,CAAC;aAClF;SACF;aAAM;YACL,MAAM,GAAG,IAAI,CAAC;SACf;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IAES,gBAAgB;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,eAAe;QAIvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,EAAkB;YACzB,YAAY,EAAE,EAAuB;SACtC,CAAC;QAEF,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;gBACpC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAuB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAEnF,IAAI,MAAM,EAAE;oBACV,MAAM,UAAU,GACd,MAAM,aAAN,MAAM,cAAN,MAAM,GACN,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,MAA+B,CAAC,MAAM,CAAC;wBACvE,CAAC,CAAE,MAA+B,CAAC,MAAM,KAAK,YAAY;4BACxD,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;4BACtC,CAAC,CAAE,MAA+B,CAAC,MAAM,KAAK,UAAU;gCACxD,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;gCACxC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;wBACxC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC5C,MAAM,QAAQ,GAAe;wBAC3B,IAAI,EAAE,WAAW;wBACjB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC;wBAC1C,aAAa,EAAE,aAAa,CAAC,MAAM;wBACnC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;wBAC/B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;wBACpC,UAAU,EAAE,CAAC,eAAe,CAAC;wBAC7B,MAAM,EAAE;4BACN,MAAM,EAAE,CAAC,KAAU,EAAE,OAAiB,EAAE,MAAW,EAAE,EAAE;;gCACrD,MAAM,eAAe,GACnB,UAAU,CAAC,QAAQ,KAAK,MAAM;oCAC5B,CAAC,CAAC;wCACE,MAAM,EAAE,UAAU;wCAClB,CAAC,EAAE,MAAA,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;wCAC5C,CAAC,EAAE,MAAA,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;qCAC5C;oCACH,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO;wCACjC,CAAC,CAAC;4CACE,MAAM,EAAE,UAAU;4CAClB,CAAC,EAAE,MAAA,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;4CACjE,CAAC,EAAE,MAAA,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;yCAC5C;wCACH,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ;4CAClC,CAAC,CAAC;gDACE,MAAM,EAAE,YAAY;gDACpB,CAAC,EAAE,MAAA,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;gDAC5C,CAAC,EAAE,MAAA,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;6CAClE;4CACH,CAAC,CAAC;gDACE,MAAM,EAAE,YAAY;gDACpB,CAAC,EAAE,MAAA,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;gDAC5C,CAAC,EAAE,MAAA,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;6CAC5C,CAAC;gCACR,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;gCAE3F,OAAO,KAAK,CAAC;4BACf,CAAC;yBACF;qBACF,CAAC;oBACF,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;oBAC7B,MAAM,eAAe,GAAqB;wBACxC,IAAI,EAAE,eAAe;wBACrB,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;wBACpD,MAAM,EAAE;4BACN,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE;4BAChC,MAAM,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAG,OAAO,CAAC;yBACpC;qBACF,CAAC;oBACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACzB,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;iBACxC;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAES,mBAAmB;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,gBAAgB,CAAC,OAAkB;;QAC3C,IAAI,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,OAAO,EAAE;YACtC,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;SACnH;QAED,OAAO,CAAC,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,SAAS,EAAC,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAmC,CAAC;IACnH,CAAC;IAES,kBAAkB;QAI1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS;YACvC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACnD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACtB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACf;gBACD,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,WAAW,CAAC;YACjB,CAAC,CAAC,WAAW,CAAC;QAChB,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,EAAgB;YACvB,YAAY,EAAE,EAAqB;SACpC,CAAC;QAEF,IAAI,aAAa,CAAC,MAAM,EAAE;YACxB,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;gBAC9B,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,SAAS,0CAAG,OAAO,CAAC,CAAC;gBAClD,MAAM,MAAM,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAEvD,IAAI,MAAM,EAAE;oBACV,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBAC7C,MAAM,eAAe,GAAkB;wBACrC,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;wBAC/B,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC;4BAC/B,CAAC,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,MAAK,MAAM;gCAC1B,CAAC,CAAC,MAAM;gCACR,CAAC,CAAC,MAAM;4BACV,CAAC,CAAC,MAAC,MAAwB,CAAC,cAAc,mCAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,MAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;wBAC9F,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAoB,CAAC;wBAC1D,SAAS,EAAE,gBAAgB;qBAC5B,CAAC;oBAEF,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;wBAC7B,eAAe,CAAC,UAAU,GAAG,UAAU,CAAC;wBACxC,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;4BACjC,eAAe,CAAC,aAAa,GAAG,gBAAgB,CAAC;4BACjD,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BACtE,eAAe,CAAC,UAAkB,CAAC,KAAK,GAAG,CAAC,KAAU,EAAE,MAAW,EAAE,EAAE;gCACtE,MAAM,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;gCACxC,OAAO,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;4BAC7E,CAAC,CAAC;4BACD,eAAe,CAAC,UAAkB,CAAC,UAAU,GAAG,CAAC,KAAU,EAAE,MAAW,EAAE,EAAE;;gCAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;gCACxC,OAAO,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,qDAAI,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;4BAC1G,CAAC,CAAC;4BACD,eAAe,CAAC,UAAkB,CAAC,QAAQ,GAAG,CAAC,KAAU,EAAE,MAAW,EAAE,EAAE;;gCACzE,MAAM,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;gCACxC,OAAO,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,qDAAI,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;4BAC1G,CAAC,CAAC;4BACF,eAAe,CAAC,UAAU,GAAG,CAAC,iBAAiB,CAAC,CAAC;yBAClD;qBACF;oBACD,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;iBACxC;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAES,iBAAiB;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAES,gBAAgB;;QAIxB,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACpD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1C,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,EAAgB;YACvB,YAAY,EAAE,EAAuB;SACtC,CAAC;QAEF,IAAI,eAAe,KAAK,KAAK,IAAI,eAAe,KAAK,IAAI,IAAI,kBAAkB,KAAK,IAAI,EAAE;YACxF,MAAM,WAAW,GAAG,KAAK,CAAC,EAAE,EAAE,kBAAkB,EAAE,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YACnG,MAAM,YAAY,GAAG,KAAK,CAAE,IAAI,CAAC,IAAI,CAAC,MAAc,CAAC,KAAK,CAAC;gBACzD,CAAC,CAAC,KAAK,CAAE,IAAI,CAAC,IAAI,CAAC,MAAc,CAAC,KAAK,CAAC;oBACtC,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,OAAO;gBACX,CAAC,CAAC,OAAO,CAAC;YACZ,MAAM,WAAW,GAAI,IAAI,CAAC,IAAI,CAAC,MAAc,CAAC,YAAY,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACzE,MAAM,KAAK,GAAG;gBACZ,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW;gBACzD,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC;oBACpC,CAAC,CAAC,WAAW,CAAC,WAAW;oBACzB,CAAC,CAAC;wBACE,KAAK,EAAE,CAAC,KAAU,EAAE,EAAY,EAAE,MAAW,EAAE,EAAE;4BAC/C,OAAO,WAAW,CAAC,KAAK;gCACtB,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gCACxE,CAAC,CAAC,SAAS,CAAC;wBAChB,CAAC;qBACF;aACN,CAAC;YAEF,IAAK,IAAI,CAAC,IAAI,CAAC,MAAc,CAAC,KAAK,EAAE;gBACnC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;aAC3C;YACD,MAAM,OAAO,GACX,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM;gBACxD,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAiC,EAAE,KAAa,EAAE,EAAE;oBAC3E,OAAO;wBACL,GAAG,EAAE,KAAK,CAAC,GAAG;4BACZ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE;4BACtB,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;gCACtC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC;oCACrC,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC;oCACrC,CAAC,CAAC,WAAW,CAAC,gBAAgB;gCAChC,CAAC,CAAC,CAAC,KAAU,EAAE,MAAW,EAAE,EAAE;oCAC1B,OAAO,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gCAC1D,CAAC;wBACL,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;wBAC7B,MAAM,EAAE,CAAC,KAAU,EAAE,MAAW,EAAE,EAAE;;4BAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;4BACpD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;4BACpD,IAAI,UAAU,GAAG,QAAQ,CAAC;4BAC1B,IAAI,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE;gCAC9B,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;6BACtE;iCAAM,IAAI,KAAK,CAAC,MAAM,EAAE;gCACvB,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;6BACpD;4BACD,OAAO;gCACL,IAAI,EAAE,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,UAAU,EAAE,0CAAG,CAAC,CAAC;gCACzF,UAAU;6BACX,CAAC;wBACJ,CAAC;qBACF,CAAC;gBACJ,CAAC,CAAC;gBACJ,CAAC,CAAC,IAAI,CAAC;YACX,IAAI,WAAW,CAAC,qBAAqB,KAAK,IAAI,EAAE;gBAC9C,MAAM,eAAe,GAAgB;oBACnC,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBAChC,KAAK;oBACL,OAAO;oBACP,UAAU,EAAE;wBACV,MAAM,EAAE,IAAI;qBACb;oBACD,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;iBACtE,CAAC;gBACF,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACxC;YAED,IAAI,WAAW,CAAC,uBAAuB,KAAK,IAAI,EAAE;gBAChD,MAAM,OAAO,GAAG,MAAA,WAAW,CAAC,uBAAuB,mCAAI,GAAG,CAAC;gBAC3D,MAAM,eAAe,GAAyB;oBAC5C,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAoB,CAAC;oBACxD,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,MAAC,IAAI,CAAC,IAAI,CAAC,MAAc,0CAAG,OAAO,CAAC,EAAE;oBAC1F,KAAK;oBACL,OAAO;oBACP,SAAS,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;oBAC5E,UAAU,EAAE;wBACV,MAAM,EAAE,IAAI;qBACb;oBACD,UAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;iBACtE,CAAC;gBACF,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACxC;YAED,OAAO,GAAG,CAAC;SACZ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAES,gBAAgB;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,eAAe;QAIvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,EAAkB;YACzB,YAAY,EAAE,EAAuB;SACtC,CAAC;QAEF,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;gBACpC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAuB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAEnF,IAAI,MAAM,EAAE;oBACV,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;oBAEtC,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;wBAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oEAAoE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,EAAE,CAAC,CAAC;wBACzG,OAAO;qBACR;oBACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;oBAC5F,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAG,OAAO,CAAC,CAAC,CAAC;oBAC7D,MAAM,UAAU,GACd,MAAM,aAAN,MAAM,cAAN,MAAM,GACN,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,MAA2B,CAAC,MAAM,CAAC;wBACnE,CAAC,CAAE,MAA2B,CAAC,MAAM,KAAK,YAAY;4BACpD,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;4BACtC,CAAC,CAAE,MAA2B,CAAC,MAAM,KAAK,UAAU;gCACpD,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;gCACxC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;wBACxC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAE5C,MAAM,QAAQ,GAAe;wBAC3B,IAAI,EAAE,WAAW;wBACjB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC;wBAC1C,aAAa,EAAE,aAAa,CAAC,MAAM;wBACnC,UAAU,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC;wBACrC,GAAG,EAAE,CAAC,KAAU,EAAE,MAAgB,EAAE,MAAW,EAAE,EAAE;4BACjD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;4BAE5B,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;wBACtC,CAAC;wBACD,GAAG,EAAE,CAAC,KAAU,EAAE,MAAgB,EAAE,MAAW,EAAE,EAAE;4BACjD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;4BAE5B,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;wBACtC,CAAC;wBACD,MAAM,EAAE;4BACN,MAAM,EAAE,CAAC,KAAU,EAAE,MAAgB,EAAE,MAAW,EAAE,EAAE;;gCACpD,MAAM,eAAe,GACnB,UAAU,CAAC,QAAQ,KAAK,MAAM;oCAC5B,CAAC,CAAC;wCACE,MAAM,EAAE,UAAU;wCAClB,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;wCAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;wCAC1C,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU;wCAC7C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;qCACpC;oCACH,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO;wCACjC,CAAC,CAAC;4CACE,MAAM,EAAE,UAAU;4CAClB,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;4CAChE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;4CAC1C,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU;4CAC7C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;yCACpC;wCACH,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ;4CAClC,CAAC,CAAC;gDACE,MAAM,EAAE,YAAY;gDACpB,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;gDAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;gDAChE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU;gDAC9C,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;6CAClC;4CACH,CAAC,CAAC;gDACE,MAAM,EAAE,YAAY;gDACpB,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;gDAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;gDAC1C,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU;gDAC9C,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;6CAClC,CAAC;gCACR,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;gCAE3F,OAAO,KAAK,CAAC;4BACf,CAAC;yBACF;qBACF,CAAC;oBACF,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;oBAC7B,MAAM,eAAe,GAAqB;wBACxC,IAAI,EAAE,eAAe;wBACrB,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;wBACpD,MAAM,EAAE;4BACN,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE;4BAChC,MAAM,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAG,OAAO,CAAC;yBACpC;qBACF,CAAC;oBACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACzB,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;iBACxC;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAES,kBAAkB;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,6BAA6B,CAAC,OAAe;QACrD,OAAO,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7C,CAAC;IAES,iBAAiB;QAIzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpC,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,EAAoB;YAC3B,YAAY,EAAE,EAAuB;SACtC,CAAC;QAEF,IAAI,QAAQ,EAAE;YACZ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;gBACtC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAyB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;gBAEvF,IAAI,MAAM,EAAE;oBACV,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;oBACtC,MAAM,UAAU,GACd,MAAM,aAAN,MAAM,cAAN,MAAM,GACN,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,MAA6B,CAAC,MAAM,CAAC;wBACrE,CAAC,CAAC,EAAE,QAAQ,EAAG,MAA6B,CAAC,MAAM,EAAE;wBACrD,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACjE,MAAM,OAAO,GAA4B;wBACvC,IAAI,EAAE,MAAM;qBACb,CAAC;oBACF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAElD,IAAI,OAAO,KAAK,GAAG,EAAE;wBACnB,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAG,OAAO,CAAC,EAAE,CAAC;wBAC7D,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAC,IAAI,CAAC,IAAI,CAAC,MAAc,0CAAE,CAAC,EAAE,CAAC;qBAC/D;yBAAM;wBACL,OAAO,CAAC,UAAU,CAAC,QAAQ,KAAK,KAAK,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;4BACvF,KAAK,EAAE,CAAC;4BACR,KAAK,EAAE,MAAA,MAAC,IAAI,CAAC,IAAI,CAAC,MAAc,0CAAG,OAAO,CAAC,mCAAI,OAAO;yBACvD,CAAC;qBACH;oBAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;oBAC5F,MAAM,QAAQ,GAAiB;wBAC7B,IAAI,EAAE,WAAW;wBACjB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC;wBAC5C,aAAa,EAAE,aAAa,CAAC,QAAQ;wBACrC,UAAU,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC;wBACrC,OAAO;wBACP,MAAM,EAAE;4BACN,MAAM,EAAE,CAAC,KAAU,EAAE,MAAgB,EAAE,MAAW,EAAE,EAAE;;gCACpD,MAAM,eAAe,GACnB,UAAU,CAAC,QAAQ,KAAK,MAAM;oCAC5B,CAAC,CAAC;wCACE,MAAM,EAAE,UAAU,CAAC,QAAsB;wCACzC,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;wCAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;wCAC1C,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;qCACxF;oCACH,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO;wCACjC,CAAC,CAAC;4CACE,MAAM,EAAE,UAAU,CAAC,QAAsB;4CACzC,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;4CAChE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;4CAC1C,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;yCACxF;wCACH,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ;4CAClC,CAAC,CAAC;gDACE,MAAM,EAAE,UAAU,CAAC,QAAsB;gDACzC,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;gDAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;gDAChE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;6CACvF;4CACH,CAAC,CAAC;gDACE,MAAM,EAAE,UAAU,CAAC,QAAsB;gDACzC,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;gDAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;gDAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;6CACvF,CAAC;gCAER,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;gCAE3F,OAAO,KAAK,CAAC;4BACf,CAAC;yBACF;qBACF,CAAC;oBACF,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;oBAC7B,MAAM,eAAe,GAAuB;wBAC1C,IAAI,EAAE,iBAAiB;wBACvB,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;wBACtD,MAAM,EAAE;4BACN,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE;4BAChC,MAAM,EAAE,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,0CAAG,OAAO,CAAC;yBACpC;qBACF,CAAC;oBACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACzB,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;iBACxC;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAES,eAAe;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,gBAAgB;;QACxB,IAAI,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,MAAK,OAAO,EAAE;YACtC,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;SAC1D;QAED,OAAO,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,SAAS,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,CAAC;IAES,kBAAkB,CAC1B,OAAe,EACf,MAAqC;QAErC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAES,cAAc;QAItB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,EAAiB;YACxB,YAAY,EAAE,EAAuB;SACtC,CAAC;QAEF,IAAI,KAAK,EAAE;YACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACnC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gBAE9B,IAAI,MAAM,EAAE;oBACV,MAAM,QAAQ,GAAc;wBAC1B,IAAI,EAAE,WAAW;wBACjB,aAAa,EAAE,aAAa,CAAC,KAAK;wBAClC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE;wBACxB,MAAM,EAAE;4BACN,QAAQ,EAAE,SAAS;4BACnB,kBAAkB,EAAE,IAAI;yBACzB;wBACD,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC;4BAC/B,CAAC,CAAC,KAAK,CACH;gCACE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE;6BAClC,EACD,MAAwB,CACzB;4BACH,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE;wBACzC,MAAM,EAAE;4BACN,MAAM,EAAE;gCACN,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;oCAC7B,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oCACtC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC;6BAC7C;yBACF;qBACF,CAAC;oBACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC1B;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAES,gBAAgB;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,eAAe;;QAIvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,EAAkB;YACzB,YAAY,EAAE,EAAuB;SACtC,CAAC;QAEF,IAAI,MAAM,EAAE;YACV,MAAM,MAAM,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC;YAE9B,IAAI,MAAM,EAAE;gBACV,MAAM,UAAU,GACd,MAAM,aAAN,MAAM,cAAN,MAAM,GACN,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAE,MAA2B,CAAC,MAAM,CAAC;oBACnE,CAAC,CAAC,EAAE,QAAQ,EAAG,MAA2B,CAAC,MAAM,EAAE;oBACnD,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAE9B,MAAM,QAAQ,GAAe;oBAC3B,IAAI,EAAE,WAAW;oBACjB,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC;oBACrC,aAAa,EAAE,aAAa,CAAC,MAAM;oBACnC,UAAU,EAAE,CAAC,eAAe,CAAC;oBAC7B,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAC,MAAc,CAAC,IAAI,mCAAI,MAAM,CAAC,CAAC,CAAC,MAAM;oBAC3E,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE;oBAChC,MAAM,EAAE;wBACN,MAAM,EAAE,CAAC,KAAU,EAAE,MAAgB,EAAE,MAAW,EAAE,EAAE;;4BACpD,MAAM,eAAe,GACnB,UAAU,CAAC,QAAQ,KAAK,MAAM;gCAC5B,CAAC,CAAC;oCACE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;oCAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;oCAC1C,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;iCACrD;gCACH,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO;oCACjC,CAAC,CAAC;wCACE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;wCAChE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;wCAC1C,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;qCACrD;oCACH,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ;wCAClC,CAAC,CAAC;4CACE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;4CAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;4CAChE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;yCACpD;wCACH,CAAC,CAAC;4CACE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;4CAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;4CAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;yCACpD,CAAC;4BAER,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;4BAE3F,OAAO,KAAK,CAAC;wBACf,CAAC;qBACF;iBACF,CAAC;gBACF,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;gBAC7B,MAAM,eAAe,GAAqB;oBACxC,IAAI,EAAE,eAAe;oBACrB,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE;oBAC/C,MAAM,EAAE;wBACN,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE;qBAC7B;iBACF,CAAC;gBACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzB,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACxC;SACF;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAES,cAAc;QAItB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,EAAiB;YACxB,YAAY,EAAE,EAAuB;SACtC,CAAC;QAEF,IAAI,KAAK,EAAE;YACT,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAsB,KAAK,CAAC,CAAC;YAExE,IAAI,MAAM,EAAE;gBACV,MAAM,UAAU,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAEjD,MAAM,QAAQ,GAAc;oBAC1B,IAAI,EAAE,WAAW;oBACjB,aAAa,EAAE,aAAa,CAAC,KAAK;oBAClC,UAAU,EAAE,CAAC,eAAe,CAAC;oBAC7B,KAAK,EAAG,MAA8B,CAAC,IAAI;oBAC3C,QAAQ,EAAG,MAA8B,CAAC,OAAO;oBACjD,MAAM,EAAE;wBACN,MAAM,EAAE,CAAC,KAAU,EAAE,MAAgB,EAAE,MAAW,EAAE,EAAE;;4BACpD,MAAM,eAAe,GACnB,UAAU,CAAC,QAAQ,KAAK,MAAM;gCAC5B,CAAC,CAAC;oCACE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;oCAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;iCAC3C;gCACH,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO;oCACjC,CAAC,CAAC;wCACE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;wCAChE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;qCAC3C;oCACH,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ;wCAClC,CAAC,CAAC;4CACE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;4CAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;4CAChE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;yCAC9B;wCACH,CAAC,CAAC;4CACE,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,IAAI,mCAAI,CAAC;4CAC3C,CAAC,EAAE,MAAA,MAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,GAAG,mCAAI,CAAC;4CAC1C,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;yCAC9B,CAAC;4BACR,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;4BAE3F,OAAO,KAAK,CAAC;wBACf,CAAC;qBACF;iBACF,CAAC;gBACF,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;gBAC7B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1B;SACF;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAES,aAAa;;QACrB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QACnC,MAAM,GAAG,GAAe,EAAE,CAAC;QAE3B,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAE;YAChB,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE;gBAC5B,MAAM,EAAE,MAAM,CAAC,IAAI;aACpB,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE;gBAC1B,MAAM,EAAE,MAAA,MAAM,CAAC,IAAI,0CAAG,CAAC,CAAC;aACzB,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE;gBAC9B,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;aAC/B,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACtC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;YAE5F,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,MAAM;gBACV,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS;aACV,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE;gBAC9B,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;SACJ;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE1C,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,KAAK,CAAC,EAAE,EAAE;oBACZ,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE;wBACzD,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;qBACjD;yBAAM;wBACL,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACjB;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAES,cAAc;QACtB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9C,MAAM,MAAM,GAA0D,EAAE,CAAC;QACzE,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;gBAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,0CAAG,CAAC,CAAC,CAAC;gBAEvC,IAAI,SAAS,EAAE;oBACb,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAM,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE;wBACzG,SAAS;qBACV,CAAC,CAAC;iBACJ;qBAAM;oBACL,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAM,EAAE,YAAY,CAAC,CAAC,CAAC;iBACjG;YACH,CAAC,CAAC,CAAC;SACJ;QACD,IAAI,KAAK,EAAE;YACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oBACpB,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;iBACtC;YACH,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,QAAQ,EAAE;YACZ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;gBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBAEhE,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;oBAC1B,MAAM,CAAC,QAAQ,CAAC,GAAG;wBACjB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI;wBAC1B,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE;4BACN,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE;4BAC5B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;yBACjB;wBACD,UAAU,EAAE,CAAC,eAAe,CAAC;wBAC7B,KAAK,EAAE,CAAC,KAAiB,EAAE,MAAW,EAAE,EAAE;4BACxC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;wBACrC,CAAC;qBACF,CAAC;oBAEF,IAAK,MAAc,CAAC,CAAC,EAAE;wBACrB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;wBAC5F,MAAM,CAAC,QAAQ,CAAC,GAAG;4BACjB,IAAI,EAAE,MAAA,MAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,0CAAE,IAAI,mCAAI,QAAQ;4BACpD,EAAE,EAAE,QAAQ;4BACZ,MAAM,EAAE;gCACN,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE;gCAC5B,KAAK,EAAG,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,CAAC;6BAC1B;4BACD,KAAK,EAAE,CAAC,KAAiB,EAAE,MAAW,EAAE,EAAE;;gCACxC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAyB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gCAC5E,OAAO;oCACL,CAAC;oCACD,aAAa,CAAC,MAAM,CAAC;wCACnB,CAAC,CAAC,MAAA,MAAC,MAA6B,CAAC,IAAI,0CAAE,MAAM,mCAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;wCACtF,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;iCAC1C,CAAC;4BACJ,CAAC;yBACF,CAAC;qBACH;iBACF;qBAAM;oBACL,MAAM,CAAC,QAAQ,CAAC,GAAG;wBACjB,IAAI,EAAE,MAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,mCAAI,MAAM;wBACpC,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE;4BACN,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE;4BAC5B,KAAK,EAAE,MAAC,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAW,CAAC,CAAC,mCAAI,CAAC;yBACjC;qBACF,CAAC;iBACH;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,CAAC;IAES,mBAAmB;;QAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO,EAAE,CAAC;SACX;QACD,MAAM,UAAU,GAAmB;YACjC,IAAI,EAAE,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,mCAAI,WAAW;YAC1C,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS;YACrC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;YACvB,UAAU,EAAE,CAAC,eAAe,CAAC;YAC7B,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACb,GAAG,EAAE,CAAC,KAAsB,EAAE,MAAW,EAAE,EAAE;gBAC3C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3D,CAAC;SACF,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAChE,UAAU,CAAC,MAAM,GAAG,CAAC,KAAsB,EAAE,MAAW,EAAE,EAAE;gBAC1D,OAAO;oBACL,SAAS,CAAE,IAAI,CAAC,WAAqC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACxF,SAAS,CAAE,IAAI,CAAC,WAAqC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;iBACtE,CAAC;YACxB,CAAC,CAAC;SACH;QAED,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;IAES,sBAAsB;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAES,eAAe;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,iBAAiB;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU;;QACR,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvD,IAAI,KAAK,GAAe,EAAE,CAAC;QAC3B,IAAI,YAAY,GAAsB,EAAE,CAAC;QAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAE5D,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE1D,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE1D,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChD,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAE/D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAE5D,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAE3D,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,MAAM,CACX;YACE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE;YACpB,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;YACxB,UAAU,EAAE,MAAA,IAAI,CAAC,WAAW,0CAAE,EAAE;YAChC,IAAI,EAAE;gBACJ,IAAI,EAAE,cAAc;aACrB;YACD,OAAO,EAAE,MAAC,IAAI,CAAC,IAAI,CAAC,MAAc,0CAAE,KAAK;YACzC,MAAM,EAAE;gBACN,QAAQ,EAAE,SAAS;gBACnB,kBAAkB,EAAE,IAAI;aACzB;YACD,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;YAC/E,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACzF,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACtC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACzC,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE;gBACpC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aACjD,CAAC;SACH,EACD,IAAI,CAAC,eAAe,EAAE,CACvB,CACF,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE5C,IAAI,UAAU,EAAE;YACd,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAClC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAE3D,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAE7D,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;QAE1C,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IACnC,CAAC;CACF","file":"semantic-mark.js","sourcesContent":["import type {\n LegendBaseAttributes,\n SliderAttributes,\n DataZoomAttributes,\n BaseLabelAttrs,\n PlayerAttributes,\n OrientType\n} from '@visactor/vrender-components';\nimport type { ILogger } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n Logger,\n array,\n isArray,\n isBoolean,\n isNil,\n isPlainObject,\n maxInArray,\n merge,\n minInArray\n} from '@visactor/vutils';\nimport { isContinuous, type IBaseScale, isDiscrete } from '@visactor/vscale';\nimport type {\n ISemanticMark,\n ISemanticMarkSpec,\n ParsedSimpleEncode,\n WithDefaultEncode,\n SemanticTooltipOption,\n SemanticAxisOption,\n SemanticPlayerOption,\n SemanticLabelOption,\n SemanticDataZoomOption,\n SemanticSliderOption,\n SemanticLegendOption,\n SemanticCrosshairOption,\n CoordinateOption,\n PolarCoordinateOption,\n AxisSpec,\n CrosshairSpec,\n DatazoomSpec,\n LabelSpec,\n LegendSpec,\n PlayerSpec,\n SliderSpec,\n TooltipSpec,\n CoordinateSpec,\n DataSpec,\n ChannelEncodeType,\n ScaleSpec,\n TransformSpec,\n MarkAnimationSpec,\n ViewSpec,\n MarkType,\n Nil,\n ValueOf,\n GenerateBaseEncodeSpec,\n IElement,\n IAnimationConfig,\n MarkSpec,\n MarkRelativeItemSpec,\n IPlot,\n SemanticTooltipContentItem,\n SemanticGridOption,\n GridSpec,\n TitleSpec,\n SemanticTitleOption,\n InteractionSpec,\n LegendFilterSpec,\n SliderFilterSpec,\n DatazoomFilterSpec,\n PlayerFilterSpec,\n DimensionTooltipSpec\n} from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentEnum, SIGNAL_VIEW_BOX, BuiltInEncodeNames, ThemeManager, Factory } from '@visactor/vgrammar-core';\nimport { field as getFieldAccessor, toPercent } from '@visactor/vgrammar-util';\nimport type { IBaseCoordinate } from '@visactor/vgrammar-coordinate';\nimport type { ITextAttribute } from '@visactor/vrender-core';\n\nlet semanticMarkId = -1;\n\nexport abstract class SemanticMark<EncodeSpec, K extends string> implements ISemanticMark<EncodeSpec, K> {\n //declare type: T;\n spec: ISemanticMarkSpec<EncodeSpec, K>;\n viewSpec?: ViewSpec;\n\n readonly uid: number;\n protected _logger: ILogger;\n protected _coordinate: CoordinateOption;\n readonly type: string;\n readonly plot: IPlot;\n\n constructor(type: string, id?: string | number, plot?: IPlot) {\n this.type = type;\n this.uid = ++semanticMarkId;\n this._logger = Logger.getInstance();\n this.plot = plot;\n\n this.spec = { id: id ?? `${this.type}-${this.uid}` };\n }\n\n parseSpec(spec: Partial<ISemanticMarkSpec<EncodeSpec, K>>) {\n if (isNil(spec.id)) {\n spec.id = this.spec.id;\n }\n this.spec = spec as ISemanticMarkSpec<EncodeSpec, K>;\n return this;\n }\n\n coordinate(option: CoordinateOption) {\n this._coordinate = option;\n return this;\n }\n\n data(values: any, transform?: TransformSpec[], id?: string) {\n if (isNil(values)) {\n return this;\n }\n\n this.spec.data = { values, transform, id };\n return this;\n }\n\n encode(channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>) {\n if (!this.spec.encode) {\n this.spec.encode = {};\n }\n this.spec.encode[channel] = option;\n\n return this;\n }\n scale(channel: string, option: Partial<ScaleSpec>) {\n if (!this.spec.scale) {\n this.spec.scale = {};\n }\n\n this.spec.scale[channel] = option;\n return this;\n }\n style(style: Partial<EncodeSpec & any>) {\n this.spec.style = style;\n return this;\n }\n transform(option: TransformSpec | TransformSpec[]) {\n this.spec.transform = array(option) as TransformSpec[];\n\n return this;\n }\n state(state: string, option: Partial<EncodeSpec>) {\n if (\n (\n [\n BuiltInEncodeNames.enter,\n BuiltInEncodeNames.update,\n BuiltInEncodeNames.exit,\n BuiltInEncodeNames.group\n ] as string[]\n ).includes(state)\n ) {\n this._logger.warn(\n `[VGrammar]: ${state} is a reserved keyword to specify the encode of different data state, \n don't use this keyword`\n );\n\n return;\n }\n\n if (!this.spec.state) {\n this.spec.state = {};\n }\n this.spec.state[state] = option;\n return this;\n }\n animate(state: string, option: IAnimationConfig | IAnimationConfig[]) {\n if (state === 'state') {\n this._logger.warn(\n `[VGrammar]: ${state} is a keyword use to specify state animation config, don't use this keyword`\n );\n\n return this;\n }\n\n if (!this.spec.animation) {\n this.spec.animation = {};\n }\n\n this.spec.animation[state] = option;\n\n return this;\n }\n axis(channel: string, option: SemanticAxisOption | boolean = true, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('axis')) {\n this._logger.error(\n `Please add this line of code: import { registerAxis } from '@visactor/vgrammar-core'; \n and run \"registerAxis();\" or \"View.useRegisters([registerAxis]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.axis) {\n this.spec.axis = {};\n }\n this.spec.axis[channel] = { option, layout };\n\n return this;\n }\n\n grid(channel: string, option: SemanticGridOption | boolean = true) {\n if (!Factory.hasComponent('grid')) {\n this._logger.error(\n `Please add this line of code: import { registerGrid } from '@visactor/vgrammar-core'; \n and run \"registerGrid();\" or \"View.useRegisters([registerGrid]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.grid) {\n this.spec.grid = {};\n }\n this.spec.grid[channel] = option;\n\n return this;\n }\n\n legend(channel: string, option: SemanticLegendOption | boolean = true, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('legend')) {\n this._logger.error(\n `Please add this line of code: import { registerLegend } from '@visactor/vgrammar-core'; \n and run \"registerLegend();\" or \"View.useRegisters([registerLegend]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.legend) {\n this.spec.legend = {};\n }\n\n this.spec.legend[channel] = { option, layout };\n\n return this;\n }\n crosshair(channel: string, option?: SemanticCrosshairOption | boolean) {\n if (!Factory.hasComponent('crosshair')) {\n this._logger.error(\n `Please add this line of code: import { registerCrosshair } from '@visactor/vgrammar-core'; \n and run \"registerCrosshair();\" or \"View.useRegisters([registerCrosshair]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.crosshair) {\n this.spec.crosshair = {};\n }\n\n this.spec.crosshair[channel] = option;\n\n return this;\n }\n tooltip(option: SemanticTooltipOption | boolean) {\n if (!Factory.hasComponent('tooltip')) {\n this._logger.error(\n `Please add this line of code: import { registerTooltip } from '@visactor/vgrammar-core'; \n and run \"registerTooltip();\" or \"View.useRegisters([registerTooltip]);\" `\n );\n\n return this;\n }\n\n this.spec.tooltip = option;\n\n return this;\n }\n\n slider(channel: string, option?: SemanticSliderOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('slider')) {\n this._logger.error(\n `Please add this line of code: import { registerSlider } from '@visactor/vgrammar-core'; \n and run \"registerSlider();\" or \"View.useRegisters([registerSlider]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.slider) {\n this.spec.slider = {};\n }\n\n this.spec.slider[channel] = { option, layout };\n\n return this;\n }\n datazoom(channel: string, option?: SemanticDataZoomOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('datazoom')) {\n this._logger.error(\n `Please add this line of code: import { registerDataZoom } from '@visactor/vgrammar-core'; \n and run \"registerDataZoom();\" or \"View.useRegisters([registerDataZoom]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.datazoom) {\n this.spec.datazoom = {};\n }\n\n this.spec.datazoom[channel] = { option, layout };\n\n return this;\n }\n label(channel: string, option?: SemanticLabelOption | boolean) {\n if (!Factory.hasComponent('label')) {\n this._logger.error(\n `Please add this line of code: import { registerLabel } from '@visactor/vgrammar-core'; \n and run \"registerLabel();\" or \"View.useRegisters([registerLabel]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.label) {\n this.spec.label = {};\n }\n\n this.spec.label[channel] = option;\n\n return this;\n }\n player(data?: any[], option?: SemanticPlayerOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('player')) {\n this._logger.error(\n `Please add this line of code: import { registerPlayer } from '@visactor/vgrammar-core'; \n and run \"registerPlayer();\" or \"View.useRegisters([registerPlayer]);\" `\n );\n\n return this;\n }\n\n this.spec.player = { data, option, layout };\n\n return this;\n }\n\n title(option: SemanticTitleOption, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('title')) {\n this._logger.error(\n `Please add this line of code: import { registerTitle } from '@visactor/vgrammar-core'; \n and run \"registerTitle();\" or \"View.useRegisters([registerTitle]);\" `\n );\n\n return this;\n }\n\n this.spec.title = { option, layout };\n\n return this;\n }\n\n protected getPalette() {\n return (this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme()).palette?.default;\n }\n\n abstract setMarkType(): MarkType;\n abstract parseScaleByEncode(channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil;\n abstract convertMarkEncode(encode: WithDefaultEncode<EncodeSpec, K>): GenerateBaseEncodeSpec<EncodeSpec>;\n\n protected setDefaultDataTransform(): TransformSpec[] {\n return [];\n }\n\n protected setMultipleData(): DataSpec[] {\n return null;\n }\n\n protected setDefaultMarkTransform(): TransformSpec[] {\n return [];\n }\n\n protected convertMarkTransform(userTransform: TransformSpec[], defaultTransform: TransformSpec[] = []) {\n if (defaultTransform && defaultTransform.length) {\n if (userTransform && userTransform.length) {\n let transforms = [];\n const excludeIndex = [];\n\n for (let i = 0, len = userTransform.length; i < len; i++) {\n const customizedSpec = userTransform[i];\n const index = defaultTransform.findIndex(entry => entry.type === customizedSpec.type);\n\n if (index >= 0) {\n transforms.push(merge({}, defaultTransform[index], customizedSpec));\n excludeIndex.push(index);\n } else {\n transforms.push(customizedSpec);\n }\n }\n\n for (let j = 0, dlen = defaultTransform.length; j < dlen; j++) {\n if (!excludeIndex.includes(j)) {\n transforms = [defaultTransform[j]].concat(transforms);\n }\n }\n\n return transforms;\n }\n\n return defaultTransform;\n }\n\n return userTransform;\n }\n\n protected convertMarkAnimation(): MarkAnimationSpec {\n if (!this.spec.animation) {\n return null;\n }\n\n return this.spec.animation;\n }\n\n protected convertSimpleMarkEncode(encode: WithDefaultEncode<EncodeSpec, K>): ParsedSimpleEncode<EncodeSpec, K> {\n if (!encode) {\n return {};\n }\n\n const markEncoder = {};\n\n Object.keys(encode).map(channel => {\n markEncoder[channel] = { field: encode[channel], scale: this.getScaleId(channel), band: 0.5 };\n });\n\n return markEncoder;\n }\n\n protected getDataIdOfFiltered() {\n return `${this.spec.data?.id ?? this.spec.id}-data-filtered`;\n }\n\n protected getDataIdOfMain() {\n return `${this.spec.data?.id ?? this.spec.id}-data`;\n }\n\n protected getDataIdOfPlayer() {\n return `${this.spec.data?.id ?? this.spec.id}-player`;\n }\n\n protected getDataZoomScaleId(channel: string) {\n return {\n x: `datazoom-scale-${channel}-x`,\n y: `datazoom-scale-${channel}-y`\n };\n }\n\n protected getScaleId(channel: string) {\n return this.spec.scale?.[channel]?.id ?? `scale-${channel}`;\n }\n\n protected getMarkId() {\n return `${this.spec.id}-mark`;\n }\n\n protected getComponentId(id: string, component?: string) {\n return `${this.spec.id}-${component ?? 'component'}-${id}`;\n }\n\n protected getScaleSpec(scaleId: string) {\n return this.viewSpec?.scales?.find?.(scale => scale.id === scaleId);\n }\n\n protected parseScaleOfEncodeX(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'band',\n id: this.getScaleId('x'),\n dependency: [SIGNAL_VIEW_BOX],\n domain: {\n data: this.getDataIdOfFiltered(),\n field: option as string\n },\n range: this._coordinate\n ? { coordinate: this._coordinate.id, dimension: 'x' }\n : (scale: IBaseScale, params: any) => {\n return [0, params.viewBox.width()];\n }\n };\n }\n\n protected parseScaleOfEncodeY(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'linear',\n dependency: [SIGNAL_VIEW_BOX],\n id: this.getScaleId('y'),\n domain: {\n data: this.getDataIdOfFiltered(),\n field: option as string\n },\n range: this._coordinate\n ? { coordinate: this._coordinate.id, dimension: 'y' }\n : (scale: IBaseScale, params: any) => {\n return [params.viewBox.height(), 0];\n }\n };\n }\n\n protected parseScaleOfEncodeColor(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('color'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfEncodeStroke(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('stroke'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfEncodeGroup(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('group'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfCommonEncode(\n channel: K,\n option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>\n ): ScaleSpec | Nil {\n if (channel === 'x') {\n return this.parseScaleOfEncodeX(option);\n }\n\n if (channel === 'y') {\n return this.parseScaleOfEncodeY(option);\n }\n\n if (channel === 'color') {\n return this.parseScaleOfEncodeColor(option);\n }\n\n if (channel === 'group') {\n return this.parseScaleOfEncodeGroup(option);\n }\n\n if (channel === 'stroke') {\n return this.parseScaleOfEncodeStroke(option);\n }\n\n return null;\n }\n\n protected setDefaultAxis(): Record<string, Partial<AxisSpec>> {\n return {};\n }\n\n protected parseAxisSpec(): {\n marks: AxisSpec[];\n interactions: InteractionSpec[];\n } {\n const axis = this.spec.axis;\n const res = {\n marks: [] as AxisSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (axis) {\n Object.keys(axis).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticAxisOption>(axis[channel]);\n\n if (option) {\n const axisMarkSpec: AxisSpec = {\n type: 'component',\n componentType: ComponentEnum.axis,\n scale: this.getScaleId(channel),\n dependency: [SIGNAL_VIEW_BOX],\n tickCount: (option as SemanticAxisOption).tickCount,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const positionAttrs = this._coordinate\n ? {}\n : channel === 'x'\n ? {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n end: { x: params.viewBox.width(), y: 0 }\n }\n : {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n verticalFactor: -1,\n end: { x: 0, y: -params.viewBox.height() }\n };\n\n return isPlainObject(option) ? merge(positionAttrs, option) : positionAttrs;\n }\n }\n };\n axisMarkSpec.layout = layout ?? {\n position: this._coordinate\n ? 'auto'\n : isPlainObject(layout) && !isNil((layout as SemanticAxisOption).orient)\n ? (layout as SemanticAxisOption).orient\n : channel === 'x'\n ? 'bottom'\n : 'left'\n };\n res.marks.push(axisMarkSpec);\n }\n });\n }\n\n return res;\n }\n\n protected parseGridSpec(): {\n marks: GridSpec[];\n interactions: InteractionSpec[];\n } {\n const grid = this.spec.grid;\n const res = {\n marks: [] as GridSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (grid) {\n Object.keys(grid).forEach(channel => {\n const option = grid[channel];\n\n if (option) {\n const relatedAxisOption = this.parseOption<SemanticAxisOption>(this.spec.axis?.[channel])?.option;\n const visiualChannel = this.getVisualChannel(channel as 'x' | 'y');\n const isCircleGrid = visiualChannel === 'radius';\n const tickCount =\n (option as SemanticGridOption).tickCount ?? (relatedAxisOption as SemanticAxisOption)?.tickCount;\n const otherChannel = channel === 'x' ? 'y' : 'x';\n const otherScaleId = this.getScaleId(otherChannel);\n const otherAxisOption = this.parseOption<SemanticAxisOption>(this.spec.axis?.[otherChannel])?.option;\n\n const markSpec: GridSpec = {\n type: 'component',\n componentType: ComponentEnum.grid,\n scale: this.getScaleId(channel),\n dependency: [SIGNAL_VIEW_BOX, otherScaleId],\n tickCount: tickCount,\n inside: (option as SemanticGridOption).inside,\n baseValue: (option as SemanticGridOption).baseValue,\n gridType: visiualChannel === 'angle' ? 'circle' : 'line',\n gridShape: isCircleGrid ? (option.type === 'polygon' ? 'polygon' : 'circle') : 'line',\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const positionAttrs = this._coordinate\n ? {}\n : channel === 'x'\n ? {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n end: { x: params.viewBox.width(), y: 0 },\n length: params.viewBox.height()\n }\n : {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n verticalFactor: -1,\n end: { x: 0, y: -params.viewBox.height() },\n length: params.viewBox.width()\n };\n\n if (isCircleGrid && option.type === 'polygon') {\n (positionAttrs as any).sides =\n option?.sides ??\n params[otherScaleId]?.ticks((otherAxisOption as SemanticAxisOption)?.tickCount)?.length;\n }\n\n return isPlainObject(option) ? merge(positionAttrs, option) : positionAttrs;\n }\n }\n };\n\n res.marks.push(markSpec);\n }\n });\n }\n\n return res;\n }\n\n protected parseOption<T>(spec: { option: T | boolean; layout?: MarkRelativeItemSpec } | T | boolean) {\n let option: T | boolean;\n let layout: MarkRelativeItemSpec;\n\n if (isPlainObject(spec)) {\n if (isNil((spec as any).option)) {\n option = spec as T;\n } else {\n option = (spec as { option: T | boolean; layout?: MarkRelativeItemSpec }).option;\n layout = (spec as { option: T | boolean; layout?: MarkRelativeItemSpec }).layout;\n }\n } else {\n option = spec;\n }\n\n return { option, layout };\n }\n\n protected setDefaultLegend(): Record<string, Partial<LegendSpec>> {\n return {};\n }\n\n protected parseLegendSpec(): {\n marks: LegendSpec[];\n interactions: InteractionSpec[];\n } {\n const legend = this.spec.legend;\n const res = {\n marks: [] as LegendSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (legend) {\n Object.keys(legend).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticLegendOption>(legend[channel]);\n\n if (option) {\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as LegendBaseAttributes).layout)\n ? (option as LegendBaseAttributes).layout === 'horizontal'\n ? { position: 'top', align: 'center' }\n : (option as LegendBaseAttributes).layout === 'vertical'\n ? { position: 'right', align: 'middle' }\n : { position: 'top', align: 'center' }\n : { position: 'top', align: 'center' });\n const markSpec: LegendSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'legend'),\n componentType: ComponentEnum.legend,\n scale: this.getScaleId(channel),\n shapeScale: this.getScaleId('shape'),\n dependency: [SIGNAL_VIEW_BOX],\n encode: {\n update: (datum: any, element: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n layout: 'vertical',\n x: element.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: element.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'right'\n ? {\n layout: 'vertical',\n x: element.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: element.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'bottom'\n ? {\n layout: 'horizontal',\n x: element.mark?.relativePosition?.left ?? 0,\n y: element.mark?.relativePosition?.top ?? params.viewBox.height()\n }\n : {\n layout: 'horizontal',\n x: element.mark?.relativePosition?.left ?? 0,\n y: element.mark?.relativePosition?.top ?? 0\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: LegendFilterSpec = {\n type: 'legend-filter',\n source: `#${this.getComponentId(channel, 'legend')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultCrosshair(): Record<string, Pick<CrosshairSpec, 'crosshairShape' | 'crosshairType'>> {\n return {};\n }\n\n protected getVisualChannel(channel: 'x' | 'y'): 'x' | 'y' | 'angle' | 'radius' {\n if (this._coordinate?.type === 'polar') {\n return this._coordinate.transpose ? (channel === 'x' ? 'radius' : 'angle') : channel === 'x' ? 'angle' : 'radius';\n }\n\n return (this._coordinate?.transpose ? (channel === 'x' ? 'y' : 'x') : channel) as 'x' | 'y' | 'angle' | 'radius';\n }\n\n protected parseCrosshairSpec(): {\n marks: MarkSpec[];\n interactions: CrosshairSpec[];\n } {\n const defaultCrosshair = this.setDefaultCrosshair();\n const defaultKeys = Object.keys(defaultCrosshair);\n const crosshairKeys = this.spec.crosshair\n ? Object.keys(this.spec.crosshair).reduce((res, key) => {\n if (!res.includes(key)) {\n res.push(key);\n }\n return res;\n }, defaultKeys)\n : defaultKeys;\n const res = {\n marks: [] as MarkSpec[],\n interactions: [] as CrosshairSpec[]\n };\n\n if (crosshairKeys.length) {\n crosshairKeys.forEach(channel => {\n const userOption = this.spec.crosshair?.[channel];\n const option = userOption ?? defaultCrosshair[channel];\n\n if (option) {\n const scaleId = this.getScaleId(channel);\n const scaleSpec = this.getScaleSpec(scaleId);\n const interactionSpec: CrosshairSpec = {\n type: 'crosshair',\n scale: this.getScaleId(channel),\n crosshairShape: isBoolean(option)\n ? scaleSpec?.type === 'band'\n ? 'rect'\n : 'line'\n : (option as CrosshairSpec).crosshairShape ?? (scaleSpec?.type === 'band' ? 'rect' : 'line'),\n crosshairType: this.getVisualChannel(channel as 'x' | 'y'),\n container: '#plotContainer'\n };\n\n if (isPlainObject(userOption)) {\n interactionSpec.attributes = userOption;\n if (userOption.type === 'polygon') {\n interactionSpec.crosshairType = 'radius-polygon';\n const anotherDimScaleId = this.getScaleId(channel === 'x' ? 'y' : 'x');\n (interactionSpec.attributes as any).sides = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.domain().length : undefined;\n };\n (interactionSpec.attributes as any).startAngle = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.range()[0] + (scale?.bandwidth?.() ?? 0) / 2 : undefined;\n };\n (interactionSpec.attributes as any).endAngle = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.range()[1] + (scale?.bandwidth?.() ?? 0) / 2 : undefined;\n };\n interactionSpec.dependency = [anotherDimScaleId];\n }\n }\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultTooltip(): SemanticTooltipOption | Nil {\n return null;\n }\n\n protected parseTooltipSpec(): {\n marks: MarkSpec[];\n interactions: InteractionSpec[];\n } {\n const defaultTooltipSpec = this.setDefaultTooltip();\n const userTooltipSpec = this.spec.tooltip;\n const res = {\n marks: [] as MarkSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (userTooltipSpec !== false && userTooltipSpec !== null && defaultTooltipSpec !== null) {\n const tooltipSpec = merge({}, defaultTooltipSpec, userTooltipSpec === true ? {} : userTooltipSpec);\n const colorChannel = isNil((this.spec.encode as any).color)\n ? isNil((this.spec.encode as any).group)\n ? 'stroke'\n : 'group'\n : 'color';\n const colorEncode = (this.spec.encode as any)[colorChannel];\n const dependency = colorEncode ? [this.getScaleId(colorChannel)] : [];\n const colorAccessor = colorEncode ? getFieldAccessor(colorEncode) : null;\n const title = {\n visible: !!tooltipSpec.title || !!tooltipSpec.staticTitle,\n key: 'title',\n value: !isNil(tooltipSpec.staticTitle)\n ? tooltipSpec.staticTitle\n : {\n field: (datum: any, el: IElement, params: any) => {\n return tooltipSpec.title\n ? getFieldAccessor(tooltipSpec.title)(isArray(datum) ? datum[0] : datum)\n : undefined;\n }\n }\n };\n\n if ((this.spec.encode as any).shape) {\n dependency.push(this.getScaleId('shape'));\n }\n const content =\n isArray(tooltipSpec.content) && tooltipSpec.content.length\n ? tooltipSpec.content.map((entry: SemanticTooltipContentItem, index: number) => {\n return {\n key: entry.key\n ? { field: entry.key }\n : !isNil(tooltipSpec.staticContentKey)\n ? isArray(tooltipSpec.staticContentKey)\n ? tooltipSpec.staticContentKey[index]\n : tooltipSpec.staticContentKey\n : (datum: any, params: any) => {\n return colorAccessor ? colorAccessor(datum) : undefined;\n },\n value: { field: entry.value },\n symbol: (datum: any, params: any) => {\n const scale = params[this.getScaleId(colorChannel)];\n const shapeScale = params[this.getScaleId('shape')];\n let symbolType = 'circle';\n if (shapeScale && entry.symbol) {\n symbolType = shapeScale.scale(getFieldAccessor(entry.symbol)(datum));\n } else if (entry.symbol) {\n symbolType = getFieldAccessor(entry.symbol)(datum);\n }\n return {\n fill: scale && colorAccessor ? scale.scale(colorAccessor(datum)) : this.getPalette()?.[0],\n symbolType\n };\n }\n };\n })\n : null;\n if (tooltipSpec.disableGraphicTooltip !== true) {\n const interactionSpec: TooltipSpec = {\n type: 'tooltip',\n selector: `#${this.getMarkId()}`,\n title,\n content,\n attributes: {\n zIndex: 1000\n },\n dependency: [this.getScaleId(colorChannel), this.getScaleId('shape')]\n };\n res.interactions.push(interactionSpec);\n }\n\n if (tooltipSpec.disableDimensionTooltip !== true) {\n const channel = tooltipSpec.dimensionTooltipChannel ?? 'x';\n const interactionSpec: DimensionTooltipSpec = {\n type: 'dimension-tooltip',\n tooltipType: this.getVisualChannel(channel as 'x' | 'y'),\n scale: this.getScaleId(channel),\n target: { data: this.getDataIdOfFiltered(), filter: (this.spec.encode as any)?.[channel] },\n title,\n content,\n avoidMark: tooltipSpec.disableGraphicTooltip ? [] : [`#${this.getMarkId()}`],\n attributes: {\n zIndex: 1000\n },\n dependency: [this.getScaleId(colorChannel), this.getScaleId('shape')]\n };\n res.interactions.push(interactionSpec);\n }\n\n return res;\n }\n\n return res;\n }\n\n protected setDefaultSlider(): Record<string, Partial<SliderSpec>> {\n return {};\n }\n\n protected parseSliderSpec(): {\n marks: SliderSpec[];\n interactions: InteractionSpec[];\n } {\n const slider = this.spec.slider;\n const res = {\n marks: [] as SliderSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (slider) {\n Object.keys(slider).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticSliderOption>(slider[channel]);\n\n if (option) {\n const scaleId = this.getScaleId(channel);\n const scaleSpec = this.getScaleSpec(scaleId);\n const dataId = this.getDataIdOfMain();\n\n if (!scaleSpec || !isContinuous(scaleSpec.type)) {\n this._logger.warn(`[VGrammar]: Don't use slider in a channel which has scale type = ${scaleSpec?.type}`);\n return;\n }\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n const getter = getFieldAccessor(this.spec.encode?.[channel]);\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as SliderAttributes).layout)\n ? (option as SliderAttributes).layout === 'horizontal'\n ? { position: 'top', align: 'center' }\n : (option as SliderAttributes).layout === 'vertical'\n ? { position: 'right', align: 'middle' }\n : { position: 'top', align: 'center' }\n : { position: 'top', align: 'center' });\n\n const markSpec: SliderSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'slider'),\n componentType: ComponentEnum.slider,\n dependency: [SIGNAL_VIEW_BOX, dataId],\n min: (datum: any, elment: IElement, params: any) => {\n const data = params[dataId];\n\n return minInArray(data.map(getter));\n },\n max: (datum: any, elment: IElement, params: any) => {\n const data = params[dataId];\n\n return maxInArray(data.map(getter));\n },\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n layout: 'vertical',\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n railWidth: theme.components.slider.railHeight,\n railHeight: params.viewBox.height()\n }\n : markLayout.position === 'right'\n ? {\n layout: 'vertical',\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n railWidth: theme.components.slider.railHeight,\n railHeight: params.viewBox.height()\n }\n : markLayout.position === 'bottom'\n ? {\n layout: 'horizontal',\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n railHeight: theme.components.slider.railHeight,\n railWidth: params.viewBox.width()\n }\n : {\n layout: 'horizontal',\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n railHeight: theme.components.slider.railHeight,\n railWidth: params.viewBox.width()\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: SliderFilterSpec = {\n type: 'slider-filter',\n source: `#${this.getComponentId(channel, 'slider')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultDataZoom(): Record<string, Partial<DatazoomSpec>> {\n return {};\n }\n\n protected getVisiualPositionByDimension(channel: string) {\n return channel === 'y' ? 'left' : 'bottom';\n }\n\n protected parseDatazoomSpec(): {\n marks: DatazoomSpec[];\n interactions: InteractionSpec[];\n } {\n const datazoom = this.spec.datazoom;\n const res = {\n marks: [] as DatazoomSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (datazoom) {\n Object.keys(datazoom).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticDataZoomOption>(datazoom[channel]);\n\n if (option) {\n const dataId = this.getDataIdOfMain();\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as DataZoomAttributes).orient)\n ? { position: (option as DataZoomAttributes).orient }\n : { position: this.getVisiualPositionByDimension(channel) });\n const preview: DatazoomSpec['preview'] = {\n data: dataId\n };\n const { x, y } = this.getDataZoomScaleId(channel);\n\n if (channel === 'x') {\n preview.x = { scale: x, field: this.spec.encode?.[channel] };\n preview.y = { scale: y, field: (this.spec.encode as any)?.y };\n } else {\n preview[markLayout.position === 'top' || markLayout.position === 'bottom' ? 'x' : 'y'] = {\n scale: x,\n field: (this.spec.encode as any)?.[channel] ?? channel\n };\n }\n\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n const markSpec: DatazoomSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'datazoom'),\n componentType: ComponentEnum.datazoom,\n dependency: [SIGNAL_VIEW_BOX, dataId],\n preview,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: theme.components.datazoom.size.height }\n }\n : markLayout.position === 'right'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: theme.components.datazoom.size.height }\n }\n : markLayout.position === 'bottom'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n size: { width: params.viewBox.width(), height: theme.components.datazoom.size.height }\n }\n : {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { width: params.viewBox.width(), height: theme.components.datazoom.size.height }\n };\n\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: DatazoomFilterSpec = {\n type: 'datazoom-filter',\n source: `#${this.getComponentId(channel, 'datazoom')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultLabel(): Record<string, Partial<LabelSpec>> {\n return {};\n }\n\n protected getLabelPosition(): string {\n if (this._coordinate?.type === 'polar') {\n return this._coordinate.transpose ? 'endAngle' : 'outer';\n }\n\n return this._coordinate?.transpose ? 'right' : 'top';\n }\n\n protected setLabelTextGetter(\n channel: string,\n option: SemanticLabelOption | boolean\n ): ChannelEncodeType<ITextAttribute['text']> {\n return { field: channel };\n }\n\n protected parseLabelSpec(): {\n marks: LabelSpec[];\n interactions: InteractionSpec[];\n } {\n const label = this.spec.label;\n const res = {\n marks: [] as LabelSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (label) {\n Object.keys(label).forEach(channel => {\n const option = label[channel];\n\n if (option) {\n const markSpec: LabelSpec = {\n type: 'component',\n componentType: ComponentEnum.label,\n target: this.getMarkId(),\n layout: {\n position: 'content',\n skipBeforeLayouted: true\n },\n labelStyle: isPlainObject(option)\n ? merge(\n {\n position: this.getLabelPosition()\n },\n option as BaseLabelAttrs\n )\n : { position: this.getLabelPosition() },\n encode: {\n update: {\n text: this.spec.encode[channel]\n ? { field: this.spec.encode[channel] }\n : this.setLabelTextGetter(channel, option)\n }\n }\n };\n res.marks.push(markSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultPlayer(): Record<string, Partial<PlayerSpec>> {\n return {};\n }\n\n protected parsePlayerSpec(): {\n marks: PlayerSpec[];\n interactions: InteractionSpec[];\n } {\n const player = this.spec.player;\n const res = {\n marks: [] as PlayerSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (player) {\n const option = player?.option;\n const layout = player?.layout;\n\n if (option) {\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as PlayerAttributes).orient)\n ? { position: (option as PlayerAttributes).orient }\n : { position: 'bottom' });\n\n const markSpec: PlayerSpec = {\n type: 'component',\n id: this.getComponentId('', 'player'),\n componentType: ComponentEnum.player,\n dependency: [SIGNAL_VIEW_BOX],\n playerType: isPlainObject(option) ? (option as any).type ?? 'auto' : 'auto',\n source: this.getDataIdOfPlayer(),\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: 20 }\n }\n : markLayout.position === 'right'\n ? {\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: 20 }\n }\n : markLayout.position === 'bottom'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n size: { width: params.viewBox.width(), height: 20 }\n }\n : {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { width: params.viewBox.width(), height: 20 }\n };\n\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: PlayerFilterSpec = {\n type: 'player-filter',\n source: `#${this.getComponentId('', 'player')}`,\n target: {\n data: this.getDataIdOfMain()\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n }\n\n return res;\n }\n\n protected parseTitleSpec(): {\n marks: TitleSpec[];\n interactions: InteractionSpec[];\n } {\n const title = this.spec.title;\n const res = {\n marks: [] as TitleSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (title) {\n const { option, layout } = this.parseOption<SemanticTitleOption>(title);\n\n if (option) {\n const markLayout = layout ?? { position: 'top' };\n\n const markSpec: TitleSpec = {\n type: 'component',\n componentType: ComponentEnum.title,\n dependency: [SIGNAL_VIEW_BOX],\n title: (option as SemanticTitleOption).text,\n subTitle: (option as SemanticTitleOption).subtext,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'right'\n ? {\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'bottom'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n width: params.viewBox.width()\n }\n : {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n width: params.viewBox.width()\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n res.marks.push(markSpec);\n }\n }\n\n return res;\n }\n\n protected parseDataSpec() {\n const { data, player } = this.spec;\n const res: DataSpec[] = [];\n\n if (player?.data) {\n res.push({\n id: this.getDataIdOfPlayer(),\n values: player.data\n });\n res.push({\n id: this.getDataIdOfMain(),\n values: player.data?.[0]\n });\n res.push({\n id: this.getDataIdOfFiltered(),\n source: this.getDataIdOfMain()\n });\n } else if (data) {\n const dataId = this.getDataIdOfMain();\n const userTransforms = data.transform;\n const transform = this.convertMarkTransform(userTransforms, this.setDefaultDataTransform());\n\n res.push({\n id: dataId,\n values: data.values,\n transform\n });\n res.push({\n id: this.getDataIdOfFiltered(),\n source: dataId\n });\n }\n\n const multiDatas = this.setMultipleData();\n\n if (multiDatas) {\n multiDatas.forEach(entry => {\n if (entry.id) {\n if (entry.id === this.getDataIdOfFiltered() && res.length) {\n res[res.length - 1].transform = entry.transform;\n } else {\n res.push(entry);\n }\n }\n });\n }\n\n return res;\n }\n\n protected parseScaleSpec() {\n const { encode, scale, datazoom } = this.spec;\n const scales: Record<string, ScaleSpec & { userScale?: ScaleSpec }> = {};\n if (encode) {\n Object.keys(encode).forEach(k => {\n const encodeOption = encode[k];\n const scaleId = this.getScaleId(k);\n const userScale = this.spec.scale?.[k];\n\n if (userScale) {\n scales[scaleId] = Object.assign({ id: scaleId }, this.parseScaleByEncode(k as K, encodeOption), userScale, {\n userScale\n });\n } else {\n scales[scaleId] = Object.assign({ id: scaleId }, this.parseScaleByEncode(k as K, encodeOption));\n }\n });\n }\n if (scale) {\n Object.keys(scale).forEach(k => {\n const scaleId = this.getScaleId(k);\n if (!scales[scaleId]) {\n scales[scaleId] = scale[k];\n scales[scaleId].userScale = scale[k];\n }\n });\n }\n\n if (datazoom) {\n Object.keys(datazoom).forEach(k => {\n const scaleId = this.getScaleId(k);\n const { x: xScaleId, y: yScaleId } = this.getDataZoomScaleId(k);\n\n if (k === 'x' && encode[k]) {\n scales[xScaleId] = {\n type: scales[scaleId].type,\n id: xScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: encode[k]\n },\n dependency: [SIGNAL_VIEW_BOX],\n range: (scale: IBaseScale, params: any) => {\n return [0, params.viewBox.width()];\n }\n };\n\n if ((encode as any).y) {\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n scales[yScaleId] = {\n type: scales[this.getScaleId('y')]?.type ?? 'linear',\n id: yScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: (encode as any)?.y\n },\n range: (scale: IBaseScale, params: any) => {\n const option = this.parseOption<SemanticDataZoomOption>(datazoom[k]).option;\n return [\n 0,\n isPlainObject(option)\n ? (option as DataZoomAttributes).size?.height ?? theme.components.datazoom.size.height\n : theme.components.datazoom.size.height\n ];\n }\n };\n }\n } else {\n scales[xScaleId] = {\n type: scales[scaleId].type ?? 'band',\n id: xScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: (encode as any)?.[k] ?? k\n }\n };\n }\n });\n }\n\n return Array.from(Object.values(scales));\n }\n\n protected parseCoordinateSpec(): CoordinateSpec[] {\n if (!this._coordinate) {\n return [];\n }\n const coordinate: CoordinateSpec = {\n type: this._coordinate.type ?? 'cartesian',\n transpose: this._coordinate.transpose,\n id: this._coordinate.id,\n dependency: [SIGNAL_VIEW_BOX],\n start: [0, 0],\n end: (coord: IBaseCoordinate, params: any) => {\n return [params.viewBox.width(), params.viewBox.height()];\n }\n };\n\n if (this._coordinate.type === 'polar' && this._coordinate.origin) {\n coordinate.origin = (coord: IBaseCoordinate, params: any) => {\n return [\n toPercent((this._coordinate as PolarCoordinateOption).origin[0], params.viewBox.width()),\n toPercent((this._coordinate as PolarCoordinateOption).origin[1], params.viewBox.height())\n ] as [number, number];\n };\n }\n\n return [coordinate];\n }\n\n protected setMainMarkEnterEncode() {\n return this.spec.style;\n }\n\n protected setMainMarkSpec() {\n return {};\n }\n\n protected setMultiMarksSpec(): MarkSpec[] {\n return null;\n }\n\n toViewSpec(): ViewSpec {\n this.viewSpec = {};\n const filteredDataId = this.getDataIdOfFiltered();\n this.viewSpec.data = this.parseDataSpec();\n this.viewSpec.scales = this.parseScaleSpec();\n this.viewSpec.coordinates = this.parseCoordinateSpec();\n let marks: MarkSpec[] = [];\n let interactions: InteractionSpec[] = [];\n\n const legendSpec = this.parseLegendSpec();\n marks = marks.concat(legendSpec.marks);\n interactions = interactions.concat(legendSpec.interactions);\n\n const axisSpec = this.parseAxisSpec();\n marks = marks.concat(axisSpec.marks);\n interactions = interactions.concat(axisSpec.interactions);\n\n const gridSpec = this.parseGridSpec();\n marks = marks.concat(gridSpec.marks);\n interactions = interactions.concat(gridSpec.interactions);\n\n const crosshairSpec = this.parseCrosshairSpec();\n marks = marks.concat(crosshairSpec.marks);\n interactions = interactions.concat(crosshairSpec.interactions);\n\n const sliderSpec = this.parseSliderSpec();\n marks = marks.concat(sliderSpec.marks);\n interactions = interactions.concat(sliderSpec.interactions);\n\n const datazoomSpec = this.parseDatazoomSpec();\n marks = marks.concat(datazoomSpec.marks);\n interactions = interactions.concat(datazoomSpec.interactions);\n\n const playerSpec = this.parsePlayerSpec();\n marks = marks.concat(playerSpec.marks);\n interactions = interactions.concat(playerSpec.interactions);\n\n const titleSpec = this.parseTitleSpec();\n marks = marks.concat(titleSpec.marks);\n interactions = interactions.concat(titleSpec.interactions);\n\n marks.push(\n Object.assign(\n {\n id: this.getMarkId(),\n type: this.setMarkType(),\n coordinate: this._coordinate?.id,\n from: {\n data: filteredDataId\n },\n groupBy: (this.spec.encode as any)?.group,\n layout: {\n position: 'content',\n skipBeforeLayouted: true\n },\n dependency: this.viewSpec.scales.map(scale => scale.id).concat(SIGNAL_VIEW_BOX),\n transform: this.convertMarkTransform(this.spec.transform, this.setDefaultMarkTransform()),\n animation: this.convertMarkAnimation(),\n encode: Object.assign({}, this.spec.state, {\n enter: this.setMainMarkEnterEncode(),\n update: this.convertMarkEncode(this.spec.encode)\n })\n },\n this.setMainMarkSpec()\n )\n );\n\n const otherMarks = this.setMultiMarksSpec();\n\n if (otherMarks) {\n marks = marks.concat(otherMarks);\n }\n\n const labelSpec = this.parseLabelSpec();\n marks = marks.concat(labelSpec.marks);\n interactions = interactions.concat(labelSpec.interactions);\n\n const tooltipSpec = this.parseTooltipSpec();\n marks = marks.concat(tooltipSpec.marks);\n interactions = interactions.concat(tooltipSpec.interactions);\n\n this.viewSpec.marks = marks;\n this.viewSpec.interactions = interactions;\n\n return this.viewSpec;\n }\n\n clear() {\n this.spec = { id: this.spec.id };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/semantic-mark.ts"],"names":[],"mappings":"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","file":"semantic-mark.js","sourcesContent":["import type {\n LegendBaseAttributes,\n SliderAttributes,\n DataZoomAttributes,\n BaseLabelAttrs,\n PlayerAttributes,\n OrientType\n} from '@visactor/vrender-components';\nimport type { ILogger } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n Logger,\n array,\n isArray,\n isBoolean,\n isNil,\n isPlainObject,\n maxInArray,\n merge,\n minInArray\n} from '@visactor/vutils';\nimport { isContinuous, type IBaseScale, isDiscrete } from '@visactor/vscale';\nimport type {\n ISemanticMark,\n ISemanticMarkSpec,\n ParsedSimpleEncode,\n WithDefaultEncode,\n SemanticTooltipOption,\n SemanticAxisOption,\n SemanticPlayerOption,\n SemanticLabelOption,\n SemanticDataZoomOption,\n SemanticSliderOption,\n SemanticLegendOption,\n SemanticCrosshairOption,\n CoordinateOption,\n PolarCoordinateOption,\n AxisSpec,\n CrosshairSpec,\n DatazoomSpec,\n LabelSpec,\n LegendSpec,\n PlayerSpec,\n SliderSpec,\n TooltipSpec,\n CoordinateSpec,\n DataSpec,\n ChannelEncodeType,\n ScaleSpec,\n TransformSpec,\n MarkAnimationSpec,\n ViewSpec,\n MarkType,\n Nil,\n ValueOf,\n GenerateBaseEncodeSpec,\n IElement,\n IAnimationConfig,\n MarkSpec,\n MarkRelativeItemSpec,\n IPlot,\n SemanticTooltipContentItem,\n SemanticGridOption,\n GridSpec,\n TitleSpec,\n SemanticTitleOption,\n InteractionSpec,\n LegendFilterSpec,\n SliderFilterSpec,\n DatazoomFilterSpec,\n PlayerFilterSpec,\n DimensionTooltipSpec\n} from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentEnum, SIGNAL_VIEW_BOX, BuiltInEncodeNames, ThemeManager, Factory } from '@visactor/vgrammar-core';\nimport { field as getFieldAccessor, isHorizontal, isVertical, toPercent } from '@visactor/vgrammar-util';\nimport type { IBaseCoordinate } from '@visactor/vgrammar-coordinate';\nimport type { ITextAttribute } from '@visactor/vrender-core';\n\nlet semanticMarkId = -1;\n\nexport abstract class SemanticMark<EncodeSpec, K extends string> implements ISemanticMark<EncodeSpec, K> {\n //declare type: T;\n spec: ISemanticMarkSpec<EncodeSpec, K>;\n viewSpec?: ViewSpec;\n\n readonly uid: number;\n protected _logger: ILogger;\n protected _coordinate: CoordinateOption;\n readonly type: string;\n readonly plot: IPlot;\n\n constructor(type: string, id?: string | number, plot?: IPlot) {\n this.type = type;\n this.uid = ++semanticMarkId;\n this._logger = Logger.getInstance();\n this.plot = plot;\n\n this.spec = { id: id ?? `${this.type}-${this.uid}` };\n }\n\n parseSpec(spec: Partial<ISemanticMarkSpec<EncodeSpec, K>>) {\n if (isNil(spec.id)) {\n spec.id = this.spec.id;\n }\n this.spec = spec as ISemanticMarkSpec<EncodeSpec, K>;\n return this;\n }\n\n coordinate(option: CoordinateOption) {\n this._coordinate = option;\n return this;\n }\n\n data(values: any, transform?: TransformSpec[], id?: string) {\n if (isNil(values)) {\n return this;\n }\n\n this.spec.data = { values, transform, id };\n return this;\n }\n\n encode(channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>) {\n if (!this.spec.encode) {\n this.spec.encode = {};\n }\n this.spec.encode[channel] = option;\n\n return this;\n }\n scale(channel: string, option: Partial<ScaleSpec>) {\n if (!this.spec.scale) {\n this.spec.scale = {};\n }\n\n this.spec.scale[channel] = option;\n return this;\n }\n style(style: Partial<EncodeSpec & any>) {\n this.spec.style = style;\n return this;\n }\n transform(option: TransformSpec | TransformSpec[]) {\n this.spec.transform = array(option) as TransformSpec[];\n\n return this;\n }\n state(state: string, option: Partial<EncodeSpec>) {\n if (\n (\n [\n BuiltInEncodeNames.enter,\n BuiltInEncodeNames.update,\n BuiltInEncodeNames.exit,\n BuiltInEncodeNames.group\n ] as string[]\n ).includes(state)\n ) {\n this._logger.warn(\n `[VGrammar]: ${state} is a reserved keyword to specify the encode of different data state, \n don't use this keyword`\n );\n\n return;\n }\n\n if (!this.spec.state) {\n this.spec.state = {};\n }\n this.spec.state[state] = option;\n return this;\n }\n animate(state: string, option: IAnimationConfig | IAnimationConfig[]) {\n if (state === 'state') {\n this._logger.warn(\n `[VGrammar]: ${state} is a keyword use to specify state animation config, don't use this keyword`\n );\n\n return this;\n }\n\n if (!this.spec.animation) {\n this.spec.animation = {};\n }\n\n this.spec.animation[state] = option;\n\n return this;\n }\n axis(channel: string, option: SemanticAxisOption | boolean = true, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('axis')) {\n this._logger.error(\n `Please add this line of code: import { registerAxis } from '@visactor/vgrammar-core'; \n and run \"registerAxis();\" or \"View.useRegisters([registerAxis]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.axis) {\n this.spec.axis = {};\n }\n this.spec.axis[channel] = { option, layout };\n\n return this;\n }\n\n grid(channel: string, option: SemanticGridOption | boolean = true) {\n if (!Factory.hasComponent('grid')) {\n this._logger.error(\n `Please add this line of code: import { registerGrid } from '@visactor/vgrammar-core'; \n and run \"registerGrid();\" or \"View.useRegisters([registerGrid]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.grid) {\n this.spec.grid = {};\n }\n this.spec.grid[channel] = option;\n\n return this;\n }\n\n legend(channel: string, option: SemanticLegendOption | boolean = true, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('legend')) {\n this._logger.error(\n `Please add this line of code: import { registerLegend } from '@visactor/vgrammar-core'; \n and run \"registerLegend();\" or \"View.useRegisters([registerLegend]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.legend) {\n this.spec.legend = {};\n }\n\n this.spec.legend[channel] = { option, layout };\n\n return this;\n }\n crosshair(channel: string, option?: SemanticCrosshairOption | boolean) {\n if (!Factory.hasComponent('crosshair')) {\n this._logger.error(\n `Please add this line of code: import { registerCrosshair } from '@visactor/vgrammar-core'; \n and run \"registerCrosshair();\" or \"View.useRegisters([registerCrosshair]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.crosshair) {\n this.spec.crosshair = {};\n }\n\n this.spec.crosshair[channel] = option;\n\n return this;\n }\n tooltip(option: SemanticTooltipOption | boolean) {\n if (!Factory.hasComponent('tooltip')) {\n this._logger.error(\n `Please add this line of code: import { registerTooltip } from '@visactor/vgrammar-core'; \n and run \"registerTooltip();\" or \"View.useRegisters([registerTooltip]);\" `\n );\n\n return this;\n }\n\n this.spec.tooltip = option;\n\n return this;\n }\n\n slider(channel: string, option?: SemanticSliderOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('slider')) {\n this._logger.error(\n `Please add this line of code: import { registerSlider } from '@visactor/vgrammar-core'; \n and run \"registerSlider();\" or \"View.useRegisters([registerSlider]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.slider) {\n this.spec.slider = {};\n }\n\n this.spec.slider[channel] = { option, layout };\n\n return this;\n }\n datazoom(channel: string, option?: SemanticDataZoomOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('datazoom')) {\n this._logger.error(\n `Please add this line of code: import { registerDataZoom } from '@visactor/vgrammar-core'; \n and run \"registerDataZoom();\" or \"View.useRegisters([registerDataZoom]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.datazoom) {\n this.spec.datazoom = {};\n }\n\n this.spec.datazoom[channel] = { option, layout };\n\n return this;\n }\n label(channel: string, option?: SemanticLabelOption | boolean) {\n if (!Factory.hasComponent('label')) {\n this._logger.error(\n `Please add this line of code: import { registerLabel } from '@visactor/vgrammar-core'; \n and run \"registerLabel();\" or \"View.useRegisters([registerLabel]);\" `\n );\n\n return this;\n }\n\n if (!this.spec.label) {\n this.spec.label = {};\n }\n\n this.spec.label[channel] = option;\n\n return this;\n }\n player(data?: any[], option?: SemanticPlayerOption | boolean, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('player')) {\n this._logger.error(\n `Please add this line of code: import { registerPlayer } from '@visactor/vgrammar-core'; \n and run \"registerPlayer();\" or \"View.useRegisters([registerPlayer]);\" `\n );\n\n return this;\n }\n\n this.spec.player = { data, option, layout };\n\n return this;\n }\n\n title(option: SemanticTitleOption, layout?: MarkRelativeItemSpec) {\n if (!Factory.hasComponent('title')) {\n this._logger.error(\n `Please add this line of code: import { registerTitle } from '@visactor/vgrammar-core'; \n and run \"registerTitle();\" or \"View.useRegisters([registerTitle]);\" `\n );\n\n return this;\n }\n\n this.spec.title = { option, layout };\n\n return this;\n }\n\n protected getPalette() {\n return (this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme()).palette?.default;\n }\n\n abstract setMarkType(): MarkType;\n abstract parseScaleByEncode(channel: K, option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil;\n abstract convertMarkEncode(encode: WithDefaultEncode<EncodeSpec, K>): GenerateBaseEncodeSpec<EncodeSpec>;\n\n protected setDefaultDataTransform(): TransformSpec[] {\n return [];\n }\n\n protected setMultipleData(): DataSpec[] {\n return null;\n }\n\n protected setDefaultMarkTransform(): TransformSpec[] {\n return [];\n }\n\n protected convertMarkTransform(userTransform: TransformSpec[], defaultTransform: TransformSpec[] = []) {\n if (defaultTransform && defaultTransform.length) {\n if (userTransform && userTransform.length) {\n let transforms = [];\n const excludeIndex = [];\n\n for (let i = 0, len = userTransform.length; i < len; i++) {\n const customizedSpec = userTransform[i];\n const index = defaultTransform.findIndex(entry => entry.type === customizedSpec.type);\n\n if (index >= 0) {\n transforms.push(merge({}, defaultTransform[index], customizedSpec));\n excludeIndex.push(index);\n } else {\n transforms.push(customizedSpec);\n }\n }\n\n for (let j = 0, dlen = defaultTransform.length; j < dlen; j++) {\n if (!excludeIndex.includes(j)) {\n transforms = [defaultTransform[j]].concat(transforms);\n }\n }\n\n return transforms;\n }\n\n return defaultTransform;\n }\n\n return userTransform;\n }\n\n protected convertMarkAnimation(): MarkAnimationSpec {\n if (!this.spec.animation) {\n return null;\n }\n\n return this.spec.animation;\n }\n\n protected convertSimpleMarkEncode(encode: WithDefaultEncode<EncodeSpec, K>): ParsedSimpleEncode<EncodeSpec, K> {\n if (!encode) {\n return {};\n }\n\n const markEncoder = {};\n\n Object.keys(encode).map(channel => {\n markEncoder[channel] = { field: encode[channel], scale: this.getScaleId(channel), band: 0.5 };\n });\n\n return markEncoder;\n }\n\n protected getDataIdOfFiltered() {\n return `${this.spec.data?.id ?? this.spec.id}-data-filtered`;\n }\n\n protected getDataIdOfMain() {\n return `${this.spec.data?.id ?? this.spec.id}-data`;\n }\n\n protected getDataIdOfPlayer() {\n return `${this.spec.data?.id ?? this.spec.id}-player`;\n }\n\n protected getDataZoomScaleId(channel: string) {\n return {\n x: `datazoom-scale-${channel}-x`,\n y: `datazoom-scale-${channel}-y`\n };\n }\n\n protected getScaleId(channel: string) {\n return this.spec.scale?.[channel]?.id ?? `scale-${channel}`;\n }\n\n protected getMarkId() {\n return `${this.spec.id}-mark`;\n }\n\n protected getComponentId(id: string, component?: string) {\n return `${this.spec.id}-${component ?? 'component'}-${id}`;\n }\n\n protected getScaleSpec(scaleId: string) {\n return this.viewSpec?.scales?.find?.(scale => scale.id === scaleId);\n }\n\n protected parseScaleOfEncodeX(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'band',\n id: this.getScaleId('x'),\n dependency: [SIGNAL_VIEW_BOX],\n domain: {\n data: this.getDataIdOfFiltered(),\n field: option as string\n },\n range: this._coordinate\n ? { coordinate: this._coordinate.id, dimension: 'x' }\n : (scale: IBaseScale, params: any) => {\n return [0, params.viewBox.width()];\n }\n };\n }\n\n protected parseScaleOfEncodeY(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'linear',\n dependency: [SIGNAL_VIEW_BOX],\n id: this.getScaleId('y'),\n domain: {\n data: this.getDataIdOfFiltered(),\n field: option as string\n },\n range: this._coordinate\n ? { coordinate: this._coordinate.id, dimension: 'y' }\n : (scale: IBaseScale, params: any) => {\n return [params.viewBox.height(), 0];\n }\n };\n }\n\n protected parseScaleOfEncodeColor(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('color'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfEncodeStroke(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('stroke'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfEncodeGroup(option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>): ScaleSpec | Nil {\n return {\n type: 'ordinal',\n id: this.getScaleId('group'),\n domain: {\n data: this.getDataIdOfMain(),\n field: option as string\n },\n range: this.getPalette()\n };\n }\n\n protected parseScaleOfCommonEncode(\n channel: K,\n option: ValueOf<WithDefaultEncode<EncodeSpec, K>, K>\n ): ScaleSpec | Nil {\n if (channel === 'x') {\n return this.parseScaleOfEncodeX(option);\n }\n\n if (channel === 'y') {\n return this.parseScaleOfEncodeY(option);\n }\n\n if (channel === 'color') {\n return this.parseScaleOfEncodeColor(option);\n }\n\n if (channel === 'group') {\n return this.parseScaleOfEncodeGroup(option);\n }\n\n if (channel === 'stroke') {\n return this.parseScaleOfEncodeStroke(option);\n }\n\n return null;\n }\n\n protected setDefaultAxis(): Record<string, Partial<AxisSpec>> {\n return {};\n }\n\n protected parseAxisSpec(): {\n marks: AxisSpec[];\n interactions: InteractionSpec[];\n } {\n const axis = this.spec.axis;\n const res = {\n marks: [] as AxisSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (axis) {\n Object.keys(axis).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticAxisOption>(axis[channel]);\n\n if (option) {\n const axisMarkSpec: AxisSpec = {\n type: 'component',\n componentType: ComponentEnum.axis,\n scale: this.getScaleId(channel),\n dependency: [SIGNAL_VIEW_BOX],\n tickCount: (option as SemanticAxisOption).tickCount,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const positionAttrs = this._coordinate\n ? {}\n : channel === 'x'\n ? {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n end: { x: params.viewBox.width(), y: 0 }\n }\n : {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n verticalFactor: -1,\n end: { x: 0, y: -params.viewBox.height() }\n };\n\n return isPlainObject(option) ? merge(positionAttrs, option) : positionAttrs;\n }\n }\n };\n axisMarkSpec.layout = layout ?? {\n position: this._coordinate\n ? 'auto'\n : isPlainObject(layout) && !isNil((layout as SemanticAxisOption).orient)\n ? (layout as SemanticAxisOption).orient\n : channel === 'x'\n ? 'bottom'\n : 'left'\n };\n res.marks.push(axisMarkSpec);\n }\n });\n }\n\n return res;\n }\n\n protected parseGridSpec(): {\n marks: GridSpec[];\n interactions: InteractionSpec[];\n } {\n const grid = this.spec.grid;\n const res = {\n marks: [] as GridSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (grid) {\n Object.keys(grid).forEach(channel => {\n const option = grid[channel];\n\n if (option) {\n const relatedAxisOption = this.parseOption<SemanticAxisOption>(this.spec.axis?.[channel])?.option;\n const visiualChannel = this.getVisualChannel(channel as 'x' | 'y');\n const isCircleGrid = visiualChannel === 'radius';\n const tickCount =\n (option as SemanticGridOption).tickCount ?? (relatedAxisOption as SemanticAxisOption)?.tickCount;\n const otherChannel = channel === 'x' ? 'y' : 'x';\n const otherScaleId = this.getScaleId(otherChannel);\n const otherAxisOption = this.parseOption<SemanticAxisOption>(this.spec.axis?.[otherChannel])?.option;\n\n const markSpec: GridSpec = {\n type: 'component',\n componentType: ComponentEnum.grid,\n scale: this.getScaleId(channel),\n dependency: [SIGNAL_VIEW_BOX, otherScaleId],\n tickCount: tickCount,\n inside: (option as SemanticGridOption).inside,\n baseValue: (option as SemanticGridOption).baseValue,\n gridType: visiualChannel === 'angle' ? 'circle' : 'line',\n gridShape: isCircleGrid ? (option.type === 'polygon' ? 'polygon' : 'circle') : 'line',\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const positionAttrs = this._coordinate\n ? {}\n : channel === 'x'\n ? {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n end: { x: params.viewBox.width(), y: 0 },\n length: params.viewBox.height()\n }\n : {\n x: 0,\n y: params.viewBox.height(),\n start: { x: 0, y: 0 },\n verticalFactor: -1,\n end: { x: 0, y: -params.viewBox.height() },\n length: params.viewBox.width()\n };\n\n if (isCircleGrid && option.type === 'polygon') {\n (positionAttrs as any).sides =\n option?.sides ??\n params[otherScaleId]?.ticks((otherAxisOption as SemanticAxisOption)?.tickCount)?.length;\n }\n\n return isPlainObject(option) ? merge(positionAttrs, option) : positionAttrs;\n }\n }\n };\n\n res.marks.push(markSpec);\n }\n });\n }\n\n return res;\n }\n\n protected parseOption<T>(spec: { option: T | boolean; layout?: MarkRelativeItemSpec } | T | boolean) {\n let option: T | boolean;\n let layout: MarkRelativeItemSpec;\n\n if (isPlainObject(spec)) {\n if (isNil((spec as any).option)) {\n option = spec as T;\n } else {\n option = (spec as { option: T | boolean; layout?: MarkRelativeItemSpec }).option;\n layout = (spec as { option: T | boolean; layout?: MarkRelativeItemSpec }).layout;\n }\n } else {\n option = spec;\n }\n\n return { option, layout };\n }\n\n protected setDefaultLegend(): Record<string, Partial<LegendSpec>> {\n return {};\n }\n\n protected parseLegendSpec(): {\n marks: LegendSpec[];\n interactions: InteractionSpec[];\n } {\n const legend = this.spec.legend;\n const res = {\n marks: [] as LegendSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (legend) {\n Object.keys(legend).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticLegendOption>(legend[channel]);\n\n if (option) {\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as LegendBaseAttributes).layout)\n ? isHorizontal((option as LegendBaseAttributes).layout)\n ? { position: 'top', align: 'center' }\n : isVertical((option as LegendBaseAttributes).layout)\n ? { position: 'right', align: 'middle' }\n : { position: 'top', align: 'center' }\n : { position: 'top', align: 'center' });\n const markSpec: LegendSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'legend'),\n componentType: ComponentEnum.legend,\n scale: this.getScaleId(channel),\n shapeScale: this.getScaleId('shape'),\n dependency: [SIGNAL_VIEW_BOX],\n encode: {\n update: (datum: any, element: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n layout: 'vertical',\n x: element.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: element.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'right'\n ? {\n layout: 'vertical',\n x: element.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: element.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'bottom'\n ? {\n layout: 'horizontal',\n x: element.mark?.relativePosition?.left ?? 0,\n y: element.mark?.relativePosition?.top ?? params.viewBox.height()\n }\n : {\n layout: 'horizontal',\n x: element.mark?.relativePosition?.left ?? 0,\n y: element.mark?.relativePosition?.top ?? 0\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: LegendFilterSpec = {\n type: 'legend-filter',\n source: `#${this.getComponentId(channel, 'legend')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultCrosshair(): Record<string, Pick<CrosshairSpec, 'crosshairShape' | 'crosshairType'>> {\n return {};\n }\n\n protected getVisualChannel(channel: 'x' | 'y'): 'x' | 'y' | 'angle' | 'radius' {\n if (this._coordinate?.type === 'polar') {\n return this._coordinate.transpose ? (channel === 'x' ? 'radius' : 'angle') : channel === 'x' ? 'angle' : 'radius';\n }\n\n return (this._coordinate?.transpose ? (channel === 'x' ? 'y' : 'x') : channel) as 'x' | 'y' | 'angle' | 'radius';\n }\n\n protected parseCrosshairSpec(): {\n marks: MarkSpec[];\n interactions: CrosshairSpec[];\n } {\n const defaultCrosshair = this.setDefaultCrosshair();\n const defaultKeys = Object.keys(defaultCrosshair);\n const crosshairKeys = this.spec.crosshair\n ? Object.keys(this.spec.crosshair).reduce((res, key) => {\n if (!res.includes(key)) {\n res.push(key);\n }\n return res;\n }, defaultKeys)\n : defaultKeys;\n const res = {\n marks: [] as MarkSpec[],\n interactions: [] as CrosshairSpec[]\n };\n\n if (crosshairKeys.length) {\n crosshairKeys.forEach(channel => {\n const userOption = this.spec.crosshair?.[channel];\n const option = userOption ?? defaultCrosshair[channel];\n\n if (option) {\n const scaleId = this.getScaleId(channel);\n const scaleSpec = this.getScaleSpec(scaleId);\n const interactionSpec: CrosshairSpec = {\n type: 'crosshair',\n scale: this.getScaleId(channel),\n crosshairShape: isBoolean(option)\n ? scaleSpec?.type === 'band'\n ? 'rect'\n : 'line'\n : (option as CrosshairSpec).crosshairShape ?? (scaleSpec?.type === 'band' ? 'rect' : 'line'),\n crosshairType: this.getVisualChannel(channel as 'x' | 'y'),\n container: '#plotContainer'\n };\n\n if (isPlainObject(userOption)) {\n interactionSpec.attributes = userOption;\n if (userOption.type === 'polygon') {\n interactionSpec.crosshairType = 'radius-polygon';\n const anotherDimScaleId = this.getScaleId(channel === 'x' ? 'y' : 'x');\n (interactionSpec.attributes as any).sides = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.domain().length : undefined;\n };\n (interactionSpec.attributes as any).startAngle = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.range()[0] + (scale?.bandwidth?.() ?? 0) / 2 : undefined;\n };\n (interactionSpec.attributes as any).endAngle = (datum: any, params: any) => {\n const scale = params[anotherDimScaleId];\n return scale && isDiscrete(scale.type) ? scale.range()[1] + (scale?.bandwidth?.() ?? 0) / 2 : undefined;\n };\n interactionSpec.dependency = [anotherDimScaleId];\n }\n }\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultTooltip(): SemanticTooltipOption | Nil {\n return null;\n }\n\n protected parseTooltipSpec(): {\n marks: MarkSpec[];\n interactions: InteractionSpec[];\n } {\n const defaultTooltipSpec = this.setDefaultTooltip();\n const userTooltipSpec = this.spec.tooltip;\n const res = {\n marks: [] as MarkSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (userTooltipSpec !== false && userTooltipSpec !== null && defaultTooltipSpec !== null) {\n const tooltipSpec = merge({}, defaultTooltipSpec, userTooltipSpec === true ? {} : userTooltipSpec);\n const colorChannel = isNil((this.spec.encode as any).color)\n ? isNil((this.spec.encode as any).group)\n ? 'stroke'\n : 'group'\n : 'color';\n const colorEncode = (this.spec.encode as any)[colorChannel];\n const dependency = colorEncode ? [this.getScaleId(colorChannel)] : [];\n const colorAccessor = colorEncode ? getFieldAccessor(colorEncode) : null;\n const title = {\n visible: !!tooltipSpec.title || !!tooltipSpec.staticTitle,\n key: 'title',\n value: !isNil(tooltipSpec.staticTitle)\n ? tooltipSpec.staticTitle\n : {\n field: (datum: any, el: IElement, params: any) => {\n return tooltipSpec.title\n ? getFieldAccessor(tooltipSpec.title)(isArray(datum) ? datum[0] : datum)\n : undefined;\n }\n }\n };\n\n if ((this.spec.encode as any).shape) {\n dependency.push(this.getScaleId('shape'));\n }\n const content =\n isArray(tooltipSpec.content) && tooltipSpec.content.length\n ? tooltipSpec.content.map((entry: SemanticTooltipContentItem, index: number) => {\n return {\n key: entry.key\n ? { field: entry.key }\n : !isNil(tooltipSpec.staticContentKey)\n ? isArray(tooltipSpec.staticContentKey)\n ? tooltipSpec.staticContentKey[index]\n : tooltipSpec.staticContentKey\n : (datum: any, params: any) => {\n return colorAccessor ? colorAccessor(datum) : undefined;\n },\n value: { field: entry.value },\n symbol: (datum: any, params: any) => {\n const scale = params[this.getScaleId(colorChannel)];\n const shapeScale = params[this.getScaleId('shape')];\n let symbolType = 'circle';\n if (shapeScale && entry.symbol) {\n symbolType = shapeScale.scale(getFieldAccessor(entry.symbol)(datum));\n } else if (entry.symbol) {\n symbolType = getFieldAccessor(entry.symbol)(datum);\n }\n return {\n fill: scale && colorAccessor ? scale.scale(colorAccessor(datum)) : this.getPalette()?.[0],\n symbolType\n };\n }\n };\n })\n : null;\n if (tooltipSpec.disableGraphicTooltip !== true) {\n const interactionSpec: TooltipSpec = {\n type: 'tooltip',\n selector: `#${this.getMarkId()}`,\n title,\n content,\n attributes: {\n zIndex: 1000\n },\n dependency: [this.getScaleId(colorChannel), this.getScaleId('shape')]\n };\n res.interactions.push(interactionSpec);\n }\n\n if (tooltipSpec.disableDimensionTooltip !== true) {\n const channel = tooltipSpec.dimensionTooltipChannel ?? 'x';\n const interactionSpec: DimensionTooltipSpec = {\n type: 'dimension-tooltip',\n tooltipType: this.getVisualChannel(channel as 'x' | 'y'),\n scale: this.getScaleId(channel),\n target: { data: this.getDataIdOfFiltered(), filter: (this.spec.encode as any)?.[channel] },\n title,\n content,\n avoidMark: tooltipSpec.disableGraphicTooltip ? [] : [`#${this.getMarkId()}`],\n attributes: {\n zIndex: 1000\n },\n dependency: [this.getScaleId(colorChannel), this.getScaleId('shape')]\n };\n res.interactions.push(interactionSpec);\n }\n\n return res;\n }\n\n return res;\n }\n\n protected setDefaultSlider(): Record<string, Partial<SliderSpec>> {\n return {};\n }\n\n protected parseSliderSpec(): {\n marks: SliderSpec[];\n interactions: InteractionSpec[];\n } {\n const slider = this.spec.slider;\n const res = {\n marks: [] as SliderSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (slider) {\n Object.keys(slider).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticSliderOption>(slider[channel]);\n\n if (option) {\n const scaleId = this.getScaleId(channel);\n const scaleSpec = this.getScaleSpec(scaleId);\n const dataId = this.getDataIdOfMain();\n\n if (!scaleSpec || !isContinuous(scaleSpec.type)) {\n this._logger.warn(`[VGrammar]: Don't use slider in a channel which has scale type = ${scaleSpec?.type}`);\n return;\n }\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n const getter = getFieldAccessor(this.spec.encode?.[channel]);\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as SliderAttributes).layout)\n ? isHorizontal((option as SliderAttributes).layout)\n ? { position: 'top', align: 'center' }\n : isVertical((option as SliderAttributes).layout)\n ? { position: 'right', align: 'middle' }\n : { position: 'top', align: 'center' }\n : { position: 'top', align: 'center' });\n\n const markSpec: SliderSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'slider'),\n componentType: ComponentEnum.slider,\n dependency: [SIGNAL_VIEW_BOX, dataId],\n min: (datum: any, elment: IElement, params: any) => {\n const data = params[dataId];\n\n return minInArray(data.map(getter));\n },\n max: (datum: any, elment: IElement, params: any) => {\n const data = params[dataId];\n\n return maxInArray(data.map(getter));\n },\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n layout: 'vertical',\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n railWidth: theme.components.slider.railHeight,\n railHeight: params.viewBox.height()\n }\n : markLayout.position === 'right'\n ? {\n layout: 'vertical',\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n railWidth: theme.components.slider.railHeight,\n railHeight: params.viewBox.height()\n }\n : markLayout.position === 'bottom'\n ? {\n layout: 'horizontal',\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n railHeight: theme.components.slider.railHeight,\n railWidth: params.viewBox.width()\n }\n : {\n layout: 'horizontal',\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n railHeight: theme.components.slider.railHeight,\n railWidth: params.viewBox.width()\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: SliderFilterSpec = {\n type: 'slider-filter',\n source: `#${this.getComponentId(channel, 'slider')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultDataZoom(): Record<string, Partial<DatazoomSpec>> {\n return {};\n }\n\n protected getVisiualPositionByDimension(channel: string) {\n return channel === 'y' ? 'left' : 'bottom';\n }\n\n protected parseDatazoomSpec(): {\n marks: DatazoomSpec[];\n interactions: InteractionSpec[];\n } {\n const datazoom = this.spec.datazoom;\n const res = {\n marks: [] as DatazoomSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (datazoom) {\n Object.keys(datazoom).forEach(channel => {\n const { option, layout } = this.parseOption<SemanticDataZoomOption>(datazoom[channel]);\n\n if (option) {\n const dataId = this.getDataIdOfMain();\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as DataZoomAttributes).orient)\n ? { position: (option as DataZoomAttributes).orient }\n : { position: this.getVisiualPositionByDimension(channel) });\n const preview: DatazoomSpec['preview'] = {\n data: dataId\n };\n const { x, y } = this.getDataZoomScaleId(channel);\n\n if (channel === 'x') {\n preview.x = { scale: x, field: this.spec.encode?.[channel] };\n preview.y = { scale: y, field: (this.spec.encode as any)?.y };\n } else {\n preview[markLayout.position === 'top' || markLayout.position === 'bottom' ? 'x' : 'y'] = {\n scale: x,\n field: (this.spec.encode as any)?.[channel] ?? channel\n };\n }\n\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n const markSpec: DatazoomSpec = {\n type: 'component',\n id: this.getComponentId(channel, 'datazoom'),\n componentType: ComponentEnum.datazoom,\n dependency: [SIGNAL_VIEW_BOX, dataId],\n preview,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: theme.components.datazoom.size.height }\n }\n : markLayout.position === 'right'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: theme.components.datazoom.size.height }\n }\n : markLayout.position === 'bottom'\n ? {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n size: { width: params.viewBox.width(), height: theme.components.datazoom.size.height }\n }\n : {\n orient: markLayout.position as OrientType,\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { width: params.viewBox.width(), height: theme.components.datazoom.size.height }\n };\n\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: DatazoomFilterSpec = {\n type: 'datazoom-filter',\n source: `#${this.getComponentId(channel, 'datazoom')}`,\n target: {\n data: this.getDataIdOfFiltered(),\n filter: this.spec.encode?.[channel]\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultLabel(): Record<string, Partial<LabelSpec>> {\n return {};\n }\n\n protected getLabelPosition(): string {\n if (this._coordinate?.type === 'polar') {\n return this._coordinate.transpose ? 'endAngle' : 'outer';\n }\n\n return this._coordinate?.transpose ? 'right' : 'top';\n }\n\n protected setLabelTextGetter(\n channel: string,\n option: SemanticLabelOption | boolean\n ): ChannelEncodeType<ITextAttribute['text']> {\n return { field: channel };\n }\n\n protected parseLabelSpec(): {\n marks: LabelSpec[];\n interactions: InteractionSpec[];\n } {\n const label = this.spec.label;\n const res = {\n marks: [] as LabelSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (label) {\n Object.keys(label).forEach(channel => {\n const option = label[channel];\n\n if (option) {\n const markSpec: LabelSpec = {\n type: 'component',\n componentType: ComponentEnum.label,\n target: this.getMarkId(),\n layout: {\n position: 'content',\n skipBeforeLayouted: true\n },\n labelStyle: isPlainObject(option)\n ? merge(\n {\n position: this.getLabelPosition()\n },\n option as BaseLabelAttrs\n )\n : { position: this.getLabelPosition() },\n encode: {\n update: {\n text: this.spec.encode[channel]\n ? { field: this.spec.encode[channel] }\n : this.setLabelTextGetter(channel, option)\n }\n }\n };\n res.marks.push(markSpec);\n }\n });\n }\n\n return res;\n }\n\n protected setDefaultPlayer(): Record<string, Partial<PlayerSpec>> {\n return {};\n }\n\n protected parsePlayerSpec(): {\n marks: PlayerSpec[];\n interactions: InteractionSpec[];\n } {\n const player = this.spec.player;\n const res = {\n marks: [] as PlayerSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (player) {\n const option = player?.option;\n const layout = player?.layout;\n\n if (option) {\n const markLayout =\n layout ??\n (isPlainObject(option) && !isNil((option as PlayerAttributes).orient)\n ? { position: (option as PlayerAttributes).orient }\n : { position: 'bottom' });\n\n const markSpec: PlayerSpec = {\n type: 'component',\n id: this.getComponentId('', 'player'),\n componentType: ComponentEnum.player,\n dependency: [SIGNAL_VIEW_BOX],\n playerType: isPlainObject(option) ? (option as any).type ?? 'auto' : 'auto',\n source: this.getDataIdOfPlayer(),\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: 20 }\n }\n : markLayout.position === 'right'\n ? {\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { height: params.viewBox.height(), width: 20 }\n }\n : markLayout.position === 'bottom'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n size: { width: params.viewBox.width(), height: 20 }\n }\n : {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n size: { width: params.viewBox.width(), height: 20 }\n };\n\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n const interactionSpec: PlayerFilterSpec = {\n type: 'player-filter',\n source: `#${this.getComponentId('', 'player')}`,\n target: {\n data: this.getDataIdOfMain()\n }\n };\n res.marks.push(markSpec);\n res.interactions.push(interactionSpec);\n }\n }\n\n return res;\n }\n\n protected parseTitleSpec(): {\n marks: TitleSpec[];\n interactions: InteractionSpec[];\n } {\n const title = this.spec.title;\n const res = {\n marks: [] as TitleSpec[],\n interactions: [] as InteractionSpec[]\n };\n\n if (title) {\n const { option, layout } = this.parseOption<SemanticTitleOption>(title);\n\n if (option) {\n const markLayout = layout ?? { position: 'top' };\n\n const markSpec: TitleSpec = {\n type: 'component',\n componentType: ComponentEnum.title,\n dependency: [SIGNAL_VIEW_BOX],\n title: (option as SemanticTitleOption).text,\n subTitle: (option as SemanticTitleOption).subtext,\n encode: {\n update: (datum: any, elment: IElement, params: any) => {\n const calculatedAttrs =\n markLayout.position === 'left'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0, // todo, this is a dynamic number\n y: elment.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'right'\n ? {\n x: elment.mark?.relativePosition?.left ?? params.viewBox.width(),\n y: elment.mark?.relativePosition?.top ?? 0\n }\n : markLayout.position === 'bottom'\n ? {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? params.viewBox.height(),\n width: params.viewBox.width()\n }\n : {\n x: elment.mark?.relativePosition?.left ?? 0,\n y: elment.mark?.relativePosition?.top ?? 0,\n width: params.viewBox.width()\n };\n const attrs = isPlainObject(option) ? merge({}, calculatedAttrs, option) : calculatedAttrs;\n\n return attrs;\n }\n }\n };\n markSpec.layout = markLayout;\n res.marks.push(markSpec);\n }\n }\n\n return res;\n }\n\n protected parseDataSpec() {\n const { data, player } = this.spec;\n const res: DataSpec[] = [];\n\n if (player?.data) {\n res.push({\n id: this.getDataIdOfPlayer(),\n values: player.data\n });\n res.push({\n id: this.getDataIdOfMain(),\n values: player.data?.[0]\n });\n res.push({\n id: this.getDataIdOfFiltered(),\n source: this.getDataIdOfMain()\n });\n } else if (data) {\n const dataId = this.getDataIdOfMain();\n const userTransforms = data.transform;\n const transform = this.convertMarkTransform(userTransforms, this.setDefaultDataTransform());\n\n res.push({\n id: dataId,\n values: data.values,\n transform\n });\n res.push({\n id: this.getDataIdOfFiltered(),\n source: dataId\n });\n }\n\n const multiDatas = this.setMultipleData();\n\n if (multiDatas) {\n multiDatas.forEach(entry => {\n if (entry.id) {\n if (entry.id === this.getDataIdOfFiltered() && res.length) {\n res[res.length - 1].transform = entry.transform;\n } else {\n res.push(entry);\n }\n }\n });\n }\n\n return res;\n }\n\n protected parseScaleSpec() {\n const { encode, scale, datazoom } = this.spec;\n const scales: Record<string, ScaleSpec & { userScale?: ScaleSpec }> = {};\n if (encode) {\n Object.keys(encode).forEach(k => {\n const encodeOption = encode[k];\n const scaleId = this.getScaleId(k);\n const userScale = this.spec.scale?.[k];\n\n if (userScale) {\n scales[scaleId] = Object.assign({ id: scaleId }, this.parseScaleByEncode(k as K, encodeOption), userScale, {\n userScale\n });\n } else {\n scales[scaleId] = Object.assign({ id: scaleId }, this.parseScaleByEncode(k as K, encodeOption));\n }\n });\n }\n if (scale) {\n Object.keys(scale).forEach(k => {\n const scaleId = this.getScaleId(k);\n if (!scales[scaleId]) {\n scales[scaleId] = scale[k];\n scales[scaleId].userScale = scale[k];\n }\n });\n }\n\n if (datazoom) {\n Object.keys(datazoom).forEach(k => {\n const scaleId = this.getScaleId(k);\n const { x: xScaleId, y: yScaleId } = this.getDataZoomScaleId(k);\n\n if (k === 'x' && encode[k]) {\n scales[xScaleId] = {\n type: scales[scaleId].type,\n id: xScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: encode[k]\n },\n dependency: [SIGNAL_VIEW_BOX],\n range: (scale: IBaseScale, params: any) => {\n return [0, params.viewBox.width()];\n }\n };\n\n if ((encode as any).y) {\n const theme = this.plot ? this.plot.view.getCurrentTheme() : ThemeManager.getDefaultTheme();\n scales[yScaleId] = {\n type: scales[this.getScaleId('y')]?.type ?? 'linear',\n id: yScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: (encode as any)?.y\n },\n range: (scale: IBaseScale, params: any) => {\n const option = this.parseOption<SemanticDataZoomOption>(datazoom[k]).option;\n return [\n 0,\n isPlainObject(option)\n ? (option as DataZoomAttributes).size?.height ?? theme.components.datazoom.size.height\n : theme.components.datazoom.size.height\n ];\n }\n };\n }\n } else {\n scales[xScaleId] = {\n type: scales[scaleId].type ?? 'band',\n id: xScaleId,\n domain: {\n data: this.getDataIdOfMain(),\n field: (encode as any)?.[k] ?? k\n }\n };\n }\n });\n }\n\n return Array.from(Object.values(scales));\n }\n\n protected parseCoordinateSpec(): CoordinateSpec[] {\n if (!this._coordinate) {\n return [];\n }\n const coordinate: CoordinateSpec = {\n type: this._coordinate.type ?? 'cartesian',\n transpose: this._coordinate.transpose,\n id: this._coordinate.id,\n dependency: [SIGNAL_VIEW_BOX],\n start: [0, 0],\n end: (coord: IBaseCoordinate, params: any) => {\n return [params.viewBox.width(), params.viewBox.height()];\n }\n };\n\n if (this._coordinate.type === 'polar' && this._coordinate.origin) {\n coordinate.origin = (coord: IBaseCoordinate, params: any) => {\n return [\n toPercent((this._coordinate as PolarCoordinateOption).origin[0], params.viewBox.width()),\n toPercent((this._coordinate as PolarCoordinateOption).origin[1], params.viewBox.height())\n ] as [number, number];\n };\n }\n\n return [coordinate];\n }\n\n protected setMainMarkEnterEncode() {\n return this.spec.style;\n }\n\n protected setMainMarkSpec() {\n return {};\n }\n\n protected setMultiMarksSpec(): MarkSpec[] {\n return null;\n }\n\n toViewSpec(): ViewSpec {\n this.viewSpec = {};\n const filteredDataId = this.getDataIdOfFiltered();\n this.viewSpec.data = this.parseDataSpec();\n this.viewSpec.scales = this.parseScaleSpec();\n this.viewSpec.coordinates = this.parseCoordinateSpec();\n let marks: MarkSpec[] = [];\n let interactions: InteractionSpec[] = [];\n\n const legendSpec = this.parseLegendSpec();\n marks = marks.concat(legendSpec.marks);\n interactions = interactions.concat(legendSpec.interactions);\n\n const axisSpec = this.parseAxisSpec();\n marks = marks.concat(axisSpec.marks);\n interactions = interactions.concat(axisSpec.interactions);\n\n const gridSpec = this.parseGridSpec();\n marks = marks.concat(gridSpec.marks);\n interactions = interactions.concat(gridSpec.interactions);\n\n const crosshairSpec = this.parseCrosshairSpec();\n marks = marks.concat(crosshairSpec.marks);\n interactions = interactions.concat(crosshairSpec.interactions);\n\n const sliderSpec = this.parseSliderSpec();\n marks = marks.concat(sliderSpec.marks);\n interactions = interactions.concat(sliderSpec.interactions);\n\n const datazoomSpec = this.parseDatazoomSpec();\n marks = marks.concat(datazoomSpec.marks);\n interactions = interactions.concat(datazoomSpec.interactions);\n\n const playerSpec = this.parsePlayerSpec();\n marks = marks.concat(playerSpec.marks);\n interactions = interactions.concat(playerSpec.interactions);\n\n const titleSpec = this.parseTitleSpec();\n marks = marks.concat(titleSpec.marks);\n interactions = interactions.concat(titleSpec.interactions);\n\n marks.push(\n Object.assign(\n {\n id: this.getMarkId(),\n type: this.setMarkType(),\n coordinate: this._coordinate?.id,\n from: {\n data: filteredDataId\n },\n groupBy: (this.spec.encode as any)?.group,\n layout: {\n position: 'content',\n skipBeforeLayouted: true\n },\n dependency: this.viewSpec.scales.map(scale => scale.id).concat(SIGNAL_VIEW_BOX),\n transform: this.convertMarkTransform(this.spec.transform, this.setDefaultMarkTransform()),\n animation: this.convertMarkAnimation(),\n encode: Object.assign({}, this.spec.state, {\n enter: this.setMainMarkEnterEncode(),\n update: this.convertMarkEncode(this.spec.encode)\n })\n },\n this.setMainMarkSpec()\n )\n );\n\n const otherMarks = this.setMultiMarksSpec();\n\n if (otherMarks) {\n marks = marks.concat(otherMarks);\n }\n\n const labelSpec = this.parseLabelSpec();\n marks = marks.concat(labelSpec.marks);\n interactions = interactions.concat(labelSpec.interactions);\n\n const tooltipSpec = this.parseTooltipSpec();\n marks = marks.concat(tooltipSpec.marks);\n interactions = interactions.concat(tooltipSpec.interactions);\n\n this.viewSpec.marks = marks;\n this.viewSpec.interactions = interactions;\n\n return this.viewSpec;\n }\n\n clear() {\n this.spec = { id: this.spec.id };\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vgrammar-plot",
3
- "version": "0.10.2",
3
+ "version": "0.10.4",
4
4
  "description": "Plots of vgrammar.",
5
5
  "keywords": [
6
6
  "plot",
@@ -24,13 +24,13 @@
24
24
  "dist"
25
25
  ],
26
26
  "dependencies": {
27
- "@visactor/vgrammar-util": "0.10.2",
28
- "@visactor/vgrammar-coordinate": "0.10.2",
29
- "@visactor/vgrammar-core": "0.10.2",
27
+ "@visactor/vgrammar-util": "0.10.4",
28
+ "@visactor/vgrammar-coordinate": "0.10.4",
29
+ "@visactor/vgrammar-core": "0.10.4",
30
30
  "@visactor/vscale": "~0.17.1",
31
- "@visactor/vrender-components": "~0.17.4",
32
- "@visactor/vrender-core": "~0.17.4",
33
- "@visactor/vrender-kits": "~0.17.4",
31
+ "@visactor/vrender-components": "~0.17.6",
32
+ "@visactor/vrender-core": "~0.17.6",
33
+ "@visactor/vrender-kits": "~0.17.6",
34
34
  "@visactor/vutils": "~0.17.1"
35
35
  },
36
36
  "devDependencies": {
@@ -46,10 +46,10 @@
46
46
  "ts-jest": "~29.1.0",
47
47
  "@types/jest": "~29.5.0",
48
48
  "@types/node": "*",
49
- "@internal/ts-config": "0.0.1",
49
+ "@internal/bundler": "0.0.1",
50
50
  "@internal/eslint-config": "0.0.1",
51
51
  "@internal/jest-config": "0.0.1",
52
- "@internal/bundler": "0.0.1"
52
+ "@internal/ts-config": "0.0.1"
53
53
  },
54
54
  "publishConfig": {
55
55
  "access": "public",