From 2e837c81ccb262380208abdadec0d2c1536b8355 Mon Sep 17 00:00:00 2001 From: Dominik Moritz Date: Fri, 6 May 2022 13:48:18 -0500 Subject: [PATCH] feat: use any mark config for composite mark components fixes #8144 --- build/vega-lite-schema.json | 36 ++++++++++++++++++------------------ src/compositemark/common.ts | 9 +++++---- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/build/vega-lite-schema.json b/build/vega-lite-schema.json index dfe607a6d8..d9cb4dca5b 100644 --- a/build/vega-lite-schema.json +++ b/build/vega-lite-schema.json @@ -4430,7 +4430,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -4452,7 +4452,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -4462,7 +4462,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -4472,7 +4472,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -4486,7 +4486,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] } @@ -4502,7 +4502,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -4542,7 +4542,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -4562,7 +4562,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -4572,7 +4572,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -4586,7 +4586,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -8318,7 +8318,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -8328,7 +8328,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -8358,7 +8358,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -8368,7 +8368,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -8441,7 +8441,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -8459,7 +8459,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] } @@ -8507,7 +8507,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, @@ -8525,7 +8525,7 @@ "type": "boolean" }, { - "$ref": "#/definitions/MarkConfig" + "$ref": "#/definitions/AnyMarkConfig" } ] }, diff --git a/src/compositemark/common.ts b/src/compositemark/common.ts index 15e9245e84..2980fa4b94 100644 --- a/src/compositemark/common.ts +++ b/src/compositemark/common.ts @@ -16,13 +16,14 @@ import { import {Encoding, fieldDefs} from '../encoding'; import {ExprRef} from '../expr'; import * as log from '../log'; -import {ColorMixins, GenericMarkDef, isMarkDef, Mark, MarkConfig, MarkDef} from '../mark'; +import {ColorMixins, GenericMarkDef, isMarkDef, Mark, AnyMarkConfig, MarkDef} from '../mark'; import {GenericUnitSpec, NormalizedUnitSpec} from '../spec'; import {getFirstDefined, hash, unique} from '../util'; import {isSignalRef} from '../vega.schema'; import {toStringFieldDef} from './../channeldef'; -export type PartsMixins

= Partial>>; +// Parts mixins can be any mark type. We could make a more specific type for each part. +export type PartsMixins

= Partial>>; export type GenericCompositeMarkDef = GenericMarkDef & ColorMixins & { @@ -207,13 +208,13 @@ export function partLayerMixins

>( { ...partBaseSpec, mark: { - ...(compositeMarkConfig[part] as MarkConfig), + ...(compositeMarkConfig[part] as AnyMarkConfig), ...(clip ? {clip} : {}), ...(color ? {color} : {}), ...(opacity ? {opacity} : {}), ...(isMarkDef(partBaseSpec.mark) ? partBaseSpec.mark : {type: partBaseSpec.mark}), style: `${mark}-${part}`, - ...(isBoolean(markDef[part]) ? {} : (markDef[part] as MarkConfig)) + ...(isBoolean(markDef[part]) ? {} : (markDef[part] as AnyMarkConfig)) } } ];