From b1d0023393bf0d9ae407129aedd3a0ac6e1504c4 Mon Sep 17 00:00:00 2001 From: Lukas Hermann Date: Wed, 19 Jul 2023 15:57:22 -0700 Subject: [PATCH] fix: escape quotes in title generated fields --- site/_data/versions.yml | 4 ++++ src/compile/mark/encode/tooltip.ts | 2 +- test/compile/mark/encode/tooltip.test.ts | 13 +++++++++++++ tsconfig.json | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 site/_data/versions.yml diff --git a/site/_data/versions.yml b/site/_data/versions.yml new file mode 100644 index 00000000000..ac40211fe60 --- /dev/null +++ b/site/_data/versions.yml @@ -0,0 +1,4 @@ +vega: 5.25.0 +vega-lite: 5.9.3 +vega-embed: 6.22.1 +vega-tooltip: 0.32.0 diff --git a/src/compile/mark/encode/tooltip.ts b/src/compile/mark/encode/tooltip.ts index bf31cdd695a..53b5ae8f422 100644 --- a/src/compile/mark/encode/tooltip.ts +++ b/src/compile/mark/encode/tooltip.ts @@ -88,7 +88,7 @@ export function tooltipData( }; const title = fieldDef.title || defaultTitle(fieldDef, formatConfig); - const key = array(title).join(', '); + const key = array(title).join(', ').replaceAll(/"/g, '\\"'); let value: string; diff --git a/test/compile/mark/encode/tooltip.test.ts b/test/compile/mark/encode/tooltip.test.ts index 238e7bf007d..58d4e633774 100644 --- a/test/compile/mark/encode/tooltip.test.ts +++ b/test/compile/mark/encode/tooltip.test.ts @@ -152,6 +152,19 @@ describe('compile/mark/encode/tooltip', () => { signal: '{"baz": isValid(datum["Foobar"]) ? datum["Foobar"] : ""+datum["Foobar"]}' }); }); + + it('generates correct keys and values for channels with title with quotes', () => { + const model = parseUnitModelWithScaleAndLayoutSize({ + mark: {type: 'point', tooltip: true}, + encoding: { + color: {field: 'Foobar', type: 'nominal', title: '"baz"'} + } + }); + const props = tooltip(model); + expect(props.tooltip).toEqual({ + signal: '{"\\"baz\\"": isValid(datum["Foobar"]) ? datum["Foobar"] : ""+datum["Foobar"]}' + }); + }); }); describe('tooltipForEncoding', () => { diff --git a/tsconfig.json b/tsconfig.json index c1450bfefcb..60bbcda2c73 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,7 +15,7 @@ "resolveJsonModule": true, "suppressImplicitAnyIndexErrors": true, "isolatedModules": true, - "lib": ["ESNext.Array", "DOM", "DOM.Iterable"], + "lib": ["ESNext.Array", "DOM", "DOM.Iterable", "ES2021.String"], "noEmit": true }, "files": ["src/index.ts"],