Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
268 commits
Select commit Hold shift + click to select a range
b43ff75
Add logging
camdecoster Nov 19, 2025
f27aa55
Merge remote-tracking branch 'origin/master' into cam/7523/switch-col…
camdecoster Apr 21, 2026
31a6235
Refactor to better match tinycolor2
camdecoster Apr 24, 2026
59296af
Update schema
camdecoster Apr 24, 2026
b1ebcf7
Update test input values
camdecoster Apr 27, 2026
86e48f8
Add default value to setColor
camdecoster Apr 27, 2026
0aaf967
Call alpha instead of opacity because colors default to black for inv…
camdecoster Apr 27, 2026
b3693b4
Use `alpha` in more places
camdecoster Apr 28, 2026
e2633e8
Use correct operator for conditional
camdecoster Apr 29, 2026
fbd5ec7
Update baseline images
camdecoster Apr 29, 2026
51001fd
Linting/formatting
camdecoster Jan 2, 2026
cef04d2
Initial TS set up
camdecoster Dec 30, 2025
412d4b1
Convert a few small files to TS
camdecoster Jan 2, 2026
f704542
Update requires to handle esbuild ESM/CJS interoperability
camdecoster Jan 2, 2026
5f72cf8
Use ts-node for scripts using TS that run outside of esbuild
camdecoster Jan 2, 2026
5ed7da0
Run test script with ts-node
camdecoster Jan 2, 2026
f2622c5
Add additional types and type generation script
camdecoster May 6, 2026
a131cfe
Convert modebar attributes to TS
camdecoster May 6, 2026
de168ca
Add type generation npm scripts
camdecoster May 6, 2026
5f8654c
Add type check steps to CI
camdecoster May 6, 2026
eebf71e
Update TS docs
camdecoster May 6, 2026
c11bca1
Add entry point to types
camdecoster May 6, 2026
04261b2
Update file name case check
camdecoster May 6, 2026
e69463a
Linting/formatting
camdecoster May 7, 2026
134e84f
Remove obsolete types
camdecoster May 8, 2026
6b2a096
Add additional internal props to FullData
camdecoster May 8, 2026
402658c
Refactor type imports
camdecoster May 8, 2026
7ffdd9a
Use better types in CalcData
camdecoster May 8, 2026
07a066c
Change types to Map*, add aliases for Mapbox*, fix typo
camdecoster May 8, 2026
ed5b958
Update description
camdecoster May 8, 2026
3335828
Add type# property key patterns, add additional properties to `FullLa…
camdecoster May 8, 2026
a1cd236
Add reference to CalcData
camdecoster May 8, 2026
0c771d2
Update type documentation
camdecoster May 8, 2026
7acbd19
Make TS config more strict
camdecoster May 11, 2026
27c6acb
Move TemplateFigure type
camdecoster May 11, 2026
dadd651
Fix internal property naming
camdecoster May 11, 2026
b9b2d41
Update type references
camdecoster May 11, 2026
7bbd311
Don't add redundant `| undefined` to generated types
camdecoster May 11, 2026
155bf28
Convert image trace attributes to TS
camdecoster May 11, 2026
ed3cb86
Remove some handwritten types
camdecoster May 13, 2026
b3a5d9e
Remove individual generated types
camdecoster May 13, 2026
a274c86
Remove type exports
camdecoster May 14, 2026
3653348
Add schema based type generator, types
camdecoster May 14, 2026
227122f
Switch to schema generated types
camdecoster May 14, 2026
c345826
Move internal types to separate files
camdecoster May 14, 2026
36ba55c
Tweak public API exemptions logic
camdecoster May 14, 2026
3dbf534
Update TS docs
camdecoster May 14, 2026
994f32f
Update npm scripts
camdecoster May 14, 2026
737935c
Update CI to check for generated types diff
camdecoster May 14, 2026
b0fc049
Merge remote-tracking branch 'origin/master' into cam/7678/enable-typ…
camdecoster May 14, 2026
9716705
Update schema types with latest attributes
camdecoster May 14, 2026
1c0f706
Fix description reference and update schema/types
camdecoster May 18, 2026
0c08ea7
Fix typos in attributes/schema/types
camdecoster May 18, 2026
5ebe107
Generate more types from schema
camdecoster May 21, 2026
63d32ae
Refactor types to use schema generated types; add more type metadata
camdecoster May 26, 2026
379d815
Update TS docs
camdecoster May 26, 2026
d8f9b9f
Generate (most) config type info from schema
camdecoster May 26, 2026
a91fe2f
Add descriptions to hand written types
camdecoster May 26, 2026
6d8db88
Update CI type diff check
camdecoster May 26, 2026
6c73ea3
Clarify docs about source of truth
camdecoster May 26, 2026
504aa33
Update docs per recent changes
camdecoster May 26, 2026
117a8c2
Remove chart studio upload APIs
marthacryan May 28, 2026
2ef7d47
Remove show edit in chart studio button
marthacryan May 28, 2026
f98b2f1
Merge remote-tracking branch 'origin/master' into cam/7678/enable-typ…
camdecoster Jun 1, 2026
25f6b02
Merge pull request #7812 from plotly/remove-chart-studio-api
marthacryan Jun 2, 2026
9e625cc
Linting/formatting
camdecoster Jun 3, 2026
001127b
Fix typos
camdecoster Jun 3, 2026
e0acefe
Improve description
camdecoster Jun 3, 2026
5fa57a9
Update schema and types
camdecoster Jun 3, 2026
292acf8
fix issue with symbols not rendering in legend for scattermap traces
emilykl Jun 3, 2026
c338b60
always fall back to circle icon in legend for scattermap
emilykl Jun 4, 2026
7ae7330
make colors work for scattermap icons, and fetch maki icons from jsde…
emilykl Jun 4, 2026
8bfb336
update baseline image
emilykl Jun 4, 2026
34d1f33
stop adding -15 suffix to icon names
emilykl Jun 4, 2026
f34c663
add draftlog
emilykl Jun 4, 2026
de217ae
Merge pull request #7825 from plotly/fix-7821-v4.0
emilykl Jun 4, 2026
0593acf
Apply suggestions from code review
camdecoster Jun 5, 2026
d26e84c
Update docs
camdecoster Jun 5, 2026
085069c
Remove dead options from tsconfig
camdecoster Jun 5, 2026
d8028ee
Update JSDoc descriptions
camdecoster Jun 5, 2026
044e900
Tighten up a few types
camdecoster Jun 5, 2026
87b6e0e
Minor refactoring
camdecoster Jun 5, 2026
b4dea80
Loosen data_array type and update schema types
camdecoster Jun 5, 2026
606ae93
Rename PlotType to TraceType, add alias
camdecoster Jun 5, 2026
41b43f0
Fix typo
camdecoster Jun 8, 2026
3c2f49a
Merge remote-tracking branch 'origin/master' into v4.0
camdecoster Jun 8, 2026
2e5e84c
Merge remote-tracking branch 'origin/v4.0' into cam/7678/enable-types…
camdecoster Jun 8, 2026
66f4268
Update type docs/generator/schema per removal of Chart Studio code
camdecoster Jun 8, 2026
6031ecb
Merge pull request #7680 from plotly/cam/7678/enable-typescript-type-…
camdecoster Jun 8, 2026
6d907c1
use plot title for download filename, and change fallback to plot-ima…
emilykl Jun 8, 2026
5c96fa4
add tests
emilykl Jun 8, 2026
7cf0e1f
slightly change notifier wording for image download
emilykl Jun 8, 2026
1d8668a
ignore tex titles for filename
emilykl Jun 8, 2026
068e235
remove src attr references
emilykl Jun 8, 2026
c5d2b96
remove src attr handling from typegen step
emilykl Jun 8, 2026
6f0e111
remove src attributes from mock
emilykl Jun 8, 2026
299e8af
remove layout.hidesources attr
emilykl Jun 8, 2026
05501b7
regenerate plot schema
emilykl Jun 8, 2026
eb72222
add draftlogs
emilykl Jun 8, 2026
0a74890
expand forbidden chars
emilykl Jun 9, 2026
6a487f0
update locales files
emilykl Jun 9, 2026
89b4e33
run formatter
emilykl Jan 6, 2026
ee773ca
set default tickmode to 'sync' when axis is overlaying
emilykl Jan 6, 2026
c9aea83
remove duplicate draw call for axes with tickmode: 'sync'
emilykl Jan 8, 2026
3a31aaf
bugfix: if overlaid axis is categorical, default to 'auto' rather tha…
emilykl Jan 19, 2026
e7cd979
explicitly set tickmode auto for mock
emilykl Jan 19, 2026
1f02b3d
update tickmode attribute description
emilykl Jan 20, 2026
5732ff9
update plot-schema
emilykl Jan 20, 2026
5bd782a
Apply suggestions from code review
emilykl Jan 26, 2026
801a109
update plot-schema
emilykl Jan 26, 2026
8c69898
add draftlog
emilykl Jan 26, 2026
99cfed5
update baselines images
emilykl Jun 9, 2026
e31670a
remove now-redundant argument from Plots.graphJson call
emilykl Jun 9, 2026
17ee326
add explicit defaults for graphJson function
emilykl Jun 9, 2026
1c903d2
clean up draftlogs
emilykl Jun 9, 2026
b6132bd
Merge remote-tracking branch 'origin/v4.0' into cam/7523/switch-color…
camdecoster Jun 9, 2026
10997dd
Add more checks to handle bad input
camdecoster Jun 9, 2026
f2a4dd7
Update tests to better catch bad input
camdecoster Jun 9, 2026
36065d3
Update descriptions
camdecoster Jun 9, 2026
93a8217
Add draftlog
camdecoster Jun 9, 2026
6acbf59
Update schema and types
camdecoster Jun 9, 2026
58c2017
Add new mock and baseline
camdecoster Jun 9, 2026
5dc4e64
Update baseline image
camdecoster Jun 9, 2026
79d7d8e
Rename draftlog with correct suffix
camdecoster Jun 9, 2026
d01c5fe
Merge pull request #7829 from plotly/remove-src-attrs
emilykl Jun 10, 2026
96b3de7
remove remaining transforms code (dead)
emilykl Jun 9, 2026
ee14249
remove dead transforms code, part 2
emilykl Jun 9, 2026
aeb8c80
remove dead transforms code, part 3
emilykl Jun 9, 2026
6281778
remove all references to _fullInput
emilykl Jun 10, 2026
21d37d8
update tests to remove _fullInput references
emilykl Jun 10, 2026
b6562d6
remove reference to transforms in trace.contours.operation docstring
emilykl Jun 10, 2026
08ef2f9
remove remaining transforms reference from lib test
emilykl Jun 10, 2026
cd001e4
remove unneeded lib function
emilykl Jun 10, 2026
5f9b34c
remove references to transforms in comments, and some additional unne…
emilykl Jun 11, 2026
ce0443c
add draftlog
emilykl Jun 11, 2026
b1dd513
collapse parcoords fullIndices and inputIndices into a single traceIn…
emilykl Jun 11, 2026
e940e77
Remove debug image
camdecoster Jun 11, 2026
8d9ea4f
Add warning on invalid color string
camdecoster Jun 11, 2026
a62992d
Small refactor
camdecoster Jun 11, 2026
0d6cbd1
Update color syntax mock and image
camdecoster Jun 11, 2026
0b31a8b
Remove unused attribute in mock
camdecoster Jun 11, 2026
ff12874
Fix circular dependency
camdecoster Jun 11, 2026
795d546
Merge pull request #7834 from plotly/remove-fullinput
emilykl Jun 12, 2026
87a1c72
Add function descriptions
camdecoster Jun 15, 2026
c2bcab9
Remove support for rgb fractional specifiers
camdecoster Jun 15, 2026
e48b8cf
Switch to different method for lightening/darkening colors
camdecoster Jun 15, 2026
57acc35
Update .gitignore
camdecoster Jun 15, 2026
4c92031
Add tests for adjustLightness
camdecoster Jun 15, 2026
48bff80
Update tests per color function changes
camdecoster Jun 15, 2026
2624b6d
Update baseline images per recent changes
camdecoster Jun 15, 2026
b52cea3
set splom.axis.matches default to true
emilykl Jun 16, 2026
2ab35b8
add draftlog
emilykl Jun 16, 2026
750936f
update splom baseline images
emilykl Jun 16, 2026
069901b
update splom jasmine tests
emilykl Jun 16, 2026
93599ac
also remove = + ; chars from filenames
emilykl Jun 16, 2026
2cfef6d
Apply suggestion from @camdecoster
emilykl Jun 16, 2026
a415430
Update draftlog
camdecoster Jun 16, 2026
6b143ce
Merge pull request #7536 from plotly/cam/7523/switch-color-library
camdecoster Jun 16, 2026
5777afe
Merge remote-tracking branch 'origin/master' into v4.0
camdecoster Jun 16, 2026
56e92af
feat: Use dashed markers in legend for shape traces
camdecoster Jun 16, 2026
7a48f60
Update baseline image
camdecoster Jun 16, 2026
4cc0a80
Add draftlog
camdecoster Jun 16, 2026
35dafc5
Merge pull request #7845 from plotly/cam/7701/dashed-markers-legend-s…
camdecoster Jun 16, 2026
7b7753f
update translations
emilykl Jun 16, 2026
fc722c3
fall back to plot subtitle if title is not suitable for filename
emilykl Jun 16, 2026
eed1074
Merge pull request #7843 from plotly/set-splom-axis-matches-dflt-true
emilykl Jun 16, 2026
9c1d9a0
exclude ALMOST ALL symbols and punctuation (more aggressive, using Un…
emilykl Jun 16, 2026
be4becb
Bump the npm_and_yarn group across 2 directories with 2 updates
dependabot[bot] Jun 17, 2026
8895c4c
ignore biome rule
emilykl Jun 17, 2026
d8e3bf9
Update src/lib/svg_text_utils.js
emilykl Jun 17, 2026
7b9c347
Merge pull request #7828 from plotly/5124-feature
emilykl Jun 17, 2026
02f4e88
add missing draftlog for PR 7828
emilykl Jun 18, 2026
8ede0f7
fix bug where showexponent 'first'/'last' showed no exponents on over…
emilykl Jun 18, 2026
e78427e
update baseline images
emilykl Jun 18, 2026
f6ef4ed
Merge pull request #7851 from plotly/7828-draftlog
emilykl Jun 18, 2026
5dab66a
changes for merge
emilykl Jun 19, 2026
401e72c
changes for merge, part 2 (remove 'keepdata' argument from plots.grap…
emilykl Jun 19, 2026
d6ee07c
refactor: Remove deprecation warning
camdecoster Jun 19, 2026
734ce03
feat: Replace country-regex with country-iso-search
camdecoster Jun 22, 2026
1555cb5
Add regression tests
camdecoster Jun 22, 2026
0a8f7f6
Add draftlog
camdecoster Jun 22, 2026
48cc7b8
Add description for COUNTRIES_X
camdecoster Jun 22, 2026
fa33793
Merge pull request #7856 from plotly/cam/7026/replace-country-regex
camdecoster Jun 22, 2026
b070ce6
Merge pull request #7684 from plotly/shared-axis-lines-default
emilykl Jun 23, 2026
520bb7f
chore: Update "engines" to specify Node 22
camdecoster Jun 23, 2026
980eb9a
build: Add .nvmrc file, use in workflows
camdecoster Jun 23, 2026
00bc295
Update Node version in npm script
camdecoster Jun 23, 2026
99d880e
Update docs
camdecoster Jun 23, 2026
59e9a9e
Update lock file
camdecoster Jun 23, 2026
0f007c6
Switch to composite action to use .nvmrc specified version of Node
camdecoster Jun 23, 2026
1e83547
Add draftlog
camdecoster Jun 23, 2026
8e8a183
Merge remote-tracking branch 'origin/master' into v4.0
camdecoster Jun 23, 2026
e82d221
Merge pull request #7861 from plotly/cam/7858/bump-minimum-node-version
camdecoster Jun 23, 2026
7c74abe
Add scatterquiver trace type
degzhaus Oct 21, 2025
100bd88
Ensure no-gl-jasmine tests pass
degzhaus Oct 22, 2025
3f24d4a
Name plot type quiver not scatterquiver
degzhaus Nov 2, 2025
ec6a266
Model quiver api closer to 3d cone trace
degzhaus Nov 3, 2025
68a7608
Match arrowhead attributes for annotations
degzhaus Nov 11, 2025
1d8d74e
Derive scaling from axes
degzhaus Nov 11, 2025
3dd208d
Remove angle attribute
degzhaus Nov 11, 2025
ec5f850
Include colorscale attributes in quiver
degzhaus Nov 11, 2025
5534667
Add support for coloring by an independent scalar array
degzhaus Nov 11, 2025
5302654
Run npm run schema
degzhaus Nov 11, 2025
9d8fa14
Use isArrayOrTypedArray
degzhaus Nov 19, 2025
7c2055f
Add quiver jasmine and image tests
degzhaus Nov 17, 2025
00638de
Generate baseline images for quiver tests
degzhaus Nov 17, 2025
df33638
Run npm run schema
degzhaus Nov 30, 2025
a1c40a6
Improve code readability
degzhaus Dec 18, 2025
4d9f656
Reuse scatter selectPoints for quiver instead of duplicating selectio…
degzhaus Feb 16, 2026
452ba9d
Use hasColorscale() to conditionally enable colorscale instead of har…
degzhaus Feb 16, 2026
3c42def
Reuse scatter handleXYDefaults() for quiver x/y coercion, validation,…
degzhaus Feb 16, 2026
36cab21
Move colorscale attrs under marker and replace custom c attribute wit…
degzhaus Feb 16, 2026
b8e2aa8
Fix axis autorange to include arrow tips, not just base positions; re…
degzhaus Feb 16, 2026
13bb96a
Add legend line icon for quiver traces by including quiver in getStyl…
degzhaus Feb 16, 2026
d4ad7ba
Add marker_colorbar config to quiver module so colorbars render corre…
degzhaus Feb 16, 2026
7556092
Implement visual text label rendering for quiver using shared Drawing…
degzhaus Feb 16, 2026
fa078c2
Implement per-arrow selected/unselected styling with opacity dimming …
degzhaus Feb 16, 2026
9cb41db
Run npm run schema
degzhaus Feb 16, 2026
7f634ed
Fix colorbar crash by ensuring traceOut.marker exists before colorsca…
degzhaus Feb 16, 2026
37c2a8d
Regenerate image baselines
degzhaus Mar 9, 2026
6d613d7
Nest line options under marker.line
degzhaus Mar 9, 2026
37a6cd2
Move arrowheadsize under marker
degzhaus Mar 9, 2026
c40a5e0
Run npm run schema
degzhaus Mar 9, 2026
fcb5701
Regenerate quiver custom colorscale
degzhaus Mar 9, 2026
73f0338
Import scatter attributes for x, y coercion
degzhaus Mar 9, 2026
e46104b
Run npm run schema
degzhaus Mar 9, 2026
48e4e7e
Passing tests
degzhaus Apr 6, 2026
a2799e2
Adjust axis ranges automatically to include full length of arrows
degzhaus Jun 24, 2026
3344864
Honor colorscale
degzhaus Jun 24, 2026
94dc00d
Use center, Remove redundant anchor value options
degzhaus Jun 24, 2026
2e214c7
Idiomatic extendFlat usage
degzhaus Jun 24, 2026
f3789e6
Fallback to arrow color with opacity
degzhaus Jun 24, 2026
dd71b94
Guard against infinite values
degzhaus Jun 24, 2026
eba15eb
Remove unused imports
degzhaus Jun 24, 2026
2d3bdfc
Merge remote-tracking branch 'origin/v4.0' into dependabot/npm_and_ya…
camdecoster Jun 24, 2026
5460a35
Update the stackgl bundle
camdecoster Jun 24, 2026
065bab3
Merge pull request #7846 from plotly/dependabot/npm_and_yarn/stackgl_…
camdecoster Jun 24, 2026
5d3e198
Merge remote-tracking branch 'origin/v4.0' into degzhaus/add_quiver
camdecoster Jun 24, 2026
813ab71
Update schema and types
camdecoster Jun 24, 2026
0a76daf
Regenerate image baselines
degzhaus Jun 24, 2026
c694a02
Add quiver mock to svgMockList
degzhaus Jun 24, 2026
601ca45
Add draftlog/7710_add.md for quiver trace type
degzhaus Jun 24, 2026
1f1898e
refactor: Generate data type union instead of hand writing
camdecoster Jun 25, 2026
f11b667
Update docs
camdecoster Jun 25, 2026
ed11c35
Merge pull request #7868 from plotly/cam/7867/generate-data-union-type
camdecoster Jun 25, 2026
86030c3
Merge remote-tracking branch 'origin/v4.0' into degzhaus/add_quiver
camdecoster Jun 25, 2026
d92fd9b
Update types
camdecoster Jun 25, 2026
9ce5a84
ensure selection buttons are shown in modebar for quiver trace
emilykl Jun 29, 2026
002587e
fix selection styling logic for quiver trace
emilykl Jun 29, 2026
4709ad3
update selected and unselected attrs to mirror normal styling attrs
emilykl Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 1 addition & 6 deletions .github/actions/setup-workspace/action.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
name: 'Setup Workspace'
description: 'Setup Node.js, install dependencies, and download build artifacts'

inputs:
node-version:
description: 'Node.js version to use'
default: '18'

runs:
using: 'composite'
steps:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: ${{ inputs.node-version }}
node-version-file: '.nvmrc'
cache: 'npm'

- name: Install dependencies
Expand Down
31 changes: 24 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ concurrency:
group: ci-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
NODE_VERSION: '18'

jobs:
detect-changes:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -60,7 +57,7 @@ jobs:

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: ${{ env.NODE_VERSION }}
node-version-file: '.nvmrc'
cache: 'npm'

- name: Install dependencies
Expand Down Expand Up @@ -270,7 +267,7 @@ jobs:
chrome-version: 'stable'

- name: Run noCI tests
uses: coactions/setup-xvfb@b6b4fcfb9f5a895edadc3bc76318fae0ac17c8b3 # v1
uses: ./.github/actions/run-xvfb
with:
run: ./tasks/noci_test.sh jasmine

Expand Down Expand Up @@ -579,6 +576,26 @@ jobs:
- name: Run syntax tests on source files
run: .github/scripts/test.sh source-syntax

typecheck:
needs: install-and-cibuild
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: ./.github/actions/setup-workspace

- name: Type-check TypeScript sources
run: npm run typecheck

generated-types-drift:
needs: install-and-cibuild
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: ./.github/actions/setup-workspace

- name: Verify generated types are in sync with schema
run: npm run schema-typegen-diff-check

# ============================================================
# Standalone jobs (no dependencies on install-and-cibuild)
# ============================================================
Expand All @@ -593,7 +610,7 @@ jobs:

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: ${{ env.NODE_VERSION }}
node-version-file: '.nvmrc'
cache: 'npm'

- name: Set up build environment
Expand Down Expand Up @@ -624,7 +641,7 @@ jobs:

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: ${{ env.NODE_VERSION }}
node-version-file: '.nvmrc'
cache: 'npm'

- name: Set up build environment
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish-dist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: '22.14.0'
node-version-file: '.nvmrc'
cache: 'npm'

- name: Set up build environment
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ build/*
dist/*.LICENSE.txt
dist/*.css

# Ignore local dev mocks/baselines
test/image/**/dev_*.*

npm-debug.log*
*.sublime*
*~
Expand All @@ -16,3 +19,4 @@ tags
!.github/
!.gitignore
!.npmignore
!.nvmrc
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
22.23.0
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ We use the following [labels](https://github.com/plotly/plotly.js/labels) to tra
#### Prerequisites

- git
- [node.js](https://nodejs.org/en/). We recommend using node.js v18.x.
- [node.js](https://nodejs.org/en/). We recommend using node.js v22.x.
Upgrading and managing node versions can be easily done using
[`nvm`](https://github.com/nvm-sh/nvm) or its Windows alternatives.
- [`npm`](https://www.npmjs.com/) v10.x and up to ensure that the
Expand Down
3 changes: 2 additions & 1 deletion CUSTOM_BUNDLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ Make sure you have the versions of node/npm that's recommended:
- plotly.js before 2.5: Node 12/npm 6
- plotly.js from 2.5: Node 16/npm 8
- plotly.js from 2.35: Node 18/npm 10
- plotly.js from 4.0: Node 22/npm 10

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

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

Expand Down
5 changes: 5 additions & 0 deletions draftlogs/7536_change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- **Breaking**: Switch color processing library from [TinyColor](https://github.com/bgrins/TinyColor) to [color](https://github.com/Qix-/color) [[#7536](https://github.com/plotly/plotly.js/pull/7536)]
- `rgb()`/`rgba()` strings with decimal 0–1 fractions are no longer supported
- `hsv()` color strings are no longer permitted
- Color calculations may differ slightly (by a few RGB units)
- New color formats are now supported: '#ff0000aa', '#f00a', 'rgb(255 0 0)', 'rgba(255 0 0 / 0.5)', 'hsl(0 100% 50% / 0.5)', 'hsla(0, 100%, 50%, 0.5)', 'hwb(0, 0%, 0%)'
1 change: 1 addition & 0 deletions draftlogs/7684_change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Set default layout.axis.tickmode to 'sync' when axis is overlaying [[#7684](https://github.com/plotly/plotly.js/pull/7684)]
1 change: 1 addition & 0 deletions draftlogs/7710_add.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Add `quiver` trace type to visualize vector fields using arrows [[#7710](https://github.com/plotly/plotly.js/pull/7710)]
1 change: 1 addition & 0 deletions draftlogs/7812_remove.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Remove config attributes `showLink`, `linkText`, `sendData`, `showSources`, and `showEditInChartStudio`, as well as trace attribute `stream`, since all of these were associated with Chart Studio and are no longer needed [[#7812](https://github.com/plotly/plotly.js/pull/7812)]
1 change: 1 addition & 0 deletions draftlogs/7825_change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Enable scattermap icons to render in color, upgrade Maki icons version to 8.2, and standardize scattermap legend icons to circles [[#7825](https://github.com/plotly/plotly.js/pull/7825)]
1 change: 1 addition & 0 deletions draftlogs/7828_change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Use plot title as default filename for "Download plot" button [[#7828](https://github.com/plotly/plotly.js/pull/7828)]
1 change: 1 addition & 0 deletions draftlogs/7829_change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Change signature of `plots.graphJson()` function to remove `mode` argument [[#7829](https://github.com/plotly/plotly.js/pull/7829)]
1 change: 1 addition & 0 deletions draftlogs/7829_remove.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Remove all `*src` attributes, as well as `layout.hidesources` attribute, from the schema [[#7829](https://github.com/plotly/plotly.js/pull/7829)]
1 change: 1 addition & 0 deletions draftlogs/7834_remove.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Remove internal `trace._fullInput` property and other dead code related to the removed `transforms` feature. No user-facing changes expected [[#7834](https://github.com/plotly/plotly.js/pull/7834)]
1 change: 1 addition & 0 deletions draftlogs/7843_change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Change `splom.axis.matches` default from `false` to `true` [[#7843](https://github.com/plotly/plotly.js/pull/7843)]
1 change: 1 addition & 0 deletions draftlogs/7845_add.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Use dashed markers in legend for shape traces with dash configured [[#7845](https://github.com/plotly/plotly.js/pull/7845)]
1 change: 1 addition & 0 deletions draftlogs/7856_add.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Replace `country-regex` with `country-iso-search` to search for country names in choropleth, scattergeo traces [[#7856](https://github.com/plotly/plotly.js/pull/7856)]
1 change: 1 addition & 0 deletions draftlogs/7861_change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Update minimum required Node version to 22 [[#7861](https://github.com/plotly/plotly.js/pull/7861)]
1 change: 1 addition & 0 deletions lib/index-strict.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ Plotly.register([
require('../src/traces/scatterpolargl/strict'),
require('./barpolar'),
require('./scattersmith'),
require('./quiver'),

// components
require('./calendars'),
Expand Down
162 changes: 162 additions & 0 deletions lib/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
/**
* TypeScript type definitions for plotly.js.
*
* Public API surface for consumers installing plotly.js as a dependency.
*
* Usage:
*
* import Plotly from 'plotly.js';
* // or
* import * as Plotly from 'plotly.js';
* // or
* import { newPlot, Layout, Data } from 'plotly.js';
*
* const data: Data[] = [{ type: 'scatter', x: [1, 2, 3], y: [4, 5, 6] }];
* const layout: Partial<Layout> = { title: { text: 'Demo' } };
* await Plotly.newPlot(div, data, layout);
*
* Internal types (FullLayout, GraphDiv internals, the AttrsToType machinery,
* etc.) live alongside the source under src/types/ but are intentionally not
* re-exported from this entry point.
*/

export as namespace Plotly;

// ---------------------------------------------------------------------------
// Primitives & utility types
// ---------------------------------------------------------------------------

export type {
Color,
ColorScale,
Datum,
DTickValue,
ErrorBar,
ErrorOptions,
MarkerSymbol,
TypedArray,
XAnchor,
YAnchor
} from '../src/types/lib/common';

// ---------------------------------------------------------------------------
// Schema-generated types (traces, layout, shared interfaces)
// ---------------------------------------------------------------------------

export type * from '../src/types/generated/schema';

// ---------------------------------------------------------------------------
// Hand-written layout types (not in schema)
// ---------------------------------------------------------------------------

export type {
AxisName,
ButtonClickEvent,
Icon,
Mapbox,
ModeBarButton,
ModeBarButtonAny,
ModeBarDefaultButtons,
Template,
XAxisName,
YAxisName
} from '../src/types/core/layout';

// ---------------------------------------------------------------------------
// Trace data
// ---------------------------------------------------------------------------

export type { Data } from '../src/types/core/data';

// ---------------------------------------------------------------------------
// Configuration
// ---------------------------------------------------------------------------

export type {
Config,
DownloadImgopts,
ToImageButtonOptions,
ToImgopts
} from '../src/types/core/config';

// ---------------------------------------------------------------------------
// Events & runtime DOM types
// ---------------------------------------------------------------------------

export type {
BeforePlotEvent,
ClickAnnotationEvent,
FrameAnimationEvent,
LegendClickEvent,
PlotCoordinate,
PlotDatum,
PlotHoverEvent,
PlotlyEventName,
PlotlyHTMLElement,
PlotMouseEvent,
PlotRelayoutEvent,
PlotRestyleEvent,
PlotRestyleEventUpdate,
PlotScatterDataPoint,
PlotScene,
PlotSelectedData,
PlotSelectionEvent,
SelectionRange,
SliderChangeEvent,
SliderEndEvent,
SliderStartEvent,
SunburstClickEvent,
SunburstPlotDatum
} from '../src/types/core/events';

// ---------------------------------------------------------------------------
// Public API functions
// ---------------------------------------------------------------------------

export {
addFrames,
addTraces,
animate,
deleteFrames,
deleteTraces,
downloadImage,
extendTraces,
Icons,
makeTemplate,
moveTraces,
newPlot,
Plots,
prependTraces,
purge,
react,
redraw,
register,
relayout,
restyle,
setPlotConfig,
toImage,
update,
validate,
validateTemplate
} from '../src/types/core/api';

export type {
DefaultIcons,
IconsMap,
PlotlyDataLayoutConfig,
PlotlyModule,
Root,
RootOrData,
StaticPlots,
TemplateFigure,
ValidateResult,
ValidateTemplateResult
} from '../src/types/core/api';

// ---------------------------------------------------------------------------
// Default export — matches the runtime CommonJS shape
// ---------------------------------------------------------------------------

import * as PlotlyAPI from '../src/types/core/api';
declare const Plotly: typeof PlotlyAPI;
export default Plotly;
1 change: 1 addition & 0 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ Plotly.register([
require('./scatterpolargl'),
require('./barpolar'),
require('./scattersmith'),
require('./quiver'),

// components
require('./calendars'),
Expand Down
6 changes: 3 additions & 3 deletions lib/locales/cs.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ module.exports = {
'Reset view': 'Obnovit nastavení pohledu', // components/modebar/buttons.js:583
'Reset views': 'Obnovit nastavení pohledů', // components/modebar/buttons.js:529
'Show closest data on hover': 'Zobrazit najbližší hodnotu při najetí myší', // components/modebar/buttons.js:157
'Snapshot succeeded': 'Snímek vytvořen', // components/modebar/buttons.js:66
'Sorry, there was a problem downloading your snapshot!': 'Omlouváme se, ale došlo k chybě stahování snímku!', // components/modebar/buttons.js:69
'Taking snapshot - this may take a few seconds': 'Vytváří se snímek - může zabrat pár vteřin', // components/modebar/buttons.js:57
'Image download succeeded': 'Stažení obrázku proběhlo úspěšně', // components/modebar/buttons.js:66
'Sorry, there was a problem downloading your image!': 'Omlouváme se, ale došlo k chybě při stahování obrázku!', // components/modebar/buttons.js:69
'Preparing image - this may take a few seconds': 'Připravuje se obrázek - může zabrat pár vteřin', // components/modebar/buttons.js:57
'Zoom': 'Zvětšení', // components/modebar/buttons.js:85
'Zoom in': 'Zvětšit', // components/modebar/buttons.js:121
'Zoom out': 'Zmenšit', // components/modebar/buttons.js:130
Expand Down
6 changes: 3 additions & 3 deletions lib/locales/cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ module.exports = {
'Reset view': 'Ailosodwch y golwg', // components / modebar / buttons.js: 592
'Reset views': 'Ailosod olygfeydd', // components / modebar / buttons.js: 540
'Show closest data on hover': 'Dangos y data agosaf wrth hofran', // components / modebar / buttons.js: 168
'Snapshot succeeded': 'Llwyddodd y Ciplun', // components / modebar / buttons.js: 77
'Sorry, there was a problem downloading your snapshot!': 'Mae\'n ddrwg gennym, roedd problem wrth lawrlwytho eich ciplun!', // components / modebar / buttons.js: 80
'Taking snapshot - this may take a few seconds': 'Tynnu ciplun - gallai hyn gymryd ychydig o eiliadau', // components / modebar / buttons.js: 62
'Image download succeeded': 'Llwyddwyd i lawrlwytho\'r ddelwedd', // components / modebar / buttons.js: 77
'Sorry, there was a problem downloading your image!': 'Mae\'n ddrwg gennym, roedd problem wrth lawrlwytho eich delwedd!', // components / modebar / buttons.js: 80
'Preparing image - this may take a few seconds': 'Paratoi\'r ddelwedd - gallai hyn gymryd ychydig o eiliadau', // components / modebar / buttons.js: 62
'Toggle Spike Lines': 'Toglo llinellau pigog', // components / modebar / buttons.js: 559
'Toggle show closest data on hover': 'Toglo dangos y data agosaf wrth hofran', // components / modebar / buttons.js: 364
'Turntable rotation': 'Cylchdroi trofwrdd', // components / modebar / buttons.js: 296
Expand Down
6 changes: 3 additions & 3 deletions lib/locales/de.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ module.exports = {
'Reset view': 'Ansicht zurücksetzen', // components/modebar/buttons.js:583
'Reset views': 'Ansichten zurücksetzen', // components/modebar/buttons.js:529
'Show closest data on hover': 'Zeige näheste Daten beim Überfahren', // components/modebar/buttons.js:157
'Snapshot succeeded': 'Snapshot erfolgreich', // components/modebar/buttons.js:66
'Sorry, there was a problem downloading your snapshot!': 'Es gab ein Problem beim Herunterladen des Snapshots', // components/modebar/buttons.js:69
'Taking snapshot - this may take a few seconds': 'Erstelle einen Snapshot - dies kann einige Sekunden dauern', // components/modebar/buttons.js:57
'Image download succeeded': 'Bild-Download erfolgreich', // components/modebar/buttons.js:66
'Sorry, there was a problem downloading your image!': 'Es gab ein Problem beim Herunterladen des Bildes', // components/modebar/buttons.js:69
'Preparing image - this may take a few seconds': 'Bild wird vorbereitet - dies kann einige Sekunden dauern', // components/modebar/buttons.js:57
'Zoom': 'Zoom', // components/modebar/buttons.js:85
'Zoom in': 'Hineinzoomen', // components/modebar/buttons.js:121
'Zoom out': 'Herauszoomen', // components/modebar/buttons.js:130
Expand Down
Loading
Loading