import {Encoding} from '../encoding'; import {GenericMarkDef, getMarkType} from '../mark'; import {NonFacetUnitNormalizer, Normalize, NormalizerParams} from '../normalize/base'; import {GenericSpec} from '../spec'; import {GenericLayerSpec, NormalizedLayerSpec} from '../spec/layer'; import {GenericUnitSpec, isUnitSpec, NormalizedUnitSpec} from '../spec/unit'; import {FieldName} from '../channeldef'; // TODO: replace string with Mark export type CompositeMarkUnitSpec = GenericUnitSpec>; export class CompositeMarkNormalizer implements NonFacetUnitNormalizer> { constructor( public name: string, public run: ( spec: CompositeMarkUnitSpec, params: NormalizerParams, normalize: Normalize< // Input of the normalize method GenericUnitSpec, M> | GenericLayerSpec, // Output of the normalize method NormalizedLayerSpec | NormalizedUnitSpec > ) => NormalizedLayerSpec | NormalizedUnitSpec ) {} public hasMatchingType(spec: GenericSpec): spec is CompositeMarkUnitSpec { if (isUnitSpec(spec)) { return getMarkType(spec.mark) === this.name; } return false; } }