diff --git a/.github/workflows/check-toc.yml b/.github/workflows/check-toc.yml new file mode 100644 index 0000000000..ad50112df3 --- /dev/null +++ b/.github/workflows/check-toc.yml @@ -0,0 +1,53 @@ +name: Check + +on: + workflow_dispatch: + pull_request: + paths: + - 'site/**' + - 'scripts/**' + +jobs: + toc: + name: TOC + if: "!contains(github.event.head_commit.message, '[ci skip]')" + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + with: + token: ${{ secrets.GH_PAT || github.token }} + ref: ${{ github.event.pull_request.head.ref }} + + - name: Setup Node + uses: actions/setup-node@v3 + with: + cache: 'yarn' + + - name: Install Node dependencies + run: yarn --frozen-lockfile + + - name: Setup Ruby + uses: actions/setup-ruby@v1 + with: + ruby-version: '2.x' + + - name: Setup data + run: yarn data + + - name: Build Jekyll + run: | + gem install bundler + pushd site + bundle install + bundle exec jekyll build -q + popd + + - name: Build TOC + run: scripts/generate-toc + + - name: Setup Git remote + run: scripts/setup-git-ci.sh + + - name: Check and Commit + run: scripts/check-and-commit-toc.sh diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 90cee05c97..37867e6aad 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -1,9 +1,8 @@ name: Check on: - push: - branches: - - '**' + workflow_dispatch: + pull_request: jobs: check: @@ -14,6 +13,7 @@ jobs: - uses: actions/checkout@v3 with: token: ${{ secrets.GH_PAT || github.token }} + ref: ${{ github.event.pull_request.head.ref }} - name: Setup Node uses: actions/setup-node@v3 @@ -35,60 +35,16 @@ jobs: sudo mv parallel sem /usr/local/bin - name: Format - if: github.ref != 'refs/heads/next' run: yarn format - name: Build Schema run: yarn schema - name: Check Schema - run: ./scripts/check-schema.sh + run: scripts/check-schema.sh - name: Setup Git remote - run: ./scripts/setup-git-ci.sh + run: scripts/setup-git-ci.sh - name: Check and Commit - run: ./scripts/check-and-commit.sh - - toc: - name: TOC - if: "!contains(github.event.head_commit.message, '[ci skip]')" - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - with: - token: ${{ secrets.GH_PAT || github.token }} - - - name: Setup Node - uses: actions/setup-node@v3 - with: - cache: 'yarn' - - - name: Install Node dependencies - run: yarn --frozen-lockfile - - - name: Setup Ruby - uses: actions/setup-ruby@v1 - with: - ruby-version: '2.x' - - - name: Setup data - run: yarn data - - - name: Build Jekyll - run: | - gem install bundler - pushd site - bundle install - bundle exec jekyll build -q - popd - - - name: Build TOC - run: scripts/generate-toc - - - name: Setup Git remote - run: ./scripts/setup-git-ci.sh - - - name: Check and Commit - run: ./scripts/check-and-commit-toc.sh + run: scripts/check-and-commit.sh diff --git a/.github/workflows/merge-dependabot.yml b/.github/workflows/merge-dependabot.yml index 4fb46f6c1c..631b708ab4 100644 --- a/.github/workflows/merge-dependabot.yml +++ b/.github/workflows/merge-dependabot.yml @@ -1,7 +1,10 @@ name: Auto-merge Dependabot PRs + on: + workflow_dispatch: schedule: - cron: '0 * * * *' + jobs: auto_merge: name: Auto-merge Dependabot PRs diff --git a/.github/workflows/publish-to-npm.yml b/.github/workflows/publish-to-npm.yml index f45a04513f..dad6b24aa6 100644 --- a/.github/workflows/publish-to-npm.yml +++ b/.github/workflows/publish-to-npm.yml @@ -7,6 +7,8 @@ on: - 'dependabot/**' # documentation site should not trigger releases - 'gh-pages' + paths-ignore: + - 'site/**' jobs: publish: @@ -14,21 +16,30 @@ jobs: if: "!contains(github.event.head_commit.message, 'ci skip') && !contains(github.event.head_commit.message, 'skip ci')" name: Make a release and publish to NPM - steps: - uses: actions/checkout@v3 - - - name: Prepare repository - run: git fetch --unshallow --tags + with: + fetch-depth: 0 - uses: actions/setup-node@v3 with: registry-url: 'https://registry.npmjs.org' + cache: 'yarn' + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Install Node dependencies run: yarn --frozen-lockfile - - run: npm run release + - name: Build + run: yarn build + + - name: Check NPM deployment + run: ./scripts/check-npm.sh + + - name: Create release + run: npm run shipit env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} GITHUB_TOKEN: ${{ secrets.GH_PAT }} diff --git a/.github/workflows/release-docs-and-schema.yml b/.github/workflows/release-docs-and-schema.yml index 0380510bf0..8514797e4a 100644 --- a/.github/workflows/release-docs-and-schema.yml +++ b/.github/workflows/release-docs-and-schema.yml @@ -15,6 +15,11 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Setup Node + uses: actions/setup-node@v3 + with: + cache: 'yarn' + - name: Install Node dependencies run: yarn --frozen-lockfile @@ -22,7 +27,7 @@ jobs: run: yarn build - name: Setup Git remote - run: ./scripts/setup-git-ci.sh + run: scripts/setup-git-ci.sh env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -34,13 +39,6 @@ jobs: env: GH_PAT: ${{ secrets.GH_PAT }} - - name: Check NPM deployment - run: ./scripts/check-npm.sh - - - uses: actions/setup-node@v3 - with: - registry-url: 'https://registry.npmjs.org' - - name: Prebuild website run: yarn predeploy:site @@ -51,4 +49,4 @@ jobs: site-directory: 'site/' - name: Publish schema - run: ./scripts/deploy-schema.sh + run: scripts/deploy-schema.sh diff --git a/.github/workflows/test-docs.yml b/.github/workflows/test-docs.yml new file mode 100644 index 0000000000..a581ad046f --- /dev/null +++ b/.github/workflows/test-docs.yml @@ -0,0 +1,31 @@ +name: Test + +on: + workflow_dispatch: + pull_request: + paths: + - 'site/**' + - 'yarn.lock' + - '**prettier**' + +jobs: + build-site: + name: Build Site + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + cache: 'yarn' + + - name: Install Node dependencies + run: yarn --frozen-lockfile + + - name: Lint + run: yarn prettierbase --check + + - name: Build + run: yarn build:site diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9975ab88a7..bad02e35dd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,13 +1,13 @@ name: Test on: - push: - branches: - - next + workflow_dispatch: pull_request: + paths-ignore: + - 'site/**' jobs: - test-matrix: + test: name: Node runs-on: ubuntu-latest @@ -31,8 +31,8 @@ jobs: - name: Build run: yarn build - build-site: - name: Build Site + runtime-lint-coverage: + name: Runtime, Linting, and Coverage runs-on: ubuntu-latest steps: @@ -46,24 +46,6 @@ jobs: - name: Install Node dependencies run: yarn --frozen-lockfile - - name: Build - run: yarn build:site - - runtime-lint-coverage: - name: Runtime, Linting, and Coverage - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Install Node dependencies - run: yarn --frozen-lockfile - - - name: Setup Node - uses: actions/setup-node@v3 - with: - cache: 'yarn' - - name: Install extra dependencies for Puppeteer run: sudo apt-get install libgbm1 @@ -95,14 +77,14 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Install Node dependencies - run: yarn --frozen-lockfile - - name: Setup Node uses: actions/setup-node@v3 with: cache: 'yarn' + - name: Install Node dependencies + run: yarn --frozen-lockfile + - name: Build run: yarn build:only diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0c0fa742ca..6114a2cde7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -200,6 +200,7 @@ Publishing is handled by a 2-branch [pre-release process](https://intuit.github. - When merging into `next`, please use the `squash and merge` strategy. - To release a new stable version, open a PR from `next` into `stable` using this [compare link](https://github.com/vega/vega-lite/compare/stable...next). - When merging from `next` into `stable`, please use the `create a merge commit` strategy. + - After the release note is generated (from commits), please take a look to clean up so the log is readable to the community. ## Suggested Programming Environment. diff --git a/build/vega-lite-schema.json b/build/vega-lite-schema.json index 3b4cfcbb47..56bd01bbbc 100644 --- a/build/vega-lite-schema.json +++ b/build/vega-lite-schema.json @@ -7725,6 +7725,10 @@ "description": "Default time format for raw time values (without time units) in text marks, legend labels and header labels.\n\n__Default value:__ `\"%b %d, %Y\"` __Note:__ Axes automatically determine the format for each label automatically so this config does not affect axes.", "type": "string" }, + "timeFormatType": { + "description": "[Custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type) for `config.timeFormat`.\n\n__Default value:__ `undefined` -- This is equilvalent to call D3-time-format, which is exposed as [`timeFormat` in Vega-Expression](https://vega.github.io/vega/docs/expressions/#timeFormat). __Note:__ You must also set `customFormatTypes` to `true` and there must *not* be a `timeUnit` defined to use this feature.", + "type": "string" + }, "title": { "$ref": "#/definitions/TitleConfig", "description": "Title configuration, which determines default properties for all [titles](https://vega.github.io/vega-lite/docs/title.html). For a full list of title configuration options, please see the [corresponding section of the title documentation](https://vega.github.io/vega-lite/docs/title.html#config)." diff --git a/examples/compiled/arc_ordinal_theta.vg.json b/examples/compiled/arc_ordinal_theta.vg.json index b8aed31ada..d89f45594f 100644 --- a/examples/compiled/arc_ordinal_theta.vg.json +++ b/examples/compiled/arc_ordinal_theta.vg.json @@ -57,7 +57,7 @@ "endAngle": { "scale": "theta", "field": "dir", - "offset": {"scale": "theta", "band": 1} + "offset": {"signal": "max(0.25, bandwidth('theta'))"} } } } diff --git a/examples/compiled/bar.vg.json b/examples/compiled/bar.vg.json index cf7d1e2bbc..a7403201ad 100644 --- a/examples/compiled/bar.vg.json +++ b/examples/compiled/bar.vg.json @@ -60,7 +60,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_aggregate.vg.json b/examples/compiled/bar_aggregate.vg.json index 515e795f5a..034f12aaf4 100644 --- a/examples/compiled/bar_aggregate.vg.json +++ b/examples/compiled/bar_aggregate.vg.json @@ -49,7 +49,7 @@ "x": {"scale": "x", "field": "sum_people"}, "x2": {"scale": "x", "value": 0}, "y": {"scale": "y", "field": "age"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_aggregate_format.vg.json b/examples/compiled/bar_aggregate_format.vg.json index 9c2dab9cfc..ef2b5a09f1 100644 --- a/examples/compiled/bar_aggregate_format.vg.json +++ b/examples/compiled/bar_aggregate_format.vg.json @@ -49,7 +49,7 @@ "x": {"scale": "x", "field": "sum_people"}, "x2": {"scale": "x", "value": 0}, "y": {"scale": "y", "field": "age"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_aggregate_sort_by_encoding.vg.json b/examples/compiled/bar_aggregate_sort_by_encoding.vg.json index 281bdfeca8..de6fe777a0 100644 --- a/examples/compiled/bar_aggregate_sort_by_encoding.vg.json +++ b/examples/compiled/bar_aggregate_sort_by_encoding.vg.json @@ -53,7 +53,7 @@ "x": {"scale": "x", "field": "sum_people"}, "x2": {"scale": "x", "value": 0}, "y": {"scale": "y", "field": "age"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_aggregate_sort_mean.vg.json b/examples/compiled/bar_aggregate_sort_mean.vg.json index 2acec08b42..4973b4a9c2 100644 --- a/examples/compiled/bar_aggregate_sort_mean.vg.json +++ b/examples/compiled/bar_aggregate_sort_mean.vg.json @@ -53,7 +53,7 @@ "x": {"scale": "x", "field": "sum_people"}, "x2": {"scale": "x", "value": 0}, "y": {"scale": "y", "field": "age"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_aggregate_transform.vg.json b/examples/compiled/bar_aggregate_transform.vg.json index 47ed9786bf..2d3a70d941 100644 --- a/examples/compiled/bar_aggregate_transform.vg.json +++ b/examples/compiled/bar_aggregate_transform.vg.json @@ -53,7 +53,7 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; mean_acc: \" + (format(datum[\"mean_acc\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "mean_acc_end"}, "y2": {"scale": "y", "field": "mean_acc_start"} } diff --git a/examples/compiled/bar_aggregate_vertical.vg.json b/examples/compiled/bar_aggregate_vertical.vg.json index 73ca1cd793..4691e64ce7 100644 --- a/examples/compiled/bar_aggregate_vertical.vg.json +++ b/examples/compiled/bar_aggregate_vertical.vg.json @@ -45,7 +45,7 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Mean of Acceleration: \" + (format(datum[\"mean_Acceleration\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "mean_Acceleration"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_argmax.vg.json b/examples/compiled/bar_argmax.vg.json index d3ad3245d9..13f7d7dd35 100644 --- a/examples/compiled/bar_argmax.vg.json +++ b/examples/compiled/bar_argmax.vg.json @@ -51,7 +51,7 @@ }, "x2": {"scale": "x", "value": 0}, "y": {"scale": "y", "field": "Major Genre"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_argmax_transform.vg.json b/examples/compiled/bar_argmax_transform.vg.json index 87a4afbed9..850047557f 100644 --- a/examples/compiled/bar_argmax_transform.vg.json +++ b/examples/compiled/bar_argmax_transform.vg.json @@ -70,7 +70,7 @@ "field": "argmax_US_Gross\\.Production Budget\\._start" }, "y": {"scale": "y", "field": "Major Genre"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_array_aggregate.vg.json b/examples/compiled/bar_array_aggregate.vg.json index dfe641c48e..6ff6f5ea89 100644 --- a/examples/compiled/bar_array_aggregate.vg.json +++ b/examples/compiled/bar_array_aggregate.vg.json @@ -58,7 +58,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; Average of b: \" + (format(datum[\"average_b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "average_b"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_axis_orient.vg.json b/examples/compiled/bar_axis_orient.vg.json index 1f5b146912..53f1126461 100644 --- a/examples/compiled/bar_axis_orient.vg.json +++ b/examples/compiled/bar_axis_orient.vg.json @@ -71,7 +71,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_axis_space_saving.vg.json b/examples/compiled/bar_axis_space_saving.vg.json index 5eaf09008b..c204ae6671 100644 --- a/examples/compiled/bar_axis_space_saving.vg.json +++ b/examples/compiled/bar_axis_space_saving.vg.json @@ -43,7 +43,7 @@ "x": {"scale": "x", "field": "__count"}, "x2": {"scale": "x", "value": 0}, "y": {"scale": "y", "field": "Origin", "offset": 5, "band": 0.25}, - "height": {"scale": "y", "band": 0.5} + "height": {"signal": "max(0.25, 0.5 * bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_color_disabled_scale.vg.json b/examples/compiled/bar_color_disabled_scale.vg.json index 68c3a29ad3..1f95862e5d 100644 --- a/examples/compiled/bar_color_disabled_scale.vg.json +++ b/examples/compiled/bar_color_disabled_scale.vg.json @@ -54,7 +54,7 @@ "signal": "\"color: \" + (isValid(datum[\"color\"]) ? datum[\"color\"] : \"\"+datum[\"color\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "color"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_column_fold.vg.json b/examples/compiled/bar_column_fold.vg.json index f197b99d3d..77675fa56d 100644 --- a/examples/compiled/bar_column_fold.vg.json +++ b/examples/compiled/bar_column_fold.vg.json @@ -138,7 +138,7 @@ "signal": "\"country: \" + (isValid(datum[\"country\"]) ? datum[\"country\"] : \"\"+datum[\"country\"]) + \"; value: \" + (format(datum[\"value\"], \"\"))" }, "x": {"scale": "x", "field": "country"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/bar_column_pivot.vg.json b/examples/compiled/bar_column_pivot.vg.json index 3e69682af4..e66f5a1ea3 100644 --- a/examples/compiled/bar_column_pivot.vg.json +++ b/examples/compiled/bar_column_pivot.vg.json @@ -65,7 +65,7 @@ "signal": "\"country: \" + (isValid(datum[\"country\"]) ? datum[\"country\"] : \"\"+datum[\"country\"]) + \"; gold: \" + (format(datum[\"gold\"], \"\"))" }, "x": {"scale": "x", "field": "country"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "gold_end"}, "y2": {"scale": "y", "field": "gold_start"} } diff --git a/examples/compiled/bar_corner_radius_end.vg.json b/examples/compiled/bar_corner_radius_end.vg.json index 64a6015a4f..6c1a57b614 100644 --- a/examples/compiled/bar_corner_radius_end.vg.json +++ b/examples/compiled/bar_corner_radius_end.vg.json @@ -63,7 +63,7 @@ "encode": { "update": { "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": { "signal": "min(scale('y',datum[\"min_b_start\"]),scale('y',datum[\"max_b_start\"]),scale('y',datum[\"min_b_end\"]),scale('y',datum[\"max_b_end\"]))" }, diff --git a/examples/compiled/bar_count_minimap.vg.json b/examples/compiled/bar_count_minimap.vg.json index 117eab5493..55686d7c9f 100644 --- a/examples/compiled/bar_count_minimap.vg.json +++ b/examples/compiled/bar_count_minimap.vg.json @@ -92,7 +92,7 @@ "x": {"scale": "concat_0_x", "field": "__count"}, "x2": {"scale": "concat_0_x", "value": 0}, "y": {"scale": "concat_0_y", "field": "Name"}, - "height": {"scale": "concat_0_y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('concat_0_y'))"} } } } @@ -362,7 +362,7 @@ "x": {"scale": "concat_1_x", "field": "__count"}, "x2": {"scale": "concat_1_x", "value": 0}, "y": {"scale": "concat_1_y", "field": "Name"}, - "height": {"scale": "concat_1_y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('concat_1_y'))"} } } }, diff --git a/examples/compiled/bar_custom_sort_full.vg.json b/examples/compiled/bar_custom_sort_full.vg.json index 4cfa00cbdc..7a444d9ab3 100644 --- a/examples/compiled/bar_custom_sort_full.vg.json +++ b/examples/compiled/bar_custom_sort_full.vg.json @@ -60,7 +60,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_custom_sort_partial.vg.json b/examples/compiled/bar_custom_sort_partial.vg.json index cc37703181..6828a9c6a4 100644 --- a/examples/compiled/bar_custom_sort_partial.vg.json +++ b/examples/compiled/bar_custom_sort_partial.vg.json @@ -67,7 +67,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_default_tooltip_title_null.vg.json b/examples/compiled/bar_default_tooltip_title_null.vg.json index 414e5a232d..22a9c5dfb0 100644 --- a/examples/compiled/bar_default_tooltip_title_null.vg.json +++ b/examples/compiled/bar_default_tooltip_title_null.vg.json @@ -63,7 +63,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_distinct.vg.json b/examples/compiled/bar_distinct.vg.json index 1eb0ce79b8..17721c5355 100644 --- a/examples/compiled/bar_distinct.vg.json +++ b/examples/compiled/bar_distinct.vg.json @@ -45,7 +45,7 @@ "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Distinct of Name: \" + (format(datum[\"distinct_Name\"], \"\"))" }, "x": {"scale": "x", "field": "Origin"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "distinct_Name"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_diverging_stack_population_pyramid.vg.json b/examples/compiled/bar_diverging_stack_population_pyramid.vg.json index 4bf0a341e3..e0afae68d8 100644 --- a/examples/compiled/bar_diverging_stack_population_pyramid.vg.json +++ b/examples/compiled/bar_diverging_stack_population_pyramid.vg.json @@ -67,7 +67,7 @@ "x": {"scale": "x", "field": "sum_signed_people_end"}, "x2": {"scale": "x", "field": "sum_signed_people_start"}, "y": {"scale": "y", "field": "age"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_diverging_stack_transform.vg.json b/examples/compiled/bar_diverging_stack_transform.vg.json index 950cdca34b..499eb20a72 100644 --- a/examples/compiled/bar_diverging_stack_transform.vg.json +++ b/examples/compiled/bar_diverging_stack_transform.vg.json @@ -312,7 +312,7 @@ "x": {"scale": "x", "field": "nx"}, "x2": {"scale": "x", "field": "nx2"}, "y": {"scale": "y", "field": "question"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_filter_calc.vg.json b/examples/compiled/bar_filter_calc.vg.json index f16d151db1..ddaf50dcb1 100644 --- a/examples/compiled/bar_filter_calc.vg.json +++ b/examples/compiled/bar_filter_calc.vg.json @@ -62,7 +62,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b2: \" + (format(datum[\"b2\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b2_end"}, "y2": {"scale": "y", "field": "b2_start"} } diff --git a/examples/compiled/bar_fit.vg.json b/examples/compiled/bar_fit.vg.json index 6abf452be9..bd1f49f679 100644 --- a/examples/compiled/bar_fit.vg.json +++ b/examples/compiled/bar_fit.vg.json @@ -55,7 +55,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_gantt.vg.json b/examples/compiled/bar_gantt.vg.json index 0379ed49f3..4fd65adfac 100644 --- a/examples/compiled/bar_gantt.vg.json +++ b/examples/compiled/bar_gantt.vg.json @@ -48,7 +48,7 @@ "x": {"scale": "x", "field": "start"}, "x2": {"scale": "x", "field": "end"}, "y": {"scale": "y", "field": "task"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_grouped.vg.json b/examples/compiled/bar_grouped.vg.json index efeaca1d2d..23798b9f9d 100644 --- a/examples/compiled/bar_grouped.vg.json +++ b/examples/compiled/bar_grouped.vg.json @@ -66,7 +66,7 @@ "field": "category", "offset": {"scale": "xOffset", "field": "group"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/bar_grouped_custom_padding.vg.json b/examples/compiled/bar_grouped_custom_padding.vg.json index 3ed25ccd14..b6916729ed 100644 --- a/examples/compiled/bar_grouped_custom_padding.vg.json +++ b/examples/compiled/bar_grouped_custom_padding.vg.json @@ -63,7 +63,7 @@ "field": "category", "offset": {"scale": "xOffset", "field": "group"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/bar_grouped_errorbar.vg.json b/examples/compiled/bar_grouped_errorbar.vg.json index 7b8e24a031..1e6a3ac463 100644 --- a/examples/compiled/bar_grouped_errorbar.vg.json +++ b/examples/compiled/bar_grouped_errorbar.vg.json @@ -83,7 +83,7 @@ "field": "Cylinders", "offset": {"scale": "xOffset", "field": "Origin"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": {"scale": "y", "field": "mean_Acceleration"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_grouped_facet.vg.json b/examples/compiled/bar_grouped_facet.vg.json index 0b06ad5941..caa2f96c81 100644 --- a/examples/compiled/bar_grouped_facet.vg.json +++ b/examples/compiled/bar_grouped_facet.vg.json @@ -131,7 +131,7 @@ "signal": "\"group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"]) + \"; value: \" + (format(datum[\"value\"], \"\"))" }, "x": {"scale": "x", "field": "group"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/bar_grouped_facet_independent_scale.vg.json b/examples/compiled/bar_grouped_facet_independent_scale.vg.json index 8c49ce7ab9..61f5f87a69 100644 --- a/examples/compiled/bar_grouped_facet_independent_scale.vg.json +++ b/examples/compiled/bar_grouped_facet_independent_scale.vg.json @@ -149,7 +149,7 @@ "signal": "\"group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"]) + \"; value: \" + (format(datum[\"value\"], \"\"))" }, "x": {"scale": "child_x", "field": "group"}, - "width": {"scale": "child_x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('child_x'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/bar_grouped_facet_independent_scale_fixed_width.vg.json b/examples/compiled/bar_grouped_facet_independent_scale_fixed_width.vg.json index b6b9bd0656..349601a689 100644 --- a/examples/compiled/bar_grouped_facet_independent_scale_fixed_width.vg.json +++ b/examples/compiled/bar_grouped_facet_independent_scale_fixed_width.vg.json @@ -124,7 +124,7 @@ "signal": "\"group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"]) + \"; value: \" + (format(datum[\"value\"], \"\"))" }, "x": {"scale": "child_x", "field": "group"}, - "width": {"scale": "child_x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('child_x'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/bar_grouped_fixed_width.vg.json b/examples/compiled/bar_grouped_fixed_width.vg.json index 076a137a61..f0f2fb3239 100644 --- a/examples/compiled/bar_grouped_fixed_width.vg.json +++ b/examples/compiled/bar_grouped_fixed_width.vg.json @@ -57,7 +57,7 @@ "field": "category", "offset": {"scale": "xOffset", "field": "group"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/bar_grouped_horizontal.vg.json b/examples/compiled/bar_grouped_horizontal.vg.json index 04039a18e4..6de464a01b 100644 --- a/examples/compiled/bar_grouped_horizontal.vg.json +++ b/examples/compiled/bar_grouped_horizontal.vg.json @@ -68,7 +68,7 @@ "field": "category", "offset": {"scale": "yOffset", "field": "group"} }, - "height": {"scale": "yOffset", "band": 1} + "height": {"signal": "max(0.25, bandwidth('yOffset'))"} } } } diff --git a/examples/compiled/bar_grouped_label.vg.json b/examples/compiled/bar_grouped_label.vg.json index 61d956bf58..99fad91d1b 100644 --- a/examples/compiled/bar_grouped_label.vg.json +++ b/examples/compiled/bar_grouped_label.vg.json @@ -81,7 +81,7 @@ "field": "category", "offset": {"scale": "xOffset", "field": "group"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/bar_grouped_repeated.vg.json b/examples/compiled/bar_grouped_repeated.vg.json index 000c4479e5..8174ba5b62 100644 --- a/examples/compiled/bar_grouped_repeated.vg.json +++ b/examples/compiled/bar_grouped_repeated.vg.json @@ -48,7 +48,7 @@ "field": "Major Genre", "offset": {"scale": "xOffset", "value": "Worldwide Gross"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": [ { "test": "!isValid(datum[\"sum_Worldwide Gross\"]) || !isFinite(+datum[\"sum_Worldwide Gross\"])", @@ -77,7 +77,7 @@ "field": "Major Genre", "offset": {"scale": "xOffset", "value": "US Gross"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": [ { "test": "!isValid(datum[\"sum_US Gross\"]) || !isFinite(+datum[\"sum_US Gross\"])", diff --git a/examples/compiled/bar_grouped_stacked.vg.json b/examples/compiled/bar_grouped_stacked.vg.json index 19324562fa..727c32e6be 100644 --- a/examples/compiled/bar_grouped_stacked.vg.json +++ b/examples/compiled/bar_grouped_stacked.vg.json @@ -66,7 +66,7 @@ "field": "Cylinders", "offset": {"scale": "xOffset", "field": "Origin"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": {"scale": "y", "field": "sum_Weight_in_lbs_end"}, "y2": {"scale": "y", "field": "sum_Weight_in_lbs_start"} } diff --git a/examples/compiled/bar_grouped_step_for_offset.vg.json b/examples/compiled/bar_grouped_step_for_offset.vg.json index e7f62bc9bf..6b0296359e 100644 --- a/examples/compiled/bar_grouped_step_for_offset.vg.json +++ b/examples/compiled/bar_grouped_step_for_offset.vg.json @@ -66,7 +66,7 @@ "field": "category", "offset": {"scale": "xOffset", "field": "group"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/bar_grouped_step_for_position.vg.json b/examples/compiled/bar_grouped_step_for_position.vg.json index 694e751e5f..81bd6e3c9c 100644 --- a/examples/compiled/bar_grouped_step_for_position.vg.json +++ b/examples/compiled/bar_grouped_step_for_position.vg.json @@ -63,7 +63,7 @@ "field": "category", "offset": {"scale": "xOffset", "field": "group"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/bar_grouped_thin.png b/examples/compiled/bar_grouped_thin.png new file mode 100644 index 0000000000..3185ae2793 Binary files /dev/null and b/examples/compiled/bar_grouped_thin.png differ diff --git a/examples/compiled/bar_grouped_thin.svg b/examples/compiled/bar_grouped_thin.svg new file mode 100644 index 0000000000..dd02e406ab --- /dev/null +++ b/examples/compiled/bar_grouped_thin.svg @@ -0,0 +1 @@ +nullAbel FerraraAdam McKayAdam ShankmanAdrian LyneAdrienne ShellyAkira KurosawaAlan AldaAlan J. PakulaAlan ParkerAlan RudolphAlbert BrooksAlbert HughesAlejandro Gonzalez InarrituAlex KendrickAlex ProyasAlexander PayneAlexandre AjaAlfonso CuaronAlfred HitchcockAmy HeckerlingAndrei KonchalovskyAndrew AdamsonAndrew BergmanAndrew DavisAndrew FlemingAndrew NiccolAndrew StantonAndrzej BartkowiakAndy FickmanAndy GarciaAndy TennantAndy WachowskiAng LeeAngela RobinsonAnne FletcherAnthony MinghellaAntoine FuquaAntonio BanderasAri S. KirschenbaumArthur HillerAtom EgoyanBarbet SchroederBarbra StreisandBarry LevinsonBarry SonnenfeldBaz LuhrmannBen AffleckBen StillerBennett MillerBernardo BertolucciBetty ThomasBill CondonBill DukeBill PaxtonBille AugustBille WoodruffBilly Bob ThorntonBilly WilderBlake EdwardsBoaz YakinBob FosseBob RafelsonBobby FarrellyBrad AndersonBrad BirdBrad SilberlingBradley Rust GreyBrett RatnerBrian De PalmaBrian LevantBrian RobbinsBruce BeresfordBryan SingerCameron CroweCarl FranklinCarlos SaldanhaCatherine HardwickeCatherine OwensChan-wook ParkCharles Martin SmithCharles S. DuttonCharles ShyerChris ColumbusChris NahonChris NoonanChris RockChris WedgeChris WeitzChristian DuguayChristophe GansChristopher GuestChristopher NolanChuck RussellClint EastwoodCorey YuenCosta-GavrasCurtis HansonD.J. CarusoDamien WayansDanny BoyleDanny De VitoDarren AronofskyDarren Lynn BousmanDavid BowersDavid CronenbergDavid DobkinDavid FincherDavid FrankelDavid Gordon GreenDavid GoyerDavid KoeppDavid LeanDavid LynchDavid MametDavid O. RussellDavid R. EllisDavid SilvermanDavid SladeDavid TwohyDavid YatesDavid ZuckerDeepa MehtaDennie GordonDennis DuganDenzel WashingtonDominic SenaDon BluthDonald PetrieDoug LimanDrew BarrymoreDwight H. LittleE. Elias MerhigeEd HarrisEdgar WrightEdward BurnsEdward ZwickEli RothElia KazanEmile ArdolinoEmilio EstevezEric DarnellF. Gary GrayFernando MeirellesForest WhitakerFrancis Ford CoppolaFrancis LawrenceFranco ZeffirelliFrank CapraFrank CoraciFrank DarabontFrank MarshallFrank OzFrank PerryFranklin J. SchaffnerFred SchepisiFred WolfFred ZinnemannGabriele MuccinoGarry MarshallGary RossGary TrousdaleGary WinickGavin HoodGeorge A. RomeroGeorge ClooneyGeorge CukorGeorge LucasGeorge MillerGeorge P. CosmatosGeorge Roy HillGil KenanGina Prince-BythewoodGore VerbinskiGrant HeslovGreg MottolaGriffin DunneGuillermo Del ToroGurinder ChadhaGus Van SantGuy HamiltonGuy RitchieHal AshbyHal NeedhamHarold BeckerHarold RamisHayao MiyazakiHerbert RossHoward DeutchHoward HawksHugh HudsonHugh WilsonIain SoftleyIvan ReitmanJ.J. AbramsJack Lee ThompsonJames CameronJames FoleyJames GrayJames IvoryJames L. BrooksJames MangoldJames McTeigueJames TobackJames WongJan De BontJane CampionJared HessJason AlexanderJason FriedbergJason ReitmanJay ChandrasekharJay RoachJay RussellJean-Jacques AnnaudJean-Pierre JeunetJeff ""King Jeff"" HollinsJeff BurrJeffrey W. ByrdJerry ZuckerJim AbrahamsJim JarmuschJim SheridanJoan ChenJoe CarnahanJoe DanteJoe JohnstonJoe PytkaJoe WrightJoel CoenJoel SchumacherJoel ZwickJoey Lauren AdamsJohn BadhamJohn BoormanJohn CarpenterJohn DahlJohn Erick DowdleJohn FordJohn FrankenheimerJohn G. AvildsenJohn GlenJohn GuillerminJohn HustonJohn LandisJohn LasseterJohn MaddenJohn McTiernanJohn MiliusJohn MuskerJohn PasquinJohn SaylesJohn SchlesingerJohn SchultzJohn SingletonJohn SturgesJohn TurturroJohn WatersJohn WayneJohn WooJon AmielJon AvnetJon FavreauJon TurteltaubJonathan DemmeJonathan FrakesJonathan MostowJoseph McGinty NicholJoseph RubenJoss WhedonJudd ApatowJulian SchnabelJustin LinKarey KirkpatrickKasi LemmonsKathryn BigelowKatia LundKeenen Ivory WayansKelly AsburyKen KwapisKenneth BranaghKevin BrayKevin CostnerKevin GreutertKevin LimaKevin MacDonaldKevin ReynoldsKevin SmithKevin SpaceyKimberly PeirceKing VidorLarry CharlesLars Von TrierLasse HallstromLawrence KasdanLee DanielsLee TamahoriLen WisemanLeonard NimoyLes MayfieldLouis LeterrierLuc BessonLuke GreenfieldLuke WilsonM. Night ShyamalanMalcolm D. LeeMarc ForsterMark DiSalleMark DindalMark DuplassMark Steven JohnsonMark WatersMartha CoolidgeMartin BrestMartin CampbellMartin RittMartin ScorseseMary HarronMathieu KassovitzMatt DillonMatt ReevesMatthew VaughnMel BrooksMel GibsonMichael AptedMichael BayMichael C. BrownMichael Caton-JonesMichael CiminoMichael CrichtonMichael CurtizMichael LehmannMichael LembeckMichael MannMichael MooreMichael O. SajbelMichael PolishMichael RadfordMichael RitchieMichael SpierigMichael WinterbottomMichel GondryMick JacksonMike BinderMike FiggisMike JudgeMike LeighMike NewellMike NicholsMilos FormanMimi LederMira NairMorgan SpurlockNancy MeyersNeal BrennanNeil JordanNeil LaButeNeill BlomkampNick CassavetesNick ParkNoah BaumbachNora EphronNorman JewisonOliver StoneOren PeliOxide Pang ChunP.J. HoganPatrick Read JohnsonPaul AndersonPaul GreengrassPaul HaggisPaul MazurskyPaul McGuiganPaul Michael GlaserPaul SchraderPaul Thomas AndersonPaul VerhoevenPaul WeilandPaul WeitzPedro AlmodovarPenelope SpheerisPenny MarshallPete DocterPeter BergPeter BillingsleyPeter CattaneoPeter ChelsomPeter HewittPeter HyamsPeter JacksonPeter SegalPeter SollettPeter WebberPeter WeirPeyton ReedPhil Alden RobinsonPhil JoanouPhil LordPhilip KaufmanPhillip NoycePierre MorelQuentin TarantinoRaja GosnellRandal KleiserRenny HarlinRichard BenjaminRichard BrooksRichard DonnerRichard E. GrantRichard FleischerRichard KellyRichard LaGraveneseRichard LinklaterRichard MarquandRick RosenthalRicky GervaisRidley ScottRob CohenRob LettermanRob MarshallRob MinkoffRob ReinerRob ZombieRobert AltmanRobert DuvallRobert LuketicRobert MorescoRobert RedfordRobert RodriguezRobert WiseRobert ZemeckisRoberto BenigniRod LurieRoger DonaldsonRoger KumbleRoger SpottiswoodeRoland EmmerichRoland JoffeRoman PolanskiRon HowardRon SheltonRonald NeameRonny YuRuben FleischerRupert WainwrightRussell MulcahyRyan LittleSally FieldSam FellSam FirstenbergSam MendesSam PeckinpahSam RaimiSammo Hung Kam-BoScott DerricksonScott HicksSean PennSergio LeoneSeth GordonShane AckerShane MeadowsShawn LevyShekhar KapurSheldon LettichSidney J. FurieSidney LumetSimon WestSimon WincerSir Richard AttenboroughSofia CoppolaSpike JonzeSpike LeeStanley DonenStanley KubrickStephen ChowStephen DaldryStephen FrearsStephen FryStephen HerekStephen HopkinsStephen NorringtonStephen SommersSteve BarronSteve BuscemiSteve CarrSteve HicknerSteve MinerSteve OedekerkSteven SeagalSteven SoderberghSteven SpielbergSteven ZaillianSue CorcoranSydney PollackSylvain WhiteSylvester StalloneTamara JenkinsTaylor HackfordTed DemmeTed KotcheffTerrence MalickTerry GilliamTerry ZwigoffThomas VinterbergTim Blake NelsonTim BurtonTim HillTim JohnsonTim RobbinsTim StoryTimur BekmambetovTobe HooperTodd FieldTodd HaynesTodd PhillipsTodd SolondzTom DeyTom HanksTom HooperTom ShadyacTom TykwerTom VaughanTony BillTony GilroyTony GoldwynTony ScottTrey ParkerTyler PerryUwe BollVin DieselVincent GalloVincente MinnelliVondie Curtis-HallWalter HillWalter SallesWarren BeattyWayne WangWerner HerzogWes AndersonWes CravenWhit StillmanWilliam FriedkinWilliam MaloneWilliam WylerWolfgang PetersenWong Kar-waiWoody AllenYimou ZhangZach BraffZack SnyderZak PennDirector020406080100Mean of Rotten Tomatoes Rating \ No newline at end of file diff --git a/examples/compiled/bar_grouped_thin.vg.json b/examples/compiled/bar_grouped_thin.vg.json new file mode 100644 index 0000000000..69c532b3bc --- /dev/null +++ b/examples/compiled/bar_grouped_thin.vg.json @@ -0,0 +1,120 @@ +{ + "$schema": "https://vega.github.io/schema/vega/v5.json", + "background": "white", + "padding": 5, + "width": 500, + "height": 200, + "style": "cell", + "data": [ + { + "name": "source_0", + "url": "data/movies.json", + "format": {"type": "json"}, + "transform": [ + { + "type": "aggregate", + "groupby": ["Director", "Title"], + "ops": ["mean"], + "fields": ["Rotten Tomatoes Rating"], + "as": ["mean_Rotten Tomatoes Rating"] + } + ] + } + ], + "marks": [ + { + "name": "marks", + "type": "rect", + "style": ["bar"], + "from": {"data": "source_0"}, + "encode": { + "update": { + "fill": [ + { + "test": "datum['IMDB Rating'] === null || datum['Rotten Tomatoes Rating'] === null", + "value": "#aaa" + }, + {"value": "#4c78a8"} + ], + "ariaRoleDescription": {"value": "bar"}, + "description": { + "signal": "\"Director: \" + (isValid(datum[\"Director\"]) ? datum[\"Director\"] : \"\"+datum[\"Director\"]) + \"; Mean of Rotten Tomatoes Rating: \" + (format(datum[\"mean_Rotten Tomatoes Rating\"], \"\")) + \"; Title: \" + (isValid(datum[\"Title\"]) ? datum[\"Title\"] : \"\"+datum[\"Title\"])" + }, + "x": { + "scale": "x", + "field": "Director", + "offset": {"scale": "xOffset", "field": "Title"} + }, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, + "y": [ + { + "test": "!isValid(datum[\"mean_Rotten Tomatoes Rating\"]) || !isFinite(+datum[\"mean_Rotten Tomatoes Rating\"])", + "field": {"group": "height"} + }, + {"scale": "y", "field": "mean_Rotten Tomatoes Rating"} + ], + "y2": {"scale": "y", "value": 0} + } + } + } + ], + "scales": [ + { + "name": "x", + "type": "band", + "domain": {"data": "source_0", "field": "Director", "sort": true}, + "range": [0, {"signal": "width"}], + "paddingInner": 0.2, + "paddingOuter": 0.2 + }, + { + "name": "y", + "type": "linear", + "domain": {"data": "source_0", "field": "mean_Rotten Tomatoes Rating"}, + "range": [{"signal": "height"}, 0], + "nice": true, + "zero": true + }, + { + "name": "xOffset", + "type": "band", + "domain": {"data": "source_0", "field": "Title", "sort": true}, + "range": [0, {"signal": "bandwidth('x')"}] + } + ], + "axes": [ + { + "scale": "y", + "orient": "left", + "gridScale": "x", + "grid": true, + "tickCount": {"signal": "ceil(height/40)"}, + "domain": false, + "labels": false, + "aria": false, + "maxExtent": 0, + "minExtent": 0, + "ticks": false, + "zindex": 0 + }, + { + "scale": "x", + "orient": "bottom", + "grid": false, + "title": "Director", + "labelAlign": "right", + "labelAngle": 270, + "labelBaseline": "middle", + "zindex": 0 + }, + { + "scale": "y", + "orient": "left", + "grid": false, + "title": "Mean of Rotten Tomatoes Rating", + "labelOverlap": true, + "tickCount": {"signal": "ceil(height/40)"}, + "zindex": 0 + } + ] +} diff --git a/examples/compiled/bar_heatlane.png b/examples/compiled/bar_heatlane.png new file mode 100644 index 0000000000..779a28f8d2 Binary files /dev/null and b/examples/compiled/bar_heatlane.png differ diff --git a/examples/compiled/bar_heatlane.svg b/examples/compiled/bar_heatlane.svg new file mode 100644 index 0000000000..b72c127fcb --- /dev/null +++ b/examples/compiled/bar_heatlane.svg @@ -0,0 +1 @@ +020406080100120140160180200220240Horsepower20406080100120countHeat Lane of Horsepower \ No newline at end of file diff --git a/examples/compiled/bar_heatlane.vg.json b/examples/compiled/bar_heatlane.vg.json new file mode 100644 index 0000000000..910871071b --- /dev/null +++ b/examples/compiled/bar_heatlane.vg.json @@ -0,0 +1,150 @@ +{ + "$schema": "https://vega.github.io/schema/vega/v5.json", + "description": "Heat lane chart based on https://www.smashingmagazine.com/2022/07/accessibility-first-approach-chart-visual-design/", + "background": "white", + "padding": 5, + "width": 400, + "height": 150, + "title": {"text": "Heat Lane of Horsepower", "frame": "group"}, + "style": "cell", + "data": [ + { + "name": "source_0", + "url": "data/cars.json", + "format": {"type": "json"}, + "transform": [ + { + "type": "extent", + "field": "Horsepower", + "signal": "bin_maxbins_10_Horsepower_extent" + }, + { + "type": "bin", + "field": "Horsepower", + "as": ["bin_Horsepower_start", "bin_Horsepower_end"], + "signal": "bin_maxbins_10_Horsepower_bins", + "extent": {"signal": "bin_maxbins_10_Horsepower_extent"}, + "maxbins": 10 + }, + { + "type": "aggregate", + "groupby": ["bin_Horsepower_start", "bin_Horsepower_end"], + "ops": ["count"], + "fields": [null], + "as": ["count"] + }, + { + "type": "extent", + "field": "count", + "signal": "bin_maxbins_10_count_extent" + }, + { + "type": "bin", + "field": "count", + "as": ["bin_count_start", "bin_count_end"], + "signal": "bin_maxbins_10_count_bins", + "extent": {"signal": "bin_maxbins_10_count_extent"}, + "maxbins": 10 + }, + {"type": "formula", "expr": "-datum.bin_count_end/2", "as": "y2"}, + {"type": "formula", "expr": "datum.bin_count_end/2", "as": "y"}, + { + "type": "joinaggregate", + "as": ["max_bin_count_end"], + "ops": ["max"], + "fields": ["bin_count_end"] + }, + { + "type": "filter", + "expr": "isValid(datum[\"bin_Horsepower_start\"]) && isFinite(+datum[\"bin_Horsepower_start\"])" + } + ] + } + ], + "marks": [ + { + "name": "layer_0_marks", + "type": "rect", + "style": ["bar"], + "from": {"data": "source_0"}, + "encode": { + "update": { + "cornerRadius": {"value": 3}, + "fill": {"scale": "color", "field": "max_bin_count_end"}, + "ariaRoleDescription": {"value": "bar"}, + "description": { + "signal": "\"Horsepower: \" + (format(datum[\"bin_Horsepower_start\"], \"\")) + \"; y: \" + (isValid(datum[\"y\"]) ? datum[\"y\"] : \"\"+datum[\"y\"]) + \"; bin_Horsepower_end: \" + (format(datum[\"bin_Horsepower_end\"], \"\")) + \"; y2: \" + (isValid(datum[\"y2\"]) ? datum[\"y2\"] : \"\"+datum[\"y2\"]) + \"; count: \" + (isValid(datum[\"max_bin_count_end\"]) ? datum[\"max_bin_count_end\"] : \"\"+datum[\"max_bin_count_end\"])" + }, + "x": {"scale": "x", "field": "bin_Horsepower_start", "offset": 2}, + "x2": {"scale": "x", "field": "bin_Horsepower_end", "offset": -2}, + "y": {"scale": "y", "field": "y", "band": 0.5}, + "y2": {"scale": "y", "field": "y2", "band": 0.5} + } + } + }, + { + "name": "layer_1_marks", + "type": "rect", + "style": ["bar"], + "from": {"data": "source_0"}, + "encode": { + "update": { + "fill": {"scale": "color", "field": "bin_count_end"}, + "ariaRoleDescription": {"value": "bar"}, + "description": { + "signal": "\"Horsepower: \" + (format(datum[\"bin_Horsepower_start\"], \"\")) + \"; y: \" + (isValid(datum[\"y\"]) ? datum[\"y\"] : \"\"+datum[\"y\"]) + \"; bin_Horsepower_end: \" + (format(datum[\"bin_Horsepower_end\"], \"\")) + \"; y2: \" + (isValid(datum[\"y2\"]) ? datum[\"y2\"] : \"\"+datum[\"y2\"]) + \"; count: \" + (isValid(datum[\"bin_count_end\"]) ? datum[\"bin_count_end\"] : \"\"+datum[\"bin_count_end\"])" + }, + "x": {"scale": "x", "field": "bin_Horsepower_start", "offset": 2}, + "x2": {"scale": "x", "field": "bin_Horsepower_end", "offset": -2}, + "y": {"scale": "y", "field": "y", "offset": -3, "band": 0.5}, + "y2": {"scale": "y", "field": "y2", "offset": 3, "band": 0.5} + } + } + } + ], + "scales": [ + { + "name": "x", + "type": "linear", + "domain": { + "data": "source_0", + "fields": ["bin_Horsepower_start", "bin_Horsepower_end"] + }, + "range": [0, {"signal": "width"}], + "nice": true, + "zero": true + }, + { + "name": "y", + "type": "band", + "domain": {"data": "source_0", "fields": ["y", "y2"], "sort": true}, + "range": [0, {"signal": "height"}], + "paddingInner": 0.1, + "paddingOuter": 0.05 + }, + { + "name": "color", + "type": "ordinal", + "domain": { + "data": "source_0", + "fields": ["max_bin_count_end", "bin_count_end"], + "sort": true + }, + "range": {"scheme": "lighttealblue"}, + "interpolate": "hcl" + } + ], + "axes": [ + { + "scale": "x", + "orient": "bottom", + "grid": false, + "title": "Horsepower", + "labelFlush": true, + "labelOverlap": true, + "tickCount": {"signal": "ceil(width/40)"}, + "zindex": 0 + } + ], + "legends": [{"title": "count", "fill": "color", "symbolType": "square"}] +} diff --git a/examples/compiled/bar_layered_transparent.vg.json b/examples/compiled/bar_layered_transparent.vg.json index 8b5bc6ef03..fbd9aa0f00 100644 --- a/examples/compiled/bar_layered_transparent.vg.json +++ b/examples/compiled/bar_layered_transparent.vg.json @@ -53,7 +53,7 @@ "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])" }, "x": {"scale": "x", "field": "age"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "sum_people"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_month.vg.json b/examples/compiled/bar_month.vg.json index 3fc56b1524..cdd3dacecf 100644 --- a/examples/compiled/bar_month.vg.json +++ b/examples/compiled/bar_month.vg.json @@ -51,7 +51,7 @@ "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))" }, "x": {"scale": "x", "field": "month_date"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "mean_precipitation"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_multi_values_per_categories.vg.json b/examples/compiled/bar_multi_values_per_categories.vg.json index 8547fe9606..63d48a5175 100644 --- a/examples/compiled/bar_multi_values_per_categories.vg.json +++ b/examples/compiled/bar_multi_values_per_categories.vg.json @@ -63,7 +63,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_negative.vg.json b/examples/compiled/bar_negative.vg.json index 8f9e76b9f9..8965cdfe1d 100644 --- a/examples/compiled/bar_negative.vg.json +++ b/examples/compiled/bar_negative.vg.json @@ -60,7 +60,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_negative_horizontal_label.vg.json b/examples/compiled/bar_negative_horizontal_label.vg.json index 9d139addad..96aa0dbd66 100644 --- a/examples/compiled/bar_negative_horizontal_label.vg.json +++ b/examples/compiled/bar_negative_horizontal_label.vg.json @@ -72,7 +72,7 @@ "x": {"scale": "x", "field": "b_end"}, "x2": {"scale": "x", "field": "b_start"}, "y": {"scale": "y", "field": "a"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/bar_params.vg.json b/examples/compiled/bar_params.vg.json index 6123354272..3273c30642 100644 --- a/examples/compiled/bar_params.vg.json +++ b/examples/compiled/bar_params.vg.json @@ -64,7 +64,7 @@ "encode": { "update": { "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": { "signal": "min(scale('y',datum[\"min_b_start\"]),scale('y',datum[\"max_b_start\"]),scale('y',datum[\"min_b_end\"]),scale('y',datum[\"max_b_end\"]))" }, diff --git a/examples/compiled/bar_params_bound.vg.json b/examples/compiled/bar_params_bound.vg.json index 7e94ef9da6..81146c10f5 100644 --- a/examples/compiled/bar_params_bound.vg.json +++ b/examples/compiled/bar_params_bound.vg.json @@ -68,7 +68,7 @@ "encode": { "update": { "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": { "signal": "min(scale('y',datum[\"min_b_start\"]),scale('y',datum[\"max_b_start\"]),scale('y',datum[\"min_b_end\"]),scale('y',datum[\"max_b_end\"]))" }, diff --git a/examples/compiled/bar_percent_of_total.vg.json b/examples/compiled/bar_percent_of_total.vg.json index ed7365cc58..2258fe7f1d 100644 --- a/examples/compiled/bar_percent_of_total.vg.json +++ b/examples/compiled/bar_percent_of_total.vg.json @@ -69,7 +69,7 @@ "x": {"scale": "x", "field": "PercentOfTotal_end"}, "x2": {"scale": "x", "field": "PercentOfTotal_start"}, "y": {"scale": "y", "field": "Activity"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_size_default.vg.json b/examples/compiled/bar_size_default.vg.json index 4e4a3593b7..a657e6fda5 100644 --- a/examples/compiled/bar_size_default.vg.json +++ b/examples/compiled/bar_size_default.vg.json @@ -41,7 +41,7 @@ "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Origin"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "__count"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_size_explicit_bad.vg.json b/examples/compiled/bar_size_explicit_bad.vg.json index d27a388e21..564c59c463 100644 --- a/examples/compiled/bar_size_explicit_bad.vg.json +++ b/examples/compiled/bar_size_explicit_bad.vg.json @@ -35,7 +35,7 @@ "signal": "\"Name: \" + (isValid(datum[\"Name\"]) ? datum[\"Name\"] : \"\"+datum[\"Name\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Name"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "__count"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_size_fit.vg.json b/examples/compiled/bar_size_fit.vg.json index 8e5ec39e8d..aed17f5075 100644 --- a/examples/compiled/bar_size_fit.vg.json +++ b/examples/compiled/bar_size_fit.vg.json @@ -35,7 +35,7 @@ "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Origin"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "__count"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_size_responsive.vg.json b/examples/compiled/bar_size_responsive.vg.json index 88cf30114b..2ed5384234 100644 --- a/examples/compiled/bar_size_responsive.vg.json +++ b/examples/compiled/bar_size_responsive.vg.json @@ -47,7 +47,7 @@ "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Number of Cars: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Origin"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "__count"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_size_step_small.vg.json b/examples/compiled/bar_size_step_small.vg.json index a31082143b..4b49288a92 100644 --- a/examples/compiled/bar_size_step_small.vg.json +++ b/examples/compiled/bar_size_step_small.vg.json @@ -41,7 +41,7 @@ "signal": "\"Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Origin"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "__count"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_sort_by_count.vg.json b/examples/compiled/bar_sort_by_count.vg.json index 9d87c26a6e..cec76baa9b 100644 --- a/examples/compiled/bar_sort_by_count.vg.json +++ b/examples/compiled/bar_sort_by_count.vg.json @@ -42,7 +42,7 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "__count"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/bar_swap_axes.vg.json b/examples/compiled/bar_swap_axes.vg.json index 5f88082761..24c5aedd84 100644 --- a/examples/compiled/bar_swap_axes.vg.json +++ b/examples/compiled/bar_swap_axes.vg.json @@ -60,7 +60,7 @@ "x": {"scale": "x", "field": "average_b"}, "x2": {"scale": "x", "value": 0}, "y": {"scale": "y", "field": "a"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_swap_custom.vg.json b/examples/compiled/bar_swap_custom.vg.json index 201bbdb74a..4d8760930d 100644 --- a/examples/compiled/bar_swap_custom.vg.json +++ b/examples/compiled/bar_swap_custom.vg.json @@ -60,7 +60,7 @@ "x": {"scale": "x", "field": "average_b"}, "x2": {"scale": "x", "value": 0}, "y": {"scale": "y", "field": "a"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/bar_title.vg.json b/examples/compiled/bar_title.vg.json index cac465ad90..cef272a2d1 100644 --- a/examples/compiled/bar_title.vg.json +++ b/examples/compiled/bar_title.vg.json @@ -60,7 +60,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_title_start.vg.json b/examples/compiled/bar_title_start.vg.json index 060cdc9c87..03fedcee38 100644 --- a/examples/compiled/bar_title_start.vg.json +++ b/examples/compiled/bar_title_start.vg.json @@ -60,7 +60,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_tooltip.vg.json b/examples/compiled/bar_tooltip.vg.json index 2ab3ef1e59..5295344d5f 100644 --- a/examples/compiled/bar_tooltip.vg.json +++ b/examples/compiled/bar_tooltip.vg.json @@ -61,7 +61,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_tooltip_multi.vg.json b/examples/compiled/bar_tooltip_multi.vg.json index a1b3f4e40a..6a35ed202d 100644 --- a/examples/compiled/bar_tooltip_multi.vg.json +++ b/examples/compiled/bar_tooltip_multi.vg.json @@ -62,7 +62,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_tooltip_title.vg.json b/examples/compiled/bar_tooltip_title.vg.json index 78c257643f..4575f585db 100644 --- a/examples/compiled/bar_tooltip_title.vg.json +++ b/examples/compiled/bar_tooltip_title.vg.json @@ -62,7 +62,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; Field A: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; Field B: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/bar_x_offset_without_x_broken.vg.json b/examples/compiled/bar_x_offset_without_x_broken.vg.json index 9fb6abcc67..7224919868 100644 --- a/examples/compiled/bar_x_offset_without_x_broken.vg.json +++ b/examples/compiled/bar_x_offset_without_x_broken.vg.json @@ -60,7 +60,7 @@ "signal": "\"value: \" + (format(datum[\"value\"], \"\")) + \"; group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"])" }, "x": {"scale": "x", "field": "group"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/concat_bar_layer_circle.vg.json b/examples/compiled/concat_bar_layer_circle.vg.json index cd91195e8d..4bdc186d2f 100644 --- a/examples/compiled/concat_bar_layer_circle.vg.json +++ b/examples/compiled/concat_bar_layer_circle.vg.json @@ -315,7 +315,7 @@ "signal": "\"Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "concat_1_x", "field": "Major Genre"}, - "width": {"scale": "concat_1_x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('concat_1_x'))"}, "y": {"scale": "concat_1_y", "field": "__count"}, "y2": {"scale": "concat_1_y", "value": 0} } diff --git a/examples/compiled/concat_population_pyramid.vg.json b/examples/compiled/concat_population_pyramid.vg.json index 526faf05fb..8e337a1fb8 100644 --- a/examples/compiled/concat_population_pyramid.vg.json +++ b/examples/compiled/concat_population_pyramid.vg.json @@ -129,7 +129,7 @@ "x": {"scale": "concat_0_x", "field": "sum_people_end"}, "x2": {"scale": "concat_0_x", "field": "sum_people_start"}, "y": {"scale": "concat_0_y", "field": "age"}, - "height": {"scale": "concat_0_y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('concat_0_y'))"} } } } @@ -208,7 +208,7 @@ "x": {"scale": "concat_2_x", "field": "sum_people_end"}, "x2": {"scale": "concat_2_x", "field": "sum_people_start"}, "y": {"scale": "concat_2_y", "field": "age"}, - "height": {"scale": "concat_2_y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('concat_2_y'))"} } } } diff --git a/examples/compiled/concat_weather.vg.json b/examples/compiled/concat_weather.vg.json index 416a30ea6c..0df5e44753 100644 --- a/examples/compiled/concat_weather.vg.json +++ b/examples/compiled/concat_weather.vg.json @@ -138,7 +138,7 @@ "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))" }, "x": {"scale": "concat_0_x", "field": "month_date"}, - "width": {"scale": "concat_0_x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('concat_0_x'))"}, "y": {"scale": "concat_0_y", "field": "mean_precipitation"}, "y2": {"scale": "concat_0_y", "value": 0} } @@ -207,7 +207,7 @@ "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Median of precipitation: \" + (format(datum[\"median_precipitation\"], \"\"))" }, "x": {"scale": "concat_1_x", "field": "month_date"}, - "width": {"scale": "concat_1_x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('concat_1_x'))"}, "y": {"scale": "concat_1_y", "field": "median_precipitation"}, "y2": {"scale": "concat_1_y", "value": 0} } diff --git a/examples/compiled/facet_cross_independent_scale.vg.json b/examples/compiled/facet_cross_independent_scale.vg.json index ee46c02b89..d6280b91b1 100644 --- a/examples/compiled/facet_cross_independent_scale.vg.json +++ b/examples/compiled/facet_cross_independent_scale.vg.json @@ -169,9 +169,9 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (isValid(datum[\"b\"]) ? datum[\"b\"] : \"\"+datum[\"b\"])" }, "x": {"scale": "child_x", "field": "a"}, - "width": {"scale": "child_x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('child_x'))"}, "y": {"scale": "child_y", "field": "b"}, - "height": {"scale": "child_y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('child_y'))"} } } } diff --git a/examples/compiled/facet_custom.vg.json b/examples/compiled/facet_custom.vg.json index 5435c57482..8efd0d24a6 100644 --- a/examples/compiled/facet_custom.vg.json +++ b/examples/compiled/facet_custom.vg.json @@ -151,7 +151,7 @@ "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])" }, "x": {"scale": "x", "field": "age"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "sum_people_end"}, "y2": {"scale": "y", "field": "sum_people_start"} } diff --git a/examples/compiled/facet_custom_header.vg.json b/examples/compiled/facet_custom_header.vg.json index 5435c57482..8efd0d24a6 100644 --- a/examples/compiled/facet_custom_header.vg.json +++ b/examples/compiled/facet_custom_header.vg.json @@ -151,7 +151,7 @@ "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])" }, "x": {"scale": "x", "field": "age"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "sum_people_end"}, "y2": {"scale": "y", "field": "sum_people_start"} } diff --git a/examples/compiled/facet_grid_bar.vg.json b/examples/compiled/facet_grid_bar.vg.json index c2264832a3..ffe8d7fbb6 100644 --- a/examples/compiled/facet_grid_bar.vg.json +++ b/examples/compiled/facet_grid_bar.vg.json @@ -192,7 +192,7 @@ "x": {"scale": "x", "field": "p_end"}, "x2": {"scale": "x", "field": "p_start"}, "y": {"scale": "y", "field": "c"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/facet_independent_scale.vg.json b/examples/compiled/facet_independent_scale.vg.json index 16883e8863..ec52febd7e 100644 --- a/examples/compiled/facet_independent_scale.vg.json +++ b/examples/compiled/facet_independent_scale.vg.json @@ -146,7 +146,7 @@ "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])" }, "x": {"scale": "child_x", "field": "age"}, - "width": {"scale": "child_x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('child_x'))"}, "y": {"scale": "y", "field": "sum_people_end"}, "y2": {"scale": "y", "field": "sum_people_start"} } diff --git a/examples/compiled/hconcat_weather.vg.json b/examples/compiled/hconcat_weather.vg.json index 8bb952d22f..958915aad6 100644 --- a/examples/compiled/hconcat_weather.vg.json +++ b/examples/compiled/hconcat_weather.vg.json @@ -117,7 +117,7 @@ "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))" }, "x": {"scale": "concat_0_x", "field": "month_date"}, - "width": {"scale": "concat_0_x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('concat_0_x'))"}, "y": {"scale": "concat_0_y", "field": "mean_precipitation"}, "y2": {"scale": "concat_0_y", "value": 0} } diff --git a/examples/compiled/histogram_ordinal.vg.json b/examples/compiled/histogram_ordinal.vg.json index 43b2f6e0fd..1b11b8bd79 100644 --- a/examples/compiled/histogram_ordinal.vg.json +++ b/examples/compiled/histogram_ordinal.vg.json @@ -66,7 +66,7 @@ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "bin_maxbins_10_IMDB Rating_range"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "__count"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/histogram_ordinal_sort.vg.json b/examples/compiled/histogram_ordinal_sort.vg.json index b0e3d9f849..a31354fb06 100644 --- a/examples/compiled/histogram_ordinal_sort.vg.json +++ b/examples/compiled/histogram_ordinal_sort.vg.json @@ -72,7 +72,7 @@ "signal": "\"IMDB Rating (binned): \" + (!isValid(datum[\"bin_maxbins_10_IMDB Rating\"]) || !isFinite(+datum[\"bin_maxbins_10_IMDB Rating\"]) ? \"null\" : format(datum[\"bin_maxbins_10_IMDB Rating\"], \"\") + \" – \" + format(datum[\"bin_maxbins_10_IMDB Rating_end\"], \"\")) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "bin_maxbins_10_IMDB Rating_range"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "__count"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/interactive_bar_select_highlight.vg.json b/examples/compiled/interactive_bar_select_highlight.vg.json index 61090f6587..348178735e 100644 --- a/examples/compiled/interactive_bar_select_highlight.vg.json +++ b/examples/compiled/interactive_bar_select_highlight.vg.json @@ -167,7 +167,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/interactive_concat_layer.vg.json b/examples/compiled/interactive_concat_layer.vg.json index e73c94dd63..46b90b6af8 100644 --- a/examples/compiled/interactive_concat_layer.vg.json +++ b/examples/compiled/interactive_concat_layer.vg.json @@ -317,7 +317,7 @@ "signal": "\"Major Genre: \" + (isValid(datum[\"Major Genre\"]) ? datum[\"Major Genre\"] : \"\"+datum[\"Major Genre\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "concat_1_x", "field": "Major Genre"}, - "width": {"scale": "concat_1_x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('concat_1_x'))"}, "y": {"scale": "concat_1_y", "field": "__count"}, "y2": {"scale": "concat_1_y", "value": 0} } diff --git a/examples/compiled/interactive_dashboard_europe_pop.vg.json b/examples/compiled/interactive_dashboard_europe_pop.vg.json index 905b49d135..7907c00a1f 100644 --- a/examples/compiled/interactive_dashboard_europe_pop.vg.json +++ b/examples/compiled/interactive_dashboard_europe_pop.vg.json @@ -626,7 +626,7 @@ "field": "Population_ages_15_64_of_total_start" }, "y": {"scale": "concat_0_y", "field": "Country"}, - "height": {"scale": "concat_0_y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('concat_0_y'))"} } } }, @@ -950,7 +950,7 @@ "field": "Population_ages_65_and_above_of_total_start" }, "y": {"scale": "concat_1_y", "field": "Country"}, - "height": {"scale": "concat_1_y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('concat_1_y'))"} } } }, diff --git a/examples/compiled/interactive_seattle_weather.vg.json b/examples/compiled/interactive_seattle_weather.vg.json index 13d435d98b..850ac9048e 100644 --- a/examples/compiled/interactive_seattle_weather.vg.json +++ b/examples/compiled/interactive_seattle_weather.vg.json @@ -498,7 +498,7 @@ "x": {"scale": "concat_1_x", "field": "__count"}, "x2": {"scale": "concat_1_x", "value": 0}, "y": {"scale": "concat_1_y", "field": "weather"}, - "height": {"scale": "concat_1_y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('concat_1_y'))"} } } } diff --git a/examples/compiled/joinaggregate_mean_difference.vg.json b/examples/compiled/joinaggregate_mean_difference.vg.json index ae63ba42e2..d3592f878a 100644 --- a/examples/compiled/joinaggregate_mean_difference.vg.json +++ b/examples/compiled/joinaggregate_mean_difference.vg.json @@ -82,7 +82,7 @@ "x": {"scale": "x", "field": "IMDB Rating_end"}, "x2": {"scale": "x", "field": "IMDB Rating_start"}, "y": {"scale": "y", "field": "Title"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/joinaggregate_mean_difference_by_year.vg.json b/examples/compiled/joinaggregate_mean_difference_by_year.vg.json index 476b0af3f3..611937a644 100644 --- a/examples/compiled/joinaggregate_mean_difference_by_year.vg.json +++ b/examples/compiled/joinaggregate_mean_difference_by_year.vg.json @@ -84,7 +84,7 @@ "x": {"scale": "x", "field": "IMDB Rating_end"}, "x2": {"scale": "x", "field": "IMDB Rating_start"}, "y": {"scale": "y", "field": "Title"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/joinaggregate_percent_of_total.vg.json b/examples/compiled/joinaggregate_percent_of_total.vg.json index ed7365cc58..2258fe7f1d 100644 --- a/examples/compiled/joinaggregate_percent_of_total.vg.json +++ b/examples/compiled/joinaggregate_percent_of_total.vg.json @@ -69,7 +69,7 @@ "x": {"scale": "x", "field": "PercentOfTotal_end"}, "x2": {"scale": "x", "field": "PercentOfTotal_start"}, "y": {"scale": "y", "field": "Activity"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/layer_bar_annotations.vg.json b/examples/compiled/layer_bar_annotations.vg.json index 481e8c5c7b..0c4bd6ee71 100644 --- a/examples/compiled/layer_bar_annotations.vg.json +++ b/examples/compiled/layer_bar_annotations.vg.json @@ -79,7 +79,7 @@ "signal": "\"Day: \" + (isValid(datum[\"Day\"]) ? datum[\"Day\"] : \"\"+datum[\"Day\"]) + \"; Value: \" + (format(datum[\"Value\"], \"\"))" }, "x": {"scale": "x", "field": "Day"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Value_end"}, "y2": {"scale": "y", "field": "Value_start"} } @@ -98,7 +98,7 @@ "signal": "\"Day: \" + (isValid(datum[\"Day\"]) ? datum[\"Day\"] : \"\"+datum[\"Day\"]) + \"; PM2.5 Value: \" + (format(datum[\"baseline\"], \"\")) + \"; Value: \" + (format(datum[\"Value\"], \"\"))" }, "x": {"scale": "x", "field": "Day"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "baseline"}, "y2": {"scale": "y", "field": "Value"} } diff --git a/examples/compiled/layer_bar_circle_grouped.vg.json b/examples/compiled/layer_bar_circle_grouped.vg.json index 2b50d57e02..4de4dea6d2 100644 --- a/examples/compiled/layer_bar_circle_grouped.vg.json +++ b/examples/compiled/layer_bar_circle_grouped.vg.json @@ -81,7 +81,7 @@ "field": "category", "offset": {"scale": "xOffset", "field": "group"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/layer_bar_fruit.vg.json b/examples/compiled/layer_bar_fruit.vg.json index b836111433..e7d01668fb 100644 --- a/examples/compiled/layer_bar_fruit.vg.json +++ b/examples/compiled/layer_bar_fruit.vg.json @@ -71,7 +71,7 @@ "x": {"scale": "x", "field": "count_end"}, "x2": {"scale": "x", "field": "count_start"}, "y": {"scale": "y", "field": "name"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/layer_bar_grouped_line_ungrouped.vg.json b/examples/compiled/layer_bar_grouped_line_ungrouped.vg.json index dc3df7df6b..bd2e4f27df 100644 --- a/examples/compiled/layer_bar_grouped_line_ungrouped.vg.json +++ b/examples/compiled/layer_bar_grouped_line_ungrouped.vg.json @@ -79,7 +79,7 @@ "field": "category", "offset": {"scale": "xOffset", "field": "group"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": {"scale": "y", "field": "value_end"}, "y2": {"scale": "y", "field": "value_start"} } diff --git a/examples/compiled/layer_bar_labels.vg.json b/examples/compiled/layer_bar_labels.vg.json index 7ede2672cf..31d397cd71 100644 --- a/examples/compiled/layer_bar_labels.vg.json +++ b/examples/compiled/layer_bar_labels.vg.json @@ -62,7 +62,7 @@ "x": {"scale": "x", "field": "b_end"}, "x2": {"scale": "x", "field": "b_start"}, "y": {"scale": "y", "field": "a"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/layer_bar_labels_grey.vg.json b/examples/compiled/layer_bar_labels_grey.vg.json index beb6fa9b63..8b77756483 100644 --- a/examples/compiled/layer_bar_labels_grey.vg.json +++ b/examples/compiled/layer_bar_labels_grey.vg.json @@ -53,7 +53,7 @@ "x": {"scale": "x", "field": "mean_IMDB Rating"}, "x2": {"scale": "x", "value": 0}, "y": {"scale": "y", "field": "Major Genre"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/layer_bar_labels_style.vg.json b/examples/compiled/layer_bar_labels_style.vg.json index 0efd8ebe05..dd0169cc9c 100644 --- a/examples/compiled/layer_bar_labels_style.vg.json +++ b/examples/compiled/layer_bar_labels_style.vg.json @@ -61,7 +61,7 @@ "x": {"scale": "x", "field": "b_end"}, "x2": {"scale": "x", "field": "b_start"}, "y": {"scale": "y", "field": "a"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/layer_bar_line.vg.json b/examples/compiled/layer_bar_line.vg.json index eec6e7a17b..0fa026c72d 100644 --- a/examples/compiled/layer_bar_line.vg.json +++ b/examples/compiled/layer_bar_line.vg.json @@ -59,7 +59,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/layer_bar_line_union.vg.json b/examples/compiled/layer_bar_line_union.vg.json index ea1feef68a..3cf4f28bc2 100644 --- a/examples/compiled/layer_bar_line_union.vg.json +++ b/examples/compiled/layer_bar_line_union.vg.json @@ -59,7 +59,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; c: \" + (format(datum[\"c\"], \"\"))" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "c_end"}, "y2": {"scale": "y", "field": "c_start"} } diff --git a/examples/compiled/layer_bar_month.vg.json b/examples/compiled/layer_bar_month.vg.json index a0b5889ea6..498fab4f7b 100644 --- a/examples/compiled/layer_bar_month.vg.json +++ b/examples/compiled/layer_bar_month.vg.json @@ -72,7 +72,7 @@ "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))" }, "x": {"scale": "x", "field": "month_date"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "mean_precipitation"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/layer_bar_tick_datum_grouped.vg.json b/examples/compiled/layer_bar_tick_datum_grouped.vg.json index d39abf994b..335a19cc9d 100644 --- a/examples/compiled/layer_bar_tick_datum_grouped.vg.json +++ b/examples/compiled/layer_bar_tick_datum_grouped.vg.json @@ -53,7 +53,7 @@ "field": "Cylinders", "offset": {"scale": "xOffset", "field": "Origin"} }, - "width": {"scale": "xOffset", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('xOffset'))"}, "y": {"scale": "y", "field": "mean_Acceleration"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/layer_precipitation_mean.vg.json b/examples/compiled/layer_precipitation_mean.vg.json index e49acfaf0d..d19a7112bd 100644 --- a/examples/compiled/layer_precipitation_mean.vg.json +++ b/examples/compiled/layer_precipitation_mean.vg.json @@ -72,7 +72,7 @@ "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))" }, "x": {"scale": "x", "field": "month_date"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "mean_precipitation"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/layer_text_heatmap.vg.json b/examples/compiled/layer_text_heatmap.vg.json index 66ae81e15e..4f005e6d2d 100644 --- a/examples/compiled/layer_text_heatmap.vg.json +++ b/examples/compiled/layer_text_heatmap.vg.json @@ -48,9 +48,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"num_cars\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/layer_text_heatmap_joinaggregate.vg.json b/examples/compiled/layer_text_heatmap_joinaggregate.vg.json index d449076c74..030416d423 100644 --- a/examples/compiled/layer_text_heatmap_joinaggregate.vg.json +++ b/examples/compiled/layer_text_heatmap_joinaggregate.vg.json @@ -59,9 +59,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"num_cars\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/lookup.vg.json b/examples/compiled/lookup.vg.json index 1c7ec313be..461db2d4fd 100644 --- a/examples/compiled/lookup.vg.json +++ b/examples/compiled/lookup.vg.json @@ -57,7 +57,7 @@ "signal": "\"group: \" + (isValid(datum[\"group\"]) ? datum[\"group\"] : \"\"+datum[\"group\"]) + \"; Mean of age: \" + (format(datum[\"mean_age\"], \"\"))" }, "x": {"scale": "x", "field": "group"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "mean_age"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/rect_heatmap.vg.json b/examples/compiled/rect_heatmap.vg.json index d10f2c4d07..5afa68acb2 100644 --- a/examples/compiled/rect_heatmap.vg.json +++ b/examples/compiled/rect_heatmap.vg.json @@ -42,9 +42,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Mean of Horsepower: \" + (format(datum[\"mean_Horsepower\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/rect_heatmap_weather.vg.json b/examples/compiled/rect_heatmap_weather.vg.json index 3005add738..a185f5a3cd 100644 --- a/examples/compiled/rect_heatmap_weather.vg.json +++ b/examples/compiled/rect_heatmap_weather.vg.json @@ -61,9 +61,9 @@ "signal": "\"Day: \" + (timeFormat(datum[\"date_date\"], '%e')) + \"; Month: \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Max of temp_max: \" + (format(datum[\"max_temp_max\"], \"\"))" }, "x": {"scale": "x", "field": "date_date"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "month_date"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/rect_lasagna.vg.json b/examples/compiled/rect_lasagna.vg.json index ed0448069f..b6364132b8 100644 --- a/examples/compiled/rect_lasagna.vg.json +++ b/examples/compiled/rect_lasagna.vg.json @@ -45,9 +45,9 @@ "signal": "\"Time: \" + (timeFormat(datum[\"yearmonthdate_date\"], '%Y')) + \"; symbol: \" + (isValid(datum[\"symbol\"]) ? datum[\"symbol\"] : \"\"+datum[\"symbol\"]) + \"; Price: \" + (format(datum[\"sum_price\"], \"\"))" }, "x": {"scale": "x", "field": "yearmonthdate_date"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "symbol"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/selection_composition_and.vg.json b/examples/compiled/selection_composition_and.vg.json index c67bcf6799..5cf170d729 100644 --- a/examples/compiled/selection_composition_and.vg.json +++ b/examples/compiled/selection_composition_and.vg.json @@ -585,9 +585,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/selection_composition_or.vg.json b/examples/compiled/selection_composition_or.vg.json index 1629968999..5122dc54e3 100644 --- a/examples/compiled/selection_composition_or.vg.json +++ b/examples/compiled/selection_composition_or.vg.json @@ -585,9 +585,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/selection_heatmap.vg.json b/examples/compiled/selection_heatmap.vg.json index 9d107c543d..02149f6e3f 100644 --- a/examples/compiled/selection_heatmap.vg.json +++ b/examples/compiled/selection_heatmap.vg.json @@ -121,9 +121,9 @@ "signal": "\"predicted: \" + (isValid(datum[\"predicted\"]) ? datum[\"predicted\"] : \"\"+datum[\"predicted\"]) + \"; actual: \" + (isValid(datum[\"actual\"]) ? datum[\"actual\"] : \"\"+datum[\"actual\"]) + \"; count: \" + (format(datum[\"count\"], \"\"))" }, "x": {"scale": "x", "field": "predicted"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "actual"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/selection_interval_mark_style.vg.json b/examples/compiled/selection_interval_mark_style.vg.json index 05bfed9cdf..a736606940 100644 --- a/examples/compiled/selection_interval_mark_style.vg.json +++ b/examples/compiled/selection_interval_mark_style.vg.json @@ -578,9 +578,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/selection_layer_bar_month.vg.json b/examples/compiled/selection_layer_bar_month.vg.json index 5e6abd859c..600cd0b017 100644 --- a/examples/compiled/selection_layer_bar_month.vg.json +++ b/examples/compiled/selection_layer_bar_month.vg.json @@ -293,7 +293,7 @@ "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))" }, "x": {"scale": "x", "field": "month_date"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "mean_precipitation"}, "y2": {"scale": "y", "value": 0} } diff --git a/examples/compiled/selection_project_interval.vg.json b/examples/compiled/selection_project_interval.vg.json index 2586350b46..920b039888 100644 --- a/examples/compiled/selection_project_interval.vg.json +++ b/examples/compiled/selection_project_interval.vg.json @@ -308,9 +308,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/selection_project_interval_x.vg.json b/examples/compiled/selection_project_interval_x.vg.json index 22020f4c9d..d7f80f4b6f 100644 --- a/examples/compiled/selection_project_interval_x.vg.json +++ b/examples/compiled/selection_project_interval_x.vg.json @@ -251,9 +251,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/selection_project_interval_x_y.vg.json b/examples/compiled/selection_project_interval_x_y.vg.json index 2586350b46..920b039888 100644 --- a/examples/compiled/selection_project_interval_x_y.vg.json +++ b/examples/compiled/selection_project_interval_x_y.vg.json @@ -308,9 +308,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/selection_project_interval_y.vg.json b/examples/compiled/selection_project_interval_y.vg.json index fd238a8b98..82bf700c3f 100644 --- a/examples/compiled/selection_project_interval_y.vg.json +++ b/examples/compiled/selection_project_interval_y.vg.json @@ -251,9 +251,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/selection_type_interval.vg.json b/examples/compiled/selection_type_interval.vg.json index 2586350b46..920b039888 100644 --- a/examples/compiled/selection_type_interval.vg.json +++ b/examples/compiled/selection_type_interval.vg.json @@ -308,9 +308,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/selection_type_interval_invert.vg.json b/examples/compiled/selection_type_interval_invert.vg.json index 2d268913ce..40947e9b51 100644 --- a/examples/compiled/selection_type_interval_invert.vg.json +++ b/examples/compiled/selection_type_interval_invert.vg.json @@ -307,9 +307,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/selection_type_point.vg.json b/examples/compiled/selection_type_point.vg.json index 4ec3e4ea8d..6dba2e61ad 100644 --- a/examples/compiled/selection_type_point.vg.json +++ b/examples/compiled/selection_type_point.vg.json @@ -97,9 +97,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/selection_type_single_dblclick.vg.json b/examples/compiled/selection_type_single_dblclick.vg.json index 394be3d0a8..ea489ca44a 100644 --- a/examples/compiled/selection_type_single_dblclick.vg.json +++ b/examples/compiled/selection_type_single_dblclick.vg.json @@ -97,9 +97,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/selection_type_single_mouseover.vg.json b/examples/compiled/selection_type_single_mouseover.vg.json index b3084883fe..91347e543e 100644 --- a/examples/compiled/selection_type_single_mouseover.vg.json +++ b/examples/compiled/selection_type_single_mouseover.vg.json @@ -97,9 +97,9 @@ "signal": "\"Cylinders: \" + (isValid(datum[\"Cylinders\"]) ? datum[\"Cylinders\"] : \"\"+datum[\"Cylinders\"]) + \"; Origin: \" + (isValid(datum[\"Origin\"]) ? datum[\"Origin\"] : \"\"+datum[\"Origin\"]) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\"))" }, "x": {"scale": "x", "field": "Cylinders"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "Origin"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/stacked_bar_count.vg.json b/examples/compiled/stacked_bar_count.vg.json index a638526842..7687ac5e77 100644 --- a/examples/compiled/stacked_bar_count.vg.json +++ b/examples/compiled/stacked_bar_count.vg.json @@ -55,7 +55,7 @@ "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; weather: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"])" }, "x": {"scale": "x", "field": "month_date"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "__count_end"}, "y2": {"scale": "y", "field": "__count_start"} } diff --git a/examples/compiled/stacked_bar_count_corner_radius_config.vg.json b/examples/compiled/stacked_bar_count_corner_radius_config.vg.json index 6ea4d89ea0..bcc361cd0e 100644 --- a/examples/compiled/stacked_bar_count_corner_radius_config.vg.json +++ b/examples/compiled/stacked_bar_count_corner_radius_config.vg.json @@ -63,7 +63,7 @@ "encode": { "update": { "x": {"scale": "x", "field": "month_date"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": { "signal": "min(scale('y',datum[\"min___count_start\"]),scale('y',datum[\"max___count_start\"]),scale('y',datum[\"min___count_end\"]),scale('y',datum[\"max___count_end\"]))" }, diff --git a/examples/compiled/stacked_bar_count_corner_radius_mark.vg.json b/examples/compiled/stacked_bar_count_corner_radius_mark.vg.json index 5bc897aaaf..c5cfffe114 100644 --- a/examples/compiled/stacked_bar_count_corner_radius_mark.vg.json +++ b/examples/compiled/stacked_bar_count_corner_radius_mark.vg.json @@ -63,7 +63,7 @@ "encode": { "update": { "x": {"scale": "x", "field": "month_date"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": { "signal": "min(scale('y',datum[\"min___count_start\"]),scale('y',datum[\"max___count_start\"]),scale('y',datum[\"min___count_end\"]),scale('y',datum[\"max___count_end\"]))" }, diff --git a/examples/compiled/stacked_bar_count_corner_radius_mark_x.vg.json b/examples/compiled/stacked_bar_count_corner_radius_mark_x.vg.json index 375b9e4810..5ce246633a 100644 --- a/examples/compiled/stacked_bar_count_corner_radius_mark_x.vg.json +++ b/examples/compiled/stacked_bar_count_corner_radius_mark_x.vg.json @@ -63,7 +63,7 @@ "encode": { "update": { "y": {"scale": "y", "field": "month_date"}, - "height": {"scale": "y", "band": 1}, + "height": {"signal": "max(0.25, bandwidth('y'))"}, "cornerRadiusTopRight": {"value": 8}, "cornerRadiusBottomRight": {"value": 8}, "x": { diff --git a/examples/compiled/stacked_bar_count_corner_radius_stroke.vg.json b/examples/compiled/stacked_bar_count_corner_radius_stroke.vg.json index 9c330413c0..5dc5751083 100644 --- a/examples/compiled/stacked_bar_count_corner_radius_stroke.vg.json +++ b/examples/compiled/stacked_bar_count_corner_radius_stroke.vg.json @@ -63,7 +63,7 @@ "encode": { "update": { "x": {"scale": "x", "field": "month_date"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": { "signal": "min(scale('y',datum[\"min___count_start\"]),scale('y',datum[\"max___count_start\"]),scale('y',datum[\"min___count_end\"]),scale('y',datum[\"max___count_end\"]))" }, diff --git a/examples/compiled/stacked_bar_h.vg.json b/examples/compiled/stacked_bar_h.vg.json index 9e3f423017..2d7351dc7a 100644 --- a/examples/compiled/stacked_bar_h.vg.json +++ b/examples/compiled/stacked_bar_h.vg.json @@ -55,7 +55,7 @@ "x": {"scale": "x", "field": "sum_yield_end"}, "x2": {"scale": "x", "field": "sum_yield_start"}, "y": {"scale": "y", "field": "variety"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/stacked_bar_h_normalized_labeled.vg.json b/examples/compiled/stacked_bar_h_normalized_labeled.vg.json index 2997d11aba..87e5d5c356 100644 --- a/examples/compiled/stacked_bar_h_normalized_labeled.vg.json +++ b/examples/compiled/stacked_bar_h_normalized_labeled.vg.json @@ -77,7 +77,7 @@ "x": {"scale": "x", "field": "sum_people_end"}, "x2": {"scale": "x", "field": "sum_people_start"}, "y": {"scale": "y", "field": "age"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } }, diff --git a/examples/compiled/stacked_bar_h_order.vg.json b/examples/compiled/stacked_bar_h_order.vg.json index c480e6afb3..bf3acb95fb 100644 --- a/examples/compiled/stacked_bar_h_order.vg.json +++ b/examples/compiled/stacked_bar_h_order.vg.json @@ -55,7 +55,7 @@ "x": {"scale": "x", "field": "sum_yield_end"}, "x2": {"scale": "x", "field": "sum_yield_start"}, "y": {"scale": "y", "field": "variety"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/stacked_bar_h_order_custom.vg.json b/examples/compiled/stacked_bar_h_order_custom.vg.json index 19d8890cf9..b1bd41de1e 100644 --- a/examples/compiled/stacked_bar_h_order_custom.vg.json +++ b/examples/compiled/stacked_bar_h_order_custom.vg.json @@ -60,7 +60,7 @@ "x": {"scale": "x", "field": "sum_yield_end"}, "x2": {"scale": "x", "field": "sum_yield_start"}, "y": {"scale": "y", "field": "variety"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/stacked_bar_normalize.vg.json b/examples/compiled/stacked_bar_normalize.vg.json index 4c5da74244..08df66d85e 100644 --- a/examples/compiled/stacked_bar_normalize.vg.json +++ b/examples/compiled/stacked_bar_normalize.vg.json @@ -59,7 +59,7 @@ "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people_end\"]-datum[\"sum_people_start\"], \".0%\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])" }, "x": {"scale": "x", "field": "age"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "sum_people_end"}, "y2": {"scale": "y", "field": "sum_people_start"} } diff --git a/examples/compiled/stacked_bar_population.vg.json b/examples/compiled/stacked_bar_population.vg.json index fb4719486a..89196843e0 100644 --- a/examples/compiled/stacked_bar_population.vg.json +++ b/examples/compiled/stacked_bar_population.vg.json @@ -60,7 +60,7 @@ "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])" }, "x": {"scale": "x", "field": "age"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "sum_people_end"}, "y2": {"scale": "y", "field": "sum_people_start"} } diff --git a/examples/compiled/stacked_bar_population_transform.vg.json b/examples/compiled/stacked_bar_population_transform.vg.json index f320dd7484..1d5c55b211 100644 --- a/examples/compiled/stacked_bar_population_transform.vg.json +++ b/examples/compiled/stacked_bar_population_transform.vg.json @@ -53,7 +53,7 @@ "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"v1\"], \"\")) + \"; v2: \" + (format(datum[\"v2\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])" }, "x": {"scale": "x", "field": "age"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "v1"}, "y2": {"scale": "y", "field": "v2"} } diff --git a/examples/compiled/stacked_bar_sum_opacity.vg.json b/examples/compiled/stacked_bar_sum_opacity.vg.json index 572c5b05c7..6492caecc1 100644 --- a/examples/compiled/stacked_bar_sum_opacity.vg.json +++ b/examples/compiled/stacked_bar_sum_opacity.vg.json @@ -61,7 +61,7 @@ "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; people: \" + (format(datum[\"people\"], \"\"))" }, "x": {"scale": "x", "field": "age"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "sum_people_end"}, "y2": {"scale": "y", "field": "sum_people_start"} } diff --git a/examples/compiled/stacked_bar_unaggregate.vg.json b/examples/compiled/stacked_bar_unaggregate.vg.json index da55f175ff..92509ade9d 100644 --- a/examples/compiled/stacked_bar_unaggregate.vg.json +++ b/examples/compiled/stacked_bar_unaggregate.vg.json @@ -54,7 +54,7 @@ "signal": "\"a: \" + (isValid(datum[\"a\"]) ? datum[\"a\"] : \"\"+datum[\"a\"]) + \"; b: \" + (format(datum[\"b\"], \"\")) + \"; c: \" + (isValid(datum[\"c\"]) ? datum[\"c\"] : \"\"+datum[\"c\"])" }, "x": {"scale": "x", "field": "a"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "b_end"}, "y2": {"scale": "y", "field": "b_start"} } diff --git a/examples/compiled/stacked_bar_v.vg.json b/examples/compiled/stacked_bar_v.vg.json index 27400a5a5c..a0409fbb63 100644 --- a/examples/compiled/stacked_bar_v.vg.json +++ b/examples/compiled/stacked_bar_v.vg.json @@ -53,7 +53,7 @@ "signal": "\"variety: \" + (isValid(datum[\"variety\"]) ? datum[\"variety\"] : \"\"+datum[\"variety\"]) + \"; Sum of yield: \" + (format(datum[\"sum_yield\"], \"\")) + \"; site: \" + (isValid(datum[\"site\"]) ? datum[\"site\"] : \"\"+datum[\"site\"])" }, "x": {"scale": "x", "field": "variety"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "sum_yield_end"}, "y2": {"scale": "y", "field": "sum_yield_start"} } diff --git a/examples/compiled/stacked_bar_weather.vg.json b/examples/compiled/stacked_bar_weather.vg.json index 3bd6a710e4..5eb9d436b0 100644 --- a/examples/compiled/stacked_bar_weather.vg.json +++ b/examples/compiled/stacked_bar_weather.vg.json @@ -55,7 +55,7 @@ "signal": "\"Month of the year: \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Count of Records: \" + (format(datum[\"__count\"], \"\")) + \"; Weather type: \" + (isValid(datum[\"weather\"]) ? datum[\"weather\"] : \"\"+datum[\"weather\"])" }, "x": {"scale": "x", "field": "month_date"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "__count_end"}, "y2": {"scale": "y", "field": "__count_start"} } diff --git a/examples/compiled/test_aggregate_nested.vg.json b/examples/compiled/test_aggregate_nested.vg.json index d83d7c2d26..65bda28edf 100644 --- a/examples/compiled/test_aggregate_nested.vg.json +++ b/examples/compiled/test_aggregate_nested.vg.json @@ -92,7 +92,7 @@ "x": {"scale": "x", "field": "sum_properties\\.yield_end"}, "x2": {"scale": "x", "field": "sum_properties\\.yield_start"}, "y": {"scale": "y", "field": "properties\\.variety"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/trellis_bar.vg.json b/examples/compiled/trellis_bar.vg.json index f6091d3260..a8b3fef14a 100644 --- a/examples/compiled/trellis_bar.vg.json +++ b/examples/compiled/trellis_bar.vg.json @@ -143,7 +143,7 @@ "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])" }, "x": {"scale": "x", "field": "age"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "sum_people_end"}, "y2": {"scale": "y", "field": "sum_people_start"} } diff --git a/examples/compiled/trellis_bar_no_header.vg.json b/examples/compiled/trellis_bar_no_header.vg.json index 31df7c83d2..0e859595af 100644 --- a/examples/compiled/trellis_bar_no_header.vg.json +++ b/examples/compiled/trellis_bar_no_header.vg.json @@ -117,7 +117,7 @@ "signal": "\"age: \" + (isValid(datum[\"age\"]) ? datum[\"age\"] : \"\"+datum[\"age\"]) + \"; population: \" + (format(datum[\"sum_people\"], \"\")) + \"; gender: \" + (isValid(datum[\"gender\"]) ? datum[\"gender\"] : \"\"+datum[\"gender\"])" }, "x": {"scale": "x", "field": "age"}, - "width": {"scale": "x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('x'))"}, "y": {"scale": "y", "field": "sum_people_end"}, "y2": {"scale": "y", "field": "sum_people_start"} } diff --git a/examples/compiled/trellis_stacked_bar.vg.json b/examples/compiled/trellis_stacked_bar.vg.json index d73024a5ab..0291364369 100644 --- a/examples/compiled/trellis_stacked_bar.vg.json +++ b/examples/compiled/trellis_stacked_bar.vg.json @@ -138,7 +138,7 @@ "x": {"scale": "x", "field": "sum_yield_end"}, "x2": {"scale": "x", "field": "sum_yield_start"}, "y": {"scale": "y", "field": "variety"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/vconcat_weather.vg.json b/examples/compiled/vconcat_weather.vg.json index 1255516cc8..b815a04198 100644 --- a/examples/compiled/vconcat_weather.vg.json +++ b/examples/compiled/vconcat_weather.vg.json @@ -117,7 +117,7 @@ "signal": "\"date (month): \" + (timeFormat(datum[\"month_date\"], timeUnitSpecifier([\"month\"], {\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"}))) + \"; Mean of precipitation: \" + (format(datum[\"mean_precipitation\"], \"\"))" }, "x": {"scale": "concat_0_x", "field": "month_date"}, - "width": {"scale": "concat_0_x", "band": 1}, + "width": {"signal": "max(0.25, bandwidth('concat_0_x'))"}, "y": {"scale": "concat_0_y", "field": "mean_precipitation"}, "y2": {"scale": "concat_0_y", "value": 0} } diff --git a/examples/compiled/window_top_k.vg.json b/examples/compiled/window_top_k.vg.json index 37d343a85f..23aec6d38c 100644 --- a/examples/compiled/window_top_k.vg.json +++ b/examples/compiled/window_top_k.vg.json @@ -90,7 +90,7 @@ "x": {"scale": "x", "field": "score_end"}, "x2": {"scale": "x", "field": "score_start"}, "y": {"scale": "y", "field": "student"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/compiled/window_top_k_others.vg.json b/examples/compiled/window_top_k_others.vg.json index 96c858f7c7..106ca55477 100644 --- a/examples/compiled/window_top_k_others.vg.json +++ b/examples/compiled/window_top_k_others.vg.json @@ -78,7 +78,7 @@ "x": {"scale": "x", "field": "mean_aggregate_gross"}, "x2": {"scale": "x", "value": 0}, "y": {"scale": "y", "field": "ranked_director"}, - "height": {"scale": "y", "band": 1} + "height": {"signal": "max(0.25, bandwidth('y'))"} } } } diff --git a/examples/specs/bar_grouped_thin.vl.json b/examples/specs/bar_grouped_thin.vl.json new file mode 100644 index 0000000000..265228c52e --- /dev/null +++ b/examples/specs/bar_grouped_thin.vl.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "data": {"url": "data/movies.json"}, + "width": 500, + "mark": "bar", + "encoding": { + "x": {"field": "Director", "type": "nominal"}, + "xOffset": {"field": "Title", "type": "nominal"}, + "y": { + "aggregate": "mean", + "field": "Rotten Tomatoes Rating", + "type": "quantitative" + }, + "color": { + "condition": { + "test": "datum['IMDB Rating'] === null || datum['Rotten Tomatoes Rating'] === null", + "value": "#aaa" + } + } + }, + "config": {"mark": {"invalid": null}} +} diff --git a/examples/specs/bar_heatlane.vl.json b/examples/specs/bar_heatlane.vl.json new file mode 100644 index 0000000000..6ed9fb5a0f --- /dev/null +++ b/examples/specs/bar_heatlane.vl.json @@ -0,0 +1,68 @@ +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "description": "Heat lane chart based on https://www.smashingmagazine.com/2022/07/accessibility-first-approach-chart-visual-design/", + "data": {"url": "data/cars.json"}, + "height": 150, + "width": 400, + "title": "Heat Lane of Horsepower", + "transform": [ + { + "bin": true, + "field": "Horsepower", + "as": ["bin_Horsepower_start", "bin_Horsepower_end"] + }, + { + "aggregate": [{"op": "count", "as": "count"}], + "groupby": ["bin_Horsepower_start", "bin_Horsepower_end"] + }, + {"bin": true, "field": "count", "as": ["bin_count_start", "bin_count_end"]}, + {"calculate": "-datum.bin_count_end/2", "as": "y2"}, + {"calculate": "datum.bin_count_end/2", "as": "y"}, + { + "joinaggregate": [ + {"field": "bin_count_end", "op": "max", "as": "max_bin_count_end"} + ] + } + ], + "encoding": { + "x": { + "field": "bin_Horsepower_start", + "type": "quantitative", + "title": "Horsepower", + "axis": {"grid": false} + }, + "x2": {"field": "bin_Horsepower_end"}, + "y": {"field": "y", "axis": null}, + "y2": {"field": "y2"} + }, + "layer": [ + { + "mark": { + "type": "bar", + "xOffset": 2, + "x2Offset": -2, + "cornerRadius": 3 + }, + "encoding": { + "color": { + "field": "max_bin_count_end", + "type": "ordinal", + "title": "count", + "scale": {"scheme": "lighttealblue"} + } + } + }, + { + "mark": { + "type": "bar", + "xOffset": 2, + "x2Offset": -2, + "yOffset": -3, + "y2Offset": 3 + }, + "encoding": { + "color": {"field": "bin_count_end", "type": "ordinal", "title": "count"} + } + } + ] +} diff --git a/examples/specs/bar_month_temporal.vl.json b/examples/specs/bar_month_temporal.vl.json index 622814fa34..7b0aae110f 100644 --- a/examples/specs/bar_month_temporal.vl.json +++ b/examples/specs/bar_month_temporal.vl.json @@ -3,7 +3,7 @@ "data": {"url": "data/seattle-weather.csv"}, "mark": "bar", "encoding": { - "x": {"timeUnit": "month", "field": "date"}, + "x": {"timeUnit": "month", "field": "date", "type": "temporal"}, "y": {"aggregate": "mean", "field": "precipitation"} } } diff --git a/examples/specs/normalized/bar_heatlane_normalized.vl.json b/examples/specs/normalized/bar_heatlane_normalized.vl.json new file mode 100644 index 0000000000..0aa01abbdf --- /dev/null +++ b/examples/specs/normalized/bar_heatlane_normalized.vl.json @@ -0,0 +1,70 @@ +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "description": "Heat lane chart based on https://www.smashingmagazine.com/2022/07/accessibility-first-approach-chart-visual-design/", + "data": {"url": "data/cars.json"}, + "height": 150, + "width": 400, + "title": "Heat Lane of Horsepower", + "layer": [ + { + "mark": {"type": "bar", "xOffset": 2, "x2Offset": -2, "cornerRadius": 3}, + "encoding": { + "x": { + "field": "bin_Horsepower_start", + "type": "quantitative", + "title": "Horsepower", + "axis": {"grid": false} + }, + "x2": {"field": "bin_Horsepower_end"}, + "y": {"field": "y", "axis": null}, + "y2": {"field": "y2"}, + "color": { + "field": "max_bin_count_end", + "type": "ordinal", + "title": "count", + "scale": {"scheme": "lighttealblue"} + } + } + }, + { + "mark": { + "type": "bar", + "xOffset": 2, + "x2Offset": -2, + "yOffset": -3, + "y2Offset": 3 + }, + "encoding": { + "x": { + "field": "bin_Horsepower_start", + "type": "quantitative", + "title": "Horsepower", + "axis": {"grid": false} + }, + "x2": {"field": "bin_Horsepower_end"}, + "y": {"field": "y", "axis": null}, + "y2": {"field": "y2"}, + "color": {"field": "bin_count_end", "type": "ordinal", "title": "count"} + } + } + ], + "transform": [ + { + "bin": true, + "field": "Horsepower", + "as": ["bin_Horsepower_start", "bin_Horsepower_end"] + }, + { + "aggregate": [{"op": "count", "as": "count"}], + "groupby": ["bin_Horsepower_start", "bin_Horsepower_end"] + }, + {"bin": true, "field": "count", "as": ["bin_count_start", "bin_count_end"]}, + {"calculate": "-datum.bin_count_end/2", "as": "y2"}, + {"calculate": "datum.bin_count_end/2", "as": "y"}, + { + "joinaggregate": [ + {"field": "bin_count_end", "op": "max", "as": "max_bin_count_end"} + ] + } + ] +} \ No newline at end of file diff --git a/package.json b/package.json index ee5dc1a8dd..4327d485de 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,8 @@ "watch:site": "yarn build:site -w", "watch:test": "yarn jest --watch test/", "watch:test:runtime": "NODE_OPTIONS=--experimental-vm-modules TZ=America/Los_Angeles npx jest --watch test-runtime/ --config test-runtime/jest-config.json", - "release": "yarn run prebuild && yarn build && auto shipit" + "release": "yarn run prebuild && yarn build && yarn shipit", + "shipit": "auto shipit" }, "repository": { "type": "git", @@ -106,7 +107,7 @@ "cheerio": "^1.0.0-rc.10", "conventional-changelog-cli": "^2.2.2", "d3": "^7.4.4", - "del-cli": "^4.0.1", + "del-cli": "^5.0.0", "eslint": "^8.11.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-jest": "^26.1.1", diff --git a/scripts/check-and-commit-toc.sh b/scripts/check-and-commit-toc.sh index 17a4fe988a..f853cb8a69 100755 --- a/scripts/check-and-commit-toc.sh +++ b/scripts/check-and-commit-toc.sh @@ -3,9 +3,6 @@ set -euo pipefail GIT_BRANCH="${GITHUB_REF/refs\/heads\//}" -git checkout $GIT_BRANCH - -echo "On branch $GIT_BRANCH." # Only push on human pull request branches. Exclude release, prerelease, and bot branches. if [ "$GIT_BRANCH" != "stable" ] && [ "$GIT_BRANCH" != "next" ] && [[ "$GIT_BRANCH" != dependabot/* ]]; then diff --git a/scripts/check-and-commit.sh b/scripts/check-and-commit.sh index 2212938cd4..8f2e33b213 100755 --- a/scripts/check-and-commit.sh +++ b/scripts/check-and-commit.sh @@ -3,9 +3,6 @@ set -euo pipefail GIT_BRANCH="${GITHUB_REF/refs\/heads\//}" -git checkout $GIT_BRANCH - -echo "On branch $GIT_BRANCH." # Only push on human pull request branches. Exclude release, prerelease, and bot branches. if [ "$GIT_BRANCH" != "stable" ] && [ "$GIT_BRANCH" != "next" ] && [[ "$GIT_BRANCH" != dependabot/* ]]; then diff --git a/site/_data/examples.json b/site/_data/examples.json index 543c8f69df..b51498fe1e 100644 --- a/site/_data/examples.json +++ b/site/_data/examples.json @@ -95,6 +95,10 @@ { "name": "bar_axis_space_saving", "title": "Bar Chart with a Spacing-Saving Y-Axis" + }, + { + "name": "bar_heatlane", + "title": "Heat Lane Chart" } ], "Histograms, Density Plots, and Dot Plots": [ diff --git a/site/docs/config.md b/site/docs/config.md index c1449f22c4..809f275d98 100644 --- a/site/docs/config.md +++ b/site/docs/config.md @@ -50,9 +50,9 @@ A Vega-Lite `config` object can have the following top-level properties: ## Format Configuration -These two config properties define the default number and time formats for text marks as well as axes, headers, and legends: +These config properties define the default number and time formats for text marks as well as axes, headers, and legends: -{% include table.html props="numberFormat,numberFormatType,timeFormat,customFormatTypes" source="Config" %} +{% include table.html props="numberFormat,numberFormatType,normalizedNumberFormat,normalizedNumberFormatType,timeFormat,timeFormatType,customFormatTypes" source="Config" %} {:#custom-format-type} diff --git a/site/ecosystem.md b/site/ecosystem.md index ef9e3b43ca..a9ad55ac29 100644 --- a/site/ecosystem.md +++ b/site/ecosystem.md @@ -101,6 +101,7 @@ We mark featured plugins and tools with a , - rawTimeFormat: string, // should be provided only for actual text and headers, not axis/legend labels - isUTCScale: boolean -): string { +export function timeFormatExpression({ + field, + timeUnit, + format, + formatType, + rawTimeFormat, + isUTCScale +}: { + field: string; + timeUnit?: TimeUnit; + format?: string | Dict; + formatType?: string; + rawTimeFormat?: string; // should be provided only for actual text and headers, not axis/legend labels + isUTCScale?: boolean; +}): string { if (!timeUnit || format) { // If there is no time unit, or if user explicitly specifies format for axis/legend/text. + if (!timeUnit && formatType) { + return `${formatType}(${field}, '${format}')`; + } format = isString(format) ? format : rawTimeFormat; // only use provided timeFormat if there is no timeUnit. return `${isUTCScale ? 'utc' : 'time'}Format(${field}, '${format}')`; } else { diff --git a/src/compile/legend/encode.ts b/src/compile/legend/encode.ts index 91a60ac9db..334e0b0381 100644 --- a/src/compile/legend/encode.ts +++ b/src/compile/legend/encode.ts @@ -160,20 +160,29 @@ export function labels(specifiedlabelsSpec: any, {fieldOrDatumDef, model, channe formatType, config }); - } else if ( - fieldOrDatumDef.type === 'quantitative' && - format === undefined && - formatType === undefined && - config.customFormatTypes && - config.numberFormatType - ) { - text = formatCustomType({ - fieldOrDatumDef, - field: 'datum.value', - format: config.numberFormat, - formatType: config.numberFormatType, - config - }); + } else if (format === undefined && formatType === undefined && config.customFormatTypes) { + if (fieldOrDatumDef.type === 'quantitative' && config.numberFormatType) { + text = formatCustomType({ + fieldOrDatumDef, + field: 'datum.value', + format: config.numberFormat, + formatType: config.numberFormatType, + config + }); + } else if ( + fieldOrDatumDef.type === 'temporal' && + config.timeFormatType && + isFieldDef(fieldOrDatumDef) && + fieldOrDatumDef.timeUnit === undefined + ) { + text = formatCustomType({ + fieldOrDatumDef, + field: 'datum.value', + format: config.timeFormat, + formatType: config.timeFormatType, + config + }); + } } const labelsSpec = { diff --git a/src/compile/mark/encode/position-rect.ts b/src/compile/mark/encode/position-rect.ts index 891cdbce0c..1091008e45 100644 --- a/src/compile/mark/encode/position-rect.ts +++ b/src/compile/mark/encode/position-rect.ts @@ -77,7 +77,12 @@ function defaultSizeRef( if (scale) { const scaleType = scale.get('type'); if (scaleType === 'band') { - return {scale: scaleName, band: bandSize.band}; + let bandWidth = `bandwidth('${scaleName}')`; + if (bandSize.band !== 1) { + bandWidth = `${bandSize.band} * ${bandWidth}`; + } + // TODO(#8351): make 0.25 here configurable + return {signal: `max(0.25, ${bandWidth})`}; } else if (bandSize.band !== 1) { log.warn(log.message.cannotUseRelativeBandSizeWithNonBandScale(scaleType)); bandSize = undefined; @@ -139,6 +144,7 @@ function positionAndSize( log.warn(log.message.cannotApplySizeToNonOrientedMark(markDef.type)); } } + const hasSizeFromMarkOrEncoding = !!sizeMixins; // Otherwise, apply default value const bandSize = getBandSize({channel, fieldDef, markDef, config, scaleType: scale?.get('type'), useVlSizeChannel}); @@ -156,7 +162,8 @@ function positionAndSize( If band is 0.6, the the x/y position in such case should be `(1 - band) / 2` = 0.2 */ - const defaultBandAlign = scale?.get('type') !== 'band' || !('band' in sizeMixins[vgSizeChannel]) ? 'middle' : 'top'; + const defaultBandAlign = + scale?.get('type') === 'band' && isRelativeBandSize(bandSize) && !hasSizeFromMarkOrEncoding ? 'top' : 'middle'; const vgChannel = vgAlignedPositionChannel(channel, markDef, config, defaultBandAlign); const center = vgChannel === 'xc' || vgChannel === 'yc'; diff --git a/src/config.ts b/src/config.ts index 4c20c662f1..4c1a905e3c 100644 --- a/src/config.ts +++ b/src/config.ts @@ -189,6 +189,15 @@ export interface VLOnlyConfig { */ timeFormat?: string; + /** + * [Custom format type](https://vega.github.io/vega-lite/docs/config.html#custom-format-type) + * for `config.timeFormat`. + * + * __Default value:__ `undefined` -- This is equilvalent to call D3-time-format, which is exposed as [`timeFormat` in Vega-Expression](https://vega.github.io/vega/docs/expressions/#timeFormat). + * __Note:__ You must also set `customFormatTypes` to `true` and there must *not* be a `timeUnit` defined to use this feature. + */ + timeFormatType?: string; + /** * Allow the `formatType` property for text marks and guides to accept a custom formatter function [registered as a Vega expression](https://vega.github.io/vega-lite/usage/compile.html#format-type). */ diff --git a/test/compile/axis/encode.test.ts b/test/compile/axis/encode.test.ts index 37120dccbc..8b64e8b900 100644 --- a/test/compile/axis/encode.test.ts +++ b/test/compile/axis/encode.test.ts @@ -77,5 +77,29 @@ describe('compile/axis/encode', () => { const labels = encode.labels(model, 'x', {}); expect(labels.text.signal).toBe('customNumberFormat(datum.value, "abc")'); }); + + it('applies custom timeFormatType from config', () => { + const model = parseUnitModelWithScale({ + mark: 'point', + encoding: { + x: {field: 'a', type: 'temporal'} + }, + config: {customFormatTypes: true, timeFormat: 'abc', timeFormatType: 'customTimeFormat'} + }); + const labels = encode.labels(model, 'x', {}); + expect(labels.text.signal).toBe('customTimeFormat(datum.value, "abc")'); + }); + + it('prefers timeUnit over timeFormatType from config', () => { + const model = parseUnitModelWithScale({ + mark: 'point', + encoding: { + x: {field: 'a', type: 'temporal', timeUnit: 'date'} + }, + config: {customFormatTypes: true, timeFormat: 'abc', timeFormatType: 'customTimeFormat'} + }); + const labels = encode.labels(model, 'x', {}); + expect(labels).toEqual({}); + }); }); }); diff --git a/test/compile/format.test.ts b/test/compile/format.test.ts index 95deafbd96..ada7be09f4 100644 --- a/test/compile/format.test.ts +++ b/test/compile/format.test.ts @@ -4,7 +4,8 @@ import { guideFormat, guideFormatType, numberFormat, - timeFormatExpression + timeFormatExpression, + timeFormat } from '../../src/compile/format'; import {defaultConfig} from '../../src/config'; import {NOMINAL, ORDINAL, QUANTITATIVE, TEMPORAL} from '../../src/type'; @@ -13,13 +14,11 @@ describe('Format', () => { describe('timeFormatExpression()', () => { it('should get the right time expression for month', () => { const fieldDef = {timeUnit: 'month', field: 'a', type: TEMPORAL} as const; - const expression = timeFormatExpression( - vgField(fieldDef, {expr: 'datum'}), - 'month', - undefined, - defaultConfig.timeFormat, - false - ); + const expression = timeFormatExpression({ + field: vgField(fieldDef, {expr: 'datum'}), + timeUnit: 'month', + rawTimeFormat: defaultConfig.timeFormat + }); expect(expression).toBe( 'timeFormat(datum["month_a"], timeUnitSpecifier(["month"], {"year-month":"%b %Y ","year-month-date":"%b %d, %Y "}))' ); @@ -27,38 +26,33 @@ describe('Format', () => { it('should get the right time expression for yearmonth with custom format', () => { const fieldDef = {timeUnit: 'yearmonth', field: 'a', type: TEMPORAL} as const; - const expression = timeFormatExpression( - vgField(fieldDef, {expr: 'datum'}), - 'month', - '%Y', - defaultConfig.timeFormat, - false - ); + const expression = timeFormatExpression({ + field: vgField(fieldDef, {expr: 'datum'}), + timeUnit: 'month', + format: '%Y', + rawTimeFormat: defaultConfig.timeFormat + }); expect(expression).toBe(`timeFormat(datum["yearmonth_a"], '%Y')`); }); it('should get the right time expression for quarter', () => { const fieldDef = {timeUnit: 'quarter', field: 'a', type: TEMPORAL} as const; - const expression = timeFormatExpression( - vgField(fieldDef, {expr: 'datum'}), - 'quarter', - undefined, - defaultConfig.timeFormat, - false - ); + const expression = timeFormatExpression({ + field: vgField(fieldDef, {expr: 'datum'}), + timeUnit: 'quarter', + rawTimeFormat: defaultConfig.timeFormat + }); expect(expression).toBe( 'timeFormat(datum["quarter_a"], timeUnitSpecifier(["quarter"], {"year-month":"%b %Y ","year-month-date":"%b %d, %Y "}))' ); }); it('should get the right time expression for yearquarter', () => { - const expression = timeFormatExpression( - 'datum["data"]', - 'yearquarter', - undefined, - defaultConfig.timeFormat, - false - ); + const expression = timeFormatExpression({ + field: 'datum["data"]', + timeUnit: 'yearquarter', + rawTimeFormat: defaultConfig.timeFormat + }); expect(expression).toBe( 'timeFormat(datum["data"], timeUnitSpecifier(["year","quarter"], {"year-month":"%b %Y ","year-month-date":"%b %d, %Y "}))' ); @@ -66,15 +60,60 @@ describe('Format', () => { it('should get the right time expression for yearmonth with custom format and utc scale type', () => { const fieldDef = {timeUnit: 'yearmonth', field: 'a', type: TEMPORAL} as const; - const expression = timeFormatExpression( - vgField(fieldDef, {expr: 'datum'}), - 'month', - '%Y', - defaultConfig.timeFormat, - true - ); + const expression = timeFormatExpression({ + field: vgField(fieldDef, {expr: 'datum'}), + timeUnit: 'month', + format: '%Y', + rawTimeFormat: defaultConfig.timeFormat, + isUTCScale: true + }); expect(expression).toBe(`utcFormat(datum["yearmonth_a"], '%Y')`); }); + + it('should get the right time expression for with a custom timeFormatType', () => { + const fieldDef = {field: 'a', type: TEMPORAL} as const; + const expression = timeFormatExpression({ + field: vgField(fieldDef, {expr: 'datum'}), + format: '%Y', + formatType: 'customFormat' + }); + expect(expression).toBe(`customFormat(datum["a"], '%Y')`); + }); + + it('should prefer timeUnit over timeFormatType', () => { + const fieldDef = {field: 'a', type: TEMPORAL, timeUnit: 'date'} as const; + const expression = timeFormatExpression({ + field: vgField(fieldDef, {expr: 'datum'}), + format: '%Y', + timeUnit: 'date', + formatType: 'customFormat' + }); + expect(expression).toBe(`timeFormat(datum["date_a"], '%Y')`); + }); + }); + + describe('timeFormat()', () => { + it('returns the specifiedFormat if it exists', () => { + const formatted = timeFormat({specifiedFormat: 'abc', config: {}}); + expect(formatted).toBe('abc'); + }); + + it('returns the the formatted timeUnitExpression', () => { + const formatted = timeFormat({timeUnit: 'date', config: {}}); + expect(formatted).toEqual({ + signal: 'timeUnitSpecifier(["date"], {"year-month":"%b %Y ","year-month-date":"%b %d, %Y "})' + }); + }); + + it('omits the timeFormat when omitTimeFormatConfig and no specifiedFormat', () => { + const formatted = timeFormat({config: {timeFormat: '%y'}, omitTimeFormatConfig: true}); + expect(formatted).toBeUndefined(); + }); + + it('returns the timeFormat when !omitTimeFormatConfig and no specifiedFormat', () => { + const formatted = timeFormat({config: {timeFormat: '%y'}, omitTimeFormatConfig: false}); + expect(formatted).toBe('%y'); + }); }); describe('numberFormat()', () => { @@ -189,6 +228,20 @@ describe('Format', () => { }); }); + it('should use a custom formatter datumDef if config.timeFormatType is present', () => { + expect( + formatSignalRef({ + fieldOrDatumDef: {field: 'date', type: 'temporal'}, + format: undefined, + formatType: undefined, + expr: 'parent', + config: {timeFormat: 'abc', timeFormatType: 'customFormatter', customFormatTypes: true} + }) + ).toEqual({ + signal: 'customFormatter(parent["date"], "abc")' + }); + }); + it('should use a custom formatter datumDef if config.normalizedNumberFormatType is present and stack is normalized', () => { expect( formatSignalRef({ @@ -235,6 +288,7 @@ describe('Format', () => { const format = guideFormat({datum: 200, type: 'quantitative'}, 'quantitative', 'abc', 'custom', {}, false); expect(format).toBeUndefined(); }); + it('returns undefined for custom formatType in the config', () => { const format = guideFormat( {datum: 200, type: 'quantitative'}, @@ -259,6 +313,32 @@ describe('Format', () => { expect(format).toBeUndefined(); }); + it('returns undefined for a field if custom timeFormatType is in the config', () => { + const format = guideFormat( + {datum: 200, type: 'temporal'}, + 'temporal', + undefined, + undefined, + {timeFormat: 'abc', timeFormatType: 'customFormatter', customFormatTypes: true}, + false + ); + expect(format).toBeUndefined(); + }); + + it('Prefers timeUnit to timeFormatType', () => { + const format = guideFormat( + {field: 'x', type: 'temporal', timeUnit: 'hours'}, + 'temporal', + undefined, + undefined, + {timeFormat: 'abc', timeFormatType: 'customFormatter', customFormatTypes: true}, + false + ); + expect(format).toEqual({ + signal: 'timeUnitSpecifier(["hours"], {"year-month":"%b %Y ","year-month-date":"%b %d, %Y "})' + }); + }); + it('returns format as normalizedNumberFormatType it is not in the config', () => { const format = guideFormat( {datum: 200, type: 'quantitative', stack: 'normalize'} as PositionDatumDef, diff --git a/test/compile/legend/encode.test.ts b/test/compile/legend/encode.test.ts index 074ca6d0bf..d36bbaae7f 100644 --- a/test/compile/legend/encode.test.ts +++ b/test/compile/legend/encode.test.ts @@ -185,4 +185,43 @@ describe('compile/legend', () => { ); expect(label.text).toEqual({signal: 'customDateFormat(datum.value, "abc")'}); }); + + it('returns correct expression for custom format Type from config.timeFormatType', () => { + const fieldDef: Encoding['color'] = { + field: 'a', + type: 'temporal' + }; + + const model = parseUnitModelWithScale({ + mark: 'point', + encoding: {color: fieldDef}, + config: {customFormatTypes: true, timeFormat: 'abc', timeFormatType: 'customDateFormat'} + }); + + const label = encode.labels( + {}, + {fieldOrDatumDef: fieldDef, model, channel: COLOR, legendCmpt: symbolLegend, legendType: 'symbol'} + ); + expect(label.text).toEqual({signal: 'customDateFormat(datum.value, "abc")'}); + }); + + it('prefers timeUnit over config.timeFormatType', () => { + const fieldDef: Encoding['color'] = { + field: 'a', + type: 'temporal', + timeUnit: 'date' + }; + + const model = parseUnitModelWithScale({ + mark: 'point', + encoding: {color: fieldDef}, + config: {customFormatTypes: true, timeFormat: 'abc', timeFormatType: 'customDateFormat'} + }); + + const label = encode.labels( + {}, + {fieldOrDatumDef: fieldDef, model, channel: COLOR, legendCmpt: symbolLegend, legendType: 'symbol'} + ); + expect(label).toBeUndefined(); + }); }); diff --git a/test/compile/mark/bar.test.ts b/test/compile/mark/bar.test.ts index 25856d993c..7c7d354843 100644 --- a/test/compile/mark/bar.test.ts +++ b/test/compile/mark/bar.test.ts @@ -18,7 +18,7 @@ describe('Mark: Bar', () => { it('should draw bar, with y from zero to field value and with band value for x/width', () => { expect(props.x).toEqual({scale: 'x', field: 'Origin'}); - expect(props.width).toEqual({scale: 'x', band: 1}); + expect(props.width).toEqual({signal: `max(0.25, bandwidth('x'))`}); expect(props.y).toEqual({scale: 'y', field: 'mean_Acceleration'}); expect(props.y2).toEqual({scale: 'y', value: 0}); expect(props.height).toBeUndefined(); @@ -37,7 +37,7 @@ describe('Mark: Bar', () => { }); const props = bar.encodeEntry(model); expect(props.x).toEqual({scale: 'x', field: 'Origin', offset: {scale: 'xOffset', field: 'SubOrigin'}}); - expect(props.width).toEqual({scale: 'xOffset', band: 1}); + expect(props.width).toEqual({signal: `max(0.25, bandwidth('xOffset'))`}); expect(props.y).toEqual({scale: 'y', field: 'mean_Acceleration'}); expect(props.y2).toEqual({scale: 'y', value: 0}); expect(props.height).toBeUndefined(); @@ -75,7 +75,7 @@ describe('Mark: Bar', () => { const props = bar.encodeEntry(model); expect(props.x).toEqual({scale: 'x', field: 'Origin'}); - expect(props.width).toEqual({scale: 'x', band: 1}); + expect(props.width).toEqual({signal: `max(0.25, bandwidth('x'))`}); expect(props.y).toEqual({scale: 'y', field: 'mean_Acceleration'}); expect(props.y2).toEqual({scale: 'y', value: 0}); expect(props.height).toBeUndefined(); @@ -154,7 +154,7 @@ describe('Mark: Bar', () => { it('should draw bar from zero to field value and with band value for x/width', () => { expect(props.y).toEqual({scale: 'y', field: 'Origin'}); - expect(props.height).toEqual({scale: 'y', band: 1}); + expect(props.height).toEqual({signal: `max(0.25, bandwidth('y'))`}); expect(props.x).toEqual({scale: 'x', field: 'mean_Acceleration'}); expect(props.x2).toEqual({scale: 'x', value: 0}); expect(props.width).toBeUndefined(); @@ -174,7 +174,7 @@ describe('Mark: Bar', () => { it('should draw bar from zero to field value and with band value for x/width', () => { expect(props.y).toEqual({scale: 'y', field: 'Origin', band: 0.2}); - expect(props.height).toEqual({scale: 'y', band: 0.6}); + expect(props.height).toEqual({signal: `max(0.25, 0.6 * bandwidth('y'))`}); expect(props.x).toEqual({scale: 'x', field: 'mean_Acceleration'}); expect(props.x2).toEqual({scale: 'x', value: 0}); expect(props.width).toBeUndefined(); @@ -464,7 +464,7 @@ describe('Mark: Bar', () => { it('should draw bar with y', () => { expect(props.y).toEqual({scale: 'y', field: 'bin_maxbins_10_Horsepower_range'}); - expect(props.height).toEqual({scale: 'y', band: 1}); + expect(props.height).toEqual({signal: `max(0.25, bandwidth('y'))`}); }); }); @@ -481,7 +481,7 @@ describe('Mark: Bar', () => { it('should draw bar with y', () => { expect(props.x).toEqual({scale: 'x', field: 'bin_maxbins_10_Horsepower_range'}); - expect(props.width).toEqual({scale: 'x', band: 1}); + expect(props.width).toEqual({signal: `max(0.25, bandwidth('x'))`}); }); }); @@ -620,10 +620,7 @@ describe('Mark: Bar', () => { scale: 'x', field: 'Origin' }); - expect(props.width).toEqual({ - scale: 'x', - band: 1 - }); + expect(props.width).toEqual({signal: `max(0.25, bandwidth('x'))`}); }); }); @@ -645,10 +642,7 @@ describe('Mark: Bar', () => { scale: 'y', field: 'Origin' }); - expect(props.height).toEqual({ - scale: 'y', - band: 1 - }); + expect(props.height).toEqual({signal: `max(0.25, bandwidth('y'))`}); }); }); @@ -918,9 +912,9 @@ describe('Mark: Bar', () => { const props = bar.encodeEntry(model); expect(props.x).toEqual({scale: 'x', field: 'Origin'}); - expect(props.width).toEqual({scale: 'x', band: 1}); + expect(props.width).toEqual({signal: `max(0.25, bandwidth('x'))`}); expect(props.y).toEqual({scale: 'y', field: 'Cylinders'}); - expect(props.height).toEqual({scale: 'y', band: 1}); + expect(props.height).toEqual({signal: `max(0.25, bandwidth('y'))`}); }); }); diff --git a/test/compile/mark/rect.test.ts b/test/compile/mark/rect.test.ts index 8f9844d317..da374aec61 100644 --- a/test/compile/mark/rect.test.ts +++ b/test/compile/mark/rect.test.ts @@ -110,7 +110,7 @@ describe('Mark: Rect', () => { it('should draw bar, with y from zero to field value and x band', () => { expect(props.x).toEqual({scale: 'x', field: 'Origin'}); - expect(props.width).toEqual({scale: 'x', band: 1}); + expect(props.width).toEqual({signal: `max(0.25, bandwidth('x'))`}); expect(props.y).toEqual({scale: 'y', field: 'mean_Acceleration'}); expect(props.y2).toEqual({scale: 'y', value: 0}); expect(props.height).toBeUndefined(); @@ -170,7 +170,7 @@ describe('Mark: Rect', () => { it('should draw bar from zero to field value and y band', () => { expect(props.y).toEqual({scale: 'y', field: 'Origin'}); - expect(props.height).toEqual({scale: 'y', band: 1}); + expect(props.height).toEqual({signal: `max(0.25, bandwidth('y'))`}); expect(props.x).toEqual({scale: 'x', field: 'mean_Acceleration'}); expect(props.x2).toEqual({scale: 'x', value: 0}); expect(props.width).toBeUndefined(); @@ -192,7 +192,7 @@ describe('Mark: Rect', () => { }); const props = rect.encodeEntry(model); expect(props.y).toEqual({scale: 'y', field: 'Origin'}); - expect(props.height).toEqual({scale: 'y', band: 1}); + expect(props.height).toEqual({signal: `max(0.25, bandwidth('y'))`}); expect(props.x).toEqual({scale: 'x', field: 'mean_Acceleration'}); expect(props.x2).toEqual({scale: 'x', value: 0}); expect(props.width).toBeUndefined(); @@ -275,9 +275,9 @@ describe('Mark: Rect', () => { it('should draw rect with x and y bands', () => { expect(props.x).toEqual({scale: 'x', field: 'Cylinders'}); - expect(props.width).toEqual({scale: 'x', band: 1}); + expect(props.width).toEqual({signal: `max(0.25, bandwidth('x'))`}); expect(props.y).toEqual({scale: 'y', field: 'Origin'}); - expect(props.height).toEqual({scale: 'y', band: 1}); + expect(props.height).toEqual({signal: `max(0.25, bandwidth('y'))`}); }); }); diff --git a/yarn.lock b/yarn.lock index 8289e41acc..77d74c7ae9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,17 +9,17 @@ dependencies: "@jridgewell/trace-mapping" "^0.3.0" -"@auto-it/bot-list@10.37.3": - version "10.37.3" - resolved "https://registry.yarnpkg.com/@auto-it/bot-list/-/bot-list-10.37.3.tgz#b0adeca53b744142a502d8548a2d7ea6abe81173" - integrity sha512-mV7CxJzlraJYu6qy+ljCosFLfQZkXvdSX+2f5Na3KAuDPLbaFGLwZRa5i53JBYORsS9+n9pbEg5jC+M5HCC0xQ== +"@auto-it/bot-list@10.37.4": + version "10.37.4" + resolved "https://registry.yarnpkg.com/@auto-it/bot-list/-/bot-list-10.37.4.tgz#bb1ba1d42ef6fed0ceb87279d8b7a80b12f4a163" + integrity sha512-Lz981mShjY7VqQpG5mAfiR7py5iH8WbEIbd2/XUQu6EQFgljj0jT6XFA180Hz1tFQJ4o2TqtXaj3gBXURhpggQ== "@auto-it/conventional-commits@^10.34.1": - version "10.37.3" - resolved "https://registry.yarnpkg.com/@auto-it/conventional-commits/-/conventional-commits-10.37.3.tgz#1f7b173b4ebd75bd4888bdfbcef04f6d006853b4" - integrity sha512-2MkGzEEeTYWKhZgCWQ9hC5GF64vAov+LRbeKJCD7ltQ/bq+ZCKkW8SVgf72lK2Kw9R/IEhzX+2VZObREWHGIMQ== + version "10.37.4" + resolved "https://registry.yarnpkg.com/@auto-it/conventional-commits/-/conventional-commits-10.37.4.tgz#6da70ae8df67f73e64bbf3d91917720f89f478a8" + integrity sha512-83mRJIyEr3srCZEeLYjJLwvYpFmHvLrLsneoTyevDNzKPOPVARRHzzLm4nGhsI4ilKgU8CEBSVZNV49cyvsVrQ== dependencies: - "@auto-it/core" "10.37.3" + "@auto-it/core" "10.37.4" array.prototype.flatmap "^1.2.2" conventional-changelog-core "^4.2.0" conventional-changelog-preset-loader "^2.3.4" @@ -29,13 +29,14 @@ io-ts "^2.1.2" tslib "2.1.0" -"@auto-it/core@10.37.3": - version "10.37.3" - resolved "https://registry.yarnpkg.com/@auto-it/core/-/core-10.37.3.tgz#6ebb76654bbebe9b761b5f43a99fded1ace426e2" - integrity sha512-ybaX1vgdH/vjbiDWXviwhW5yQiQAOrouXmFPF5nH6kGUXCuQsEHAcZsc/0/ifnVVWtYmsVXyP+a1cJ4lvLXmCA== +"@auto-it/core@10.37.4": + version "10.37.4" + resolved "https://registry.yarnpkg.com/@auto-it/core/-/core-10.37.4.tgz#8d2979d5cbb3efc8d537caecc12637fc52451219" + integrity sha512-QS1z+PAjXUUKuEzx56ujvhpsgLOIgCdfnj/UyNfbpVoIS+5x7ve/fhoIlkF7A2Ogrvile7EOPT0EIVmDTtzYYg== dependencies: - "@auto-it/bot-list" "10.37.3" + "@auto-it/bot-list" "10.37.4" "@endemolshinegroup/cosmiconfig-typescript-loader" "^3.0.2" + "@octokit/core" "^3.5.1" "@octokit/plugin-enterprise-compatibility" "1.3.0" "@octokit/plugin-retry" "^3.0.9" "@octokit/plugin-throttling" "^3.6.2" @@ -75,24 +76,24 @@ url-join "^4.0.0" "@auto-it/first-time-contributor@^10.34.1": - version "10.37.3" - resolved "https://registry.yarnpkg.com/@auto-it/first-time-contributor/-/first-time-contributor-10.37.3.tgz#446beaf461811825f1342c98fb94033681f6e75b" - integrity sha512-8mEQg/hjydBIyf8n3NqVI+PFM0X3p08jwAGn/oUTy2Ety9hig04SjSnaWClMGMBhdHYzC51k7Ps/QA+madJZiA== + version "10.37.4" + resolved "https://registry.yarnpkg.com/@auto-it/first-time-contributor/-/first-time-contributor-10.37.4.tgz#f05d93576899754b4ba15e8a652b8cf4a2602ac3" + integrity sha512-SayKVNI/zGAONGk+BGIZkqFgtnqvQFn4iaF1qXwLjBwOyYdviKiJCCBnnre+sCHHDAgSnCEOUCy/TEUKO1xG4w== dependencies: - "@auto-it/bot-list" "10.37.3" - "@auto-it/core" "10.37.3" + "@auto-it/bot-list" "10.37.4" + "@auto-it/core" "10.37.4" array.prototype.flatmap "^1.2.2" endent "^2.1.0" tslib "2.1.0" url-join "^4.0.0" -"@auto-it/npm@10.37.3": - version "10.37.3" - resolved "https://registry.yarnpkg.com/@auto-it/npm/-/npm-10.37.3.tgz#c3bfff53076dc0a9631ec4b5ed52a5d2fb598be0" - integrity sha512-+LTcaMB+sa5lqBOPDzHzmw6yQofFQ3rxsKlupSlRxTGacCeDg8JpZ3BbOwftiON/FF/gCr0jKsK6BR0Lf3p+WQ== +"@auto-it/npm@10.37.4": + version "10.37.4" + resolved "https://registry.yarnpkg.com/@auto-it/npm/-/npm-10.37.4.tgz#c1ff5f81138375bd3c9fc091f618a50af4df9aa8" + integrity sha512-nF/fZOZ6agknEiN2q9g+y+TuOsQp2f8EDRJInA0Vs/vfa22FOjIZhjJP/XAxc4ojfj/0OmKoATCQJug5PVwwYg== dependencies: - "@auto-it/core" "10.37.3" - "@auto-it/package-json-utils" "10.37.3" + "@auto-it/core" "10.37.4" + "@auto-it/package-json-utils" "10.37.4" await-to-js "^3.0.0" endent "^2.1.0" env-ci "^5.0.1" @@ -106,32 +107,32 @@ url-join "^4.0.0" user-home "^2.0.0" -"@auto-it/package-json-utils@10.37.3": - version "10.37.3" - resolved "https://registry.yarnpkg.com/@auto-it/package-json-utils/-/package-json-utils-10.37.3.tgz#6a3c1233627fb1458dc079a8d6e8adda387c6174" - integrity sha512-IYRl14TsUFXRIPU8GJzTW3cfL576yZ0GPHUsgDvHqJfkWIplPVe57+sXPCuQNmLXRbq7SXsMG4d3RcuHrUs+Rg== +"@auto-it/package-json-utils@10.37.4": + version "10.37.4" + resolved "https://registry.yarnpkg.com/@auto-it/package-json-utils/-/package-json-utils-10.37.4.tgz#8ca6209e5a2f217c458d2887ca0a9f52450cd7db" + integrity sha512-LLVtEeuAOeDQmhkDEOJyGU9PFdF5i46UcS7vG7BxSLQg2UAhvAolLgD/u6wOTOCDmQnLsBP6hdStSbHjDO8tMg== dependencies: parse-author "^2.0.0" parse-github-url "1.0.2" -"@auto-it/released@10.37.3": - version "10.37.3" - resolved "https://registry.yarnpkg.com/@auto-it/released/-/released-10.37.3.tgz#5d9c443eedcf74cfb8814d925ac95ce881944730" - integrity sha512-eMQT3cTNrfZwqoa3nh8NHyHKhgy6EGgNKxPqnR/4ucvPmjBwQD9sEBiLAbLZ6mOzgINF0+uouw5X1SfWvF4PMA== +"@auto-it/released@10.37.4": + version "10.37.4" + resolved "https://registry.yarnpkg.com/@auto-it/released/-/released-10.37.4.tgz#10d82f1faa08f98a7709b76ae23a1e03c6a3b505" + integrity sha512-1l4gRs/Cb3G6wsIwlxfoIp8OBl/WyAF2Lj5OmZ5Tbjfr6Mki6wD9xxa95rrXG47vaY+u+jcqNYX2dwP2ROxOhA== dependencies: - "@auto-it/bot-list" "10.37.3" - "@auto-it/core" "10.37.3" + "@auto-it/bot-list" "10.37.4" + "@auto-it/core" "10.37.4" deepmerge "^4.0.0" fp-ts "^2.5.3" io-ts "^2.1.2" tslib "2.1.0" -"@auto-it/version-file@10.37.3": - version "10.37.3" - resolved "https://registry.yarnpkg.com/@auto-it/version-file/-/version-file-10.37.3.tgz#81f36c608c49dc2eb8397917d5da13ecb3ff7c7a" - integrity sha512-IFTDLxjBFjcBMo7CmUhY4dgK2EkGyI/3TNQ4QxlUzTSQ3VsPdMpDzD+cHNdyozd94si8fbFGwwsReiaL+5Rl4w== +"@auto-it/version-file@10.37.4": + version "10.37.4" + resolved "https://registry.yarnpkg.com/@auto-it/version-file/-/version-file-10.37.4.tgz#51b46f9a7f03d58566c6b47c2a9e8ddeae65088c" + integrity sha512-CnYgo6GNgBcMDrkoeeHMG3PRDpYZ84pUZehoqZmXKczGzXEJSulHdedmPvuAW3rEvVAFJhWPRcJ10ByRkIQoBg== dependencies: - "@auto-it/core" "10.37.3" + "@auto-it/core" "10.37.4" fp-ts "^2.5.3" io-ts "^2.1.2" semver "^7.0.0" @@ -144,38 +145,38 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.8": +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.17.5", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" - integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" + integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" + "@babel/generator" "^7.18.10" "@babel/helper-compilation-targets" "^7.18.9" "@babel/helper-module-transforms" "^7.18.9" "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.9" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/parser" "^7.18.10" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.10" + "@babel/types" "^7.18.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.18.9", "@babel/generator@^7.7.2": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" - integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== +"@babel/generator@^7.18.10", "@babel/generator@^7.7.2": + version "7.18.12" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.12.tgz#fa58daa303757bd6f5e4bbca91b342040463d9f4" + integrity sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg== dependencies: - "@babel/types" "^7.18.9" + "@babel/types" "^7.18.10" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -194,7 +195,7 @@ "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.9": +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== @@ -225,15 +226,13 @@ "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.1.0" -"@babel/helper-define-polyfill-provider@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" - integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== +"@babel/helper-define-polyfill-provider@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" + integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" debug "^4.1.1" lodash.debounce "^4.0.8" resolve "^1.14.2" @@ -293,7 +292,7 @@ dependencies: "@babel/types" "^7.18.9" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13": +"@babel/helper-module-imports@^7.10.4": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== @@ -328,7 +327,7 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== @@ -343,6 +342,16 @@ "@babel/helper-wrap-function" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-replace-supers@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz#efedf51cfccea7b7b8c0f00002ab317e7abfe420" @@ -386,6 +395,11 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-string-parser@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" + integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== + "@babel/helper-validator-identifier@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" @@ -406,6 +420,16 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-wrap-function@^7.18.9": + version "7.18.11" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz#bff23ace436e3f6aefb61f85ffae2291c80ed1fb" + integrity sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w== + dependencies: + "@babel/helper-function-name" "^7.18.9" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.11" + "@babel/types" "^7.18.10" + "@babel/helpers@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" @@ -424,10 +448,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" - integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.11": + version "7.18.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" + integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -445,14 +469,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" - integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== +"@babel/plugin-proposal-async-generator-functions@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" + integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== dependencies: - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-proposal-class-properties@^7.18.6": @@ -953,12 +977,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-typescript" "^7.18.6" -"@babel/plugin-transform-unicode-escapes@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" - integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" @@ -969,9 +993,9 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/preset-env@^7.16.11": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" - integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" + integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== dependencies: "@babel/compat-data" "^7.18.8" "@babel/helper-compilation-targets" "^7.18.9" @@ -979,7 +1003,7 @@ "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.6" + "@babel/plugin-proposal-async-generator-functions" "^7.18.10" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" @@ -1039,13 +1063,13 @@ "@babel/plugin-transform-sticky-regex" "^7.18.6" "@babel/plugin-transform-template-literals" "^7.18.9" "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.6" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.9" - babel-plugin-polyfill-corejs2 "^0.3.1" - babel-plugin-polyfill-corejs3 "^0.5.2" - babel-plugin-polyfill-regenerator "^0.3.1" + "@babel/types" "^7.18.10" + babel-plugin-polyfill-corejs2 "^0.3.2" + babel-plugin-polyfill-corejs3 "^0.5.3" + babel-plugin-polyfill-regenerator "^0.4.0" core-js-compat "^3.22.1" semver "^6.3.0" @@ -1076,36 +1100,37 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.18.6", "@babel/template@^7.3.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" - integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== +"@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.3.3": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" - integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== +"@babel/traverse@^7.18.10", "@babel/traverse@^7.18.11", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": + version "7.18.11" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f" + integrity sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" + "@babel/generator" "^7.18.10" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.18.9" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/parser" "^7.18.11" + "@babel/types" "^7.18.10" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" - integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== +"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" + integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== dependencies: + "@babel/helper-string-parser" "^7.18.10" "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" @@ -1151,15 +1176,20 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== +"@humanwhocodes/config-array@^0.10.4": + version "0.10.4" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" + integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" minimatch "^3.0.4" +"@humanwhocodes/gitignore-to-minimatch@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" + integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== + "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" @@ -1594,9 +1624,9 @@ "@rollup/pluginutils" "^3.1.0" "@rollup/plugin-commonjs@^22.0.0": - version "22.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.1.tgz#f7cb777d20de3eeeaf994f39080115c336bef810" - integrity sha512-dGfEZvdjDHObBiP5IvwTKMVeq/tBZGMBHZFMdIV1ClMM/YoWS34xrHFGfag9SN2ZtMgNZRFruqvxZQEa70O6nQ== + version "22.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.2.tgz#ee8ca8415cda30d383b4096aad5222435b4b69b6" + integrity sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg== dependencies: "@rollup/pluginutils" "^3.1.0" commondir "^1.0.1" @@ -1704,9 +1734,9 @@ "@babel/types" "^7.3.0" "@types/chai@^4.3.0": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.1.tgz#e2c6e73e0bdeb2521d00756d099218e9f5d90a04" - integrity sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ== + version "4.3.3" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.3.tgz#3c90752792660c4b562ad73b3fbd68bf3bc7ae07" + integrity sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g== "@types/clone@~2.1.1": version "2.1.1" @@ -2061,13 +2091,13 @@ "@types/node" "*" "@typescript-eslint/eslint-plugin@^5.14.0": - version "5.30.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.7.tgz#1621dabc1ae4084310e19e9efc80dfdbb97e7493" - integrity sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw== + version "5.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.0.tgz#059798888720ec52ffa96c5f868e31a8f70fa3ec" + integrity sha512-jHvZNSW2WZ31OPJ3enhLrEKvAZNyAFWZ6rx9tUwaessTc4sx9KmgMNhVcqVAl1ETnT5rU5fpXTLmY9YvC1DCNg== dependencies: - "@typescript-eslint/scope-manager" "5.30.7" - "@typescript-eslint/type-utils" "5.30.7" - "@typescript-eslint/utils" "5.30.7" + "@typescript-eslint/scope-manager" "5.33.0" + "@typescript-eslint/type-utils" "5.33.0" + "@typescript-eslint/utils" "5.33.0" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -2076,68 +2106,68 @@ tsutils "^3.21.0" "@typescript-eslint/parser@^5.14.0": - version "5.30.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.7.tgz#99d09729392aec9e64b1de45cd63cb81a4ddd980" - integrity sha512-Rg5xwznHWWSy7v2o0cdho6n+xLhK2gntImp0rJroVVFkcYFYQ8C8UJTSuTw/3CnExBmPjycjmUJkxVmjXsld6A== + version "5.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.33.0.tgz#26ec3235b74f0667414613727cb98f9b69dc5383" + integrity sha512-cgM5cJrWmrDV2KpvlcSkelTBASAs1mgqq+IUGKJvFxWrapHpaRy5EXPQz9YaKF3nZ8KY18ILTiVpUtbIac86/w== dependencies: - "@typescript-eslint/scope-manager" "5.30.7" - "@typescript-eslint/types" "5.30.7" - "@typescript-eslint/typescript-estree" "5.30.7" + "@typescript-eslint/scope-manager" "5.33.0" + "@typescript-eslint/types" "5.33.0" + "@typescript-eslint/typescript-estree" "5.33.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.30.7": - version "5.30.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.7.tgz#8269a931ef1e5ae68b5eb80743cc515c4ffe3dd7" - integrity sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw== +"@typescript-eslint/scope-manager@5.33.0": + version "5.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.33.0.tgz#509d7fa540a2c58f66bdcfcf278a3fa79002e18d" + integrity sha512-/Jta8yMNpXYpRDl8EwF/M8It2A9sFJTubDo0ATZefGXmOqlaBffEw0ZbkbQ7TNDK6q55NPHFshGBPAZvZkE8Pw== dependencies: - "@typescript-eslint/types" "5.30.7" - "@typescript-eslint/visitor-keys" "5.30.7" + "@typescript-eslint/types" "5.33.0" + "@typescript-eslint/visitor-keys" "5.33.0" -"@typescript-eslint/type-utils@5.30.7": - version "5.30.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.7.tgz#5693dc3db6f313f302764282d614cfdbc8a9fcfd" - integrity sha512-nD5qAE2aJX/YLyKMvOU5jvJyku4QN5XBVsoTynFrjQZaDgDV6i7QHFiYCx10wvn7hFvfuqIRNBtsgaLe0DbWhw== +"@typescript-eslint/type-utils@5.33.0": + version "5.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.33.0.tgz#92ad1fba973c078d23767ce2d8d5a601baaa9338" + integrity sha512-2zB8uEn7hEH2pBeyk3NpzX1p3lF9dKrEbnXq1F7YkpZ6hlyqb2yZujqgRGqXgRBTHWIUG3NGx/WeZk224UKlIA== dependencies: - "@typescript-eslint/utils" "5.30.7" + "@typescript-eslint/utils" "5.33.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.30.7": - version "5.30.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.7.tgz#18331487cc92d0f1fb1a6f580c8ec832528079d0" - integrity sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg== +"@typescript-eslint/types@5.33.0": + version "5.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.33.0.tgz#d41c584831805554b063791338b0220b613a275b" + integrity sha512-nIMt96JngB4MYFYXpZ/3ZNU4GWPNdBbcB5w2rDOCpXOVUkhtNlG2mmm8uXhubhidRZdwMaMBap7Uk8SZMU/ppw== -"@typescript-eslint/typescript-estree@5.30.7": - version "5.30.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz#05da9f1b281985bfedcf62349847f8d168eecc07" - integrity sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA== +"@typescript-eslint/typescript-estree@5.33.0": + version "5.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.0.tgz#02d9c9ade6f4897c09e3508c27de53ad6bfa54cf" + integrity sha512-tqq3MRLlggkJKJUrzM6wltk8NckKyyorCSGMq4eVkyL5sDYzJJcMgZATqmF8fLdsWrW7OjjIZ1m9v81vKcaqwQ== dependencies: - "@typescript-eslint/types" "5.30.7" - "@typescript-eslint/visitor-keys" "5.30.7" + "@typescript-eslint/types" "5.33.0" + "@typescript-eslint/visitor-keys" "5.33.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.30.7", "@typescript-eslint/utils@^5.10.0": - version "5.30.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.7.tgz#7135be070349e9f7caa262b0ca59dc96123351bb" - integrity sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ== +"@typescript-eslint/utils@5.33.0", "@typescript-eslint/utils@^5.10.0": + version "5.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.33.0.tgz#46797461ce3146e21c095d79518cc0f8ec574038" + integrity sha512-JxOAnXt9oZjXLIiXb5ZIcZXiwVHCkqZgof0O8KPgz7C7y0HS42gi75PdPlqh1Tf109M0fyUw45Ao6JLo7S5AHw== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.30.7" - "@typescript-eslint/types" "5.30.7" - "@typescript-eslint/typescript-estree" "5.30.7" + "@typescript-eslint/scope-manager" "5.33.0" + "@typescript-eslint/types" "5.33.0" + "@typescript-eslint/typescript-estree" "5.33.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.30.7": - version "5.30.7" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.7.tgz#c093abae75b4fd822bfbad9fc337f38a7a14909a" - integrity sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw== +"@typescript-eslint/visitor-keys@5.33.0": + version "5.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.0.tgz#fbcbb074e460c11046e067bc3384b5d66b555484" + integrity sha512-/XsqCzD4t+Y9p5wd9HZiptuGKBlaZO5showwqODii5C0nZawxWLF+Q6k5wYHBrQv96h6GYKyqqMHCSTqta8Kiw== dependencies: - "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/types" "5.33.0" eslint-visitor-keys "^3.3.0" "@zeit/schemas@2.21.0": @@ -2194,11 +2224,16 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1: +acorn@^8.2.4, acorn@^8.5.0: version "8.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== +acorn@^8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" @@ -2211,13 +2246,13 @@ agent-base@6: dependencies: debug "4" -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== +aggregate-error@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-4.0.1.tgz#25091fe1573b9e0be892aeda15c7c66a545f758e" + integrity sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w== dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" + clean-stack "^4.0.0" + indent-string "^5.0.0" ajv-formats@^2.1.1: version "2.1.1" @@ -2436,14 +2471,14 @@ author-regex@^1.0.0: integrity sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA= auto@^10.34.1: - version "10.37.3" - resolved "https://registry.yarnpkg.com/auto/-/auto-10.37.3.tgz#6a920f0f39ffdbe8afa7103576b895d6f09715d3" - integrity sha512-0gQhbm/LKXNBxhIAvXxT9JsUc5bewSuQ8CuIJHEJvm5rhFt/tYProhNIGyfqsqkzear/CScBaohP4SknwtxIHg== - dependencies: - "@auto-it/core" "10.37.3" - "@auto-it/npm" "10.37.3" - "@auto-it/released" "10.37.3" - "@auto-it/version-file" "10.37.3" + version "10.37.4" + resolved "https://registry.yarnpkg.com/auto/-/auto-10.37.4.tgz#450a9d51166919a97ea85fa06d117ecd94adb9ff" + integrity sha512-chspNHfy17DFOPwLbT74xU+fD0NXhtLpWnKZjoLjHUKp0+ZNJSM9jrBHq2ExB4EAP3UXlFVDG+BzrkgZoYLzCw== + dependencies: + "@auto-it/core" "10.37.4" + "@auto-it/npm" "10.37.4" + "@auto-it/released" "10.37.4" + "@auto-it/version-file" "10.37.4" await-to-js "^3.0.0" chalk "^4.0.0" command-line-application "^0.10.1" @@ -2507,29 +2542,29 @@ babel-plugin-jest-hoist@^27.5.1: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-polyfill-corejs2@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== +babel-plugin-polyfill-corejs2@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" + integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.2" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== +babel-plugin-polyfill-corejs3@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" + integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/helper-define-polyfill-provider" "^0.3.2" core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== +babel-plugin-polyfill-regenerator@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" + integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/helper-define-polyfill-provider" "^0.3.2" babel-preset-current-node-syntax@^1.0.0: version "1.0.1" @@ -2847,10 +2882,12 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +clean-stack@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-4.2.0.tgz#c464e4cde4ac789f4e0735c5d75beb49d7b30b31" + integrity sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg== + dependencies: + escape-string-regexp "5.0.0" cli-boxes@^3.0.0: version "3.0.0" @@ -3643,27 +3680,27 @@ define-properties@^1.1.3: dependencies: object-keys "^1.0.12" -del-cli@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/del-cli/-/del-cli-4.0.1.tgz#2303ccaa45708ee8c6211568344cf87336abf30a" - integrity sha512-KtR/6cBfZkGDAP2NA7z+bP4p1OMob3wjN9mq13+SWvExx6jT9gFWfLgXEeX8J2B47OKeNCq9yTONmtryQ+m+6g== +del-cli@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/del-cli/-/del-cli-5.0.0.tgz#fa79fd57e888ecaaf8a468d87e8a175142a24aa9" + integrity sha512-rENFhUaYcjoMODwFhhlON+ogN7DoG+4+GFN+bsA1XeDt4w2OKQnQadFP1thHSAlK9FAtl88qgP66wOV+eFZZiQ== dependencies: - del "^6.0.0" - meow "^10.1.0" + del "^7.0.0" + meow "^10.1.3" -del@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" - integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== +del@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-7.0.0.tgz#79db048bec96f83f344b46c1a66e35d9c09fe8ac" + integrity sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q== dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" + globby "^13.1.2" + graceful-fs "^4.2.10" + is-glob "^4.0.3" + is-path-cwd "^3.0.0" + is-path-inside "^4.0.0" + p-map "^5.5.0" rimraf "^3.0.2" - slash "^3.0.0" + slash "^4.0.0" delaunator@5: version "5.0.0" @@ -3901,6 +3938,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escape-string-regexp@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -3934,9 +3976,9 @@ eslint-config-prettier@^8.5.0: integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== eslint-plugin-jest@^26.1.1: - version "26.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.6.0.tgz#546804fa42da75d7d58d4d3b278d5186abd3f6c0" - integrity sha512-f8n46/97ZFdU4KqeQYqO8AEVGIhHWvkpgNBWHH3jrM28/y8llnbf3IjfIKv6p2pZIMinK1PCqbbROxs9Eud02Q== + version "26.8.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.8.2.tgz#42a1248a5ade2bc589eb0f9c4e0608dd89b18cf3" + integrity sha512-67oh0FKaku9y48OpLzL3uK9ckrgLb83Sp5gxxTbtOGDw9lq6D8jw/Psj/9CipkbK406I2M7mvx1q+pv/MdbvxA== dependencies: "@typescript-eslint/utils" "^5.10.0" @@ -3981,12 +4023,13 @@ eslint-visitor-keys@^3.3.0: integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@^8.11.0: - version "8.20.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.20.0.tgz#048ac56aa18529967da8354a478be4ec0a2bc81b" - integrity sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA== + version "8.22.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.22.0.tgz#78fcb044196dfa7eef30a9d65944f6f980402c48" + integrity sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA== dependencies: "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.9.2" + "@humanwhocodes/config-array" "^0.10.4" + "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -3996,14 +4039,17 @@ eslint@^8.11.0: eslint-scope "^7.1.1" eslint-utils "^3.0.0" eslint-visitor-keys "^3.3.0" - espree "^9.3.2" + espree "^9.3.3" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" + find-up "^5.0.0" functional-red-black-tree "^1.0.1" glob-parent "^6.0.1" globals "^13.15.0" + globby "^11.1.0" + grapheme-splitter "^1.0.4" ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" @@ -4021,12 +4067,12 @@ eslint@^8.11.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^9.3.2: - version "9.3.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" - integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== +espree@^9.3.2, espree@^9.3.3: + version "9.3.3" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d" + integrity sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng== dependencies: - acorn "^8.7.1" + acorn "^8.8.0" acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" @@ -4132,7 +4178,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.1.1, fast-glob@^3.2.9: +fast-glob@^3.1.1, fast-glob@^3.2.11, fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== @@ -4573,7 +4619,7 @@ globals@^13.15.0: dependencies: type-fest "^0.20.2" -globby@^11.0.1, globby@^11.1.0: +globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -4585,6 +4631,17 @@ globby@^11.0.1, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +globby@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" + integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.2.11" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^4.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -4608,11 +4665,21 @@ globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: version "4.2.9" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== +graceful-fs@^4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + gzip-size@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" @@ -4962,15 +5029,15 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== +is-path-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-3.0.0.tgz#889b41e55c8588b1eb2a96a61d05740a674521c7" + integrity sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA== -is-path-inside@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-path-inside@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-4.0.0.tgz#805aeb62c47c1b12fc3fd13bfb3ed1e7430071db" + integrity sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA== is-plain-obj@^1.1.0: version "1.1.0" @@ -5858,10 +5925,10 @@ meant@^1.0.1: resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c" integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw== -meow@^10.1.0: - version "10.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-10.1.2.tgz#62951cb69afa69594142c8250806bc30a3912e4d" - integrity sha512-zbuAlN+V/sXlbGchNS9WTWjUzeamwMt/BApKCJi7B0QyZstZaMx0n4Unll/fg0njGtMdC9UP5SAscvOCLYdM+Q== +meow@^10.1.3: + version "10.1.3" + resolved "https://registry.yarnpkg.com/meow/-/meow-10.1.3.tgz#21689959a7d00e8901aff30d208acb2122eb8088" + integrity sha512-0WL7RMCPPdUTE00+GxJjL4d5Dm6eUbmAzxlzywJWiRUKCW093owmZ7/q74tH9VI91vxw9KJJNxAcvdpxb2G4iA== dependencies: "@types/minimist" "^1.2.2" camelcase-keys "^7.0.0" @@ -6251,12 +6318,12 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== +p-map@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-5.5.0.tgz#054ca8ca778dfa4cf3f8db6638ccb5b937266715" + integrity sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg== dependencies: - aggregate-error "^3.0.0" + aggregate-error "^4.0.0" p-try@^1.0.0: version "1.0.0" @@ -6892,9 +6959,9 @@ rollup-plugin-terser@^7.0.2: terser "^5.0.0" rollup@^2.70.1: - version "2.77.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.0.tgz#749eaa5ac09b6baa52acc076bc46613eddfd53f4" - integrity sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g== + version "2.78.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.0.tgz#00995deae70c0f712ea79ad904d5f6b033209d9e" + integrity sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg== optionalDependencies: fsevents "~2.3.2" @@ -7073,6 +7140,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + source-map-resolve@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"