Skip to content

Commit e2efedf

Browse files
committed
Merge branch 'v4.0' of github.com:plotly/plotly.js into update-server-config
2 parents 13c435f + ccb2569 commit e2efedf

471 files changed

Lines changed: 49529 additions & 47530 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/actions/setup-workspace/action.yml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
name: 'Setup Workspace'
22
description: 'Setup Node.js, install dependencies, and download build artifacts'
33

4-
inputs:
5-
node-version:
6-
description: 'Node.js version to use'
7-
default: '18'
8-
94
runs:
105
using: 'composite'
116
steps:
127
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
138
with:
14-
node-version: ${{ inputs.node-version }}
9+
node-version-file: '.nvmrc'
1510
cache: 'npm'
1611

1712
- name: Install dependencies

.github/workflows/ci.yml

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@ concurrency:
1414
group: ci-${{ github.event.pull_request.number || github.ref }}
1515
cancel-in-progress: true
1616

17-
env:
18-
NODE_VERSION: '18'
19-
2017
jobs:
2118
detect-changes:
2219
runs-on: ubuntu-latest
@@ -60,7 +57,7 @@ jobs:
6057

6158
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
6259
with:
63-
node-version: ${{ env.NODE_VERSION }}
60+
node-version-file: '.nvmrc'
6461
cache: 'npm'
6562

6663
- name: Install dependencies
@@ -270,9 +267,9 @@ jobs:
270267
chrome-version: 'stable'
271268

272269
- name: Run noCI tests
273-
uses: coactions/setup-xvfb@b6b4fcfb9f5a895edadc3bc76318fae0ac17c8b3 # v1
270+
uses: ./.github/actions/run-xvfb
274271
with:
275-
run: ./tasks/noci_test.sh jasmine
272+
run: npm run test-jasmine -- --tags=noCI,noCIdep --nowatch
276273

277274
# ============================================================
278275
# Image baseline generation and comparison
@@ -579,6 +576,26 @@ jobs:
579576
- name: Run syntax tests on source files
580577
run: .github/scripts/test.sh source-syntax
581578

579+
typecheck:
580+
needs: install-and-cibuild
581+
runs-on: ubuntu-latest
582+
steps:
583+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
584+
- uses: ./.github/actions/setup-workspace
585+
586+
- name: Type-check TypeScript sources
587+
run: npm run typecheck
588+
589+
generated-types-drift:
590+
needs: install-and-cibuild
591+
runs-on: ubuntu-latest
592+
steps:
593+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
594+
- uses: ./.github/actions/setup-workspace
595+
596+
- name: Verify generated types are in sync with schema
597+
run: npm run schema-typegen-diff-check
598+
582599
# ============================================================
583600
# Standalone jobs (no dependencies on install-and-cibuild)
584601
# ============================================================
@@ -593,7 +610,7 @@ jobs:
593610

594611
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
595612
with:
596-
node-version: ${{ env.NODE_VERSION }}
613+
node-version-file: '.nvmrc'
597614
cache: 'npm'
598615

599616
- name: Set up build environment
@@ -624,7 +641,7 @@ jobs:
624641

625642
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
626643
with:
627-
node-version: ${{ env.NODE_VERSION }}
644+
node-version-file: '.nvmrc'
628645
cache: 'npm'
629646

630647
- name: Set up build environment

.github/workflows/publish-dist.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525

2626
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
2727
with:
28-
node-version: '22.14.0'
28+
node-version-file: '.nvmrc'
2929
cache: 'npm'
3030

3131
- name: Set up build environment

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ build/*
77
dist/*.LICENSE.txt
88
dist/*.css
99

10+
# Ignore local dev mocks/baselines
11+
test/image/**/dev_*.*
12+
1013
npm-debug.log*
1114
*.sublime*
1215
*~
@@ -16,3 +19,4 @@ tags
1619
!.github/
1720
!.gitignore
1821
!.npmignore
22+
!.nvmrc

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
22.23.0

CONTRIBUTING.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ We use the following [labels](https://github.com/plotly/plotly.js/labels) to tra
7878
#### Prerequisites
7979

8080
- git
81-
- [node.js](https://nodejs.org/en/). We recommend using node.js v18.x.
81+
- [node.js](https://nodejs.org/en/). We recommend using node.js v22.x.
8282
Upgrading and managing node versions can be easily done using
8383
[`nvm`](https://github.com/nvm-sh/nvm) or its Windows alternatives.
8484
- [`npm`](https://www.npmjs.com/) v10.x and up to ensure that the
@@ -405,8 +405,10 @@ All traces modules set:
405405
This object is used to generate the plot-schema JSON.
406406
- `_module.supplyDefaults`: Takes in input trace settings and coerces them into "full" settings
407407
under `gd._fullData`. This one is called during the figure-wide `Plots.supplyDefaults` routine.
408-
Note that the `supplyDefaults` method performance should scale with the number of attributes (**not** the
409-
number of data points - so it should not loop over any data arrays).
408+
As a rule, `supplyDefaults` performance should scale with the number of attributes rather than
409+
the number of data points, so avoid looping over data arrays in this function. That being said,
410+
there are a few exceptions to this rule due to technical requirements (`fitbounds` on map subplots).
411+
The same guidance applies to `_module.supplyLayoutDefaults`.
410412
- `_module.calc`: Converts inputs data into "calculated" (or sanitized) data. This one is called during
411413
the figure-wide `Plots.doCalcdata` routine. The `calc` method is allowed to
412414
scale with the number of data points and is in general more costly than `supplyDefaults`.
@@ -432,7 +434,7 @@ Other methods used by some trace modules:
432434
selections.
433435
- `_module.convert`: Sometimes separated from `_module.plot` or `_module.calc` to convert the
434436
plotly.js settings to another framework e.g. to `gl-plot3d` for `gl3d` traces, to
435-
`mapbox-gl` for `mapbox` traces. This split can make the logic easier to test.
437+
`maplibre-gl` for `map` traces. This split can make the logic easier to test.
436438
If you make a `convert`, you should call it from either `calc` or `plot`.
437439

438440
## Coding style

CUSTOM_BUNDLE.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ Make sure you have the versions of node/npm that's recommended:
55
- plotly.js before 2.5: Node 12/npm 6
66
- plotly.js from 2.5: Node 16/npm 8
77
- plotly.js from 2.35: Node 18/npm 10
8+
- plotly.js from 4.0: Node 22/npm 10
89

9-
To download a specific node version look [here](https://nodejs.org/en/download/package-manager).
10+
To download a specific node version look [here](https://nodejs.org/en/download).
1011

1112
Note: For CI, it's faster to do `git clone --depth 1` to only get one commit.
1213

README.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,17 +95,23 @@ While non-minified source files may contain characters outside UTF-8, it is reco
9595
> Please note that as of v2 the "plotly-latest" outputs (e.g. https://cdn.plot.ly/plotly-latest.min.js) will no longer be updated on the CDN, and will stay at the last v1 patch v1.58.5. Therefore, to use the CDN with plotly.js v2 and higher, you must specify an exact plotly.js version.
9696
9797
### MathJax
98-
You can load either version two or version three of MathJax files. For example:
98+
plotly.js supports using MathJax v3 or v4 to render mathematical expressions within plots.
99+
100+
MathJax is not included in the plotly.js bundle, so it must be loaded separately as a script on the webpage.
101+
102+
For MathJax v4:
99103
```html
100-
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG.js"></script>
104+
<script src="https://cdn.jsdelivr.net/npm/mathjax@4.1.3/tex-svg.js"></script>
101105
```
102106

107+
For MathJax v3:
103108
```html
104109
<script src="https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-svg.js"></script>
105110
```
106111

107-
> When using MathJax version 3, it is also possible to use `chtml` output on the other parts of the page in addition to `svg` output for the plotly graph.
108-
Please refer to `devtools/test_dashboard/index-mathjax3chtml.html` to see an example.
112+
When MathJax is available, any string contained within `$..$` signs will be rendered using the MathJax engine. This applies to plot titles, axis labels, tick label text, and annotations.
113+
114+
plotly.js's use of the MathJax `svg` renderer should not prevent using other MathJax renderers elsewhere on the page, nor will it affect the global MathJax config. See `devtools/test_dashboard/index-mathjax3chtml.html` for an example of a webpage which uses the MathJax `chtml` renderer in the main page, and also displays Plotly charts containing MathJax equations rendered as `svg`.
109115

110116
### Need to have several WebGL graphs on a page?
111117
You may simply load the [virtual-webgl](https://github.com/greggman/virtual-webgl) script for WebGL 1 (not WebGL 2) before loading other scripts.

devtools/test_dashboard/devtools.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
var Fuse = require('fuse.js/dist/fuse.common.js');
66
var mocks = require('../../build/test_dashboard_mocks.json');
7-
var credentials = require('../../build/credentials.json');
87
var Lib = require('../../src/lib');
98

109
require('./perf');
@@ -18,9 +17,6 @@ var Tabs = {
1817

1918
// use local topojson files
2019
topojsonURL: "../../topojson/dist",
21-
// register mapbox access token
22-
// run `npm run preset` if you haven't yet
23-
mapboxAccessToken: credentials.MAPBOX_ACCESS_TOKEN,
2420

2521
// show all logs in console
2622
logging: 2

devtools/test_dashboard/index-mathjax3.html

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
<section id="mocks-list"></section>
1919

20-
<p id="pWithMathJax">MathJax $V^3$ with $svg$ output on the page as well as plotly graphs</p>
20+
<p>MathJax \(V^3\) with \(svg\) output on the page as well as plotly graphs</p>
2121
<h4>no MathJax: Apple: $2, Orange: $3</h4>
2222

2323
<div id="plots">
@@ -27,18 +27,12 @@ <h4>no MathJax: Apple: $2, Orange: $3</h4>
2727

2828
<script>
2929
window.MathJax = {
30-
startup: {
31-
elements: [
32-
document.getElementById('pWithMathJax')
33-
],
34-
// typeset: false,
35-
// in case the elements array is empty one could disable startup typeset
36-
// https://docs.mathjax.org/en/latest/options/startup/startup.html#the-configuration-block
37-
}
30+
// MathJax config options can be set here, although
31+
// none are strictly needed for this page.
3832
};
3933
</script>
4034
<script src="../../node_modules/@plotly/mathjax-v3/es5/tex-svg.js"></script>
41-
<script charset="utf-8" id="source" src="../../build/plotly.js" type="module"></script>
35+
<script charset="utf-8" id="source" src="../../build/plotly.js"></script>
4236
<script charset="utf-8" src="../../build/test_dashboard-bundle.js"></script>
4337
</body>
4438
</html>

0 commit comments

Comments
 (0)